【发布时间】:2021-01-20 20:14:38
【问题描述】:
我有一个使用Three.jsFBXLoader 处理FBX 文件的动态模型,但为了方便,我想使用GLTF/GLB 文件,因为它在同一个文件中包含纹理。我在 Blender 2.9 中加载了 FBX 文件并将其导出为 GLB 文件。 GLB 文件使用 GLTFLoader 正确呈现,但需要不同的旋转偏移量才能在设置时以正确的方向放置。
FBX 和 GLB 文件都包含一个具有相似骨骼数组的 SkinnedMesh。我注意到matrixWorldNeedsUpdate 对于GLB 模型骨骼是错误的,但对于FBX,默认情况下它是正确的。可能还有其他差异,但我没有更多地探索层次结构的其他方面,例如矩阵字段。
无论如何,当从GLB 文件中动态旋转骨骼时,似乎枢轴点在其他地方。我正在更新本地旋转参数,所以我不知道它为什么以这种方式操纵Bone。它围绕正确的轴旋转,所以它看起来不像使用正确的局部旋转。
for (let i = 0; i < 20; i++)
{
section1Bones[i].setRotationFromEuler(new THREE.Euler(0, 0, updatedSection1Vals[i], 'XYZ' ))
section2Bones[i].setRotationFromEuler(new THREE.Euler(0, 0, updatedSection2Vals[i], 'XYZ' ))
section3Bones[i].setRotationFromEuler(new THREE.Euler(0, 0, updatedSection3Vals[i], 'XYZ' ))
}
【问题讨论】:
-
也许尝试使用 Blender 2.90?自 2.80 以来已经有很多 glTF 修复。
-
我错了,我用的是 Blender 2.9
标签: javascript node.js three.js gltf fbx