|
|
The Iota Framework
During my PhD project I developed a framework for physically based
modelling in virtual reality, which consists of a tightly coupled simulator
engine, a complexity management module and a graphics kernel. The simulator
itself was purpose built from scratch to support a hybrid particle-rigid
body motion solver. Graphics and navigation were supported through the use
of the Maverik
graphics kernel. Above the low level component layer exists a Perl
glue layer which exposes the functionality to the Perl scripting language.
A collection of Perl modules then provide extra high level functionality
to support model construction, rendering customisations and any other extensible
user customisations. Consequently simulation environments could be rapidly
constructed in the scripting language.
Iota's simulator engine was designed purely for simulating physical
behaviour for computer graphics purposes, therefore a trade-off between
performance and accuracy was made in the complexity management module.
Where possible the simulation is reduced to the simplest model required
to achieve the desired behaviour. Furthermore, the simulator supports dynamic
creation and destruction of simulation primitives such as particle, forces
and rigid connections. By enabling this dynamic re-structuring of a model
being simulated, complexity can be managed at run-time while still maintaining
a consistent perception of the simulation. More information
about Iota is available from my publications page.
|
|
Case Studies
|
|
Ladder
|
A Jacob's ladder - This movie shows two blocks in the Jacob's Ladder
being interactively tipped in quick succession. They cancel out each others
propagation down the ladder, while the ladder itself is spun. I navigate
such that the entire ladder can be seen. Subsequently two further blocks
are tipped with sufficient delay to enable multiple ripples to propagate
along the ladder. During this time I navigate again to follow the ripple.
|
|
Cradle
|
A Newton's cradle - In this movie the second ball from the right
in a Newton's Cradle is interactively selected and lifted. It is then
released notice that the ball colour changes back to silver from red.
As the group of two balls swing back towards the cradle, a single ball
at the far left is selected, lifted and then released. The cradle is simulated,
while I navigate closer to the model; select, lift and release the centre
ball and finally spin the cradle.
|
Fish
|
A shoal of fish is interactively dragged around via a force function
that attracts them to a mouse particle. Notice how the shoal's motion
is complicated by currents (modelled using fBm functions) in the
environment and long range attractive short range repulsive forces between
each fish.
|
Undersea
|
A shoal of fish swims towards a driver particle moving along a Lissajous
path. Currents complicate their motion and the motion of the seaweed.
A single fish is scripted to dive towards the seaweed and linger before
pulling away a piece and attempting to rejoin the shoal. Notice how this
fish has difficulty keeping up with the shoal while dragging the seaweed.
Finally, it is scripted to release the seaweed thus allowing it to properly
rejoin the shoal while the seaweed drifts away.
|
Chain
|
A chain is pinned and allowed to swing about the pinned point. The
second link from the bottom is interactively selected and the re-attached
to the node above. Finally, it is interactively selected dragged, separated
and allowed to fall away.
|
Bucky
|
The Bucky ball pulsates a few times as the forces between the nodes
in the model settle down, before I navigate and place my viewpoint inside
the structure.
|
Molecule
|
A rigid molecule is pinned from the blue sphere at the bottom right,
and allowed to swing about it like a three dimensional pendulum. Then I
navigate closer to the model.
|
Breaking
|
Again a rigid molecule is pinned from the blue sphere at the bottom
right, and allowed to swing about it like a three dimensional pendulum.
The bond connecting the top two blue spheres is broken but has no effect
because the structure is rigid and cyclic. Sometime later another connection
is broken while I navigate down. Finally the detached portion falls away
under gravity. Notice how the remaining portion swings a little differently
due to its change in shape.
|
Flexible
|
A soft molecule is pinned and allowed to swing like a three dimensional
pendulum. Then I navigate closer to the model and interactively adjust
the viewpoint in order to see the whole molecule.
|
Lab
|
The setting is the AIG lab, I navigate towards A Newton's Cradle on
a desk, interactively play and then navigate towards a Jacob's Ladder
where I tip a block, watch the simulation for a moment before returning
to the Newton's Cradle. To finish, I spin the cradle on the desk while
it simulates.
|