5

Blender からアニメーション化されたモデルをエクスポートしましたが、インスタンス化に問題はないようです。モデルを作成することはできますTHREE.Animationが、アニメーションがないことがわかりました。各マテリアルに trueを設定する必要があることに気付きました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();

        });
    }

ループで AnimationHandler を正しく更新していると思います

function loop() {
    _mesh.rotation.y += 0.01;

    var delta = 0.75 * _clock.getDelta();
    THREE.AnimationHandler.update(delta);
} 
4

3 に答える 3

0

最近、ブレンダー スキニング アニメーションを json にエクスポートしているときに、メッシュが消えるという同様の問題に遭遇しました。使用していたメッシュには 2 つの頂点 (1 つの頂点が別の頂点を隠している) があることが判明しました。Blender で頂点グループとアニメーションを作成している間はすべて問題ないように見えますが、three.js を介してメッシュをインポートすると、アニメーションが開始されるとすぐに消え続けました。つまり、メッシュの 1 つの頂点が頂点グループから除外されると、この消失動作が発生します。この問題を防ぐために、ブレンダーから "remove doubles" 機能を使用して、json にエクスポートする前にメッシュの整合性を検証するようになりました。同じ問題が発生し、メッシュ作業をやり直して修正した可能性があります...とにかく、質問はかなり古いですが、トピックは今日でも有効です。

ピースINF1

于 2016-11-07T02:02:59.567 に答える