나는 이것이 xyplane을받을 수있는 확인 방법이라고 생각 주어진 xy 평면에 캔버스의 좌상의 좌표를 찾기 (이 잘못 또는 더 나은 방법이 있는지를 알려주세요) :카메라
xyplane = new THREE.Plane().setFromCoplanarPoints(
new THREE.Vector3(0, 0, 0),
new THREE.Vector3(10, 15, 0),
new THREE.Vector3(100, -90, 0),
);
나는 원산지를보고 (0, 0, 1000)
에있는 카메라를 가지고 있습니다. 나는 그 내보기 포트의 왼쪽 정확한 상단 좌표 찾을 수 있습니다
projector = new THREE.Projector();
topleft = new THREE.Vector3(-1, 1, 0);
through = projector.unprojectVector(topleft, camera);
through
다음 캔버스의 좌상에 완벽하다 THREE.Vector3 {x: -31.425217496422327, y: 22.169468302342334, z: 900.0000201165681}
이다. 그러나, 나는 z = 0 인 등가 지점을 찾고 싶다. 나는 이것을 광선으로 시도한다. 그러나 나는 실패한다.
ray = new THREE.Ray(camera.position, through);
point = ray.intersectPlane(xyplane);
point
근처에도하지 않은 다음 {x: 34.91690754890442, y: -24.632742007573448, z: 0}
이다. 나는 기본적인 것을 오해하고있다. 나는 이것을 알아 내려고 노력하면서 Coordinates of intersection between Ray and Plane과 다른 것을 공부할 것이다. 어쩌면 평범한 언어로 설명 할 수 있습니다.
당신은 거의있다. THREE.Ray()의 두 번째 인수는 카메라에서 목표 지점을 가리키는 단위 길이의 방향 벡터 여야합니다. – WestLangley
Thanks @WestLangley, 귀하의 의견은 분명히 밝혔습니다. –