> 백엔드 개발 > C++ > 본문

ModelMatrix에 glm::lookAt를 사용하면 GLM에서 잘못된 객체 위치 지정 및 회전이 발생하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-11 11:11:02
원래의
849명이 탐색했습니다.

Why Does Using glm::lookAt for the ModelMatrix Produce Incorrect Object Positioning and Rotation in GLM?

모델링 행렬 변환

질문:
GLM에서는 ViewMatrix를 쉽게 설정할 수 있음에도 불구하고 다음을 사용하여 ModelMatrix를 설정합니다. glm::lookAt는 객체에 대해 잘못된 위치와 회전을 생성합니다. glm::lookAt를 사용하여 객체 방향을 카메라 위치와 어떻게 정렬할 수 있습니까? 아니면 사용자 정의 기능을 만들어야 합니까?

답변:

컴퓨터 그래픽에서는 변환이 적용됩니다. 3D 공간의 개체를 정확하게 배치합니다. 이 프로세스에는 ModelMatrix, ViewMatrix 및 ProjectionMatrix의 세 가지 기본 변환 행렬이 포함됩니다.

모델 좌표:
장면 내의 각 메시에는 모델 공간이라는 자체 로컬 공간이 있습니다. 정점 좌표는 이 공간 내에서 정의되며 ModelMatrix는 월드 공간에서 객체의 위치, 방향 및 상대적 크기를 정의합니다.

월드 좌표:
월드 공간은 좌표입니다. 여러 개체가 배치된 전체 장면 시스템.

보기 공간:
보기 공간은 보기 위치, 시선을 사용하여 보기 관점을 기준으로 정의됩니다. , 위쪽 방향. 뷰 좌표계의 역행렬은 객체를 월드 공간에서 뷰(눈) 공간으로 변환하는 ViewMatrix입니다.

클립 좌표:
클립 공간 좌표는 동질적입니다. 장면 자르기. x, y 및 z 구성 요소가 반전된 w 구성 요소와 동종 좌표의 w 구성 요소로 정의된 범위 내에 있는 경우 점은 클립 공간에 있습니다.

투영 행렬:
ProjectionMatrix는 장면의 3D 지점에서 뷰포트의 2D 지점으로의 매핑을 설명하여 뷰 공간을 클립 공간으로 변환합니다.

정규화된 장치 좌표:
원근 분할은 클립을 변환합니다. 공간 좌표를 (-1, -1, -1) ~ (1, 1, 1) 범위 내의 정규화된 장치 좌표로 변환합니다.

창 좌표:
정규화된 장치 좌표는 다음과 같습니다. 창 좌표(화면 좌표)와 깊이 버퍼의 깊이에 선형적으로 매핑되어 뷰포트와 깊이 범위를 정의합니다.

위 내용은 ModelMatrix에 glm::lookAt를 사용하면 GLM에서 잘못된 객체 위치 지정 및 회전이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿