3

頂点(円錐の厚さが最小になる点)を中心に回転できるようにする必要がある円錐を定義しています。回転が発生するポイントを設定する方法がまだ見つかりませんでした。

var coneGeometry = new THREE.CylinderGeometry(1000, 0, width, 50, 50, false);
var cone = new THREE.Mesh(coneGeometry, material);
cone.position.x = x;
cone.position.y = y + width / 2;
cone.position.z = z;
// I want this rotation to happen around the point given by the (x, y, z) location
cone.rotation.x = dip;
4

1 に答える 1

10

円錐のジオメトリは原点を中心にしています。作成する必要があるのは、円錐の先端が原点になるように、作成された直後に円錐のジオメトリを変換することです。

coneGeometry.applyMatrix( new THREE.Matrix4().makeTranslation( 0, coneHeight/2, 0 ) );

(円錐のどちらの端が小さい方の端であるかによって、変換の符号が変わります。)

これで、円錐を回転させると、先端を中心に回転します。チップも設定した位置に配置されます。

編集:代わりに、これを行うことができます:

coneGeometry.translate( 0, coneHeight/2, 0 ); // three.js r.72
于 2012-09-24T12:07:23.707 に答える