更新纹理在three.js中停止动画

4

跳出昨天的话题。我正在对页面刷新时的.GLTF文件更换纹理。现在,纹理工作正常无误......

但是只有没有动画的文件才能使用此纹理更新。然而,纹理更新似乎使它们在字面上停止了运行。我不确定是什么原因或如何重新加载动画。

这里是代码:

    var creaturePath = "models/gltf/creature/";
    var creatureFile = "creature_roar.gltf";

    // load the model
    var loader = new GLTFLoader().setPath( creaturePath ); // creature

    loader.load( creatureFile, function ( gltf ) 
    {
        gltf.scene.traverse( function ( child )
        {
            if ( child.isMesh )
            {
                // override textures
                texture.flipX = false;
                texture.flipY = false;
                my_material = new THREE.MeshBasicMaterial({map: texture});
                // child.material = my_material; // this is the problem line
                texture.needsUpdate = true;
            }

        } );

        var model = gltf.scene;
1个回答

5

我尝试过使用“skinning: true; child.MeshBasicMaterial.skinning = true; my_material.MeshBasicMaterial.skinning = true;”但没有效果。请问您能否更明确一些? - Ghoul Fool
2
应该是my_material.skinning = true;和/或my_material.morphTargets = true; - Mugen87
第五次就是成功!谢谢。 - Ghoul Fool
@Mugen87,它起作用了,但是如果材质是ShaderMaterial,你知道我应该设置哪个属性吗? - Luu Hoang Bac
ShaderMaterial 不会自动支持动画。你需要先添加相应的着色器代码。 - Mugen87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接