Level Editor

By: Alyssa Compania for CPE 471 Final Project

Project Description

This program is a level generator/editor. It will generate a 3d level according to a user-specified file.

What can the user do?
The user has almost complete control over editing the level. This includes exploring the world (limited; see Notes), adding new models in the world, changing the meshes of existing models, using transforms (translating, rotating, and scaling) on existing models, changing the colors of the models, and deleting existing models (see Controls).

Starting the program
When the program begins, the user is prompted to give an existing filename (giving the program a filename that does not existed will close the program).

The world

This is just an example of some models in the world.

Selected Model
not flashing

This is the current model chosen. The user can make the model flash to make sure they have the model they want to edit(as shown below).

Adding Color
original added blue

The first picture is the model with its original color. The user can edit the color values as shown in the second picture where the user added more blue.


The picture above shows the user colliding with the wall and stopping.

Rotation and Lighting
rotate1 rotate3 rotate4

The pictures shows the model able to rotate. The lighting can also be seen here.


The picture above shows the overview of a maze. Users can toggle this mode to see the top view of their world.

Program Controls

Some of controls are constant, while others change when the mode changes. Listed below are the contols to the program. Note that the user cannot do some actions while in certain modes. Please see the notes section for more information

m - changes the mode
   (Normal, Transform, Scale, & Rotate)

Translate mode controls
w - moves model positive in
s - moves model negative in
a - moves model negative in
d - moves model positive in
q - moves model negative in
e - moves model positive in

Rotate mode controls
a - rotates left
d - rotates right

Scale mode controls
note: The models are scaled in all direction
(e.i. cannot just scale in the x-axis)

a - scales model down by 0.1
d - scales model up by 0.1

Normal mode controls
w - moves the camera forwards
s - moves the camera backwards
a - moves the camera left
d - moves the camera right

e - switches between the models
r - adds a new models
t - deletes selected model
p - makes selected model flash

c - changes color selection
z - increases color value
x - decreases color value

spacebar - give the user an overhead look of the world
q - quits out of the program and saves changes

Notes Regarding This Program

Exploring the world
There are some limits to exploring the world. The user can move using the 'wasd" keys and look around by clicking and holding down the mouse. The user cannot move up and down in the y-axis, but can use the spacebar to get a whole over view of the world. Note that the the user should not/ cannot move in overview.

Adding new models and Collision
An added model is made at the exact point where the user is on. Models that are just added does not currently have collision detection, but will change to have collision detection when the user saves and re-loads and file again.

There is a really simple lighting(diffused lighting) implemented in this program. Above there a single point light that lights up the world.

This program has different modes because I was having problems trying to figure out which keys I need to use. I decided to reuse keys to save time from figuring out which keys are still free.

The program will print out almost all the information and action you are doing in the program. It will also show a shorter menu of the controls.

An existing file must be selected to load or the program will exit. The file will have the number of models to be put in the 3d world and the model's parameters.

I the beginning, I was trying to implement a random maze generator algorithm but I did not have the time to finish the algorithm. I just decide to build the maze. The program comes with 3 pre-made maze files.


Diffused lighting - just some simple lighting
Model Transformations - can translate, rotate, and scale the models
Collision Detection - user cannot go pass the existing models
Saving and Loading Files

References Used

Given code by Prof. Wood;
code from past labs:
models given in class
3D Theory: Collision Detection
How to build a maze