Building Virtual Environments - Project Goals

An interactive virtual environment can be a complex relationship of interaction design, simulation, audio, and hardware interfaces that must come together seamlessly to create an immersive experience for the user or audience.

  • The Virtual World: The 3D dataset itself. What relation does it have with perception, expectation, and experience in the real world?
  • Animation: Is the Virtual World dynamic and alive? Do things move and change with or without the intervention of the user?
  • Interaction Design: How does the user's interactions correlate with responses in the system? How does the user navigate the virtual world?
  • Interface Design: What visual cues or other feedback systems are provided to the user?
  • Human-Computer Interaction: How does the user phyically engage with the system? How does the user experience the enviroment visually, aural, and tactile?

Proposal presentation:
Your project proposal must address all of these goals. The project should relate to your research interests and be presented with supporting information and background relevant to it. Presentation of your proposal should include sketches, reference images, and text outlining your objectives.

Web documentation:
Presentation materials and progress notes should be incorporated into a web log used for documenting and presenting progress of your project up until the end of the quarter. You may construct your web log on your own personal server space or a designated directory within the class workspace.

Progress reviews:
During the remainder of the quarter, each student must do at least one progress presentation to the class for feedback and discussion.

Production in class:
Organize your work so as to get useful feedback and suggestions from the instructor during class hours. Work on the parts you know how to do after hours - prepare and bring the parts you need help with to class.


The Virtual World:
Sketch out your designs on paper before building the models in 3D.
Consider blocking out the design in familiar software (e.g., Illustrator or Photoshop) and import .ai files as a reference.
Remember that textures can help define the space substantially.
Lights can be exported out of Maya and into Virtools, or you can create lights in Virtools. In both cases, you will want to adjust attributes of the lights in Virtools.


Important considerations:
  • The sense of scale from your given point of view
  • Sense of place in the world - cues to the viewer for navigation
  • Lighting, textures and color
  • Optimal geometry modeling

    Techniques:
    Polygon modeling techniques
    Texture mapping using UV mapping methods
    Lighting: pre-lighting and real time lights
    Observer navigation scripting

    Concepts:
    Perception of world scale
    Temporal resolution
    Tangibility / cognizability
    Wayfinding


Animation:
Motion within the virtual world can take on a variety of forms:
  • Predefined camera paths - cinematic sequences.
  • Vehicles, people, or other objects that move about the environment autonomously.
  • Environment effects such as water or visual indications of wind, etc.
  • Animations that are predefined and imported into the environment.
  • Animations that are procedurally defined.

Write out the narrative of the events to take place in your environment. Think through the possible scenarios to help determine how much of the motion can be entirely pre-defined and how much needs real time control. Should the actions take place at random intervals? Should the speed or other values change as conditions change in the scene, such as time of day? Keep in mind you can combine approaches, such as a pre-defined animation being triggered by a script with random delay intervals.

Temporal Composition
Keep in mind that this goal is about enhancing the environment, changing perspectives for the observer, and generally putting things in motion in the scene. Timing is an important consideration.

Spatialized Audio
3D audio associated to a point source in the scene.
Easily implemented in Virtools, all you need is a .wav file in your resources directory. Audio cueing can be a very powerful component of a succesful virtual environment. Consider attaching sounds to moving objects or stationary ones that will reinforce the observer's sense of place in the scene.

Environment in Motion / Natural Phenomena
Animated elements in a real-time simulation may be an important part of the interaction taking place, or they may serve to enhance the believability of the environment with little or no interaction with the observer. One example could be vehicles in traffic moving along streets in an enviroment in which the observer is focused on the layout of the buildings. It may not matter whether the cars stop when you cross the street, however a safety training simulation should have dire consequences should you wander in front of a moving car.

Like the example of traffic, many possibilities may include environmental effects such as moving water or falling leaves.

Camera Montage
Another important approach includes the role of cinematics as seen in game design. Variations on this include:

  • When first entering a new area, the view switches to a camera that does a "crane shot" showing the full environment.
  • At critical points in interaction, the camera switches from first-person perspective to an overhead third-person view, giving the user a better understanding of their placement in the environment.
  • At certain points, or if the user indicates the need for help, the simulation may switch to a pre-defined sequence of animation showing the user certain objectives or solutions for a current scenario.

Techniques:
Linear animation
Dynamics (particles)
Camera montage
Timing / synchronization

Concepts:
Narrative structure
Composition in time
Visual / audio queuing


Interaction Design:
In this case, interaction design brings together the virtual world and the user through the physical (hardware) input and the interface design. The interaction design is where all the most intensive programming takes place. A given set of inputs and functionality is provided by the user interface, and this needs to be mapped on to behaviors within the virtual world. You may want to lead the user towards different objectives, introduce new tools or challenges, track progress and provide feedback, etc., all of which constantly modify behaviors in the environment.

Write out the full narrative of events, methods of interaction, and objectives that will take place in the project. Break down the narrative into modules based on functionality needs and discrete scenes or events. Develop an outline of programming needs for each module by writing out psuedocode to help think through as many variables as possible for the best logic structure.

With these outlines in hand, you can get help during class for building blocks to use in virtools. Modules and parts of modules can be created in individual scripts, all running in parallel - part of the versatility of virtools. Do small experiments to get things working, and then you can export/import resulting scripts into the larger project.

Direct connections between user input and motion of objects is rather straightforward (as is time controlling object motions.) However, in more sophisticated interaction, you will want to track values and evaluate conditions within the environment and trigger events in repsonse to those changing conditions. The visual programming of behavior blocks allows for any number of ways to handle conditional branching and loops, but keep in mind the various elements available to manage static or variable information in the scene:
  • Parameter Operators (and Op BBs): Can retrieve an object's transform values, or just about anything about an object. It can also be used as a calculator or data converter.
  • Identity BB: Can explicity set the value of a variable (local parameter), so it can be reset or is the same every time the scene starts.
  • Attributes: You can create custom attributes on objects in which values are stored. A good way to keep track of an object's status.
  • Local Parameters: Can be treated like an attribute, where it can be operated upon and evaluated by any number of BBs in a script. It can pasted as a "shortcut" to any number of scripts to be referenced like a global variable.
  • Arrays: A powerful means for storing rows and columns of data. An array can be saved to a file and loaded on the fly as a method to save user states.
  • Grids: An easy way to divide the world into regions for tracking the location of the user or other objects.

    Techniques:
    Visual programming
    Conditional events
    Data tracking / score-keeping

    Concepts:
    Game mechanics
    Logic structures
    Behavior / learning processes

Interface Design:
The visual interface design is dependent upon the actions and choices required of the user, the hardware being used for input and/or the display output, as well as any interdependencies with the virtual world itself. For a fully immersive experience, the desire is often that the interface be as transparent as possible; emulating real-world intuition where reaching to touch or grasp an object is the objective of the interface. A virtual world can potentially be without limits, however, and a user may be restricted to a chair or unable to walk through the projection screen. A challenge then becomes how to develop an interface that allows the user to navigate in ways that feel as intuitive as the process of reaching and picking.

That is not to say that menu systems, icons, or other traditional graphical user interface elements should not be used. 2D image overlays are acceptable, but should be effectively implemented. Heads Up Displays (HUD) make use of this format while still retaining the sense of immersion (a sort of augmented reality in the virtual reality). Very effective 3D menu systems can be developed that create the sense of having the controls immersed in the environment along with your self.

Techniques:
Graphical User Interface developments

Concepts:
Usability
Transparency
extended reach


Human-Computer Interaction
An interesting perspective on Virtual Enviroment projects is that you can consider the virtual world as a "place" that can explored, manipulated or navigated in completely different ways. The same world could be explored by a group of people in a CAVE, while someone else experiences it through a HMD, while someone else is sitting at a CRT with a keyboard and mouse. Perhaps all simultaneously and networked together!

You probably want to develop an interface that can work with the standard approach of computer monitor with keyboard and mouse, so your project will be more portable and capable of viewing almost anywhere. Novel and unique variations with keyboard/mouse input can be developed with some creative thinking.

However, a specific requirement of the course project is that you implement an alternative HCI component for your virtual environment. This can be applied to user input, display output, or both:

User input:
Motion capture, such as with the Pohemus Fastrack, Vicon optical system, video or IR tracking systems
Hacked joysticks or other repurposed input devices
Audio sampling or midi input
Other types of custom sensing devices
Networked live data streams
Other gesture-based methods of input

Display output:
Head-mount display
Fishtank VR (stereo display)
Large-scale projection
Alternative projection materials and methods