hlod

반응형

원문 : http://www.cs.unc.edu/~walk/hlod/

원문의 내용을 필요부분 번역하였습니다.

원문을 보길 강력추천합니다.


그림 1. Double Eagle 대형선박. 이 모델은 126,630개 오브젝트, 그리고 82,361,612 삼각형으로 구성되어 있다.


전통적인 LOD 방식으로는 한번에 하나의 객체만 단순화 할 수 있다.

그래서 여러 객체를 포함하는 화면이 주어지면 이 방식은 장면 전체가 아닌

개별 객체에 대해서만 에러를 최소화 할 수 있다.

HLOD(Hierarchical Level Detail, 계층적 lod)는 전통적인 방식의 LOD를 오브젝트의 

계층적 집합체로 일반화 하는 것이다.

장면의 개별 부분을 같이 단순화 하는 HLOD를 생성하여, 특히 적극적인 단순화를 위해

좀 더 괜찮은 전역 근사값을 생성한다.

원하는 목표 폴리곤 갯수에 따라, LOD는 화면에서 모든 오브젝트들을 렌더하지 못할 수도 있어 균열을 만들수 있다. 

그림 2. Double Eagle의 LOD. 7,887개, 1,922의 페이스로 구성.


HLOD는 보다 견고한 근사값을 제공한다. (그림 3 참고)

그림 3. Double Eagle의 LOD. 7,710개, 1,914의 페이스로 구성.

동적 장면에서, 가능하다면 동적으로 HLOD를 비동기로 계산하여 병렬 하드웨어의 이점을 얻는다.


중요 

충실도 : 오브젝트를 그룹화하여 HLOD를 만들므로 시각적 품질이 좀 더 많이 근사치만큼 올라간다.

자동 생성 : 사용자 개입없이 장면 그래프(scene graph)의 HLOD를 계산한다.

보편성 : 위상 정보나 표현에 대해 아무런 가정을 하지 않는다.

효율성 : LOD는 정적이므로 디스플레이 목록을 사용하여 렌더링 할 수 있다.

유연성 : HLOD 장면 그래프 구조는 일정한 프레임 속도 모드이미지 품질 모드로 렌더링 할 수 있게 해 준다.


HLOD 만들기

기존 방식의 LOD는 환경에서 단일 노드의 지오메트리를 나타내지만, HLOD는 장면 그래프의 전체 분기 또는,

다중 노드의 지오메트리를 나타낸다.

장면그래프를 사용해서 환경을 표현하고 먼저 각 노드에 대한기준 LOD를 계산한다.

그리고 나서 각 노드에서 해당 LOD를 기반으로 상향식으로 HLOD를 계산한다.

- 단말 노드(leaf node, 맨 마지막 끝 노드)의 HLOD는 그 노드의 LOD와 같다.

- 장면 그래프에 있는 내부 노드의 HLOD는 노드 자체에 속한 모든 LOD를 하위 노드의 HLOD와 

  결합하여 계산된다.


HLOD 렌더링

기존 LOD 렌더링 시스템에서는, 출력 알고리즘이 장면그래프의 모든 오브젝트나 노드에 대해

적절한 LOD를 렌더링 한다.

노드의 HLOD는 해당 노드의 지오메트리 뿐만 아니라 하위 노드까지의 근사치 이기 때문에,

장면그래프를 순회하면서 HLOD를 렌더하면 굳이 하위노드는 순회 할 필요가 없다. (그림 4 참고)

이렇게 하면 적절한 시점에 단지 HLOD를 렌더링함으로써, 장면의 전체 부분을 적극적으로 제거할 수 있다.

이미지 품질 모드에서, HLOD와 연관된 오차범위가 화면공간에 투영된 오류제약조건을 만족시킬 때 까지

장면 그래프를 순회하여 렌더링 한다.

목표 프레임 속도 모드에서, 시간적 제약보다 더 많은 폴리곤을 렌더링 할 때 까지 

최대한의 투영 오차를 가지는 가장 조잡한 HLOD를 만든다.

그림 4. 얼굴 모양을 만들기 위해 LOD와 HLOD를 사용하여 렌더링. 

얼굴에서 시작하여 장면그래프를 순회하는 알고리즘이다.

시야가 멀기 때문에, HLOD 0을 사용하여 얼굴모양을 그린다.

이 HLOD는 전체 장면그래프를 나타내므로 시스템은 순회를 멈춘다.




Reference Link

- Unity AutoLOD

- Unreal HLOD

- 번역 원문

- 3D Engine Design for Virtual Globes, page 371

'Study > Graphics ' 카테고리의 다른 글

Clipmaps  (0) 2019.06.15
early z  (0) 2018.08.29
What is Texture  (0) 2018.03.10
texture format  (0) 2018.02.21
shader에서 채널값이 모자를 때...  (0) 2018.02.13
TAGS.

Comments