three.js - 网格组示例? (THREE.Object3D()高级)

时间:2011-11-02 18:53:51

标签: object parent-child mesh three.js

我试图了解如何将子网格分组/链接到父级。我希望能够:

  • 拖动父
  • 相对于父
  • 旋转子元素
  • 让父母轮换/翻译为孩子做正确的事

我唯一的背景是在Second Life中使用LSL来操作对象中的链接prims。我想我不想合并网格,因为我想保持对每个孩子的控制(悬停,纹理,旋转,缩放等)。

有关于此的任何好的教程吗?这是通过THREE.Object3D()实现的,是吗?

谢谢,丹尼尔

2 个答案:

答案 0 :(得分:58)

拖动会有点棘手,因为你需要弄清楚鼠标在屏幕上的x / y位置(屏幕空间)将在3D世界中,然后你需要投射光线和检查它是否与要拖动的对象相交。我认为这将是一个不同的问题。

设置对象层次结构非常简单。 正如您所暗示的那样,您将使用THREE.Object3D实例将对象嵌套到使用它的 add()方法中。我们的想法是,对于具有几何体的对象和Object3D实例,您将使用Mesh,您只需要嵌套元素。我建议从canvas_geometry_hierarchy样本开始。

有趣的是:

group = new THREE.Object3D();//create an empty container
group.add( mesh );//add a mesh with geometry to it
scene.add( group );//when done, add the group to the scene

答案 1 :(得分:14)

另一种方式,因为网格也可以是父

meshParent.add(meshChild1);
meshParent.add(meshChild2);
scene.add(meshParent);

mesh1.add(mesh2);
mesh3.add(mesh1);
scene.add(mesh3);

mesh3操纵所有网格,mesh1操纵自身和mesh2,mesh2操纵自己

相关问题