Three.js: 更改对象的枢轴点?

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

我在这方面很新,如果这是一个愚蠢的问题,请原谅。

我的问题:

我要建立一个棱镜(由24个平面组成的多边形)。 所以我有24架飞机,每个飞机彼此成15度角并分组。 因为计算x和z距离有多复杂,所以例如在右下角设置枢轴点会更容易吗? 对? 但是如何? 还是有可能创建一个由平面组成的圆?

对不起,我的英语不好 :-/

Question

最有用的评论

您有两个选择。

偏移几何图形中的所有顶点:

geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );

创建一个将用作枢轴的对象:

mesh.position.y = 10;

var pivot = new THREE.Object3D();
pivot.add( mesh );

scene.add( pivot );

所有10条评论

您有两个选择。

偏移几何图形中的所有顶点:

geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );

创建一个将用作枢轴的对象:

mesh.position.y = 10;

var pivot = new THREE.Object3D();
pivot.add( mesh );

scene.add( pivot );

这两种方法有什么优点或缺点?

geometry.applyMatrix(new THREE.Matrix4()。setTranslation(0,10,0));

就是现在

geometry.applyMatrix(new THREE.Matrix4()。makeTranslation(0,10,0));

https://github.com/mrdoob/three.js/commit/7f05ba167c522d1b9bac01677c2249b0f1b8c834

applyMatrix makeTranslation东西,在我的情况下不起作用。 不知道为什么。
枢轴对象起作用。 和恕我直言,这更容易。
注意:
用这个

mesh.position.x = ###;
mesh.position.y = ###;
mesh.position.z = ###;

代替:

mesh.position.set(###,###,###);

感谢@placegraphichere ,这有所帮助。

如果您愿意的话,这样的事情也可以在three.js v78中正常工作。 绕对象边缘旋转,如果它的中心是:

.js mesh.geometry.translate( -myObjectWidth/2, 0, 0 );

但是请注意,使用geometry.translate()会修改所有顶点的位置。 只要您不打算稍后再更改支点,这就是一个很好的解决方案。

我想将网格物体(3D盒子容器)的原点从中心平移到左下角。 因此,当我在容器网格中添加任何其他小网格框时,应将其放置在左下角的内部,而不是放置在中心。

mesh.geometry.translate(-myObjectWidth / 2,0,0);

当我使用它时,我的网格位置也在改变

@imguccho ,使用论坛寻求帮助。

如何为ArrowHelper转换点

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

相关问题

Horray picture Horray  ·  3评论

clawconduce picture clawconduce  ·  3评论

yqrashawn picture yqrashawn  ·  3评论

seep picture seep  ·  3评论

danieljack picture danieljack  ·  3评论