320x100
[목표]
Billboard Texture 구현하기
Billboard Texture 는 사용자의 시점에 따라 항상 사용자를 바라보는 텍스처를 말한다.
사용자의 위치를 기준으로, 제자리 회전을 하기 때문에, 항상 앞면이 보이게 된다.
[문제상황]
Billboard texture를 배치는 성공했는데, 회전이 제자리가 아니라 Player 기준으로 회전을 한다.
그래서 플레이어를 중심으로 공전하는 문제가 발생함.
[시도해본 것들]
일단, yawRot라는 새로운 matrix를 도입했다.
yawRot는 camera.yaw를 받아서 YRotation을 계산한다.
rotation의 방향은 맞는데, view transform 이후에는 플레이어 중심으로 origin이 바뀌다보니,
player를 기준으로 공전하게 된다.
그래서, yawRot을 계산할때,
m_billboardPoints.m_constantData.yawRot =
Matrix::CreateRotationY(-m_camera.GetYaw())*Matrix::CreateTranslation(Vector3(0,0,0));
RotationY*Translation(origin)을 해서 모두 원점으로 옮긴 후 제자리 회전을 하도록 했다.
회전을 하고 translation을 하면, 회전은 제자리에서 정의가 되었기 때문에 공전하지 않기 때문이다.
그런데 여기다가 view를 곱하니까 다시 공전하기 시작했다.
300x250
댓글