2017-01-13 11 views
0

オブジェクトの依存性に問題があります。 1つのオブジェクトを2つの他のオブジェクトに依存させたい。 1つの親オブジェクトの位置(たとえばy-位置)を変更すると、依存オブジェクト(子オブジェクト)も回転し、移動する必要があります。Webgl three.js複数のオブジェクトの依存性

ここで私は写真上でそれを実現したリンクです。左側は初期状態であり、右側は変更された状態である。シリンダーは2つのボックスに依存する必要があります。つまり、円柱は子オブジェクトであり、ボックスはこの子オブジェクトの両方の親オブジェクトでなければなりません。 親と子のプロパティを使って試しましたが、子オブジェクトを2つの親オブジェクトに依存させることができませんでした。

誰かが私を助けることができますか?

enter image description here

これは私の現在のコードですが、ルックアット機能が正しく動作しません。

//cube 1 
    var cube=new THREE.BoxGeometry(4,4,4); 
    var material=new THREE.MeshBasicMaterial ({ color: 0xffffff }); 
    mesh1=new THREE.Mesh(cube,material); 
    mesh1.position.set(-2,2,0); 
    scene.add(mesh1); 

    //cube 2 
    var cube2=new THREE.BoxGeometry(2,2,2); 
    var material=new THREE.MeshBasicMaterial ({ color:0x000000 }); 
    mesh2=new THREE.Mesh(cube2,material); 
    mesh2.position.x=6; 
    mesh2.position.y=2; 
    //mesh2.position.y=-2; 
    scene.add(mesh2); 

    //cylinder 
    var cylinder=new THREE.CylinderGeometry(1,1,6,30); 
    var material=new THREE.MeshBasicMaterial({ color:0xff3399 }); 
    mesh3=new THREE.Mesh(cylinder,material); 
    mesh1.add(mesh3); 
    mesh3.lookAt(mesh2.position); 

答えて

0

あなたは階層の二つのレベル、例えばする必要があります:あなたはObject3D classlookAt機能付後にしているものを行うことができるかもしれ

cube1.add(cylinder) 
cylinder.add(cube2) 
+0

私は、これは望ましい結果を与えるとは思わない:私は実際に必要とする彼がこのような何か(彼らは離れて正確にシリンダー高さでない限り、あなたはシリンダーをスケールまたは正方形を移動する必要があります注意してください)があるものだと思いますあなたの例のように、キューブ1はシリンダーとキューブ2を同じ量だけ移動させます – 2pha

0

など。

シリンダーをcube1の子として追加すると、cube1を移動するとシリンダーも移動します。 cube1(または/およびcube2)が移動され、その後

cube1.add(cylinder) 

はcube2の位置を見てシリンダーにルックアット関数を呼び出します。

cylinder.lookAt(cube2.position) 
+0

あなたの素早い答えをありがとう。私は明日それを試してみます。私はすでに子供とメソッドを使用していますが、私はlookAtメソッドを忘れてしまいました。私はまだこのメソッドを知らなかったためです。 – webgl

+0

自分の投稿を自分の現在のコードで編集しました。私はlookat関数に問題があります。 lookat関数は方向ベクトルと一緒に働くと思いますか? – webgl

0

ええ、2phaは実際には正しいです。

cylinder.position.x=cube1.position.x 
cylinder.position.y=cube1.position.y 
cylinder.position.z=cube1.position.z 
cylinder.lookAt(cube2.position) 
+0

別の回答を追加する理由あなたの古いものを編集してみませんか?この答えは、私が私の答えに入れたものに何も追加しません。 – 2pha

+0

私が想像しているように、lookAtメソッドは機能しません。 – webgl

関連する問題