我想沿着x轴旋转围绕原点0,0,0的场景中的所有对象。但是,设置obj.rotation.x + = 0.1;不沿原点旋转,而是沿着物体的中心旋转。我如何在原点周围实现物体的所需旋转?我觉得应该有一个简单的方法,但在官方文档或在线找不到任何内容。Three.js:全局旋转
回答
,而不是添加对象的场景,将其添加到THREE.Group()
对象:
var group = new THREE.Group();
scene.add(group);
...
var mesh1 = new THREE.Mesh(...);
group.add(mesh1);
var mesh2 = new THREE.Mesh(...);
group.add(mesh2);
//and so on with meshes
然后在渲染循环:
group.rotation.x += 0.1;
Threejs.r84
你可以使用THREE.Object3D()
将所有网格物体添加到对象中myObject.add(myMesh)
然后使用myObject.rotateX(angle)
其中angle
以弧度表示,myObject
是Object3D对象,而myMesh
是要添加的网格。
这将在本地空间中围绕x轴旋转对象。
更多信息可以在文档中找到:https://threejs.org/docs/#Reference/Core/Object3D
尼斯和感谢快速回复:)有什么区别与由prisoner849分组提供的解决方案?这两种方法都与我相似。对于我来说,改变场景的结构似乎是矫枉过正,只是为了实现围绕原点的旋转。所以我正在寻找一个更简单的解决方案。仅仅从关注点分离的角度来看,我觉得在场景中重新组合对象是实现围绕原点旋转的必要条件。但不管怎么说,这两个解决方案似乎做工精细,十分感谢:) –
@deusexmachina这里没有THREE.Group之间'如此大的差别()'和'THREE.Object3D()')[文件](https://threejs.org /docs/index.html#Reference/Objects/Group)说:_这与Object3D几乎相同。它的目的是使与对象组工作语法clearer._ – prisoner849
@deusexmachina有这两者之间没有什么区别,只是名字。我一般喜欢使用'Object3D',因为我对这个名字感到满意(只是个人选择)。如果你想看到两者之间的差异,你可以前往:[Group.js code](https://github.com/mrdoob/three.js/blob/master/src/objects/Group.js)。它导入'Object3D'并将其类型更改为'Group'。 –
- 1. Three.js增加局部对象旋转
- 2. three.js所+ .mesh旋转
- 3. Three.js对象旋转
- 4. 绕全局Y轴旋转对象,忽略其局部旋转
- 5. OpenGL旋转 - 局部与全局轴
- 6. 当我拥有全局位置,全局旋转和局部旋转时计算局部位置
- 7. Three.js相机旋转错误
- 8. 在Three.js中恢复旋转
- 9. THREE.js对象不会旋转
- 10. three.js旋转面对象
- 11. Three.js相机圆顶旋转
- 12. Three.js 90°向量旋转
- 13. 将本地旋转添加到全局旋转
- 14. Three.js局部坐标和全局坐标
- 15. three.js - 反转相机旋转矩阵
- 16. 如何将three.js旋转转换为混合器旋转?
- 17. 旋转AdWhirl布局
- 18. three.js:限制相机的旋转
- 19. Three.js MouseUp事件触发旋转
- 20. 围绕一个轴旋转three.js
- 21. Three.js更新Object3D的孙子的旋转
- 22. 保存孩子的旋转Three.js
- 23. Three.js - 围绕某个轴旋转球体
- 24. 围绕X轴旋转摄像头(three.js)
- 25. 旋转,然后在three.js中翻译
- 26. three.js网格倾斜而不是旋转
- 27. 如何在three.js中旋转粒子
- 28. 克隆旋转,并在three.js所
- 29. Three.js - 制作一个旋转动画?
- 30. 将本地(=旋转后的)坐标转换为全局坐标
@ prisonder849我这样做,它的工作。感谢您的快速回复:)在接受它作为答案之前,我会等一会儿。 –
@deusexmachina欢迎您) – prisoner849