1 / 26

Meshes

Meshes. Dr. Scott Schaefer. 3D Surfaces. 3D Surfaces. 3D Surfaces. 3D Surfaces. 3D Surfaces. 3D Surfaces. Vertex Table. 3D Surfaces. Polygon Table. Vertex Table. 3D Surfaces. Polygon Table. Vertex Table. 3D File Formats. Way too many! OBJ STL MA PLY MAX, 3DS BLEND DAW LWO

nancy
Download Presentation

Meshes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Meshes Dr. Scott Schaefer

  2. 3D Surfaces

  3. 3D Surfaces

  4. 3D Surfaces

  5. 3D Surfaces

  6. 3D Surfaces

  7. 3D Surfaces Vertex Table

  8. 3D Surfaces Polygon Table Vertex Table

  9. 3D Surfaces Polygon Table Vertex Table

  10. 3D File Formats • Way too many! • OBJ • STL • MA • PLY • MAX, 3DS • BLEND • DAW • LWO • X • ….

  11. OBJ File Format (Simplified) • Text Format – Easy to read! • Line based file consisting of • Vertices (starts with “v”) • Faces (starts with “f”) • Comments (starts with “#”)

  12. OBJ File Format (Simplified) • Vertex Definition • “v x y z”: vertex with coordinates (x,y,z) • “vt u v”: texture coordinates (u,v) • “vn nx ny nz”: normal (nx,ny,nz)

  13. OBJ File Format (Simplified) • Face Definition • “f g1/t1/n1 g2/t2/n2 …” • Faces may be variable length! • Indexing starts at 1… not 0! • First index is guaranteed to be geometry index • ti, ni are optional

  14. OBJ File Format – Example # This is a comment v 0 0 0 v 0 1 0 v 1 0 0 v 0 0 1 f 1 2 3 f 1 3 4 f 1 4 2 f 2 3 4

  15. OBJ File Format – Example # This is a comment v 0 0 0 v 0 1 0 v 1 0 0 v 0 0 1 vn -1 -1 -1 vn 1 1 1 vn -1 1 1 vn 1 -1 1 f 1//2 2//1 3//3 f 1//2 3//3 4//4 f 1//2 4//4 2//1 f 2//1 3//3 4//4

  16. OBJ File Format – Complications • Vertices may appear after faces • Faces may not be triangles (must triangulate) • Faces may use negative indexing • Not all OBJ files conform to the OBJ standard

  17. Drawing 3D Objects with OpenGL • Immediate Mode • Display Lists • Vertex Arrays • Vertex Buffer Objects

  18. Immediate Mode glBegin ( GL_TRIANGLES ); glNormal3f ( nx1, ny1, nz1 ); glVertex3f ( x1, y1, z1 ); glNormal3f ( nx2, ny2, nz2 ); glVertex3f ( x2, y2, z2 ); … glEnd ( );

  19. Immediate Mode • Advantages • Easy to send a few polygons to OpenGL • Disadvantages • Lots of data transferred on the stack • Lots of function calls • Vertices duplicated many times • Really, really slow

  20. Display Lists • Initialize display list • firstList = glGenLists ( numLists ); • glNewList ( firstList, GL_COMPILE_AND_EXECUTE ); • // draw model in immediate mode • glEndList ( ); • Draw the display list • glCallList ( firstList );

  21. Display Lists • Relies on graphics driver for optimization • Advantages • Faster than immediate mode • Disadvantages • Still not great performance

  22. Vertex Arrays • glEnableClientState ( GL_(VERTEX/TEXTURE_COORD/NORMAL)_ARRAY ); • glVertexPointer ( numComp, GL_FLOAT, bytes to next vertex, pointer to geometry) • glTexCoordPointer ( numComp, GL_FLOAT, bytes to next texture coord, pointer to texture coords) • glNormalPointer ( GL_FLOAT, bytes to next normal, pointer to normals ) • glDrawElements ( GL_TRIANGLES, number of indices in array, GL_UNSIGNED_INT, pointer to index array) • glDisableClientState ( GL_(VERTEX/TEXTURE_COORD/NORMAL)_ARRAY )

  23. Vertex Arrays • Advantages • Only transfers vertices once and not an expected value of 6 times • Much faster than even display lists (usually) • Format similar to most mesh formats • Disadvantages • Still transfers vertices to GPU every frame • Bandwidth to GPU very problematic

  24. Vertex Buffer Objects • New Functions • glGenBuffersARB • glBindBufferARB • glBufferDataARB • Use glVertexPointer… with NULL pointer as argument • Use glDrawElements with NULL pointer as argument

  25. Vertex Buffer Objects • Advantages • Can store data directly in video memory or AGP • Greatly reduces bandwidth problem to GPU • Disadvantages • Not supported by MS OpenGL headers • Must load function pointers out of DLL using WGLGetProcAddress • Dynamic geometry doesn’t get as much benefit

  26. Performance Frames per second displaying a 413,236 triangle model. CPU was an Intel Core 2 67001 or Core i7 9402. 3Same as 2 but new drivers.

More Related