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

Imported JSON geometry not moving with bones

本文关键字:移动 JSON 几何体 导入      更新时间:2023-09-26

我已经将一个模型导入到我的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.Polywiry)

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

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

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

我得到以下错误:"无法读取未定义(…)的属性"skeleton"。"未定义是网格变量。有没有一种新的方法可以访问我需要使用的蒙皮网格的骨骼?

问题出在线路上,

materials.skinning = true;

需要以下内容才能工作

materials[0].skinning = true;