我正在尝试调整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);
}