我正在尝试理解如何将子网格分组/链接到父级。我希望能够:
- 拖动父级
- 相对于父级旋转子元素
- 使父级的旋转/平移对子元素生效
我唯一的背景是在Second Life中使用LSL来操作对象中链接的基元。我认为我不想合并网格,因为我想保持对每个子对象的控制(悬停,纹理,旋转,缩放等)。
是否有任何好的教程?这可以通过THREE.Object3D()实现,对吗?
谢谢,丹尼尔
我正在尝试理解如何将子网格分组/链接到父级。我希望能够:
我唯一的背景是在Second Life中使用LSL来操作对象中链接的基元。我认为我不想合并网格,因为我想保持对每个子对象的控制(悬停,纹理,旋转,缩放等)。
是否有任何好的教程?这可以通过THREE.Object3D()实现,对吗?
谢谢,丹尼尔
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
更新
正如Nick Desaulniers和escapedcat指出的那样,THREE.Group
现在提供了所需的功能。附带的代码示例:
const geometry = new THREE.BoxGeometry( 1, 1, 1 );
const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
const cubeA = new THREE.Mesh( geometry, material );
cubeA.position.set( 100, 100, 0 );
const cubeB = new THREE.Mesh( geometry, material );
cubeB.position.set( -100, -100, 0 );
//create a group and add the two cubes
//These cubes can now be rotated / scaled etc as a group
const group = new THREE.Group();
group.add( cubeA );
group.add( cubeB );
scene.add( group );
还有一种方法,因为网格也可以是父级。
meshParent.add(meshChild1);
meshParent.add(meshChild2);
scene.add(meshParent);
或者mesh1.add(mesh2);
mesh3.add(mesh1);
scene.add(mesh3);
mesh3 操纵所有网格,mesh1操纵自身和mesh2,mesh2操纵自身