Download presentation
Presentation is loading. Please wait.
Published byIsaac Weber Modified over 10 years ago
2
What Well Be Covering Today: Modified Butterfly Subdivision Texturing and Antialiasing Global Illumination via Radiosity
3
Modified Butterfly Subdivision Based on Dyn/Levin/Gregory Butterfly Subdivision Adds rules for non-regular vertices –Standard Butterfly is not C 1 at k=3 or k>7
4
Mesh Data Structure List of vertices Each vertex has a set edges (vertices it is connected to) –sorted in order around vertex –Not guaranteed CCW (normal problems)
5
Vertex Normals Formulas from SIG2000 course notes Problems with boundary edge rules –Possibly due to bad vertex orientation
6
Starfish-like Thing
7
Frog-ish Head
8
Anti-Aliasing Standard OpenGL Accumulation Buffer techniques Helpful Tip: Dont save your antialiasing example pictures as JPEGs
9
Texture Mapping Calculate vertex texture coordinates using spherical projection Issues to Deal with: –Texture coordinate problems –Polar Distortion
10
Wrapped Texture Coordinates Vertices can only have one texture coordinate –Some need two Two Solutions: –Duplicate vertices (bad, fast) –Detect & Fix at render time (good, slow)
11
At-Pole Texture Coordinates Singularity at poles –entire line of texture on one point –OpenGL cannot handle this gracefully Again, can be detected and corrected at render-time
12
Polar Distortion Problem Texture mapped like lines of lattitude / longitude Lines get closer at poles Distort texture to counter this effect WARNING: distorted texture will not tile!
13
Polar Distortion Solution
14
Son Of Frog-ish Head
15
Radiosity Progressive Refinement (Shooting) –My machine only has 256 MB of RAM –Large Scenes == Thrashing –Throw away form factors after each shot Use hemicube to calculate form factors –Projecting faces – easy way and hard way
16
Form Factors the Hard Way Clip and project each poly onto faces of hemicube (geometrically) Find pixels that intersect projected poly A HUGE WASTE OF PROGRAMMING EFFORT (and its really slow, too)
17
Form Factors the Easy Way Use OpenGLs Z-buffer –Encode each face with a color –Graphics Hardware speeds this up Can be less accurate than geometric method –Standard Z-Buffer accuracy problem
18
Other Implementation Issues Use double precision! –Dealing with summation of lots of tiny values –Single precision loses light –Particularly for Fqs in HemiCube OpenGL and multi-threading do not really mix together so nicely…
19
Progressive Refinement
20
Low Hemicube Resolution
21
Radiosity On Butterfly Surfaces
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.