Collision Detection & Acceleration Structures

Download Report

Transcript Collision Detection & Acceleration Structures

Object Representation
Rama C Hoetzlein, 2010
Univ. of California Santa Barbara
Lecture Notes
Object Representation
Object representation can be understood as an
issue in communication…
Describe to me, in exact detail what a
surface looks like, without using “fuzzy” words.
Mathematical definition:
Surface
3
A subset of points in R , which span a
local two-dimensional space at each point.
For any given point in the set, there are two directions in which
another point in the set is infinitely close.
What are some natural examples of
surfaces that are...
- Open
- Closed
- Disjoint
- Rough
- Smooth
- Self-similar
- Implicit
- Analytical
- Revolved
- Loft
Surfaces with no interior
Surfaces which have an interior
Surfaces with distinct parts (C0 discontinuous)
Surfaces with angles (C1 discontinuous)
Surfaces which are locally smooth (C1 smooth)
Surfaces which are similar at different scales
Surfaces with no sharp boundaries
Surfaces defined by a closed mathematical func.
Surfaces created by sweeping a curve about an axis
Surfaces created by sweeping a curve along a path
Object Representation
Three most common in Computer Graphics:
1
Implicit surfaces...... f(x,y,z) = R1
Curved surfaces....... f(u, v) => R
(eg. Metablobs)
3
Polygonal surfaces... M = {V, E, F}
(eg. NURBS)
(eg. Meshes)
Implicit Surfaces
f(x,y,z) = R1
A function of three variables is defined which
maps every point in space to a scalar value.
Selecting a range of values defines a volume,
while selecting a single value defines a surface.
Simple implicit surface
F(x,y,z) = sqrt( p – r ) < 1
Metaballs: One kind of Implicit Surface
f(x,y,z) =
Blob functions add together
James Blinn, “A Generalization of Algebraic Surface Drawing”, 1982
Implicit Surfaces - Rendering
Option 1:
Raytrace the
function
Option 2:
Convert to
polygons
(Marching Cubes)
Implicit Surface
Curved Surfaces
f(u, v) => R3
A two-dimensional function is defined with maps
two parametric variables to a point in 3D space.
There are many ways that f(u,v) could be defined.
Curved Surfaces
- Key points define
the shape of an
explicit function.
- Properties:
Infinitely divisible
Everywhere smooth
Easy to control
Utah Teapot
Alan Newell,
1975
Geri’s Game, 1997 (Pixar), First sub-division surfaces.
Curved surfaces have revolutionized the automotive and film
industry by simplifying complex shapes.
(Prior to this, only way was to explicitly specify all vertices.)
Polygonal Surfaces
M = {V, E, F}
Defined as a discrete set of vertices, edges and faces
which connected together create a locus of points
defining a surface.
Polygonal Surfaces
A mesh is a discrete representation of a surface.
- Surface is broken into vertices, edges, and faces.
- Vertices = Subset of S sampled at discrete locations.
Stanford Bunny
Greg Turk &
Marc Levoy, 1994
3D scanned mesh,
69,451 triangles
Paolo Uccello
Perspective drawing of a Challice (ca. 1450)
- Just describe the vertices. We also need their connectivity.
- How do you know what the faces are?
Colin Smith, On Vertex-Vertex Systems and Their Use in
Geometric and Biological Modeling, 2006.
- Make faces explicit. Each face indexes vertices.
- Most common in graphics hardware. Const time face geometry.
Mesh storage... Example PLY files:
- Number of vertices
- Number of faces
- Each vertex has a list of
properties.
In this case, x/y/z.
Vertex could also have a
color, or texture coordinate.
- Each face is an index
of vertices.
(This example: 3-sided faces only)
Mesh Operations
What do you need to do for?
1. Adding a vertex
2. Deleting a vertex
3. Adding a face
4. Deleting a face
Winged
Edge
Meshes
- More storage
space
- Each edge has:
2 vertices
2 faces
- But... we can now
find neighboring
vertices and faces
in constant time.
Each representation makes more information explicit...
giving constant-time lookups at the cost of storage space.
Many Operations
Face Extrusion
Subdivision
Find
Silouettes
Change
Representation
Simplification
Add/Remove Noise
Modeling in OpenGL
Objects are expressed as vertex lists, appearing
between glBegin..glEnd blocks:
glBegin ( GL_TRANGLES);
glVertex3f ( 0, 0, 0);
glVertex3f ( 1, 0, 0);
glVertex3f ( 0, 0, 1 );
glEnd ();
The type of primitive determines how the
vertices will be interpreted.
glBegin ( GL_POINTS );
// Every 1 is a point
glBegin ( GL_LINES) ;
// Every 2 is a line
glBegin ( GL_TRANGLES );
// Every 3 is a face
glBegin ( GL_QUADS );
// Every 4 is a face
Surface normals and colors can be provided
for every vertex if you want..
glBegin ( GL_TRANGLES );
// Every 3 is a triangle
glNormal3f ( 1, 0, 0 ); glColor3f(1,0,0); glVertex3f (1, 0, 0);
glNormal3f ( 0, 1, 0 ); glColor3f(0,1,0); glVertex3f (0, 1, 0);
glNormal3f ( 0, 0, 1 ); glColor3f(0,0,1); glVertex3f (0, 0, 1);
..
.. next triangle
..
glEnd ();
The glBegin..glEnd block indicates to OpenGL
that you are giving it geometry.
Transformations and Lighting must appear before
any geometry is specified. Nothing else can appear in the
glBegin/glEnd section except for geometry data.
glEnable ( GL_LIGHTING );
glTranslate3f ( 1, 0, 0);
glScale3f ( 2, 2, 2 );
// Lighting
// Transform(s)
glBegin ( GL_TRIANGLES );
// Geometry
glColor3f(1,0,0); glVertex3f ( 1, 0, 0 ); // Color is part of geom
glNormal3f(0,1,0); glVertex3f ( 0, 1, 0 ); // Normal is also geom
glVertex3f ( 0, 0, 1 );
glEnd ();
Modeling in OpenGL
LAB #5 – 10:00 - 11:00
1) Model a cube in OpenGL
2) Make sure that dynamic lighting of the cube is correct
3) Model the Coke Can challenge