我試圖讓一個旋轉的Object3D元素的孫子到lookAt()
相機。Three.js更新Object3D的孫子的旋轉
我已經嘗試了很多方法。 Three.js Object3D.lookAt()
函數的源代碼明確指出:// This method does not support objects with rotated and/or translated parent(s)
我把它理解爲場景中渲染圖的一部分。我試過複製lookAt()
的代碼。
我的結構是這樣Object3D()
[旋轉] - >Object3d()
- >Object3D()
[文網我要面對鏡頭在每一幀]
lookAt(textObject, artistProps) {
let m1 = textObject.matrixWorld.clone();
textObject.matrixAutoUpdate = false;
m1.lookAt(textObject.localToWorld(textObject.position), Props.camera.position, THREE.Object3D.DefaultUp);
textObject.quaternion.setFromRotationMatrix(m1);
textObject.matrixWorld.makeRotationFromQuaternion(textObject.quaternion);
textObject.matrixWorldNeedsUpdate = true;
textObject.updateMatrixWorld();
}
這只是我所試過的例子。很明顯,我的做法是錯誤的。我現在在想,我需要將子對象保留在自己的場景級容器中,以便它們可以獨立於旋轉父級而與世界空間相關聯。
文本網格(孫子Object3D)旋轉實際上沒有發生。它在這種情況下沒有更新。我檢查了文檔,仍然不明白爲什麼它甚至沒有改變任何東西。
在此先感謝您的幫助!
參見[這個答案](https://stackoverflow.com/questions/36156460/why-is-lookat-not-looking-at-specified-vector/36160110#36160110 )。 – WestLangley