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:
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
|