Animation THREE.JS | glTF变形目标glTF问题

Animation THREE.JS | glTF变形目标glTF问题,animation,three.js,glsl,gltf,kinematics,Animation,Three.js,Glsl,Gltf,Kinematics,我正在尝试通过Nop Jiarathanakul进行调整,并将其移植到更新的THREE.JS版本和glTF格式 虽然代码具有复杂的结构,但我无法作为代码段发布,但当前状态可用 它适用于取自THREE.JS示例的horse模型,同时它基于变形目标 但是,如果glTF没有变形目标呢,因为这是一项基于骨架运动学的老技术 非常确定我需要更新着色器/UVMapShader.vs.glsl varying vec3 vPos; #ifdef USE_MORPHTARGETS uniform f

我正在尝试通过Nop Jiarathanakul进行调整,并将其移植到更新的THREE.JS版本和glTF格式

虽然代码具有复杂的结构,但我无法作为代码段发布,但当前状态可用

它适用于取自THREE.JS示例的horse模型,同时它基于变形目标

但是,如果glTF没有变形目标呢,因为这是一项基于骨架运动学的老技术

非常确定我需要更新
着色器/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);

}

glTF同时支持变形目标和骨骼/骨骼动画。但我不确定你的问题是什么,你是不是想把所有的粒子梦都变成一个glTF?这可能是相当具有挑战性的,因为有这么多单独运动的粒子。参考文献说2.0现在支持变形目标定义,horse.glb在当前代码中运行得非常好。