Header image  

CS58
Virtual Reality

Project 1

 

Description:

This project uses the Electro engine to display a moon-like environment with some physics included.
Users can get a feel for what being on the moon is like. There are a variety of objects to look and interact with.
It should be stressed that due to time constraints this should not be construed as a 100% accurate portrayal of the Lunar environment, it is an approximation.

Tools:

  • Electro <http://www.evl.uic.edu/rlk/electro/>
    This graphics engine is based on Lua and provides: physics, audio, and input handling.
    It has advanced capabilities such as rending on stereoscopic displays and running on a distributed rendering cluster.

  • Blender <http://www.blender.org/>
    Blender is a 3D graphics modeling and animation program (similar to Maya, AC3D, 3ds Studio Max).

  • LuaEclipse <http://luaeclipse.luaforge.net/>
    This is a plugin extension for the Eclipse development environment that allows easy development of Lua based programs (like Electro).


Observations:

This project was my first real foray into 3D modeling and environments. You do not truly appreciate how long it takes to create a compelling environment until you have created one yourself. Electro is a very capable program and provides a lot of nice functionality that's easy to get at because of its LUA language foundation. However there were some shortcomings that I noticed:

  • Electro can be easily confused if objects have not been aligned to the exact center of their scene before being exported.
  • Electro has a limited selection of 3D object types it can import, currently I am using the Alias Wavefront OBJ files.
    This means that textures or other resources must reside in other files.
    Clean separation can be a good thing, but it would be nice if more formats were supported.
  • Collision detection for objects with internal volume you want to be able to explore is somewhat difficult.
    You either have to put invisible placeholders piece by piece (and turn off collision detection for your main model),
    or you have to reassemble your model piece by piece in the Electro which would take longer.
    It would be very cool if Electro had some kind of collision mapping program or object loader that could generate these mappins visually.
    The reason this is probably still lacking is that Electro is used by its main users almost entirely for planatery and outdoor environments.
  • Many fancy effects require writing your own GLSL shader program.
    While it's great that this capability exists, for many users this is another hurdle to overcome.
  • No shadows.
    This must be implemented by the user.
  • Interpreted language
    You will hit performance bottlenecks with Electro (i.e. Lua) because of it's interpreted nature earliar on the same hardware than you would for a compiled language. For the authors, who use Electro across hetergeneous OSes and architectures having portable is more of a timesaver.

Blender is an open source 3D environment that has a unique paradigm and operational scheme compared to most other 3D modeling tools
One advantage it has over these other tools is being closely tied to the python scripting language. This makes the creation of plugins, behaviors and even games all possible without using another programming library. Unfortunately this was not very useful for this project since LUA and python are fairly different languages with different libraries. One downside of Blender is that it was MUCH harder to learn and not as fast or easy to use as other 3D modeling programs such as AC3D.

In hindsight I wish I had AC3D instead of Blender on this project. UV Texturing is much more difficult. Exporting from Blender to the OBJ files proved troublesome as it only exports the currently selected objects and vertices.This can easily happen in the heat of development when making incremental changes, saving, running the project, closing the project, editing etc.

All in all I have a new respect for those who work in 3D modeling and virtual environments.

Sources:

Project Files:

Screenshots:

View of Earth and Sun over the moon's horizon.
Also a nice view of the futuristic car.

About to use teleport pad to move to rocket launch area.

Moon base.

Moon denizens browsing the web on a full wall of the moon base.

Launching the rocket.


 

©Copyright 2007 Matthew Balman