导入的JSON几何体不随骨骼移动

时间:2016-04-18 14:24:37

标签: javascript json three.js geometry mesh

我已将模型导入到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的骨骼?

1 个答案:

答案 0 :(得分:0)

问题出在线上,

materials.skinning = true;

需要做以下工作,

materials[0].skinning = true;