인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

pakheae님의 프로필 이미지
pakheae

작성한 질문수

[게임 프로그래머 도약반] DirectX11 입문

계층 구조

계층구조 질문있습니다.

작성

·

140

0

탱크를 그릴떄 본매트릭스를 넘겨줘서 포지션을 이동시켜주는것처럼

탱크의 노말도 본매트릭스를 이용하여 회전시켜주는게 맞지않나용?

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 대한 정확한 답변을 드리기 위해서 추가적인 정보가 필요할 것 같습니다만, 일반적인 게임 프로그래밍 관련하여 말씀드리자면, 탱크와 같은 3D 모델을 그릴 때 위치뿐만 아니라 회전이나 스케일링 변환도 본 매트릭스(보통 Transform Matrix라고도 부릅니다)를 통해 수행하는 것이 일반적입니다.

3D 그래픽스에서는 모델의 정점(vertex) 정보와 더불어 노멐(normal) 벡터의 정보도 중요합니다. 노멀 벡터는 표면이나 면의 방향을 지시하며, 이를 통해 빛의 반사 방향이나 텍스처 매핑 등이 결정됩니다. 모델의 변환과 더불어 노멀 벡터도 해당 변환에 맞춰 적절히 회전시켜주어야 모델의 빛 반사 등이 현실적으로 보여집니다.

따라서, 탱크 모델 같은 경우 위치를 이동시키기 위해 본 매트릭스를 사용하는 것처럼, 탱크의 노말 벡터에도 동일한 변환 매트릭스를 적용하여 회전시키는 것이 맞습니다. 하지만 이때, 노멀 벡터에는 위치 변환이 아닌 회전과 스케일 변환만 적용되어야 합니다. 이를 위해 본 매트릭스에서 위치 변환 부분을 제외한 회전 및 스케일 부분만 적용해야 할 수도 있습니다.

각별히 주의해야 할 점은, 스케일링이 비균등일 경우(예: x축으로 2배, y축으로 1배) 노멀 벡터에 적용하기 전에 스케일을 보정해주어야 한다는 것입니다. 비균등 스케일링은 노멀 벡터의 방향을 왜곡시킬 수 있으므로, 이를 보정하기 위해 스케일링만을 고려한 보정 매트릭스(보통은 역전치 매트릭스를 사용)를 노멀 벡터에 적용하기도 합니다.

정리하자면, 탱크의 노말을 회전시키기 위해 본 매트릭스를 사용하는 것은 맞으나, 위치 변환은 제외하고 회전 및 필요에 따라 스케일링 변환을 적용해야 하며, 비균등한 스케일링에 대한 보정이 필요할 수 있습니다.

pakheae님의 프로필 이미지
pakheae

작성한 질문수

질문하기