leftspace portfolio_selected contact spencer-miller.com
leftspace animation modeling code flash spacer
 
  Currently having some trouble with the web launch version of the program (rendering window causes a crash). The program is still availble to tinker with, but I wouldn't reccommend rendering anything (spacebar key). In the meantime, here are some screencaps of renders done on my home machine.
 

CAST SHADOWS

 

ENVIRONMENT MAPPING ONTO SPHERE

 

 

 

OpenGL Scene Graph (2007)

This is an ongoing semester long project for my computer graphics class, so check back for updates! (Next update to be released sometime next week, will include ray casting, diffuse shading and environment mapping). Currently supports the following:

  • Translate/Scale/Rotate
  • Load .obj from file
  • Load extrusions from special .EXTRUDE files (see sample pack)
  • Load surface of revolution from special .SURFREV files (see sample pack)

Program launches through Java Web Start (requires at least J2SE 1.4.2)

Click here to download sample pack of .obj, .extrude, and .surfrev files.

Documentation for Scene Graph
Author: Spencer Miller

Object creation:

1 - CHAIR. Chairs are not scalable. Chairs can not have children.
2 - TABLE. Tables are scalable in all directions. Tables can have lamps and monitors as children.
3 - CABINET. File cabinets are scalable in the Y direction. They can not have children.
4 - LAMP/DESKLAMP. If a desk (or desk group) is currently selected, this will create a desk lamp. Otherwise, it will create a floor lamp. Both lamps are scalable in the Y direction. They can not have children.
5 - MONITOR. Monitors can only be created if a desk (or desk group) is selected. If no desk is selected, then the monitor will not be created. Monitors are scalable in the X direction, to give the option of creating a CRT or flat screen. They can not have children.
6LOAD .OBJ . Loads an .obj file from local system.
7LOAD .EXTRUDE . Loads an .extrude from local system.
8LOAD .SURFREV . Loads a .surfrev from local system.
C - CLONE. Creates a copy of selected object (or group of objects). Unlike other object creation, copies appear at the site of the target object. The root object (root node of the scene graph) can not be copied.

Object transformation:

T - TRANSLATE. pressing 'T' switches the program to translation mode. arrow keys will translate selected objects along the X and Z axes.
R - ROTATE. pressing 'R' switches to rotation mode. LEFT and RIGHT will rotate selected object around the Y axis. UP and DOWN have no functionality in rotation mode.
S - SCALE. pressing 'S' switches to scale mode. UP and DOWN will scale objects in their default scaling mode. LEFT and RIGHT have no functionality in scaling mode.
X - SCALE X. This can only be used if a desk/desk group is selected. Pressing 'X' while a desk/group is selected switches to X scale mode, which allows the user to scale the desk along the X axis using UP and DOWN.
Y - SCALE Y. This can only be used if a desk/desk group is selected. Pressing 'Y' while a desk/group is selected switches to Y scale mode, which allows the user to scale the desk along the Y axis using UP and DOWN.
Z - SCALE Z. This can only be used if a desk/desk group is selected. Pressing 'Z' while a desk/group is selected switches to Z scale mode, which allows the user to scale the desk along the Z axis using UP and DOWN.

General functionality:

Q - 'TAB' to next object. The tab button itself wasn't working, so tab functionality has been switched to Q. Pressing Q cycles to the next object in the group. If the group is only made of one object (i.e. it's not a desk) Then Q jumps to the next object in the scene.
SHIFT + Q - Selects previous object.
DELETE - Deletes currently selected object. If the object has children, all its children are deleted as well.
ENTER/ESCAPE - Deselects current object and restarts tabbing.

KNOWN BUGS::

The very first time you create a surface revolution (key: 8), it won’t appear on screen until the canvas is redrawn again (so basically by doing anything, I usually hit an arrow key). After that first creation it draws normally.

CREDITS:
OpenGL bindings through JOGL
Some models (helix, torus) are Maya primitives

TOOLS:
Eclipse (Java), Maya