2016-09-08 4 views
0

私はhttp://threejs.orgサイト(http://threejs.org/examples/webgl_interactive_draggablecubes.html)の例を見ており、選択された立方体をカメラに相対する平面に沿って動かしているのがわかります。レイキャスターと一緒に非投影がどのように機能するかを知る。私が得られないことは、たとえカメラがある角度にあっても常に地面(平面)に沿ってオブジェクトを動かすように設定することです。アイデアは、カメラがある角度にあってもオブジェクトを地面に沿って移動させるためにマウスを使用させ、完全に見ていないようにすることです。私はThree.jsを使用するのが初めてだから、あなたが迷っていることを説明するのに冗長になりたいかもしれません。または、私が自分自身を説明していない場合、質問を返すかもしれません。Three.jsの使用指定した平面に沿ってオブジェクトを移動するにはどうすればよいですか?

私のプロジェクトはこのように見え、マウスでマウスを動かそうとしています。

enter image description here

+0

私が見ることができる限り、変更する必要があるのは「飛行機」の割り当てだけです。この例では、代わりに 'Y = 0'平面が必要ですが、' plane.setFromNormalAndCoplanarPoint(camera.getWorldDirection(plane.normal)、INTERSECTED.position); 'を使用しています。 'THREE.Vector3(0,1,0)、0); –

+0

新しいTHREE.Vector3(0,1,0)が0の後に何をするかを説明できますか? ?私は、Vector3オブジェクトと、THREE.PlaneパラメータとともにVector3に入れているパラメータについて少し不明です。あなたの助けをありがとう – Dale

+0

私は新しい飛行機を作っています。コンストラクタは、通常と距離を必要とします。 (0、1、0)ベクトルは真上を指すベクトルです。原点からの距離0と共に、私はXZ平面を得る。 –

答えて

2

カメラアングル変更するたびにコード例は、MouseMoveイベントに平面と更新を作成します。

plane.setFromNormalAndCoplanarPoint(camera.getWorldDirection(plane.normal), INTERSECTED.position); 

の代わりにそれを行うには、

var plane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0); 
として平面を作成します

であり、これは原点におけるXZ平面である。

関連する問題