javascript - Three.js:FBX 骨骼正确旋转,而 GLTF 骨骼奇怪地旋转
问题描述
我有一个FBX
使用. 我在 Blender 2.9 中加载了文件并将其导出为文件。该文件使用 正确渲染,但需要不同的旋转偏移才能在设置时放置正确的方向。Three.js
FBXLoader
GLTF/GLB
FBX
GLB
GLB
GLTFLoader
FBX
和file都GLB
包含SkinnedMesh
具有相似骨骼数组的 a。我注意到模型骨骼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' ))
}
解决方案
有时这真的是最简单的事情。因此,与 不同的是FBX
,它GLB
包括单独的组件scene
,例如保存 3D 模型的组件。因为我只有一个模型,所以我将整个scene
对象添加到Three.js
场景中,并与骨骼一起旋转。这导致了这个问题,所以我只是将包含在加载文件3DObject
的场景组件中,并且修复了骨骼旋转。children
GLB
推荐阅读
- json - 使用 webpack 为 react-lottie 从主包中排除 JSON 文件
- java - @Transactional 与 Spring Data 的双向关系返回 null
- android - 公开分享 SKU 是否安全?
- sql-server - SQL - 选择不重复的列
- amazon-web-services - terraform 多个提供商无法使用 s3 存储桶
- php - 如何为数据库数组结果设置不同的超链接?
- python - 加载预训练网络时,错误表明尺寸变平
- c# - 了解 Mvc 核心标识
- swift - Xcode 未检测 gomobile(绑定)生成的框架上的架构
- javascript - 当用户在按钮单击时输入无效的日期格式时如何显示验证错误?