Vortex Studio SDK Classes Documentation
|
Defines a volume and shape in space that the Dynamics can use to compute collision for a rigid body. More...
#include <Vx/VxCollisionGeometry.h>
Classes | |
class | FluidInteractionData |
This class encapsulates all fluid interaction data. More... | |
Public Types | |
typedef int | CallbackHandle |
Callback Handle. | |
enum | TemporaryDisabledStatus { kNotTemporaryDisabled = 0, kTemporaryDisabledShortTerm, kTemporaryDisabledLongTerm } |
Allows the user to tune different levels of the disabled status for collision geometries. More... | |
Public Member Functions | |
VxCollisionGeometry (VxGeometry *inGeometry) | |
Default constructor. | |
VxCollisionGeometry (VxGeometry *geometry, VxMaterial *material) | |
Constructor with geometry and material. More... | |
VxCollisionGeometry (VxGeometry *geometry, VxMaterial *material, const VxTransform &transform) | |
Constructor with geometry, material and transform. More... | |
virtual | ~VxCollisionGeometry () |
Destructor. More... | |
void | addFilterBox (const VxOBB &filterBox) |
Adds a filter box to this collision geometry. More... | |
bool | addFluidInteractionForce (const VxFluidState *fluidState) |
Adds the fluid interaction force corresponding to a fluid level and density as specified in the input fluidState parameter. | |
bool | assignResponseID (ResponseType id) |
Assigns the given response ID to this collision geometry. More... | |
virtual VxCollisionGeometry * | clone (bool iAlsoCloneGeometry=false) const |
Creates and returns a new VxCollisionGeometry. More... | |
virtual bool | computeMassPropertiesFromMass (const double inMass, VxReal3 outCOM, VxReal33 outInertiaTensor, double *outVolume=0) const |
void | computeSmallestEnclosing (const VxArray< VxVector3 > &points, VxGeometry::eSmallestEnclosingLockedAxes lockedAxes=VxGeometry::kNoAxis, bool isPositionLocked=false) |
Resizes the underlying geometry and sets new position and orientation such that the given set of points is covered while minimizing the geometry volume. More... | |
void | computeSmallestEnclosing (const VxVector3 *inPoints, size_t numPoints, VxGeometry::eSmallestEnclosingLockedAxes lockedAxes=VxGeometry::kNoAxis, bool isPositionLocked=false) |
Resizes the underlying geometry and sets new position and orientation such that the given set of points is covered while minimizing the geometry volume. More... | |
VxCollisionGeometryState * | createState () const |
Creates a state that can be later restored. More... | |
void | enableCollision (bool value) |
True to enable collision; false to remove this geometry from the collision detection. More... | |
virtual void | enableFastMoving (bool value) |
Sets the fast moving flag. More... | |
void | enableFluidInteraction (bool value) |
Sets the fluid interaction enabled flag. More... | |
void | enableMass (bool value) |
Sets the mass enabled flag. More... | |
void | getAABBRef (const Vx::VxTransform &iTMRef, Vx::VxVector3 *minCorner, Vx::VxVector3 *maxCorner, double time) const |
Computes and returns the aabb in reference frame given by iTMRef. More... | |
ResponseType | getAssignedResponseID (size_t index) const |
Gets the response ID in this collision geometry with the given index. More... | |
size_t | getAssignedResponseIDCount () const |
Gets the number of response IDs assigned to this collision geometry. More... | |
VxMath::BoundingBox | getBoundingBox () const |
Gets the axis-aligned bounding box of the collision geometry in world space. | |
VxMath::BoundingSphere | getBoundingSphere () const |
Gets the bounding sphere of the collision geometry. | |
virtual const char * | getClassName () const |
Returns the class name. | |
const VxSequentialID & | getCollisionGeometryID () const |
Get collision geometry ID. More... | |
virtual void | getCOM (VxReal3 com) |
double | getContactTolerance () const |
Gets the contact tolerance used during collision detection for this collision geometry. More... | |
virtual VxVector3 | getExtremePoint (const VxVector3 &direction) const |
Returns the extreme point in the specified direction on the collision geometry in world space. More... | |
const VxArray< VxOBB > & | getFilterBoxes () const |
Returns the filter boxes registered on this cg. More... | |
const VxArray< VxOBB > & | getFilterBoxesAbsolute () const |
Returns filter boxes registered on this cg in world space. | |
FluidInteractionData * | getFluidInteractionData () const |
Returns a pointer to the interaction data. | |
VxFluidInteractionForceFn | getFluidInteractionForceFn () const |
Gets the fluid interaction force function previously set with setFluidInteractionForceFn(). | |
virtual VxGeometry * | getGeometry () const |
Gets the geometry of this collision geometry. | |
VxIntersectFilter * | getIntersectFilter () const |
Returns the intersect filter , if any. | |
virtual VxMaterial * | getMaterial () const |
Returns the material or NULL (corresponding to the default material) | |
virtual VxMaterial * | getMaterial (int iTag) const |
Reads the mapped material from the material map if present in the geometry; otherwise, returns the material of the collision geometry. More... | |
VxCompositeCollisionGeometry * | getParent () const |
Gets the composite this collision geometry is in. More... | |
VxPart * | getPart () const |
Gets the part this collision geometry is in. More... | |
VxPart * | getPartRecursive () const |
Look for the part recursively in its parents, and return it if it has one, otherwise return null. More... | |
int | getRequestID () const |
Returns the default request ID if the geometry has been added to a part. | |
TemporaryDisabledStatus | getTemporaryDisabledStatus () const |
Returns the temporary disabled status . | |
const VxTransform & | getTransformAbsolute () const |
Gets the absolute transform. More... | |
const VxTransform & | getTransformRelative () const |
Gets the relative transform. More... | |
VxUniverse * | getUniverse () const |
Gets the universe this collision geometry is in. More... | |
VincModel * | getVincModel () const |
bool | isCollisionEnabled () const |
Returns true if this geometry participates in collision detection. | |
virtual bool | isFastMovingEnabled () const |
Check if the fast moving flag is enabled. | |
bool | isFluidInteractionEnabled () const |
Gets the fluid interaction enabled flag . | |
bool | isHole () const |
bool | isMassEnabled () const |
Check the value of mass enabled flag. More... | |
bool | isResponseIDAssigned (ResponseType id) const |
Checks if the given response ID is assigned to this collision geometry. More... | |
virtual bool | isStatic () const |
Gets the static flag. More... | |
CallbackHandle | registerDestructionCallback (const std::function< void()> &fn) |
Register a callback function that will be executed when this instance is destroyed. More... | |
void | removeFilterBox (const VxOBB &filterBox) |
Removes a registered filter box on this collision geometry. | |
void | removeResponseID (ResponseType id) |
Removes the given response ID from this collision geometry. More... | |
bool | replaceAllResponseIDs (ResponseType newID) |
Replaces all currently assigned response IDs by the new response ID (newID ). More... | |
bool | replaceResponseID (ResponseType oldID, ResponseType newID) |
Replaces the old response ID (oldID ) by the new response ID (newID ). More... | |
bool | restoreState (VxCollisionGeometryState *state) |
Restores a previously created state. More... | |
void | setCollisionGeometryID (const VxSequentialID &ID) |
Set collision geometry ID. More... | |
void | setContactTolerance (double value) |
Sets the contact tolerance used during collision detection for this collision geometry. More... | |
virtual bool | setDefaultFluidInteractionForceFn () |
Sets the default fluid interaction force function for the current geometry in the collision geometry. More... | |
virtual void | setFluidInteractionData (const VxReal3 buoyancyCenter, const VxReal3 drag, double buoyancyForceScale=1, double magnus=0) |
Sets specific fluid interaction properties. More... | |
virtual void | setFluidInteractionData (const FluidInteractionData &data) |
Sets specific fluid interaction properties from the existing property. | |
void | setFluidInteractionForceFn (VxFluidInteractionForceFn fn) |
Sets the fluid interaction force function. More... | |
virtual void | setGeometry (VxGeometry *geometry) |
Sets the geometry for this collision geometry. More... | |
void | setIntersectFilter (VxIntersectFilter *f) |
Sets an intersect filter for this collision geometry. More... | |
virtual void | setMaterial (VxMaterial *iMaterial) |
Sets the material associated to the geometry. More... | |
bool | setRequestID (int id, bool updateExistingPairs=true) |
Sets the requestID of the collision geometry. More... | |
virtual void | setStatic (bool value) |
Sets the static flag. More... | |
void | setTemporaryDisabledStatus (TemporaryDisabledStatus status) |
Sets the temporary disabled status. More... | |
void | setTransformAbsolute (const VxTransform &absoluteTransform) |
Sets the absolute transform . More... | |
void | setTransformRelative (const VxTransform &transform) |
Sets the relative transform . More... | |
void | unregisterDestructionCallback (CallbackHandle handle) |
Unregister the callback with the specified handle. | |
virtual void | updateAbsoluteTransform () |
Updates the collision geometry's absolute transform. More... | |
void | updateFilterBoxes () |
![]() | |
VXCORE_SYMBOL | VxBaseUserData () |
Default constructor. | |
virtual VXCORE_SYMBOL | ~VxBaseUserData () |
Destructor. | |
void * | getUserDataPtr () const |
Get pointer to generic user data. | |
void | setUserDataPtr (void *dataPtr) |
Set pointer to generic user data. More... | |
VXCORE_SYMBOL const VxUserDataContainer & | userData () const |
Accessor for user data (const version) | |
VXCORE_SYMBOL VxUserDataContainer & | userData () |
Accessor for user data. | |
![]() | |
void | addSubscriber (Event event, Subscriber *subscriber) |
void | addSubscriber (Subscriber *subscriber) |
unsigned int | getCreationIndex () const |
Access the creation index of the instance. | |
const char * | getName () const |
Retrieves the name. More... | |
bool | hasName () const |
bool | isSubscribed (Event event, Subscriber *subscriber) const |
bool | isSubscribed (Subscriber *subscriber) const |
void | removeSubscriber (Event event, Subscriber *subscriber) |
void | removeSubscriber (Subscriber *subscriber) |
void | setCombinedName (const char *base, const char *name, size_t i=0) |
Utility to set the name to a concatenate string = base_name_i. | |
virtual void | setName (const char *name) |
Sets the name. | |
Static Public Member Functions | |
static void | enableAutoFastMoving (bool value) |
Enable/disable the auto fast moving. | |
static bool | getAutomaticGeometryOwnerListMaintenance () |
Returns true if the automatic VxCollisionGeometry registration as VxGeometry owner is enabled. More... | |
static size_t | getFastMovingMaxIterations () |
Gets maximum number of iterations used during collision processing of fast moving collision geometries. More... | |
static double | getFastMovingMaxLinearAcceleration () |
Gets linear acceleration limit used for fast moving collision geometries. More... | |
static double | getFastMovingMaxLinearVelocity () |
Gets linear velocity limit used for fast moving collision geometries. More... | |
static bool | isAutoFastMovingEnabled () |
Returns true if auto fast moving is enabled. More... | |
static void | setAutomaticGeometryOwnerListMaintenance (bool b) |
Enables/disables the VxCollisionGeometry registration as VxGeometry owner. More... | |
static void | setFastMovingMaxIterations (size_t value) |
Sets maximum number of iterations used during collision processing of fast moving collision geometries. More... | |
static void | setFastMovingMaxLinearAcceleration (double value) |
Sets linear acceleration limit used for fast moving collision geometries. More... | |
static void | setFastMovingMaxLinearVelocity (double value) |
Sets linear velocity limit used for fast moving collision geometries. More... | |
Protected Member Functions | |
virtual VxCollisionGeometryState * | createStateImpl () const |
Creates a state that can be later restored. More... | |
virtual void | restoreStateImpl (VxCollisionGeometryState *state) |
Restores a previously created state. More... | |
virtual void | updateReferenceFrame () |
Friends | |
class | VxCompositeCollisionGeometry |
class | VxGeometry |
class | VxPart |
class | VxUniverse |
Additional Inherited Members | |
![]() | |
static void | resetVxBaseCounter () |
Defines a volume and shape in space that the Dynamics can use to compute collision for a rigid body.
The shape and volume are defined by creating a primitive geometry using one of the Vx::VxGeometry subclasses.
It also holds the specific collision response properties associated with the shape.
It provides utility functions that enable the user to:
Geometries can be shared between collision geometries and are reference-counted.
Allows the user to tune different levels of the disabled status for collision geometries.
Vx::VxCollisionGeometry::VxCollisionGeometry | ( | VxGeometry * | geometry, |
VxMaterial * | material | ||
) |
Constructor with geometry and material.
The geometry is reference-counted. Does not take ownership of the material.
Vx::VxCollisionGeometry::VxCollisionGeometry | ( | VxGeometry * | geometry, |
VxMaterial * | material, | ||
const VxTransform & | transform | ||
) |
Constructor with geometry, material and transform.
The geometry is reference-counted. Does not take ownership of the material.
|
virtual |
Destructor.
Also destroys the contained geometry if it's not referenced by another collision geometry; otherwise decrements its reference count.
void Vx::VxCollisionGeometry::addFilterBox | ( | const VxOBB & | filterBox | ) |
Adds a filter box to this collision geometry.
Inside this box, contacts with other collision geometries or intersections with line segments will not be created.
bool Vx::VxCollisionGeometry::assignResponseID | ( | ResponseType | id | ) |
Assigns the given response ID to this collision geometry.
The response IDs in a collision geometry define the actions (or responses) which should occur once the collision geometry collides with another collision geometry. The actions (or responses) which are performed are defined by response models . Each response model which is registered in a universe has a unique, associated response ID , which can be associated to collision geometries using this function. When two collision geometries intersect, every pair of response IDs of the respective collision geometries, will lead to a different response. After construction a collision geometry has the response ID VxUniverse::kResponseRigidBody assigned, and will thus cause compliant contact response when colliding with a collision geometry which also has the ID VxUniverse::kResponseRigidBody.
|
virtual |
Creates and returns a new VxCollisionGeometry.
If you specify true, the geometry is also cloned; otherwise it is shared.
Reimplemented in Vx::VxCompositeCollisionGeometry.
void Vx::VxCollisionGeometry::computeSmallestEnclosing | ( | const VxArray< VxVector3 > & | points, |
VxGeometry::eSmallestEnclosingLockedAxes | lockedAxes = VxGeometry::kNoAxis , |
||
bool | isPositionLocked = false |
||
) |
Resizes the underlying geometry and sets new position and orientation such that the given set of points is covered while minimizing the geometry volume.
[in] | points | Set of points |
[in] | lockedAxes | No restriction on rotation=VxGeometry::kNoAxis. Rotation only around x-axis=VxGeometry::kXAxis, y-axis=VxGeometry::kYAxis or z-axis=VxGeometry::kZAxis. No rotation (fully locked)=VxGeometry::kAllAxes. |
[in] | isPositionLocked | If isPositionLocked is set the position in the inOutTM is not modified and the fit is done purely on size, modifying the orientation as permitted by lockedAxes . |
void Vx::VxCollisionGeometry::computeSmallestEnclosing | ( | const VxVector3 * | inPoints, |
size_t | numPoints, | ||
VxGeometry::eSmallestEnclosingLockedAxes | lockedAxes = VxGeometry::kNoAxis , |
||
bool | isPositionLocked = false |
||
) |
Resizes the underlying geometry and sets new position and orientation such that the given set of points is covered while minimizing the geometry volume.
[in] | inPoints | Set of points |
[in] | numPoints | Number of points in inPoints array |
[in] | lockedAxes | No restriction on rotation=VxGeometry::kNoAxis. Rotation only around x-axis=VxGeometry::kXAxis, y-axis=VxGeometry::kYAxis or z-axis=VxGeometry::kZAxis. No rotation (fully locked)=VxGeometry::kAllAxes. |
[in] | isPositionLocked | If isPositionLocked is set the position in the inOutTM is not modified and the fit is done purely on size, modifying the orientation as permitted by lockedAxes . |
VxCollisionGeometryState* Vx::VxCollisionGeometry::createState | ( | ) | const |
Creates a state that can be later restored.
This first invokes createStateImpl() and then stores the data of the VxCollisionGeometryState base class.
Caller takes ownership of the state.
|
protectedvirtual |
Creates a state that can be later restored.
Derived classes should re-implement this method to create custom states.
Default implementation returns a new VxCollisionGeometryState base class.
Reimplemented in Vx::VxCompositeCollisionGeometry.
void Vx::VxCollisionGeometry::enableCollision | ( | bool | value | ) |
True to enable collision; false to remove this geometry from the collision detection.
This VxCollisionGeometry may be not removed from its part as it can be still in used for the mass property or for fluid interaction.
|
virtual |
Sets the fast moving flag.
By default, intersections between collision geometries are only computed at the beginning of the step, using the current position of collision geometries. Then, the dynamics is computed and the collision geometries are moved. This makes it possible for objects to pass through each other undetected if they are going fast enough. This is a typical discretization issue.
A fast-moving collision geometry will force Vortex to take the collision geometry's part velocity into account for the purpose of collision detection. This is achieved by considering an extruded volume from the position at the beginning of the step, and the projected position at the end of the step, based on the velocity.
Setting this flag will eliminate some discretization issues of fast-moving objects, hence the name.
However, the drawback is that the point of impact will still be set as if it occurred at the beginning the step. For more precision, see continuous collision detection.
Reimplemented in Vx::VxCompositeCollisionGeometry.
void Vx::VxCollisionGeometry::enableFluidInteraction | ( | bool | value | ) |
Sets the fluid interaction enabled flag.
When TRUE, this collision geometry participates in the fluid interaction of its part.
void Vx::VxCollisionGeometry::enableMass | ( | bool | value | ) |
Sets the mass enabled flag.
When TRUE, this collision geometry participates in the mass properties of its part.
void Vx::VxCollisionGeometry::getAABBRef | ( | const Vx::VxTransform & | iTMRef, |
Vx::VxVector3 * | minCorner, | ||
Vx::VxVector3 * | maxCorner, | ||
double | time | ||
) | const |
Computes and returns the aabb in reference frame given by iTMRef.
The given time is used to enlarge the computed aabb by using the current speed of the geometry and the time (in sec).
ResponseType Vx::VxCollisionGeometry::getAssignedResponseID | ( | size_t | index | ) | const |
Gets the response ID in this collision geometry with the given index.
size_t Vx::VxCollisionGeometry::getAssignedResponseIDCount | ( | ) | const |
Gets the number of response IDs assigned to this collision geometry.
|
static |
Returns true if the automatic VxCollisionGeometry registration as VxGeometry owner is enabled.
|
inline |
Get collision geometry ID.
double Vx::VxCollisionGeometry::getContactTolerance | ( | ) | const |
Gets the contact tolerance used during collision detection for this collision geometry.
The default value is given by VxUniverse::getDefaultContactTolerance().
|
virtual |
Returns the extreme point in the specified direction on the collision geometry in world space.
[in] | direction | Direction of the sought extreme point in world space. Must be unit size. |
inDir
. Reimplemented in Vx::VxCompositeCollisionGeometry.
|
inlinestatic |
Gets maximum number of iterations used during collision processing of fast moving collision geometries.
Allows to limit the maximum processing time of fast moving objects. The smaller the value, the lower the maximum processing time, but the higher the chance that a collision might be missed in extreme cases.
|
inlinestatic |
Gets linear acceleration limit used for fast moving collision geometries.
Collisions with objects moving faster than this value might be missed. Allows to limit the maximum processing time of fast moving objects. The smaller the value, the lower the maximum processing time, but the higher the chance that a collision might be missed in extreme cases.
|
inlinestatic |
Gets linear velocity limit used for fast moving collision geometries.
Collisions with objects moving faster than this value might be missed. Allows to limit the maximum processing time of fast moving objects. The smaller the value, the lower the maximum processing time, but the higher the chance that a collision might be missed in extreme cases.
Returns the filter boxes registered on this cg.
|
virtual |
Reads the mapped material from the material map if present in the geometry; otherwise, returns the material of the collision geometry.
Reimplemented in Vx::VxCompositeCollisionGeometry.
VxCompositeCollisionGeometry* Vx::VxCollisionGeometry::getParent | ( | ) | const |
Gets the composite this collision geometry is in.
Caller does not take ownership of the composite.
VxPart* Vx::VxCollisionGeometry::getPart | ( | ) | const |
Gets the part this collision geometry is in.
Caller does not take ownership of the part.
VxPart* Vx::VxCollisionGeometry::getPartRecursive | ( | ) | const |
Look for the part recursively in its parents, and return it if it has one, otherwise return null.
Caller does not take ownership of the part.
const VxTransform& Vx::VxCollisionGeometry::getTransformAbsolute | ( | ) | const |
Gets the absolute transform.
Returns the absolute transform of this collision geometry at the beginning of the last step. Note that the current absolute transform might be different if the collision geometry is inside a dynamically controlled part. In order to obtain an up-to-date absolute transform, call updateAbsoluteTransform before.
const VxTransform& Vx::VxCollisionGeometry::getTransformRelative | ( | ) | const |
Gets the relative transform.
Each collision geometry has a transform value that is interpreted differently, depending on the object containing the collision geometry:
VxUniverse* Vx::VxCollisionGeometry::getUniverse | ( | ) | const |
Gets the universe this collision geometry is in.
Caller does not take ownership of the universe.
|
inlinestatic |
Returns true if auto fast moving is enabled.
bool Vx::VxCollisionGeometry::isMassEnabled | ( | ) | const |
Check the value of mass enabled flag.
bool Vx::VxCollisionGeometry::isResponseIDAssigned | ( | ResponseType | id | ) | const |
Checks if the given response ID is assigned to this collision geometry.
|
virtual |
Gets the static flag.
If this collision geometry is not in any universe, this always returns FALSE.
CallbackHandle Vx::VxCollisionGeometry::registerDestructionCallback | ( | const std::function< void()> & | fn | ) |
Register a callback function that will be executed when this instance is destroyed.
Returns a handle to unregister the callback, if needed.
void Vx::VxCollisionGeometry::removeResponseID | ( | ResponseType | id | ) |
Removes the given response ID from this collision geometry.
The response ID will no longer be assigned to the collision geometry, and the corresponding responses will no longer occur.
bool Vx::VxCollisionGeometry::replaceAllResponseIDs | ( | ResponseType | newID | ) |
Replaces all currently assigned response IDs by the new response ID (newID
).
The method does nothing if the new response ID is not valid.
bool Vx::VxCollisionGeometry::replaceResponseID | ( | ResponseType | oldID, |
ResponseType | newID | ||
) |
Replaces the old response ID (oldID
) by the new response ID (newID
).
Replacement will take effect only if the new response ID exists and is valid, otherwise, the old response ID is not removed.
bool Vx::VxCollisionGeometry::restoreState | ( | VxCollisionGeometryState * | state | ) |
Restores a previously created state.
This first restores the data from VxCollisionGeometryState base class and then invokes restoreStateImpl() so that derived class can have custom states.
Does not take ownership of the state.
|
protectedvirtual |
Restores a previously created state.
Derived classes should re-implement this method to restore custom states.
When invoked, the VxCollisionGeometryState base class data has already been restored.
Default implementation does nothing.
Reimplemented in Vx::VxCompositeCollisionGeometry.
|
static |
Enables/disables the VxCollisionGeometry registration as VxGeometry owner.
|
inline |
Set collision geometry ID.
Can be used to identify this collision geometry, e.g., during collision callbacks (
void Vx::VxCollisionGeometry::setContactTolerance | ( | double | value | ) |
Sets the contact tolerance used during collision detection for this collision geometry.
The default value is given by VxUniverse::getDefaultContactTolerance().
|
virtual |
Sets the default fluid interaction force function for the current geometry in the collision geometry.
Reimplemented in Vx::VxCompositeCollisionGeometry.
|
inlinestatic |
Sets maximum number of iterations used during collision processing of fast moving collision geometries.
|
inlinestatic |
Sets linear acceleration limit used for fast moving collision geometries.
|
inlinestatic |
Sets linear velocity limit used for fast moving collision geometries.
|
virtual |
Sets specific fluid interaction properties.
If not set, default values are used.
param[in] buoyancyCenter Currently only used if the geometry is completely submerged. param[in] drag Drag coefficient must be positive param[in] buoyancyForceScale Accounts for the difference of volume between the collision geometry and the real object. param[in] magnus Magnus coefficient must be positive (defaults to 0). Currently implemented for the sphere and the cylinder geometry only.
Reimplemented in Vx::VxCompositeCollisionGeometry.
void Vx::VxCollisionGeometry::setFluidInteractionForceFn | ( | VxFluidInteractionForceFn | fn | ) |
Sets the fluid interaction force function.
The interaction of all fluids added to the universe is computed using this function.
|
virtual |
Sets the geometry for this collision geometry.
Reimplemented in Vx::VxCompositeCollisionGeometry.
void Vx::VxCollisionGeometry::setIntersectFilter | ( | VxIntersectFilter * | f | ) |
Sets an intersect filter for this collision geometry.
An intersect filter allows interactive collision geometry pair disabling. It is especially useful for disabling pairs with collision geometries added to composite collision geometries, as the child collision geometries are not supported by VxUniverse::disablePairsWith calls or collision rules .
|
virtual |
Sets the material associated to the geometry.
[in] | iMaterial | Must be either a valid VxMaterial , created by the VxMaterialTable or NULL (for the default material). |
Reimplemented in Vx::VxCompositeCollisionGeometry.
bool Vx::VxCollisionGeometry::setRequestID | ( | int | id, |
bool | updateExistingPairs = true |
||
) |
Sets the requestID of the collision geometry.
This ID is typically used to define sets of collision geometries. Each set is specified by a different request ID set by the user, starting at 0.
Each pair of request IDs corresponds to a VxCollisionPairRequest in which different parameters used by the collision detection are stored. Use this method to set request IDs for those collision geometries.
The default request ID depends on the type of geometry inside this collision geometry. See VxGeometry::getDefaultRequestID for more information.
updateExistingPairs
== true (default), the change takes immediate effect on existing overlaps with the AABB of this collision geometry in the collision detection. Otherwise, the change will take effect only on new overlaps.
|
virtual |
Sets the static flag.
A static collision geometry cannot move. This is an assumption used by the broad phase of collision detection, yielding some performance gains.
The transform of a static collision geometry cannot be changed while it remains static. It will not be re-computed automatically like other collision geometries, even if you move it or call the updateAbsoluteTransform method. The only way change it's transform is to remove the static flag.
If this collision geometry is not in any universe, calling this method has no effect.
Reimplemented in Vx::VxCompositeCollisionGeometry.
void Vx::VxCollisionGeometry::setTemporaryDisabledStatus | ( | TemporaryDisabledStatus | status | ) |
Sets the temporary disabled status.
When a geometry is temporarily disabled, the disabled pairs involving this geometry are still maintained. The VxCollisionGeometry::kTemporaryDisabledShortTerm option can be applied at no cost.
No collision involving this geometry is computed but the geometry position is still maintained so there is still a run-time cost for this geometry. The VxCollisionGeometry::kTemporaryDisabledLongTerm option is similar to calling setCollisionEnabled(false) except that the disabled pairs are still maintained. There is a cost to use this option but once set to kTemporaryDisabledLongTerm
, there is no more run-time cost for this geometry.
void Vx::VxCollisionGeometry::setTransformAbsolute | ( | const VxTransform & | absoluteTransform | ) |
Sets the absolute transform .
Sets the transform by computing the offset necessary to obtain the specified absolute transform from the transform of the object containing the collision geometry.
If there is no object containing the collision geometry, this sets the absolute transform directly, without any computation.
Note that this method will have no effect if the static flag is set.
void Vx::VxCollisionGeometry::setTransformRelative | ( | const VxTransform & | transform | ) |
Sets the relative transform .
Note that this method will have no effect if the static flag is set.
|
virtual |
Updates the collision geometry's absolute transform.
The collision geometry's absolute transform is computed at the beginning of each step. Therefore after the integration (at the end of the step) the absolute transform of the collision geometry is one step late.
Note that this method will have no effect if the static flag is set.
Note: This could be required if the collision geometry is disabled (see setCollisionEnabled) and an up-to-date transform is needed. If a collision geometry is disabled, it is not used in the collision detection. So we do not update the absolute transform automatically in this case as a performance optimization.
Reimplemented in Vx::VxCompositeCollisionGeometry.