Progressive Mesh in DirectX
-
Upload
brynn-franklin -
Category
Documents
-
view
134 -
download
1
description
Transcript of Progressive Mesh in DirectX
Progressive Mesh in DirectX
2000160114 Seung ho Lee2000160207 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 ID3DXPMesh interface
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 Ms.
1. Definitions (2)
- Vertex hierarchy
1. Definitions (3)
- Legal
2. Refinement Criteria
(1) View frustumCoarsen regions outsize the view frustum
(2) Surface orientationCoarsen regions oriented away from viewer
(3) Screen-space geometric errorMakes 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)
- DistanceThe 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 *RootVertexHeadDouble linked list of root vertex
3. Implementation
Active Vertex v1 v2 v3 v4 v5 v6
v1 v3 v4 v5 v6 v21 v22
SplitQrefine()