44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
# Impress Slideshow Engine
|
|
|
|
## 3D Transitions
|
|
|
|
The 3D transitions are slideshow transition engine using OpenGL and
|
|
are located in `slideshow/source/engine/OGLTrans/`. They were initially
|
|
written by GSOC student Shane.M.Mathews. Radek has later polished the
|
|
code a bit, added few new 3D transitions, added infrastructure for
|
|
vertex and fragment shaders. Wrote few transitions with fragment shader
|
|
too.
|
|
|
|
## Physics Animation Effects
|
|
|
|
Physics animation effects are simulated by external 2d physics engine
|
|
library `Box2D`. They don't directly call `Box2D` functions but instead
|
|
use the wrapper in:
|
|
|
|
* `slideshow/source/inc/box2dtools.hxx`
|
|
* `slideshow/source/engine/box2dtools.cxx`
|
|
|
|
The wrapper has two corresponding classes to manage the `Box2D` world
|
|
and `Box2D` bodies.
|
|
|
|
When a physics animation starts, a `Box2DWorld` is initiated and
|
|
populated with every shape that is part of the foreground (which are
|
|
shapes that do not belong to the master slide and not a background
|
|
shape).
|
|
|
|
After creation until the end of the slide (not the whole slideshow)
|
|
the `Box2D` World isn't destroyed and reused. But the bodies that
|
|
represent the shapes in the slide get destroyed when there's a point
|
|
in time that there's no physics animation in progress. And recreated
|
|
when another physics animation starts.
|
|
|
|
If there are multiple physics animations in parallel only one of them
|
|
takes the role of stepping through the simulation.
|
|
|
|
If there are other animation effects that go in parallel which change
|
|
the shape position, rotation, or visibility - they also report the
|
|
change to `Box2DWorld`. These updates are collected in a queue in
|
|
`Box2DWorld` and processed before stepping through the simulation.
|
|
To achieve convincing results these updates are performed by setting
|
|
the `Box2D` body's linear velocity or angular velocity instead of
|
|
setting directly it's position or rotation.
|