#three.js
#three.js
Вопрос:
Я пытаюсь реализовать ScreenToWorldPoint
из Unity3D в ThreeJS. По сути, он преобразует a screen point
в a world point
на заданном расстоянии.
https://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html
В Unity задана перспективная камера с этими настройками.
//fov,ratio,near,far
const camera = new THREE.PerspectiveCamera(60, 411 / 731, 0.3, 1000)
И эти параметры
Camera.main.ScreenToWorldPoint(new Vector3(0, 0, -16))
В Unity3D я получаю этот вектор, который ожидается (5.2, 9.2, -32.0)
Но в моей реализации мне не удается получить тот же вектор. Это моя реализация.
function screenToWorldPoint(screenSpaceCoord, target = new THREE.Vector3()) {
const ndc = new THREE.Vector2();
ndc.x = (2 * screenSpaceCoord.x) / 411 - 1;
ndc.y = 1 - (2 * screenSpaceCoord.y) / 731;
const raycaster = new THREE.Raycaster();
raycaster.setFromCamera(ndc, camera);
return raycaster.ray.at(screenSpaceCoord.z, new THREE.Vector3());
}
Комментарии:
1. Какое положение и поворот вашей камеры?
2. Вы также хотите использовать Vector3.unproject() .