【发布时间】:2019-10-18 22:24:17
【问题描述】:
我尝试使用
围绕 Worlds-Y 轴旋转一个对象myObject.rotateOnWorldAxis(new THREE.Vector3(0,1,0),THREE.Math.degToRad(1));
但结果是,对象仅在对象空间中旋转。
为了确保我使用了正确的方法,我查看了documentation,发现旋转对象有三种方法:
.RotateY(rad)// 在局部空间中旋转
.rotateOnAxis(axis,rad)// 在对象空间中旋转
.rotateOnWorldAxis(axis,rad)// 在世界空间中旋转
看来我使用了正确的方法。
这是我这边的错误还是理解问题?
这是一个JSFiddle,它说明了我的问题(蓝色立方体应该围绕世界轴旋转)。
这是第二个Fiddle,您的青色立方体是另一个对象的子对象。
【问题讨论】:
-
您将它们全部添加到
scene,这是您的世界。所有的旋转方法都会做同样的事情 -
@davidpox 抱歉,我还不明白。他们是围绕对象轴而不是围绕世界轴旋转?我创建了第二个小提琴,其中青色立方体是另一个对象的子对象。 jsfiddle.net/4wpxyLg0/2
-
@davidpox 也许你能给我举个例子,其中 rotateOnAxis() 的行为与 rotateOnWorldAxis() 不同?
-
@KarlheinzReinhardt 如果您的轴在对象空间和世界空间中对齐,则旋转看起来相同。但它们不是,正如您在此示例中看到的那样:JSFiddle 取消注释以查看差异。
-
@ScieCode 谢谢你现在我明白了。我认为枢轴点的位置会根据功能而变化->例如在
rotateOnWorldAxis()pivot 点将在世界中心。 但是在现实中轴心点总是在/在对象的原点;只有给定轴的方向在空间上是相对的。
标签: three.js