The True Axis Physics Wrapper uses the term collision grid to describe a 2D grid used to separate space. Objects are placed into grid segments based on there location. When an object is moved, only near by grid segments need to be checked for other objects that could cause a collision. This way, the simulation can easily cope with thousands of dynamic objects. A collision grid has the advantage of being very fast for level layouts that can be represented well by a 2D map.
Sometimes, a 2D grid may not do a good job of dividing the world. The collision grid solution has problems with dynamic objects that are larger than a grid segment. The collision grid copes best with a world containing evenly distributed objects. Large sparse areas with small pockets of tightly packet objects are less ideal. A 2D grid may not work well with a highly 3D environment. The octree and ctree methods provides an alternative solution that avoids these problems.
A ctree is a spacial division structure. It is a new type of spacial division structure developed by True Axis. It is basically a modified version of an octree. It is called a c-tree because it was an attempt to make a compressed octree. In sparce environments, Octrees may contain a lot of nodes that only contain one Child. In CTree removes all these nodes by adding extra information to each node to specify its world location.
CTrees have the advantage of being more efficient in sparce environments then an octree. Also, the number of maximum internal nodes required for a ctree is equal to the number of objects minus one. This means that memory usage is predictable. Unlike octrees and collision grids, the user does not need to specify the amount of memory required.
CTrees may be more efficient in some situations then octrees. Some experimentation by the user may be necessary to find which suits them better.
The relationship between the inertia tensor and angular velocity is equivalent to the relationship between mass and linear velocity. The inertia tensor however, rotates with the object, where as mass is not affected by rotation.
By default, movement propagation is enabled. However, if movement propagation is disabled, then, if one object in a group of touching objects is moving, then the entire group will be added to the moving list. This will typically result in a large number objects in the moving list that that are not actually moving. This is because, although an object is set to moving, the sum of forces applied to it may not be enough to actually move it.
If movement propagation is on, only touching objects that have a high probability of being affected by moving objects are added to the moving list. This means that the number of moving objects can be kept much lower and larger numbers of touching objects can be handled more effectively. The cost of this is that movement propagation may occasionally cause some unrealistic results.
Movement propagation is most useful when the number of touching objects is far greater then the maximum number of moving objects. In this case, if movement propagation is off, the max number of moving objects will be met, after which point, the simulation will start to fail. With movement propagation on, this situation is handled more gracefully. Only the fastest moving objects and objects with the strongest collisions are added and kept in the moving list.
An octree is a spacial division structure. Each node in the tree is represented by a cube. A nodes children are created by dividing the cube into eight equally sized pieces.
The octree implementation has a number of advantages over the collision grid implementation, but the collision grid method may often be faster. See collision grid for more information.
After a reference counted object is created it will have a reference count of one. AddRef() and Release() can be called to increment and decrement the reference count. If the reference count is zero after a call to Release() the object will be automatically deleted. Reference counted objects should only be created using new.
The True Axis Physics Wrapper performs swept collision testing. By this we mean that all collision that occur during an objects movement can be found. As an approximation of reality, the True Axis Physics Wrapper finds all of the collisions that will occur in a time step and applies them all at ones. Multiple collisions passes are performed in a single time step to help cope with sudden velocity changes due to collisions. A single pass of this method of collision testing is slower than intersection testing but less passes are needed for accuracy so it can be potentially faster overall. Because swept collision testing is not need when object are moving slowly, it is turned off in these cases to improve execution speed.
The end result of the use of swept collision testing is that the True Axis Physics Wrapper copes well with very fast moving objects where other simulations have problems or even fail totally.
Copyright © 2015
Created with the Freeware Edition of HelpNDoc: Easily create PDF Help documents