mic*_*ory 5 javascript three.js
我从Blender导出了一个动画模型,似乎没有任何问题实例化.我能够创建THREE.Animation
和模型,但我发现没有动画.我意识到我需要skinning
在每种材料上设置真实,但是当我这样做时,整个网格都会丢失.
下面是我(快速和凌乱)的代码试图让一切工作.
function loadModel() {
var loader = new THREE.JSONLoader();
loader.load('assets/models/Robot.js', function(geom, mat) {
_mesh = new THREE.Object3D();
_scene.add(_mesh);
geom.computeBoundingBox();
ensureLoop(geom.animation);
THREE.AnimationHandler.add(geom.animation);
for (var i = 0; i < mat.length; i++) {
var m = mat[i];
//m.skinning = true; <-- Uncommenting this makes the model disappear
//m.morphTargets = true; <-- This causes all sorts of WebGL warnings
m.wrapAround = true;
}
var mesh = new THREE.SkinnedMesh(geom, new THREE.MeshFaceMaterial(mat));
mesh.scale.set(400, 400, 400);
mesh.position.set(0, -200, 0);
mesh.rotation.set(Utils.toRadians(-90), 0, 0);
_mesh.add(mesh);
_robot = mesh;
Render.startRender(loop);
var animation = new THREE.Animation(mesh, geom.animation.name);
animation.JITCompile = false;
animation.interpolationType = THREE.AnimationHandler.LINEAR;
animation.play();
});
}
Run Code Online (Sandbox Code Playgroud)
我相信我正在循环中正确更新AnimationHandler
function loop() {
_mesh.rotation.y += 0.01;
var delta = 0.75 * _clock.getDelta();
THREE.AnimationHandler.update(delta);
}
Run Code Online (Sandbox Code Playgroud)
小智 0
在导出的 JSON 文件的节元数据中, morphTargets和骨骼的数量都大于 0?
我认为您遵循了这里的示例:
http://trijs.org/examples/#webgl_animation_skinning_morph
其中动画模型使用变形目标和骨骼动画(有关理论概念,请参阅维基百科)。
如果动画模型仅使用骨骼动画,如本例所示http://alteredqualia.com/third/examples/webgl_animation_skinning_tf2.html
您必须实例化THREE.SkinnedMesh对象,然后仅将m.skinning属性设置为true。
归档时间: |
|
查看次数: |
1670 次 |
最近记录: |