【发布时间】: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