Project Description

Create a scene editor much like those in 3D modeling tools. This editor would be able to place objects into the world and manipulate their Model Matrix to translate, rotate, and scale. A combination of mouse and keyboard input would be used to modify the objects in the world.

Technologies and Knowledge

I deepened my understanding of user input by creating a fairly complex control system. For example, the mouse input is treated differently depending on whether the user is editing an object or looking around the world.

I also gained a substantial amount of practice with matrix transforms. To start with I thought I could just have my controls modify one ModelMatrix for each object, but this meant the order the object was modified in (say rotated then translated) was the order the transforms would occur which was not useful. I had to modify the rotation, scale, and translation independent of eachother.

There is a file saving system that allows you to save your world as a .txt file to be loaded and edited later.

Features

Above are examples of using the tools available for placing and editing objects.

An example world called "Small Town Big Business" containing 1 house, 1 tree, and 1 corporate building

Libraries

Future work

I wanted to use gl "picking" to allow the user to select an object with the mouse. Unfortunately I ran into compiler problems with glRenderMode. But I learned a lot from documentation on selection and color picking.

References

Color Picking Tutorial Selection Picking Tutorial