2016-09-05 32 views
0

下の画像に示すように、私はTHREE.Sceneに単純な立方体を使用しています。キューブにはCANNON.BodyのPhysics(緑のワイヤフレームで表される)が添付されています。THREE.js 3D円の回転位置を計算する方法は?

CANNON.Bodyは、キューブから2〜3単位オフセットされています。回転の場合、このオフセットはの半径になります。

私はキューブを回転させたとき、私はCANNON.Body角度半径に基づいてキューブの周りを回転します。画像の右側に、の角度(私もラジアンがあります)の立方体を回転させました。しかし、CANNON.Bodyの周りにの周りを回転せず、その周りのみがキューブです。私は回転する必要がありますのすべての軸のキューブxyzです。

THREE.jsには組み込み関数がありますか、それとも自分の数式を使用する必要がありますか?もしそうなら、それは何でしょうか?

enter image description here

ありがとう!

P.S.私は純粋な解決策を見てきましたTHREE.jsピボットポイントを操作するためにジオメトリが変換されるシーン。私はCANNON.Bodyにジオメトリがないので、これはできません。

+0

シーンには(そうでなければ空の) 'Object3D'を追加することもできますが、その位置を回転の中心にしておくこともできます。シーンにではなく 'Object3D'に' CANNON.Body'を追加してください。前に行ったように 'CANNON.Body'を移動し、代わりに' Object3D'を回転させます。 – Leeft

+0

@Leeft提案していただきありがとうございます。ただし、不要なオブジェクトをシーンに追加しないようにしたいと思います。私はこれが数学的に解決できることを知っています、私はちょうど私の状況にそれを適用する方法とどのような式を使用するのか分かりません。他に提案がある場合は、教えてください! – Nicky

+0

私が考えることができる他の可能なオプション:ピボットポイントを移動するか、[自分で数学を行う](http://stackoverflow.com/a/839931/3755747)(組み込み関数はありませんが、 'THREE.Math'には'radToDeg'と' degToRad'ヘルパー)。あなたのシーンのものをグループ化またはオフセットするために(そうでなければ空の) 'Object3D'を作成することには何も問題はありません。実際、シーン自体は本質的に、' Object3D'を子として持ちます(例えば、オブジェクトなど)。 – Leeft

答えて

0

私はcannonjsで仕事をしたことはありませんでしたが、Three.GroupにCubeとRigid Bodyを追加することは可能でしたか?あなたは親要素モデルを回転させる場合

var rigidBody = new CANNON.Body(); // whatever it is for cannon 
var model = new THREE.Group(); 

// your model goes here 
model.add(new THREE.Mesh(
    new THREE.BoxGeometry(1,1,1), 
    new THREE.MeshStandardMaterial() 
)); 

model.add(rigidBody); 
scene.add(model); 

同様

この方法で、剛体は、同じように更新する必要があります。

関連する問題