what we’ll be covering today:
DESCRIPTION
What We’ll Be Covering Today:. Modified Butterfly Subdivision Texturing and Antialiasing Global Illumination via Radiosity. 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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/1.jpg)
![Page 2: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/2.jpg)
What We’ll Be Covering Today:
• Modified Butterfly Subdivision
• Texturing and Antialiasing
• Global Illumination via Radiosity
![Page 3: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/3.jpg)
Modified Butterfly Subdivision
• Based on Dyn/Levin/Gregory Butterfly Subdivision
• Adds rules for non-regular vertices– Standard Butterfly is not C1 at k=3 or k>7
![Page 4: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/4.jpg)
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)
![Page 5: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/5.jpg)
Vertex Normals
• Formulas from SIG2000 course notes
• Problems with boundary edge rules– Possibly due to bad
vertex orientation
![Page 6: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/6.jpg)
Starfish-like Thing
![Page 7: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/7.jpg)
Frog-ish Head
![Page 8: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/8.jpg)
Anti-Aliasing
• Standard OpenGL Accumulation Buffer techniques
• Helpful Tip: Don’t save your antialiasing example pictures as JPEG’s
![Page 9: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/9.jpg)
Texture Mapping
• Calculate vertex texture coordinates using spherical projection
• Issues to Deal with:– Texture coordinate
problems
– Polar Distortion
![Page 10: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/10.jpg)
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)
![Page 11: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/11.jpg)
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
![Page 12: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/12.jpg)
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!
![Page 13: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/13.jpg)
Polar Distortion Solution
![Page 14: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/14.jpg)
Son Of Frog-ish Head
![Page 15: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/15.jpg)
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
![Page 16: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/16.jpg)
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 it’s really slow, too)
![Page 17: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/17.jpg)
Form Factors the Easy Way
• Use OpenGL’s 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
![Page 18: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/18.jpg)
Other Implementation Issues
• Use double precision!– Dealing with summation of lots of tiny values– Single precision ‘loses light’– Particularly for Fq’s in HemiCube
• OpenGL and multi-threading do not really mix together so nicely…
![Page 19: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/19.jpg)
Progressive Refinement
![Page 20: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/20.jpg)
Low Hemicube Resolution
![Page 21: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/21.jpg)
Radiosity On Butterfly Surfaces
![Page 22: What We’ll Be Covering Today:](https://reader036.vdocument.in/reader036/viewer/2022081516/56813527550346895d9c9235/html5/thumbnails/22.jpg)