Polygon Meshes and other modeling tools - PowerPoint PPT Presentation

About This Presentation
Title:

Polygon Meshes and other modeling tools

Description:

What is tessellation? Representing a surface with flat approximating polygons ... Varying tessellation. Which we use depends on how far away the camera is. ... – PowerPoint PPT presentation

Number of Views:51
Avg rating:3.0/5.0
Slides: 38
Provided by: cbo4
Learn more at: http://www.cse.msu.edu
Category:

less

Transcript and Presenter's Notes

Title: Polygon Meshes and other modeling tools


1
Polygon Meshes and other modeling tools
  • Object representation
  • Polygon meshes
  • Normals
  • Scene graphs
  • Level of detail
  • Space partitioning

2
How can we represent objects/scenes
  • Polygon meshes
  • Scene graphs
  • Parametric representations
  • Equations
  • Bunch o points

3
Why?
  • Rendering
  • Manipulate
  • User
  • System

4
Point Clouds
  • Unstructured set of 3D point samples
  • Why
  • What for?

5
Polygon/Triangle Soup
  • Unstructured set up polygons/triangles
  • Just a list of vertices for each polygon/triangle
  • Why?
  • What for?

class Triangle public
Triangle() m_material NULL
CGrPoint3F m_vertices3
CGrPoint3F m_normals3
CGrPoint2F m_tvertices3 const
void m_material
6
What is tessellation?
  • Representing a surface with flat approximating
    polygons
  • A sampled representation
  • Geometric Aliasing
  • Error in the representation due to the sampling
    with polygons

7
Polygon/Triangle mesh
  • Common method for describing geometry
  • Set of vertices
  • Coordinates
  • Normal
  • Texture coordinates
  • Etc.
  • Set of surfaces
  • Pointers to vertices
  • Material properties

Common Triangle mesh
8
class CTriangleMesh public
CTriangleMesh(void) CTriangleMesh(void)
// This structure defines a triangle struct
Triangle int m3
const CMaterial material int
VertexCnt() const return (int)m_vertices.size()
int TriangleCnt() const return
(int)m_triangles.size() const
stdvectorltCGrPoint3Fgt Vertices() const return
m_vertices const stdvectorltCGrPoint3Fgt
Normals() const return m_normals const
stdvectorltCGrPoint2Fgt TVertices() const
return m_tvertices const
stdvectorltTrianglegt Triangles() const return
m_triangles const CMaterials Materials()
const return m_materials private
CMaterials m_materials //
The materials collection // The vertices,
normals, and texture vertices. // These three
all correspond with each other.
stdvectorltCGrPoint3Fgt m_vertices
stdvectorltCGrPoint3Fgt m_normals
stdvectorltCGrPoint2Fgt m_tvertices
stdvectorltTrianglegt m_triangles
9
Polygon Mesh
  • Retains shared-vertex relationships

c
a
Vertex a,b,c,d Polygon P1(a, b, c) Polygon
P2(c, b, d)
d
b
b,c shared by two polygons
10
Computing a surface normal
  • Assume the following polygon

p3
p4
N
p2
p1
11
The Method of Projected Areas
  • Assume this 2D example line

p1
dy
p2
dx
Projection of length to one axis
12
Method of Projected Areas
  • The projection of the area onto the x/y plane is
    the z part of the normal

13
Where does this come from?
y
x
Why would we want to use this?
14
Vertex normals
  • Add normals for surfaces incident on vertex

15
The Winged-Edge Data Structure
  • Maintains
  • List of vertices
  • List of edges
  • List of faces

16
Winged-Edge Data Structure
Vertex table
Face table
17
Edge Table
a
e
D
c
1
2
B
b
d
18
Voxels
  • Grid of volumetric samples
  • CAT, MRI, etc.

19
Scene Graphs
Composite
Separator
Separator
Separator
Translate
Translate
Translate
BarbellBar
Color
Color
BarbellEnds
Composite
Composite


Polygon
Polygon
Polygon
Polygon
20
Scene Graphs
21
Collapsing a Scene Graph
  • Its often possible to apply transformations in a
    scene graph once to the underlying vertices,
    collapsing some nodes. Example

Translation
Polygon
Collapse to
Rotation
Polygon
22
Cloning
  • If part of a scene graph has two edges to it, it
    will be necessary to clone before collapsing

Translation
Translation
Translation
Rotation
Rotation
Rotation
Polygon
Polygon
Polygon
23
Integration of mesheswith scene graphs
Composite
Separator
Separator
Separator
Translate
Translate
Translate
BarbellBar
Color
Color
BarbellEnds
Composite
Polygon Mesh

Other possibilities?
Polygon
Polygon
24
Bounding Boxes
  • Bounding boxes describe the X,Y,Z extents
    (minimum and maximum values).
  • If we know everything below a certain point in
    the scene graph is in a box, we can avoid
    traversal if the box is not on-screen

25
class CBBoxF public class CBBoxF()
class CBBoxF(const CGrPoint3F p)
m_min(p), m_max(p) void Set(const
CGrPoint3F p) m_min p m_max p
void Set(const CBBoxF b) m_min b.m_min
m_maxb.m_max void Include(const
CGrPoint3F p) void Include(const CBBoxF
b) Include(b.m_min) Include(b.m_max)
const CGrPoint3F Max() const return m_max
const CGrPoint3F Min() const return
m_min const float MinForD(int d) const
return m_mind double Extent(int d)
const return m_maxd - m_mind
private CGrPoint3F m_min
CGrPoint3F m_max
26
Levels of Detail (lod)
  • Alternative scene graphs with different
    resolutions
  • Varying tessellation
  • Which we use depends on how far away the camera
    is.
  • Significant performance enhancement

27
BSP Trees
  • Binary Space Partitioning
  • Divides space into half-spaces
  • We can then use this method to
  • limit how much scene graph we examine
  • examine the scene graph in certain orders

28
k-d Trees
  • k is dimensions
  • Node
  • Info
  • x, y
  • lt-link
  • ge-link

29
Levels
  • Level 0 Index X
  • Level 1 Index Y
  • Level 2 Index X
  • level 0 if root, level(parent)1 otherwise
  • For each level, index level mod k
  • 3D Index X, Index Y, Index Z, Index X, etc

30
Example
Banja Luca (19, 45)
X
  • Banja Luca (19, 45)
  • Derventa (40, 50)
  • Teslic (38, 38)
  • Tuzla (54, 40)
  • Sinj (4, 4)

Derventa (40, 50)
Sinj (4, 4)
Y
Teslic (38, 38)
X
Tuzla (54, 40)
Y
Insert East Broko (21, 57) Search for
exact? Search for nearest? Range searches?
31
k-d Trees
  • Search for exact
  • Okay, but may be o(k)
  • Search for nearest
  • In a moment
  • Range search?

32
Range Search
  • Consider each tree level to be region
  • Recursively search all regions that overlap
    search range

33
Example Regions
Banja Luca (19, 45)
(-,) (-,)
(-,19) (-,)
Derventa (40, 50)
Sinj (4, 4)
19,) (-,)
19,) 50,)
East Broko (21, 57)
Teslic (38, 38)
19,) (-,50)
Tuzla (54, 40)
38,) (-,50)
Range (10,20) (20, 45)
34
k-d Trees
  • Fast and easy
  • Tend to be rather tall (unbalanced)
  • How could we extend to disk structure?
  • What if k1?

35
Quadtrees
  • 2-d only
  • Split data 4 ways
  • Node
  • info
  • x,y
  • nw,sw,ne,se

36
Example
Banja Luca (19, 45)
  • Banja Luca (19, 45)
  • Derventa (40, 50)
  • Teslic (38, 38)
  • Tuzla (54, 40)
  • Sinj (4, 4)

ne
se
nw
Derventa (40, 50)
Sinj (4, 4)
Teslic (38, 38)
se
Tuzla (54, 40)
Insert East Broko (21, 57) Search for
exact? Search for nearest? Range searches?
37
Octtrees
  • 3-d
  • Split data 8 ways
  • Node
  • info
  • x,y,z
  • up nw,sw,ne,se, down nw,sw,ne,se
Write a Comment
User Comments (0)
About PowerShow.com