Three.js: 围绕其边缘旋转一个立方体。

创建于 2012-02-05  ·  5评论  ·  资料来源: mrdoob/three.js

大家好你们好!

我已经问过关于绕任意轴旋转的问题,并且在#1219和#1220中得到了明确的答案。

但是,仍然不清楚如何围绕其边缘之一旋转多维数据集(如果存在,任何人都可以共享这样的代码)。

#1219中发布了两个功能:

function rotateAroundObjectAxis( object, axis, radians ) { .. }

function rotateAroundWorldAxis( object, axis, radians ) { .. }

它们使我可以绕通过其边界框中心的任意轴旋转多维数据集。

我需要的是绕任意轴旋转对象,该轴不一定经过对象的中心。

如何正确地做到这一点?

抱歉,如果我对此感到有些烦恼,但我想实现这样的功能。

谢谢。

PS似乎我需要一个看起来像这样的函数:

函数RotateAroundArbitraryAxis(object,axisDirection,axisBasePoint,radians){..}

by axisBasePoint我的意思是指定轴经过的点。

我在互联网上读到,这样的轮换应该分几个步骤进行:

  1. 平移空间,使旋转轴穿过原点。
  2. 围绕Z轴旋转空间,使旋转轴位于XZ平面中。
  3. 绕Y轴旋转空间,使旋转轴沿Z轴放置。
  4. 通过Theta绕z轴执行所需的旋转。
  5. 应用步骤(3)的逆函数。
  6. 应用步骤(2)的逆函数。
  7. 应用步骤(1)的逆函数。

我理解正确吗?

如何用three.js执行这样的操作?

我试图在Three.js中相互乘以不同的(平移/旋转)矩阵,但没有得到所需的结果:-(

非常感谢。

Question

最有用的评论

那这样的东西呢?

var dummy = new THREE.Object3D();
dummy.position.x = 50;
dummy.position.z = 50;
scene.add( dummy );

var cube = new THREE.Mesh( new THREE.CubeGeometry( 100, 100, 100 ), new THREE.MeshBasicMaterial() );
cube.position.x = - 50;
cube.position.z = - 50;
dummy.add( cube );

所有5条评论

那这样的东西呢?

var dummy = new THREE.Object3D();
dummy.position.x = 50;
dummy.position.z = 50;
scene.add( dummy );

var cube = new THREE.Mesh( new THREE.CubeGeometry( 100, 100, 100 ), new THREE.MeshBasicMaterial() );
cube.position.x = - 50;
cube.position.z = - 50;
dummy.add( cube );

谢谢回复。

不幸的是,无论我如何称呼,示例中的多维数据集仍然绕着穿过其中心的局部轴旋转:

function rotateAroundObjectAxis( object, axis, radians ) { .. }

或者

function rotateAroundWorldAxis( object, axis, radians ) { .. }

我真正想弄清楚的是如何移动特定对象的旋转轴。

非常感谢。

您是否尝试过旋转假人/容器而不是立方体?

好点子。 它以这种方式工作。

但是为什么它不是那么拘谨:-)?

我应该使用我在最初的文章中建议的函数进行矩阵算术运算,或更方便一些。

function rotateAroundArbitraryAxis( object, axisDirection, axisBasePoint, radians ) { .. }

by axisBasePoint我的意思是指定轴经过的点。

亲切的问候。

@oosmoxiecode糟糕! 是的,在我的摘要中忘记了这一点。

@地主好吧,对我来说很简单。 它甚至不需要矩阵知识;)我想这只是以不同的方式思考的问题……无论哪种方式,在内部,相同的矩阵计算都在发生。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

makc picture makc  ·  3评论

fuzihaofzh picture fuzihaofzh  ·  3评论

jack-jun picture jack-jun  ·  3评论

filharvey picture filharvey  ·  3评论

zsitro picture zsitro  ·  3评论