Progressive Mesh in DirectX Seung ho Lee Hyun taek Kwon
What is Progressive Mesh? Level of Detail (LOD) Progressive simplification or detail Mesh
Overview of Progressive Mesh Edge collapse or Vertex Split Selective Refinement
Edge collapse or Vertex Split
Selective Refinement Use Vertex History
The Pipeline of DirectX Mesh ID3DXMesh interface ID3DXMesh ID3DXPMesh interface ID3DXPMesh
ID3DXMesh interface General Mesh interface Buffers – Vertex Buffer – Index Buffer – Attribute Buffer Functions – DrawSubset(DWORD n);
ID3DXPMesh Progressive Mesh interface Make from ID3DXMesh Using Progressive Mesh interface
Implementation Implement from ID3DXMesh Using Vertex Buffer and Index Buffer Class Gmesh Vertex Node Tree, History
Rendering Pipeline Read PM File Make GMesh Write in Mesh Buffer Draw Mesh
Result Rabbit
View-Dependent Refinement 1.Definitions 2.Refinement Criteria 3.Implementation
1. Definitions (1) -Active vertex, Active face A vertex or face is active if it exists in the selectively refined mesh M s.
1. Definitions (2) -Vertex hierarchy
1. Definitions (3) -Legal
2. Refinement Criteria (1) View frustum Coarsen regions outsize the view frustum (2) Surface orientation Coarsen regions oriented away from viewer (3) Screen-space geometric error Makes the difference between approximate surface M and the original M ^ small
2. Refinement Criteria (1) - Bounding Sphere
2. Refinement Criteria (1) -Out of View frustum Red lines show distance
2. Refinement Criteria (2) - Cone of normals Unnecessary to split if
2. Refinement Criteria (3) -Distance The distance between the approximate surface M and the original M^, when projected on the screen, is every where less than a screen-space tolerance r.
3. Implementation -ListNode *ActiveVertexHead double linked list of active vertex -ListNode *RootVertexHead Double linked list of root vertex
3. Implementation Active Vertex v1 v2 v3v4v5v6 v1v3v4v5v6 v21v22 Split Qrefine()