我在这方面很新,如果这是一个愚蠢的问题,请原谅。
我的问题:
我要建立一个棱镜(由24个平面组成的多边形)。 所以我有24架飞机,每个飞机彼此成15度角并分组。 因为计算x和z距离有多复杂,所以例如在右下角设置枢轴点会更容易吗? 对? 但是如何? 还是有可能创建一个由平面组成的圆?
对不起,我的英语不好 :-/
您有两个选择。
偏移几何图形中的所有顶点:
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转换点
最有用的评论
您有两个选择。
偏移几何图形中的所有顶点:
创建一个将用作枢轴的对象: