当我将一个Object3D添加到另一个Object3D(“添加”方法)时,该子项根据父项的变化更改其变换。Three.js add:保留位置
有没有办法在孩子添加到父母后保持位置/旋转/缩放比例?
小提琴:https://jsfiddle.net/pqfzd8a2/1/
mesh = new THREE.Mesh(geometry, material);
mesh.position.y = 25;
var mesh2 = mesh.clone();
mesh2.position.y = 80;
var mesh3 = mesh2.clone();
mesh.rotation.z = Math.PI*0.25;
scene.add(mesh);
mesh.add(mesh2);
scene.add(mesh3);
做了什么?
- 网格被旋转。
- mesh2和mesh3是相互位置相同的克隆。
- 将mesh2添加到网格中,同时将mesh3添加到场景中。
mesh2和mesh3之间的区别在于它们被添加(父)到不同的父母(以相应地网格化和直接到场景)。在被添加(父)之前,他们处于相同的位置。重点是保持对象在被添加之前的位置(父对象)。
预期结果:mesh2和mesh3应该在相同的位置。
实际结果:mesh2在添加后改变位置/旋转/缩放比例。
如何使对象在被父对象保持其全局变换?
什么确切的是用例是什么?为什么你真的需要一个子对象,它应该在层次结构的父级别?你为什么不能把孩子转移到另一个阶段? – philipp