2

私は世界空間でオブジェクトを操作する正しい方法を学ぼうとしています。テストとして、立方体を作成し、任意のベクトルから立方体の各頂点に線を描画しています。

立方体をまったく変更しない場合、線は頂点にうまくヒットします。

正しい

しかし、立方体を回転させると、線は頂点と一致しなくなります。

間違い

明らかに、立方体を回転させているのと同じ量だけ線を回転させることができることはわかっていますが、これを行うには行列またはベクトルを操作する必要があることはわかっています。

両方のオブジェクトを回転させることなく、このような一般的な問題にどのように取り組むべきかを誰かが説明できますか?

便宜上、私はjsfiddleで遊ぶことができます

4

1 に答える 1

5

コードに合わせて線を回転させたい場合は、シーンではなく立方体に線を追加するだけです。

// scene.add(line);
cube.add(line);

ただし、必要に応じて、線の原点を同じ位置に保ち、代わりに線の端を更新します。

cube.updateMatrixWorld(); // make sure that cube.matrixWorld is updated.

for(var i = 0; i < 8 ;i++){
   var vertex = cube.matrixWorld.multiplyVector3(cube.geometry.vertices[i].clone());
   lineGeometry.vertices.push(vertex);
   lineGeometry.vertices.push(lineStart); 
}
于 2012-05-26T16:40:23.667 に答える