확실히 정렬을 고려하여 변환을 고려해야합니다. 모든 변환을 적용한 다음 결과 깊이 (z 좌표)로 정렬하면 가장 직접적인 접근 방식입니다.
동일한 효과를 얻는 가장 효율적인 방법은 각 오브젝트 (또는 동일한 변환을 사용하는 오브젝트 세트)에 대해 한 번씩 뷰 방향에 역변환을 적용한 다음 각 정점/삼각형의 깊이를 계산하는 것입니다 이 역변환 된 뷰 벡터를 갖는 정점의 내적 (dot product)으로 정의된다. 삼각형 당 하나의 점 (dot product) 만 필요합니다. 그리고 삼각형의 수는 종종 물체의 수보다 큰 크기입니다.
사용 시점 : 실제로 모든 경우에 사용할 수있는 솔루션이 없습니다. 삼각형의 중심은 무엇이든 좋아야합니다. 이 전체 접근법은 많은 경우에 충분히 잘 작동하는 근사치이지만 일부 시나리오에서는 완전히 올바르지 않습니다.
주문에 따라 달라지는 근본적인 문제를 설명하기 위해 몇 가지 예를 살펴 보겠습니다. 다음 그림에서 뷰 방향은 왼쪽에서 오른쪽으로, 우리는 두 삼각형 A와 B의 가장자리에 보면 :
\
\
B
\
\ \
\ \
view -----> \
A
\
\
시각적으로는 B가 뒤에, 먼저 그려 질 필요가 분명하다. 그러나 :
- B의 가장 가까운 지점 (A)의 가장 가까운 지점보다 뷰 포인트에 더 가까운
- B의 가장 먼 지점 A. 가장 먼 지점보다 뷰 포인트에 더 가까운
- B의 중심점이 A의 중심점보다 시점에 더 가깝습니다.
각 삼각형을 하나의 깊이 값을 비교하여 올바르게 정렬 할 수 없습니다. 이를 제대로 처리하려면 형상을 고려해야하며보다 복잡한 기준을 사용하여 형상을 올바르게 정렬해야합니다. 여기
\ /
\/
view -----> \/
/\
B A
/ \
가 유효한 것 A 및 B에 대한 정렬 순서가 없다 : 유효한 주문이없는 경우
그때 경우가있다. B의 파트는 A 뒤에 있고 A의 파트는 B 뒤에 있습니다. 이것은 교차하는 삼각형이있을 때마다 적용됩니다. 이 문제를 올바르게 해결할 수있는 유일한 방법은 삼각형을 분할하는 것입니다.
올바른 순서가없는 경우 교차하는 삼각형이없는 구성도 있습니다.이 상단에서이 시간을 찾고, 4 개 삼각형 예입니다
___________
|\ \ |
__|_\________\ |___
| \ |__/
| ______\ |
|________/ \ |
| \ \_____|__
| \_______/ |
__| \ |
/__| \______________|
| \ \ |
|__________\ \|
이 어려움 방법을 렌더링하기 위해 독립적 인 투명성 단지 정렬의 오버 헤드를 피할 넘어, 너무 매력적인 이유 중요한 이유입니다.
정렬은 항상 관점에 달려 있습니다. 물론 변환이 정렬에 영향을줍니다. 정렬을위한 가장 일반적인 방법은 [BSP-Trees] (http://computer-graphics.se/TSBK07-files/pdf/PDF09/6b.pdf)입니다. – BDL
깊이 버퍼와 블렌딩이 어떻게 작동하는지 읽을 수 있습니다. –