animation - 三.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);
}
解决方案
推荐阅读
- laravel - Laravel-echo-server 码头化问题
- azure-api-management - 如何在不使用 API Gateway 上的测试控制台的情况下跟踪 Api 代理请求?
- php - 如何将 wordpress 从 xampp windows 迁移到 ubuntu
- python - 使用正则表达式检索字符串的子集 - python
- python - 滑动邻域运算 PYTHON
- pandas - 如何拆分数据框列中列表中的每个字符串
- c++ - Eclipse 中的类型不匹配,同时通过“this”指针调用具有对象引用的友元函数
- docker - 如何创建构建 Docker 映像的 Jenkins 管道
- apache-beam - 延迟固定窗口触发几分钟
- r - 按条件更改数据框中的值:较长的对象长度不是较短对象长度的倍数