Animation THREE.JS | glTF变形目标glTF问题
我正在尝试通过Nop Jiarathanakul进行调整,并将其移植到更新的THREE.JS版本和glTF格式 虽然代码具有复杂的结构,但我无法作为代码段发布,但当前状态可用 它适用于取自THREE.JS示例的horse模型,同时它基于变形目标 但是,如果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
着色器/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在当前代码中运行得非常好。