Как выполнить относительные вращения по отношению к другим объектам в три раза?

#javascript #three.js #3d

Вопрос:

Я пытаюсь заставить перспективную камеру проходить через портал, как в игровом портале, и поворачиваться относительно грани портала, из которой она выходит, чтобы вы смотрели в ту же сторону, что и выходной портал, сохраняя при этом ту же точку зрения, что и при входе в портал. Я попытался реализовать это с помощью getWorldDirection() примерно так:

 var portalNormal = new THREE.Vector3();  portal.getWorldDirection(portalNormal);   var exitPortalNormal = new THREE.Vector3();  exitPortal.getWorldDirection(exitPortalNormal );   var camNormal = new THREE.Vector3();  camera.getWorldDirection(camNormal);   camNormal.add(portalNormal);  camNormal.sub(portalLinkNormal);   camera.lookAt(camNormal)  

Этот код, кажется, почти работает, но камера никогда не вращается правильно. Спасибо за помощь! А также дайте мне знать, правильно ли я задаю вопрос, потому что я не совсем уверен, как это сформулировать.