Three.js :преобразование 3D-позиции в 2D-позицию на экране

У меня есть 3D-объект с позицией (x,y,z ). Как я могу рассчитать положение экрана (x, y )этого объекта?

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

Я пытаюсь использовать функцию преобразования, подобную этой, но она дает неверный результат

function Point3DToScreen2D(point3D){
            var screenX = 0;
            var screenY = 0;
            var inputX = point3D.x - camera.position.x;
            var inputY = point3D.y - camera.position.y;
            var inputZ = point3D.z - camera.position.z;
            var aspectRatio = renderer.domElement.width / renderer.domElement.height;
            screenX = inputX / (-inputZ * Math.tan(camera.fov/2));
            screenY = (inputY * aspectRatio) / (-inputZ * Math.tan(camera.fov / 2));
            screenX = screenX * renderer.domElement.width;
            screenY = renderer.domElement.height * (1-screenY);
            return {x: screenX, y: screenY};
        }

Заранее спасибо.

6
задан gman 8 October 2013 в 21:40
поделиться