나는 JPS와 같은 JavaScript/Canvas 3D FPS와 같은 엔진을 사용하고 있으며 near plane과 far plane clipping을 위해 필연적으로 법선 벡터 (look-at vector)가 필요하다. 나는 x 축과 y 축 회전 각을 가지고 있으며 그 중 한 개에서만 쉽게 할 수 있지만 두 가지를 얻는 방법을 알 수는 없습니다 ...오일러 앵글에서 3D normal/look-at 벡터
아이디어는 다음과 같습니다. 이 벡터를 사용하여 카메라 앞의 한 점을 계산하면 near 및 far 클리핑 면도 상수로 정의 할 수 있어야 벡터가 정규화되어야하므로 각도 만 있으면이 벡터 길이를 얻을 수 있기를 기대합니다. 정상화하지 않고 1로,하지만 그건 문제가 아니야.
저는 롤 (z 축을 중심으로 회전)이 없으므로 훨씬 쉽습니다.
내 수학은 다음과 같습니다
zNear = 200; // near plane at an arbitrary 200 "points" away from camera position
// normal calculated with only y rotation angle (vertical axis)
normal = {
x: Math.sin(rotation.y),
y: 0,
z: Math.cos(rotation.y)};
은 그런 내적에 의해 그것에 비행기에서 벡터를 테스트하여 3D 공간에서 점을 클립. 포인트가 투영 좌표가 반전 플레이어 (x는 = -x, Y = -y) 그래서 아무것도 더 이상 의미가 없다 뒤에 때 내가 그들을 제거하기 위해 노력하고있어 왜
nearPlane = {
x: position.x+normal.x*zNear,
y: position.y+normal.y*zNear,
z: position.z+normal.z*zNear};
// test a point at x, y, z against the near clipping plane
if(
(nearPlane.x-x)*normal.x+
(nearPlane.y-y)*normal.y+
(nearPlane.z-z)*normal.z < 0
)
{
return;
}
// then project the 3D point to screen
, 즉이다.
나는 그러나 3 차원, 즉 녹색 화살표가합니다.
2 점의 벡터 (AB와 BC)를 만드는 3 점 A, B, C를 주면 교차 제품을 사용하여 평범함을 얻을 수 있습니다 ... 도움이 될까요? – dustmachine
@dustmachine : 아니요, 오일러 x 및 y 회전 각도에서 look-at vector가 필요합니다. 다른 데이터가 없습니다. – Solenoid