Я пытаюсь заставить внука повернутого элемента Object3D lookAt()
камеру.
Я пробовал много подходов. В исходном коде функции 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). Это действует так, как будто ничего не было обновлено в этом случае. Я проверил документы и до сих пор не понимаю, почему это даже ничего не меняет.
Заранее благодарю за любую помощь!