투영 텍스처 매핑
Projective texture mapping![]() |
![]() | 이 문서의 어조나 문체는 위키피디아에서 사용되는 백과사전적 어조를 반영하지 못할 수 있습니다.더 를 하기 위한 Wikipedia 를 하십시오. (2022년 ( 를 삭제하는 에 대해 ) |
투사 텍스처 매핑은 텍스처 매핑의 한 방법으로, 마치 슬라이드 프로젝터를 사용하는 것처럼 텍스처 이미지를 장면에 투영할 수 있습니다.투영 텍스처 매핑은 다양한 조명 기술에 유용하며 섀도 매핑의 시작점이 됩니다.
투영 텍스처 매핑은 기본적으로 표준 텍스처 매핑으로서 버텍스 단위로 수행된 후 선형 보간되는 특수한 매트릭스 변환입니다.
고정 함수 파이프라인 접근법
지금까지[1] 투영 텍스처 매핑을 사용하면 특수한 형태의 눈 선형 텍스처 좌표 생성[2] 변환(tcGen)을 고려해야 했습니다.이 변환은 텍스처 좌표 변환[3] 행렬에 저장된 프로젝터의 특성을 나타내는 또 다른 행렬에 의해 곱되었습니다.결과적인 연결 매트릭스는 기본적으로 프로젝터의 특성과 정점 아이 위치 모두의 함수였습니다.
이 접근법의 핵심은 눈 선형 tcGen이 눈 속성과 객체 공간 정점 좌표의 결과인 정점 좌표의 함수라는 것이다(구체적으로 객체 공간 정점 위치는 모델-뷰-투영 행렬에 의해 변환된다).이것에 의해, 대응하는 텍스처 매트릭스를 사용해 눈의 특성을 「시프트」할 수 있기 때문에, 접속 결과는, 관찰자와 다른 관점에서 눈의 선형 tcGen을 사용하는 것과 같다.
프로그램 가능한 파이프라인 접근법
정점 셰이더를 사용하여 이 접근 방식을 계산하는 덜 복잡한 방법이 가능해졌다.
이전 알고리즘은 2개의 모델 뷰 투사 매트릭스(한쪽은 시점, 다른 한쪽은 프로젝터의 시점)를 고려하는 것만으로 재구성할 수 있습니다.
이 경우, 프로젝터 모델-뷰-투영 매트릭스는 기본적으로 앞서 언급한 눈-선형 tcGen과 의도한 프로젝터 시프트 기능을 결합한 것입니다.이들 2개의 매트릭스를 사용함으로써 변환된 눈공간 정점 위치 및 투영 텍스처 좌표를 출력하기 위한 몇 가지 명령으로 충분하다.이 좌표는 단순히 프로젝터의 모델-뷰-투영 매트릭스를 고려함으로써 얻을 수 있습니다.즉, 이 위치는 프로젝터가 관찰자일 경우 눈-공간 정점 위치입니다.
주의사항
제안된 두 가지 접근법 모두 세 가지 작은 문제가 있으며, 이는 눈 공간과 텍스처 공간에 의해 사용되는 다른 규칙에서 비롯된다.
이러한 공간의 속성을 정의하는 것은 이 문서에서는 다루지 않지만 텍스처는 보통 [0] 범위 내에서 다루어져야 한다는 것은 잘 알려져 있습니다.1] 반면에 눈 공간 좌표는 [-1..1] 범위에서 다루어진다.사용한 텍스처 랩 모드에 따라 다양한 아티팩트가 발생할 수 있지만 기대한 결과를 얻기 위해서는 반드시 시프트와 스케일 조작이 필요합니다.
다른 문제는 사실 수학적인 문제입니다.사용된 행렬 산술이 백투영을 생성하는 것은 잘 알려져 있습니다.이 유물은 특수한 흑백 질감을 사용하여 불필요한 돌출 부분을 잘라냄으로써 역사적으로 피해 왔습니다.픽셀 셰이더를 사용하면 다른 접근방식을 사용할 수 있습니다.좌표 체크는 순방향(올바른) 기여와 역방향(잘못, 피해야 할) 기여 사이를 구별하기에 충분합니다.
레퍼런스
- ^ nVIDIA 웹사이트 원본 문서에는 이 문제에 대해 필요한 모든 문서가 포함되어 있습니다.동일한 사이트에는 추가 힌트도 포함되어 있습니다.
- ^ 텍스처 좌표 생성은 OpenGL 2.0 사양 섹션 2.11.4 "텍스처 좌표 생성"에 설명되어 있습니다.눈 선형 텍스처 좌표 생성은 특수한 경우입니다.
- ^ 텍스처 매트릭스는 OpenGL 2.0 사양 섹션 2.11.2 "매트릭스"에 소개되어 있습니다.