簡體   English   中英

Webgl three.js幾個對象的依賴性

[英]Webgl three.js Dependency of several objects

我對對象的依賴性有疑問。 我想使一個對象依賴於另外兩個對象。 如果更改一個父對象(例如y-Position)的位置,則從屬對象(子對象)應旋轉,也應移動。

這是我在圖片上實現的鏈接。 左側是初始狀態,右側是更改后的狀態。 圓柱體應取決於兩個框。 這意味着圓柱體是子對象,並且框都應該是該子對象的父對象。 我嘗試使用父級和子級屬性進行嘗試,但無法使子級對象依賴於兩個父級對象。

有人能幫我嗎?

在此處輸入圖片說明

這是我當前的代碼,但是lookAt函數無法正常工作。

    //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);

您需要兩個層次的層次結構,例如:

cube1.add(cylinder)
cylinder.add(cube2)

您可以使用Object3D類lookAt函數來完成所需的操作。

例如。

將圓柱體添加為cube1的子代,因此移動cube1也會移動圓柱體。

cube1.add(cylinder)

然后,當移動多維數據集1(或/和多維數據集2)時,調用圓柱體上的lookAt函數以查看多維數據集2的位置。

cylinder.lookAt(cube2.position)

是的, 2pha實際上是正確的。 我認為他實際需要的是這樣的東西(請注意,您需要縮放圓柱或移動正方形,除非它們正好與圓柱高度分開):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM