es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Las animaciones glTF no se reproducen con el sombreador plano.

Estoy utilizando A-Frame 1.2.0. Tengo un modelo gltf en la escena y quiero agregar un “flat shader” a este modelo.

<a-scene vr-mode-ui="enabled: false;" gltf-model="dracoDecoderPath: js/draco/; renderer: colorManagement: true; alpha: true;">
      <a-entity id="camera-rig">
                <a-camera id="camera" position="0 1.65 0" pivot="0 0 0" cursor="fuse:false;"></a-camera>
      </a-entity>
      <a-assets timeout="10000;">
                <a-asset-item id="CesiumMan" src="assets/models/CesiumMan.gltf" response-type="arraybuffer;"></a-asset-item>
      </a-assets>
      <a-gltf-model src="#CesiumMan" flat-shader="true" position="0 0 0" animation-mixer="clip:*;"></a-gltf-model>
</a-scene>

Mi código de “flat shader” es de aquí.

const FlatShader = {
    schema: {default: true},

    init() {
        this.el.addEventListener('object3dset', this.update.bind(this));
    },

    update() {
        const mesh = this.el.getObject3D('mesh');
        const { data } = this;
        if (!mesh) {
            return;
        }
        mesh.traverse(function(node) {
            if (node.isMesh && data) {
                const mat1 = new THREE.MeshBasicMaterial();
                node.material = mat1;
                node.material.needsUpdate = true;
            }
        });
    },
};

export default FlatShader;

El “flat shader” está funcionando, pero después de agregar el “flat shader”, las animaciones del modelo no funcionan. El modelo se queda en su pose estática.

¿Alguna idea de qué podría estar causando el problema? Puede ser que me esté perdiendo algo, pero no tengo idea de cómo solucionarlo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que el sombreador plano esté anulando los materiales de animación del modelo GLTF, lo que provoca que las animaciones no funcionen correctamente. Una posible solución es modificar el código de FlatShader para incluir una bandera que habilite o deshabilite el sombreador, de modo que se pueda activar o desactivar según sea necesario. Otra solución es modificar los materiales del modelo GLTF y configurarlos para usar el sombreador plano en lugar de los materiales predeterminados, manteniendo la información de animación.

Comments are closed.