Project - Cloth Simulation
So here's a picture from my final scene. I was hurrying to get it done and forgot to put in flag poles! Arrgh! Oh well.. there was also a mistake in my docs, but I just hope they won't notice! :P In case you're wondering, that's a picture of my graphics prof in the scene. Overall I think it turned out pretty well. I managed to get non-self-intersection working after all! It makes it hella slow, but too bad. I also had the scene be read in from a script file instead of being compiled in -- should've done that ages ago! It's soo much better! Just another lesson learned I suppose. Anyhow, I've had enough computers for now, so later! If anyone wants more pictures/movies/docs/etc just email me and ask!
Here's another movie of my cloth simultion. This time with lighting and collisions. Sorry about the bad quality and the snapping artifacts.. anyone know of a good jpg to mpg converter??
Ok, so I got surface subdivision working in one measely day! Whoo hoo! I'm using the "Linear Subdivision Plus Triangle Averaging" method.. it's an approximating, uniform, triangular scheme. The two sets of images above show a cube being subdivided (the red lines are the normal at each vertex), and a 4-sided pyramid being subdivided (drawn in wireframe mode). I'm quite pleased with the results, as the pyramid looks remarkably like this picture (from this Gamasutra article on surface subdivision). Mine has some more "pointiness" than theirs, but that's because they're using the better Catmull-Clark subdivision algorithm. In retrospect implementing Catmull-Clark isn't much harder than my scheme since most of the trouble was in creating and updating the data structures.. perhaps if I have extra time before this is due I'll switch over to that, but don't hold your breath. From looking at the pictures you can also see just how quickly my framerate drops after a couple subdivisions. That's because each subdivision quadruples the number of faces..
So it's been a little while since I've updated this page and I've done a lot of work lately! Still tons to do in the remaining 12 days, but it's coming along nicely.. The first picture is just the initial scene. The second is it with the lovely heirarchical bounding boxes displayed. Next comes a picture of the scene a little further along -- note the nice collisions with the spheres and planes! And finally we see the scene from a different angle (fully moveable camera system) and with some extra information showing (vertex points, normals (blue), and total forces). I'll probably put together another movie to show this all off with in a day or two.
Ok, we just got our proposals back today in class and mine was looking good.. which is a good thing as I'd already started my project! It's going to feature cloth simulation, but also includes surface subdivision, volumetric shadows and collision detection. Those are the major features anyhow.. here's some early pics:
The first image shows the cloth, while the second one is a representation of the forces acting on the cloth. Click here to download a short movie (1.7MB) of my project so far! It's pretty crappy quality but oh well.. That's all for now, but I'll definately be putting up new pictures/movies as work progresses!
Assignment 4 - Heirarchical Ray-tracer
So I've been spending a lot of time lately working on my ray-tracer.. I thought it would an easy assignment (since I've written a raytracer before.. alas I was too cocky and thus made many careless errors in my code that took many hours to debug.. ahh well, that'll teach me!
Anyhow, here's some pictures from my raytracer.. I'll be putting more up as I finish up my final scene.
Since this raytracer uses a similar heirarchical structure it was easy to raytrace my monkey from the last assignment!
Here you can see an example of the CSG operations I implemented over the weekend.. the dice is made u pof a cube with a large sphere subtracted (to create the rounded corners), and then with many small spheres subtracted to create the dots.
The basics of my final scene.. look for more updates before Wednesday when it's due! Ok, so although there's a few more things I'd like to add to my raytracer, due to other assignments and midterms this is all I'm going to do.. click here to see a really large picture of the final scene (same as above, but bigger: 2048x2048 (2.1MB)). Here are some stats that I got from rendering the large image:
Model: Bounding sphere culled 88.31% (18894708/21394861) rays
and saved 113368248 polygon intersection tests
Model: Bounding sphere culled 0.00% (0/21394861) rays
and saved 0 polygon intersection tests
Model: Bounding sphere culled 50.89% (10888597/21394861) rays
and saved 10888597 polygon intersection tests
Guess it's a good thing I put in those bounding-spheres! :>
Assignment 3 - Heirarchical Modelling (aka Puppet)
Here are some pictures of my final puppet. The puppet is modelled manually using some TCL extensions we made.. it is composed of scaled spheres (with different materials applied to them), and has many joints that can be selected and moved. Joints can support up to two degrees of freedom (while still avoiding the dreaded "Gimbal Lock"). It really is amazing what 6 1/2 hours in the lab can let you model..
This is the initial scene when you start the program.
Here you can see the model after some joints have been moved. Note that the banana is now unpeeled, and he is eating it! What a big smile he has -- must be a yummy banana!
You can also see some spider-webs over a few of the spheres in this image. The spider-webs indicate that an object is currently selected (for movement).
This is a similar scene, but from a different angle. Note the skybox and tree that completes the scene. Also note that the tail has been curled up.. amazing!