CS593- Ray Tracing Algorithms(Fall 2011)

 

 

Week 4 Sept 23, 2011

Added a matrix class

In lieu of using an existing math library toperform matrix calcuations, I created my own for two reasons.

1) Usability - I have control over the api thus can create methods and overload operators as I see fit.

2) Portability - For this project I have been switching between Ubuntu and Windows developement environments. If I were to choose a math library, it would have Windows and Ubuntu compatibility.

Added transformation funtions

I've created 3 transformation functions, with some variations on the rotate transformation.

translate ( x , y , z);
scale ( x , y , z);



rotateX(float radians)
rotateY(float radians)
rotateZ(float radians)

These rotation functions translate the center to be the origin so that rotation occurs around center.
rotateX(float radians, point3d center)
rotateY(float radians, point3d center)
rotateZ(float radians, point3d center)

I've create some examples of animations generated by my program on the right.

With these transformations I will be able to create a way to script animations.
The prototype that I working on allows animations to be defined by a duration, and a framerate. Also there will be a list of transformations For example, using the JSON notation.


animatedRender{

duration : 20 ; // duratiuon in seconds
framerate : 25,

transformations: [ ... ]

}


The way the list of transformations will work is that the objects defined in scenes may have an identifier. To animate an object would invovle specifing the object id, start time, duration, the type of transformation, and tranformation parameters. For example:

transformation : {

id : "my sphere";
start: 2 ; // start time in seconds
duration:2; //time in seconds
type : scale ;
scaleX: 1;
scaleY: 2;

}


 

Experimented with Alice

Alice is a scripting and prototying language for computer programming in 3d. It is a free program and is designed as a learning aid for teaching graphics.

Read and watched videos on LLVM

LLVM (Low Level Virtual Machine) is a compiler project designed to be compatible amoung multiple operating systems. Unlike the Java virtual machine which creating more of a system level virutal machine, LLVM is more low level and is closer to the ISA level. One of the perks of LLVM is that it can generate relocatable machine mode at compile time.

This week I watched a few presentation on you tube, and and started to install LLVM on my machine.

Setup a web server

I had been spending time to try to host a web server on my computer at home, but I had difficulty accepting incomming connections from the internet in the past few weeks.

This week I replaced my router and was able to setup port forwarding on my router. Now I am able to expose my web server and ftp server on the internet.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



example animation:one moving sphere

example animation:multiple moving spheres