【问题标题】:Updated textures stops animation in three.js更新的纹理停止了 three.js 中的动画
【发布时间】:2020-06-04 23:14:28
【问题描述】:

yesterday 继续。我在页面刷新时换出 .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;

【问题讨论】:

    标签: animation three.js textures


    【解决方案1】:

    如果您更换材料,您必须确保将MeshBasicMaterial.skinning 和/或MeshBasicMaterial.morphTargets 设置为true。否则材质将不支持骨骼和/或变形目标动画。

    three.js R113

    【讨论】:

    • 我试过 'skinning: true; child.MeshBasicMaterial.skinning = true; my_material.MeshBasicMaterial.skinning = true;` 无效。能不能说的更直白一点?
    • 应该是my_material.skinning = true; 和/或my_material.morphTargets = true;
    • 第五次的魅力!谢谢。
    • @Mugen87 成功了,但是如果材质是ShaderMaterial,你知道我应该设置哪个属性吗?
    • ShaderMaterial 不会自动支持动画。您必须先添加相应的着色器块。
    猜你喜欢
    • 2013-08-28
    • 2016-02-27
    • 2014-03-09
    • 2019-04-16
    • 2013-08-28
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多