CSC 471 Final Project - 3D Design Tool

by Matthew Navarret


Introduction

This project was created to allow people to design room layouts for all types of rooms. Because of my practical nature I decided that I wanted to do a project that could have some sort of useful value to some for something other than just for entertainment. This project was educational in the fact that I review almost every graphics idea that we learned in class.

Graphics techniques

In my project I used the open source library GLUI to provide the control panel for the design tool. I tried to use a variety of the GLUI functions for the control to allow for the program to be expandable without the changing of any code. I allowed for the loading of multiple mesh files, the use of a GUI using GLUI, texture mapping for the walls and the floors, lighting for the room, perspective, and many transformations.


Figure 1: The Default Setting

 

User Guide

Commands and functions:
To view this help menu press the 'h' key
To quit press the 'q' key
Designer Control Panel:
To load a new object select the object to load from the
object menu and click load.
Once the object is loaded you will notice that the Selected
Object lisbox will be set to the loaded object and the
transform type will be set to translate.
When multiple objects are loaded select the object to
transform from the Selected Objectt and then select which
transform to perform from the right click menu.
To change the floor or walls select which option you like
from either of both of the Floor and Walls listboxes and
then click the Apply button to apply your choices.
Mouse functionality:
To view the menu to rotate, translate, or scale click the
right mouse button.
To scale, rotate, or translate select what you want to do
from the right click menu. Click and drag the left mouse
button to make your translation.
To rotate the camera select the rotate camera from the right
click menu and then click and drag the mouse until you
have your view.

 

Screenshots



Figure 2: A chair mesh file loaded and translated to the floor.




Figure 3:A desk with the chair loaded and aligned on the left side with the right click menu opened.




Figure 4: The floor texture changed and wall texture changed. The object list is shown so you can see in the next figure how you can add one dynamically.




Figure 5: A dresser mesh dynamically added to the object menu demonstrating that any mesh can be converted to .m format and imported.


Known issues

If you add a blank new item to the list the program will crash if that blank item is attempted to be loaded .

Resources

Mesh files
http://www.3dcafe.com/asp/meshes.asp

RGB colors in decimal
http://html-color-codes.com/rgb.html

A great open source GUI library
http://glui.sourceforge.net/#download