【问题标题】:Imported JSON geometry not moving with bones导入的 JSON 几何图形不随骨骼移动
【发布时间】:2016-08-10 08:31:39
【问题描述】:

我已将模型导入到我的 Three.js 场景中。我可以移动和旋转骨骼,但模型的几何图形不会随骨骼移动。

这是我用来导入 JSON 文件并将其添加到场景中的代码,

/*load JSON file*/
// instantiate a loader
var loader = new THREE.JSONLoader();
loader.load( 'https://cdn.rawgit.com/wpdildine/wpdildine.github.com/master/models/cylinder.json', addModel );

var helpset;
var scaleVal = 3;

function addModel( geometry,  materials ){

    materials.skinning = true;

    var cs = scaleVal * Math.random();

    mesh = new THREE.SkinnedMesh( geometry, new THREE.MeshFaceMaterial(materials) );

    scene.add(mesh);
    helpset = new THREE.SkeletonHelper(mesh);
    scene.add(helpset);     

}

我导入的 JSON 文件包含权重,所以我认为我不必自己添加它们。是否与将骨架绑定到网格有任何关系?

这是我的代码的链接 - https://jsfiddle.net/joeob61k/1/(带有脚本的新链接,感谢 @Mr. Polywhirl)

如您所见,GUI 控件中的“Bone_2”会移动其中一个骨骼,但不会移动网格。

编辑:我尝试在 render() 函数中访问网格的骨骼。我已经通过使用以下代码行来做到这一点,

mesh.skeleton.bones[2].rotation = 0.1;

我收到以下错误:“无法读取未定义(…)的属性“骨架””未定义是网格变量。是否有一种访问我需要使用的 SkinnedMesh 骨骼的新方法?

【问题讨论】:

  • 我将缺少的脚本添加到 your JSFiddle 如果有人想解决它。
  • @Mr.Polywhirl 你知道如何解决这个问题吗?感谢您添加脚本!

标签: javascript json three.js geometry mesh


【解决方案1】:

问题出在线路上,

materials.skinning = true;

它需要以下工作,

materials[0].skinning = true;

【讨论】:

    猜你喜欢
    • 2017-04-10
    • 1970-01-01
    • 2015-04-16
    • 2014-08-26
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2012-10-17
    • 2013-11-03
    相关资源
    最近更新 更多