我已将模型导入到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)
正如您所看到的,' Bone_2'在GUI控件中移动一个骨骼但不移动网格。
编辑:我试过在render()函数中访问网格的骨骼。我是通过使用以下代码行完成的,
mesh.skeleton.bones[2].rotation = 0.1;
我收到以下错误:'无法读取属性'骨架'未定义的(...)'未定义的是网格变量。是否有一种新的方式来访问我需要使用的SkinnedMesh的骨骼?
答案 0 :(得分:0)
问题出在线上,
materials.skinning = true;
需要做以下工作,
materials[0].skinning = true;