Math 155B: Advanced Computer Graphics
Final Project
|
||
|
Final Project - Ancient Baths
So we were told to "exploit" the advantages and benefits of RayTracing... hmmm. I think I've been pretty successful! Let's just say that this took way too many renders in between the base concept and the final product. I'm almost completely happy with it but I couldn't get the spotlight functionality to work quite right so this will have to do. I basically took my "Futuristic Court" scene and decided to see where it could take me. Of course that meant strip everything out of there and add textures to the walls and floor, then rip out the floor and put in a pool of water, adjust flooring, scrap everything and try something new: mess around with NURBS surfaces and discover a nice shape for a waterfall, go back to original pool and add waterfall, tear apart the back wall for opening, decide that the columns were in fact a good idea, make them textured and composed of tops and bases, adjust lighting for about 3 hours, move columns into uniform positions, play with textures and materials, put final touches on AntiAliasing algorithm, render the final product. That's what I did for 2 days straight at Carl's Jr. followed by late nights on the couch with my laptop.
|
|
Progress
Here are a few renders I saved to mark my progress along the way to the finished product. As mentioned before, I ran into some problems. The following is a brief set of documentation notes on what and how I came across and the solutions needed to fix them. |
||||
|
Problem 0:
|
|
|||
Solution: curPixelColor.x = Min(1.0, curPixelColor.x); curPixelColor.y = Min(1.0, curPixelColor.y); curPixelColor.z = Min(1.0, curPixelColor.z); |
||||
|
Problem 1:
From the picture on the left, you can see the texture of the ceiling is repeated only in one direction and smeared across the rest of the polygon. In fact, the walls are repeated only in one direction too, but the texture is large enough that you can't tell. This was quite annoying to try to deal with, but the solution is quite simple: |
|||
Solution: if ( u<0.0 || u>1.0 ) u = u-floor(u); if ( v<0.0 || v>1.0 ) v = v-floor(v); |
||||
|
Problem 2:
|
|
|||
|
Problem 3:
|
|||