44 lines
2.0 KiB
Plaintext
44 lines
2.0 KiB
Plaintext
// Panda Physics Documentation
|
|
// Charles Nicholson, Intern-at-large. 7/17/00
|
|
// Further changes by Dave Schuyler 2003, 2004, 2005, 2006.
|
|
|
|
How to make physics go:
|
|
-----------------------
|
|
|
|
Physics lives mainly in the scene graph. To put a physical object into the
|
|
scene graph, use either an ActorNode or a PhysicalNode. If you want this
|
|
node to react to outside input (i.e. movement on the node above it), use an
|
|
ActorNode. ActorNodes will also update their own nodes according to their
|
|
internal physics information. PhysicalNodes are pretty much the same, but
|
|
they don't have the automatic graph response/update routines built-in, so
|
|
for most cases, you'll probably want to use an ActorNode.
|
|
|
|
Forces (gravity, noise, jitter, friction) can act on these objects, and they
|
|
live in the graph as well. Forces come in two flavors: linear and angular,
|
|
and ForceNodes can hold both. When a force acts upon an object, the relative
|
|
matrix between the ForceNode and the ActorNode is calculated and applied to
|
|
the force vectors, which in turn get applied to the objects via integration.
|
|
|
|
Integration occurs in the PhysicsManager, which has references to all of the
|
|
forces and objects to be acted on. Like forces, there are two types of
|
|
integration: linear and angular. Respective integrators must be plugged in
|
|
to each for anything to happen.
|
|
|
|
What to do if nothing's moving/happening:
|
|
-----------------------------------------
|
|
|
|
1. Make sure you have a PhysicsManager.
|
|
Make sure that an integrator (LinearEulerIntegrator and/or
|
|
AngularEulerIntegrator) is plugged in to the manager.
|
|
|
|
2. Make sure you have your Physicals (live inside the Actor/Physical
|
|
Nodes) attached to the manager.
|
|
|
|
3. Make sure that your forces live in ForceNodes and are attached
|
|
to either the physical or the manager.
|
|
|
|
4. Make sure you're calling PhysicsManager::do_physics() once per frame.
|
|
|
|
If none of these work, try a simpler test, or ask for help (a co-worker or
|
|
the panda3d forums are good places to start).
|