Friday, June 30, 2006

Better rendering for A4 Final Scene

Hi all,

I just re-rendered my Final Scene for my Graphics Assignment because the other one had kinda gross tessellation because I wanted to minimize the number of Polygons in the scene.

Now I've got about 3500 polys in the glass instead of about 1900 so it looks a lot better!!

Also I made separate OBJ files and imported them separately so that I could put different materials on each object on the table. Also of course I needed to add the classic Teapot to the image too. :) I've said it once, and I'll say it again, man I love this class. :)


Final Scene for Raytracer Assignment

Thursday, June 29, 2006

Raytracer test scene done

Tonight I finished up a couple cool things related to my Raytracer, and made some cool reflection images and also did the documentation and stuff.

I also created a scene in Maya, tessellated it and exported it as an OBJ file, and then imported it into my Raytracer!!!!!!! Sweet!! So this is *my* Maya table that I made for Fine Arts, and my beer glass!! Sweet!!

Of course it doesn't look super Maya-style and amazing yet as I need to implement refraction, Fresnel refraction, glossy reflections, vertex normal interpolation, texture mapping and a whole bunch of other cool stuff, but hopefully after all that it should look really amazing. I am pretty happy with this as a start though, pretty sweet that the models can be all placed in Maya and stuff and then imported into my Raytracer... pretty nuts if you ask me!!! Good times!!!!!!!!!!!!

Well here are some of the final images for my Raytracer Assignment.


Non-hierarchical modeling with reflection


Hierarchical "cow" spheres with reflection


Cow mesh objects with reflection


My sample scene, demonstrating hierarchical modeling, mesh importing, reflection and point light shadows, sweeeeet!!

Wednesday, June 28, 2006

Raytracer Assignment done!

I finished the Raytracer Assignment tonight!! Awesome!!

I still have to create a unique scene which should be super sweet, I am going to use some OBJ files I found and also maybe start the importing of my own Maya files into OBJ files and into my Raytracer. Sweet!!

Here are some pretty pictures now that the normals are correct. Also I wrote Reflection and then tested the ability to move my camera. Good times!!


Moved to the side of the image


Moved on another axis


Moved behind original scene


Awesome move in X and Z to get new camera viewpoint


Simple cows scene working


Mesh cows scene working

Rockin' some sweet Raytraced Reflections

Ohhhh baby. This looks sweet. I just coded up Reflection tonight, pretty sweeeeeeeeeet!! CS 488 is like the best class ever invented.


Reflection with recursion depth = 2

Reflection with recursion depth = 3

Reflection with recursion depth = 5

Got Hierarchical Raytracing working... well sortof

Hey all,

Looks like I sortof have hierarchical modeling working, which is great!! That means I am essentially done this Raytracer Assignment and it's due next Tuesday so I am running way ahead of schedule - this is great cause at any given moment there are a good 20 things I could be doing. :) Anyway good times, Hierarchical Raytracing (where you just create a object, and then can apply Affine Transformations to it) seems to be working nicely. It also looks like Instancing is working, so if you have a diamond-shaped DAG, this is handled correctly and the objects are copied. I am having a problem with materials though and I am not sure what's going on, so I'll have to ask Matt for some advice when he gets back. Looks like my scene is a lot darker than the example scene, so that's no good. Also my shadows appear to be much darker than the sample scene, so I am not sure if there is some sort of problem with those.

Otherwise this seems to be working pretty well and when I get this stuff figured out I'll be pretty much done. I am going to add Reflections right now.

Oh yeah also I finished my Midterms today!!!!!!!!! Wahoo!!!!!!!!!!!!!!!! So that is totally awesome and I am really glad cause Midterm time is crazy. Now just going to do lots of work for the Extended Raytracer project. Awesome.


Initial Hierarchical Test with transformations wrong


Hierarchical mainly working


Cow scene with cows made out of spheres


Cow scene with cows made out of cow mesh objects

Monday, June 26, 2006

Fruit Bowl Painting started

I got my Wacom Tablet today (a drawing tablet that plugs into my Laptop) and I started my Fruit Bowl painting for Fine Arts. Check it out!! I am attempting to follow a painting style that Monet does with a painting entitled "Maestri Della Pittura" as reference for this style.

The Wacom Tablet is really sweet and I got a decent start on this tonight. This is pretty fun as I don't have any decent drawing or painting background by my awesome Fine Arts Prof is pushing me to learn some new things while I am at it. This is great. After this I am going to continue painting this scene and then I'll print it as a 4x6 photograph when it's done.


Fruit bowl photo with Apple I started painting tonight

Apple closer up

Sunday, June 25, 2006

Rendering random OBJ files

Hehe so yes instead of studying I have spent all day and night on my Raytracer again, this is sweet. Matt and Matt watched Pulp Fiction so I hung out for a bit and watched some of it, and then went back to working on my Raytracer. This is really cool, it looks like I can render arbitrary meshes now!!

I tried taking some flowers from Maya Paint Effects, converting them to Polys, exporting as an OBJ file and then rendering, and it didn't work out super well because the normals are not good for my Raytracer as Matt said it's not a closed object, so that might not work out well. But I found some OBJ's online and managed to render a cool distorted garbage can!! Check it out, this is really cool! It even has the correct Phong shading. :) Sweeeeeet.


Sweet rendering of a mesh in my Raytracer!!

Cow mesh rendering and Bounding Boxes for Poly Meshes

So again I am supposed to be studying for a Midterm but instead I am programming my Raytracer instead cause man this is so fun and awesome. I reaaaaaaaaaaaaaally love this assignment and I am so glad I picked this for my project.

Anyway I tried to Render a very small version of this cow mesh when Matt, Matt and I went to Dairy Queen for Ice Cream. I think it finished after about 30 min or so, and it was really small. I resized the image and implemented Bounding Boxes for my Polygonal Mesh objects, and then tried it again! The small version of the cow took about 5 seconds (not bad eh?) and I tried Rendering this larger image of the cow which took about 3 minutes. I checked and the cow has 5804 polygons so that's not bad.

Check out the renders below and the screencaps to show my speedup for the previous spheres, box and dodecahedron scene.


Awesome cow mesh, rendered in about 3 minutes


21 seconds for non-hierarchical scene before bounding boxes


5 seconds for non-hierarchical scene after bounding boxes

Raytracer rendering Polygonal Meshes

Today I got meshes working in my Raytracer!!

I am using the same intersection code for n-sided polygons as I am for triangles at the moment, but Matt suggested I should change this for my Project since it is important that my triangle intersection code is really efficient and doesn't use the same method as the n-sided polygons since that one is a bit slow.

Anyway I am pretty happy with how it looks now, and it is definitely coming along now, yeeah I can render meshes!! I reaaaaaaaally need bounding boxes now, hehe I better write that soon and then try to render some cool .OBJ files.


What it looked like before I made sure intersections where on the right plane, haha this is nuts


Looks good but weird shadow ray problems


Getting closer now


Meshes working!!

Why Waterloo CS is awesome, but totally nuts

Well friends, another typical crazy day as most Waterloo Computer Science students tend to have around this time of year.

I have another Midterm next week that I'd better study for.

But more importantly, I spent all day researching in the library for my Graphics Final Project Proposal. I have only been writing the Raytracer for a few days, and this is the first Raytracer I've ever written. That said, I spent all day reading Matt Pharr's "Physically Based Rendering" and about 4 other Siggraph papers, the course textbook and course notes and so on... to figure out some uber-crazy objectives for my Final Project. Now if you thought that Waterloo was super awesomely intense for getting us to write a Raytracer as part of the Introduction to Computer Graphics class... and to write it during Midterms... with 3 weeks total for the assignment... while preparing and researching for the Graphics Final Project... you might think it was a pretty intense pace of work, right? Well friends it gets even crazier, I thought we had 3 weeks for the Final Project. Turns out we only have 2.5 weeks. Oy gevault. :)

Anyway, I LOVE this term!!!!!!!!!!!! While Graphics is super intensely fast-paced, and should really be 2 courses, it ROCKS. I love it, my Prof is amazing, the homework is amazing, and everything I am learning is just so important and excellent. I love it. And somehow, I'll get all of this work done!! I have it "easy" - I am taking 5 classes right now, but Graphics is my only hard CS programming class at the moment. I know other people who are in the same term as me but are ALSO taking Distributed Systems or Networking or another hard 4th year CS class. So I actually really have it easy compared to some people around here.

I have another week or so to change some of these objectives for my project if I read them some more and they sound too hard. I am a bit worried about Uniform Spatial Subdivisions, not because it is particularly impossible, but because if I am going to do it, I kinda need to code it in like 1 or 2 days, and have it fully debugged and working so I can continue onto other objectives.

Hehe so yes, Waterloo CS is super insanely awesome, but man... it's nuts. :)

Friday, June 23, 2006

Raytracer shadows and lighting working

Hey all,

I am in the Graphics Lab at school and this is going really well. I got attenuation working (see images below) and it looks totally sweet!! Also I managed to get shadows working too. The shadows look cool but have "jaggies" on the edges, this is due to sudden changes in intensity and can be fixed with Antialiasing which is something I am eventually going to add to my Raytracer. This ROCKS.


Incorrect lighting vector, but it looks cool!

Correct lighting calculation

Lighting with single parameter attenuation

Lighting with single value and squared attenuation

Shadows!!!

Shadows with cube, fixed surface normals on cube

Awesome Raytracer goodness

Tonight things went really well and I was super successful with the progession on my Raytracer. As you can see from my earlier post, I got the camera working at 9:30pm tonight, now it's about 3:10am and I am back in Windows (from Linux) and just chillin' for a bit, talking on MSN etc. :) Thought I'd post these that I just finished. I managed to get the normals passed around from the sphere and box intersection code, I wrote a gradient background, then I did a cool crosshatch background thing that I then decided I didn't like. Then I wrote the Phong Lighting model!!! Insane. It went really well tonight and if you check out the final image of this set, the objects are starting to look super 3D and awesome!! Ohhhh baby, this is sweet. I haven't written a Raytracer before and it is SOOOOOOOOOOOO awesome!!!!! :)


Finally got the camera position correct

Sweet background gradient

Cross hatch background that I decided not to keep

Boxes with colour, sortof, the normals are wrong here

Box with colours and sortof correct shading

Boxes with specular, I think the normals are still wrong

Spheres with diffuse and ambient light

Spheres with specular not working

Spheres with fixed view vector for specular

Spheres with specular correct

Thursday, June 22, 2006

Raytracer positioning finally right

For some reason the View to World transformation Matrix we had from class totally wasn't working at all. There was some problem with the scaling and translation and I couldn't figure it out. So I ended up not using it and using a different method instead, and explicitly translating and scaling the pixel coordinates before applying the View to World transformation Matrix instead of doing it all in one step. So it's working now and my camera is finally correct... sweet.

Tonight I am going to try to implement the Phong Lighting Model. This project is awesome!!

Matt and I talked for a bit and we discussed some stuff about Adaptive Antialiasing, which I might try to do cause it seems like a smarter method than just straight Supersampling. We'll have to see if I have time for all of this interesting stuff. :)

Wednesday, June 21, 2006

My first Raytraced images!!!!

Well friends, I have now officially created my first Raytraced images ever!!!!!!!!!!!!!!!! Yeeaahh!!!

I got my Raytracer going today and got the rays casting correctly and then wrote code for Sphere intersections and Cube intersections. Pretty sweet eh!! So after lots more work I will have something that has specular surfaces, with shadows and a much more 3D look. But this is pretty exciting already... man this rocks!!

Matt and Matt said I might need to fix my Camera coordinates, I think I was doing something wrong there so Matt explained it and I think I get it now so when I am done some more Fine Arts I'll get back to this and try to fix it. Awesome!!


Tracing the light rays from the wrong origin

Again, totally wrong!!

Wahoo!! Spheres!!!!

More zoomed in

This is sortof right, I still need to sort out the camera position

Wahoo!! Cubes!!!