【发布时间】:2020-09-01 19:38:10
【问题描述】:
出于学习目的,我从一个网站下载了一个免安装的 FBX 模型,它恰好是一架直升机。我想在 Three.js 中以编程方式模拟直升机叶片的旋转。我通过FBXLoader成功导入了mod,没有任何问题。我在 Blender 中检查了它的网格,它有 50 多个网格。我查明了刀片的网格并将其写在 load() 函数中:
pivotPoint = new THREE.Object3D();
const loader = new THREE.FBXLoader();
group = new THREE.Object3D();
loader.load(
'Apache.fbx',
object => {
scene.add(object);
const twentyFive = scene.getObjectByName('Mesh25'); //This is the shaft which the blades should rotate around
console.log(twentyFive); //x: 685.594482421875, y: 136.4067840576172, z: -501.9534606933594
twentyFive.add(pivotPoint);
const twentyEight = scene.getObjectByName('Mesh28');//These four are the blades
const twentyNine = scene.getObjectByName('Mesh29');
const twentySeven = scene.getObjectByName('Mesh27');
const twentySix = scene.getObjectByName('Mesh26');
group.add(twentyEight);
group.add(twentyNine);
group.add(twentySeven);
group.add(twentySix);
pivotPoint.add(group);
scene.add(pivotPoint);
scene.add(twentyFive);
},
progress => ...,
error => ...
);
以及循环渲染函数中的以下内容:
pivotPoint.rotation.y += 0.01;
但是,当我添加嵌套的 Object3D 或将代码更改为具有大量突变的上述版本时,四个叶片会消失,这四个叶片会奇怪地围绕天空中的某个其他点旋转,除了机身,而敬畏- 受灾的飞行员目睹了这场灾难,对上述代码感到惊讶,仿佛直升机即将坠毁! 我尝试了对代码的许多更改。基本上,我曾经在另一个场景中对一些光源使用过 Object3D 父级,但现在不知道问题出在哪里。此外,叶片围绕 Mesh25(我希望的枢轴)的旋转是围绕一个不与机身接触的大圆圈,尽管所有四个都围绕它们的质心旋转。 我非常感谢任何帮助,因为我真的需要学习与类似的进口模型搏斗。
【问题讨论】:
标签: three.js rotation pivot axis mesh