OpenGL은 연구 노트는, "육"좌표계

  이전 기사에서는 정점 -1.0 1.0 사이 (정규화 디바이스 좌표)가 NDC 사이에 필요한 좌표의 OpenGL 것을 배운. 그러나 이러한 내부 객체의 좌표의 다양한 구성 요소 사이의 관계를 기술하는 객체 자체 좌표계의 세트와 같은 다른 좌표계의 다양성을 가질 수있다 코디 매일 사용. 좌표계 객체와 객체 사이에, 좌표는 오브젝트 등 사이의 관계를 설명한다. 소정의 좌표 변환에 따라 서로 다른 상황에서 다른 좌표 시스템을 제공하는 단계와 OpenGL 다른 정규화 디바이스 좌표 (NDC) 좌표계로 변환한다.

  

 

 

   이 그림은 상기 우리가 주로 사용되는 좌표계와 좌표계의 OpenGL의 변환 과정을 설명한다.

LOCAL SPACE, 모델의 MATRIX

  로컬 공간은, 가공 대상물의 내부 좌표계에 대해 설명한다. 예를 들어, 사진, 우리는 왼쪽 하단에 기본은 좌표 (0, 0), 그림의 길이가 1 인 경우, 우리는 (1,1)와 오른쪽 상단을 표현하는 것입니다의 기원이다. 동작 모델 스케일링 행렬 (매트릭스 MODEL)에 의한 좌표 변환 세계 공간 좌표, 오브젝트를 포함하는 변위 변환 행렬 모델, 회전에 로컬 공간.

WORDL SPACE, VIEW의 MATRIX

  세계 공간 개체 및 (0,0,0) 오브젝트 좌표가 같은 오브젝트의 좌표 사이의 관계를, 오브젝트 B의 좌표 (2,0,0), 오브젝트 (A)의 좌측이 될 객체 B를 렌더링 할 때, 두 단위에서. 세계는 객체의 좌표 설정되어 있지 않은 경우는 세계에있는 각 개체의 기본은 (0, 0, 0) 좌표, 그 효과는 모든 객체가 함께 적층 렌더링하는 것입니다. 세계 공간 좌표 공간 좌표를 볼 뷰 매트릭스 (VIEW 행렬)에 의해 변환 될 수 있고, 주로 오브젝트 등가 용량 계산도 공간에 오브젝트 설명을 회전시키는 일련의 뷰 매트릭스는 눈 카메라 앞에 삽입 전에 적절한 위치.

  우주의 관점에서 후술 할 것인가 카메라 개념, 우리는 이동과 같은 다른 카메라 작업, 회전,뿐만 아니라 다른보기 매트릭스 (VIEW 매트릭스)를 생성하는

VIEW 공간, 투영 행렬

  공간의 전망이 공간은 또한 카메라 또는 시각적 공간을 호출 할 수 있으며, 사용자의 눈에 의해 생성 된 좌표 사이의 각도 관계에 기초하여 설명한다. 즉, 오브젝트가 왼쪽, 오른쪽, 우리 앞에 설명하기 위해, 우리의 눈에서 무엇입니까? 보기 공간 (VIEW의 SPACE)도 공간이 카메라에 해당합니다. 공간 좌표 뷰 공간 좌표를 클립에 투영 행렬 (투영 행렬)에 의해 변환 될 수 있고, 돌출부 (1합니다 (NDC), 상기 직교 돌기가 돌출부의 다른 실시 예에 따라 분할 될 수 -1의 뷰 매트릭스 표준 장치 좌표로 좌표 직교 투영) 및 투시 투영 (투시 투영). 직접 매핑 오브젝트 좌표와 직교 투영 거리에는 차이가 없다 멀리 우리가 작은 모양에서, 더 큰 보이는 최근의에서 : 시각적 성능에, 우리의 눈에 설명 원근 투영은 세계를 볼 수 있습니다 화면에 그것.

클립 SPACE

  클립 공간은 좌표계 -1 설명 (1)에,이 범위에 물체가 렌더링되고, 이는 여과되지 않는다. 또한,이 공간에서 오브젝트의 좌표는 마침내 정규화 디바이스 좌표 (NDC)로 변환된다. 뷰 공간을 통해 절단 스크린 공간 좌표 설치된 공간 좌표 (NDC)를 클리핑 좌표 변환.

화면 공간

  화면 공간, 즉 넓이와 glViewport하여 화면의 높이 우리 좌표계 대응 정의한다.

  OpenGL은 좌표계의 다양성을 제공하지만, 또한 우리가 다른 시나리오에서 해당 좌표 시스템을 사용하기 위해, 다양한 시나리오에 따라 변환 할 수있는 편리한 방법이있다. 그리고 조합을 설치 오브젝트 공간에서 클립 공간입니다 변환의 우리는 종종 MVP. 전에, 버텍스 쉐이더는 주로 우리의 MVP 변환 버텍스 쉐이더에서 처리되고, 정점은 객체의 좌표 해결에 대한 또한, 우리는 또한 알아보십시오.

  예로서, 종래의 투시 투영에서는 환자의 오른쪽에 3 개 단위의 MVP 매트릭스 변환 장치의 앞에 눈을 묘사

// 모델 매트릭스 
GLM :: mat4 모델 = GLM :: mat4 ( 1.0F ); 
모델 = GLM :: 변환 (모델 : GLM VEC3 ( 1.0F , 은 0.0f , 0.0f로 );
 // 뷰 매트릭스 
GLM :: mat4보기 :: = GLM mat4 ( 1.0F ) 
보기 = GLM은 :: 번역을 ( 뷰 GLM :: VEC3 ( 은 0.0f , 0.0f로 - 3.0F );
 // 투영 매트릭스 
GLM :: mat4 투영 GLM :: = 시각 (GLM의 :: 라디안 ( 45.0f ) 800.0f / 600.0f , 0.1F , 100.0f );
 //传递给쉐이더
 // u_model = 모델; u_view = 도면; u_projection = 투영; 
... 
... 정점 셰이더 
균일 mat4의 u_model; 
균일 mat4의 u_view; 
균일 mat4의 u_projection; 
보이드 의 main () { 
    gl_Position = u_projection u_view * * * u_model vec4 (APOS, 1.0F );  
}

  우리 모델 매트릭스 한 오브젝트 이동, 회전, 스케일링 변환 동작은, 카메라 뷰 매트릭스 우리는보다 복잡한 효과 발현의 개념을 도입 할 수있다; 행렬 비교적 고정 돌기, 화면의 폭과 높이를 설정 투사 거리 파라미터 설정.

  

 

추천

출처www.cnblogs.com/zhong-dev/p/11672551.html