Three.js: オブジェクトのピボットポイントを変更しますか?

作成日 2012年02月20日  ·  10コメント  ·  ソース: mrdoob/three.js

私はこの分野で非常に新しいので、それが愚かな質問であるならば言い訳をしてください。

私の問題:

プリズム(ポリゴンは24面で構成されています)を作りたいです。 だから私は24の飛行機を持っています、それらのすべてはお互いに15°の角度でグループ化されています。 xとzの距離を計算するのは複雑なので、たとえば右下にピボットポイントを設定すると簡単になりますか? 正しい? しかし、どのように? または、平面で構成される円を作成する別の可能性はありますか?

私の悪い英語でごめんなさい:-/

Question

最も参考になるコメント

2つのオプションがあります。

ジオメトリ内のすべての頂点をオフセットします。

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件

2つのオプションがあります。

ジオメトリ内のすべての頂点をオフセットします。

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

ピボットとして機能するオブジェクトを作成します。

mesh.position.y = 10;

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

scene.add( pivot );

これらの2つの方法に長所または短所はありますか?

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

今でしょ

shape.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.jsv78でも機能するはずです。 オブジェクトの中心の場合は、代わりにオブジェクトの端を中心に回転します。

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

ただし、 geometry.translate()を使用すると、すべての頂点の位置が変更されることに注意してください。 後でピボットを再度変更する予定がない限り、これは優れたソリューションです。

メッシュ(3Dボックスコンテナ)の原点を中央から左下隅に移動したいと思います。 したがって、コンテナメッシュ内に他の小さなメッシュボックスを追加する場合、中央に配置するのではなく、左下隅に配置する必要があります。

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

これを使用すると、メッシュ位置も変更されます

@imgucchoお願いします、助けのためにフォーラムを使って

ArrowHelperのポイントをどのように翻訳できますか

このページは役に立ちましたか?
0 / 5 - 0 評価