繁体   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