首页 > 解决方案 > 三.JS | glTF Morphing 针对 glTF 问题

问题描述

我正在尝试调整Nop Jiarathanakul 的Particle Dreams 演示并将其移植到更新的 THREE.JS 版本和 glTF 格式。

虽然代码结构复杂,但我无法将其发布为片段,但当前状态可在此处获得。

它适用于取自 THREE.JS 示例的马模型,而它基于变形目标。

在此处输入图像描述

但是,如果 glTF 没有变形目标怎么办,因为它是一项古老的技术,并且基于骨骼运动学。

在此处输入图像描述

很确定我需要更新shaders/UVMapShader.vs.glsl

varying vec3 vPos;

#ifdef USE_MORPHTARGETS
    uniform float morphTargetInfluences[ 4 ];
#endif

void main() {

#ifdef USE_MORPHTARGETS

    vec3 morphed = vec3( 0.0 );
    morphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];
    morphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];
    morphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];
    morphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];
    morphed += position;

    vPos = (modelMatrix * vec4(morphed, 1.0)).xyz;
#else
    vPos = (modelMatrix * vec4(position, 1.0)).xyz;
#endif

    vec2 drawUV = uv * 2.0 - 1.0;
    gl_Position = vec4(drawUV.x, drawUV.y, 0.0, 1.0);

}

标签: animationthree.jsglslgltfkinematics

解决方案


推荐阅读