當我將一個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