Home | About | Contact
 
Project Fundamentals: Starting Your Own Project
DEVELOP A CONCEPT

It is fundamental you thoroughly develop a concept before you begin working. A clear map of what you want to show and how you want your users to interact with your data are fundamental to any electronic visualization project. Your concept will evolve and possibly change as your project begins to take shape, but it is a good idea to start with a basic problem such as a transit oriented redevelopment, decide how you want to represent the physical environment, such as in a density study, and how the environment will change over time (models increase in bulk from oriniginal to proposed as the user enters within 10 feet of the building). Layering on top of the basic probelm, you should also consider how enhanced visual presence or immersive interaction will aid the project. I encourage you to consider pushing your concepts beyond aesthetic observations by utilizing interactivity.

Your concept should fit the visualization medium you are going to use. A CAVE or any immersive system is not an enhanced desktop. Some projects might be well suited for a desktop application and fail in the CAVE. I quickly discovered this difference while creating a TOD project for both environments. The drawback to using the CAVE is difficulty with navigation and layered interaction. If you want buttons or a control panel, you might consider a heads-up display for the CAVE. Navigation is also an issue when dealing with geography. You might want to project a "you are here" map on one wall of the CAVE, while another wall displays a streetscape view.

If you are interested in advanced navigation systems for your immersive environment, see the City Cluster project by Franz Fishnaller and Alex Hill at EVL. In this project, they created a view panel that the user carries with him in the cities of Florence and Chicago. The user can use the view panel or "window" to see above him or another user.

AD508 is a helpful class to take that will introduce you to ways of thinginking about your project. It is a forum for EVL students to explore concepts in electronic visualization.

GIS/ AUTOCAD DATA

Already having your data in AutoCAD and GIS saves you a lot of time. If you are working on a project for the North Shore area just outside Chicago, check the GIS Consortium. If you do not have access to electronic data, you are going to have to build it yourself. Many municipalities do not have or maintain data in a GIS because they can not afford the initial costs of digitizing the information. If you have to start from scratch, my advice is to digitize the maps using AutoCAD, export as a DXF into your 3D modeling package, or import into a GIS. You can also export out of GIS into AutoCAD using the Arc to CAD extension. Consider doing a thourough job in AutoCAD and sell or give your maps and layers to the municipality.

I do not suggest extruding lines in AutoCAD and importing an entire model into a 3D Modeling package. You will ultimately want to keep all objects within the scene as seperate objects if you are using 3D Studio or Maya. If you use MultiGen, an entire flight file can contain everything and have interactivity added to it. AutoCAD adds extra polygons; use AutoCAD to get a precise base map of the location and export it. Use it as a guide in your modeling package, but do not use the objects created in AutoCAD in the CAVE. You will find that your models are polygon heavy and will end up sacrificing frame rate.

BUILD 3D WORLD

Create your world in your 3D modeling package. There are multiple ways to do this, but you are most likely going to create entire scenes and export each model.

There are several 3D modeling packages designed for real time. While you may be more familiar with 3D Studio Max than MultiGen's Creator, you will be better off in the long run using modeling packages that are polygon conscious.

I began modeling a corridor in Hazel Crest using 3D Studio VIZ for my final project. After exporting my buildings and assembling my scene graph for the CAVE, I realized that my models were inefficient. I had too many polygons in a basic 6 sided building. 3D Sudio uses more than 2 triangles per side to create a face. This is an inefficient use of polygons. I ended up decimating my models and sacrificing quality for efficieny. I was never able to reconcile the heavy polygon count and ended up using Level of Detail for every model without ever achieving a high frame rate with a well modeled building. My advice is to stay away from AutoCAD & 3D Studio Viz and Max.

It is highly recommended you take the Maya class first (AD 406, look for Modeling in Maya for interactive applications). If you do not want to commit to a modeling class, purchase a how to book for Maya. Other industry accepted real-time modeling programs include Alias Wavefront, any MultiGen product, Rhinoceros (www.rhino3d.com), SoftImage, and my favorite, Sense8's WorldToolKit. All of the above mentioned software packages are available for use in the EVL lab.
EXPORT: VRML, CAVE

Export ech model as one the following formats:

pfb - IRIS Performer fast binary format
.flt - MultiGen OpenFlight format
.iv - SGI Open Inventor format
.wrl - VRML version 2.0 format
.obj - Wavefront Technologies data format
.3ds - AutoDesk 3DStudio binary data
.dxf - AutoDesk AutoCAD ASCII format
.lsa - Lightscape Technologies ASCII radiosity data
.lsb - Lightscape Technologies binary radiosity data

Create a directory and load all models into this directory. You might experience difficulty with .3ds and .wrl models; they might not show up. The most efficient way to load your models into the CAVE is to convert them to pfb. Perfly each model after converting them.

If you open an .iv file in notepad, you will see something like the foll.owing:

#Inventor V2.1 ascii

Separator {
PointLight {
location 672.329 277.128 -1484.71
}
Separator {
DEF Planenew Separator {
Transform {
translation 1067.6 -1 -933.759
rotation 1.5598
scaleFactor 0.827581 0.9387 0.9387
scaleOrientation 0 0 1 0
}
Separator {
Material {
ambientColor 0.0904761 0.0904761 0.0999999
diffuseColor 0.38 0.38 0.42
specularColor 0.53 0.53 0.53
emissiveColor 0 0 0
shininess 0.93
transparency 0
}
Texture2 {
image 1024 1024 3
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff
0xffffff 0xffffff 0xffffff 0xffffff

AD 408 & AD408 Advanced should be a requirement if you intend on creating CAVE applications. AD408 will introduce you to computer graphics for CAVE applications, AD408 advanced will teach you how to script interactivity and load your models into the CAVE.

BUILD SCENE GRAPH: INTERACTIVITY

Construct a scene graph that loads models and script interactivity. Your scene graph might resemble the following:

//set up wand trigger to toggle icons on and off
#ifndef _HAZEL_INTERFACE_
node(User0.teleport(1523 610 0)+1)
#endif

#include "hazelInterface.scene"

//set up wand trigger to toggle icons on and off
wandTrigger(when(buttonUp1,opp17mySlider.drop),
when(button2,opp17iconSwitchA.toggle,opp17iconSwitchB.toggle))

//create a value node to increment the object orientation
value opp17objectRotate(integer,delta(90),
when(changed,opp17movedObjectB.orientation(0 0 $value)))

transform(position(1523 626 3))
{
//create a primary model
switch opp17objectSwitchA(on)
{
object (file(32and31.pfb))
switch opp17iconSwitchA(off)
{
pointAtTrigger(when(start,opp17icon1OnSwitchA.off,opp17icon1OffSwitchA.on),
when(stop,opp17icon1OffSwitchA.off,opp17icon1OnSwitchA.on),
when(button1,opp17objectSwitchA.off+0.1,opp17objectSwitchB.on+0.1))
{
transform (position(20 -30 2))
{
group opp17icon1GroupA()
{
switch opp17icon1OffSwitchA(on)
{
object (file(initmodelsselected.pfb))
}
switch opp17icon1OnSwitchA(off)
{
object (file(initmodels.pfb))
}
}
}
transform (position(45 30 35),size(10 10 1))
{
reference(node(opp17icon1GroupA))
}
}
}
}
}

In the above example, I am teleporting (repositioning) the User,

loading the interface scene graph,

creating icons and activating icons with the PointAt Trigger (I created a set of 3 icons for each parcel: rotation, switch bewteen models, and a slider that allowed me to move the building.) The icons are similar to "rollovers" on web pages. When the icon is activated via the PointAt Trigger, the icon would light up. When you press button1 on the CAVE Wand (the Cave's mouse) the building could be swapped, moved, or rotated depending on which icon you activated,

Here,

switch opp17objectSwitchA(on)
{
object (file(32and31.pfb))

I am loading the building named 32and31.pfb under the SwitchA, when switch A is on, the model 32and31.pfb will be visible.

Computer Graphics & Urban Planning
  What is Virtual Reality?
  What is a CAVE and why use it?
  VR & the Web
  Current & Future state of VR
   
Overview of Classes & Program
  Who to contact to get permission to use the EVL
  How to get email, keys, and card access
  Setting up user name, pass, Accessing your directory locally & remotely
  Newspace versus EVL computers
  Overview of classes
   
Project Fundamentals
  Unix & Linux
  YGdrasil
  Ongoing projects
  Starting your own project
  Taking photographs for textures