Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PlanesCollider Class Reference

#include <OPC_PlanesCollider.h>

Inheritance diagram for PlanesCollider:
Inheritance graph
[legend]

Public Member Functions

inline_ bool Collide (PlanesCache &cache, const OBB &box, const Model &model, const Matrix4x4 *worldb=null, const Matrix4x4 *worldm=null)
 
bool Collide (PlanesCache &cache, const Plane *planes, udword nb_planes, const Model &model, const Matrix4x4 *worldm=null)
 
 override (Collider) const char *ValidateSettings()
 
 PlanesCollider ()
 
void setCollisionPairInserter (hrp::CollisionPairInserterBase *collisionPairInserter)
 
virtual ~PlanesCollider ()
 
- Public Member Functions inherited from VolumeCollider
inline_ udword GetNbTouchedPrimitives () const
 
inline_ udword GetNbVolumeBVTests () const
 
inline_ udword GetNbVolumePrimTests () const
 
const inline_ udwordGetTouchedPrimitives () const
 
 override (Collider) const char *ValidateSettings()
 
 VolumeCollider ()
 
virtual ~VolumeCollider ()=0
 
- Public Member Functions inherited from Collider
 Collider ()
 
inline_ BOOL ContactFound () const
 
inline_ BOOL FirstContactEnabled () const
 
inline_ BOOL GetContactStatus () const
 
inline_ void SetFirstContact (bool flag)
 
inline_ void SetPrimitiveTests (bool flag)
 
inline_ void SetTemporalCoherence (bool flag)
 
inline_ BOOL SkipPrimitiveTests () const
 
inline_ BOOL TemporalCoherenceEnabled () const
 
inline_ BOOL TemporalHit () const
 
virtual const char * ValidateSettings ()=0
 
virtual ~Collider ()
 

Protected Member Functions

void _Collide (const AABBCollisionNode *node, udword clip_mask)
 
void _Collide (const AABBNoLeafNode *node, udword clip_mask)
 
void _Collide (const AABBQuantizedNode *node, udword clip_mask)
 
void _Collide (const AABBQuantizedNoLeafNode *node, udword clip_mask)
 
void _CollideNoPrimitiveTest (const AABBCollisionNode *node, udword clip_mask)
 
void _CollideNoPrimitiveTest (const AABBNoLeafNode *node, udword clip_mask)
 
void _CollideNoPrimitiveTest (const AABBQuantizedNode *node, udword clip_mask)
 
void _CollideNoPrimitiveTest (const AABBQuantizedNoLeafNode *node, udword clip_mask)
 
BOOL InitQuery (PlanesCache &cache, const Plane *planes, udword nb_planes, const Matrix4x4 *worldm=null)
 
inline_ BOOL PlanesAABBOverlap (const Point &center, const Point &extents, udword &out_clip_mask, udword in_clip_mask)
 
inline_ BOOL PlanesTriOverlap (udword in_clip_mask)
 
- Protected Member Functions inherited from VolumeCollider
void _Dump (const AABBCollisionNode *node)
 
void _Dump (const AABBNoLeafNode *node)
 
void _Dump (const AABBQuantizedNode *node)
 
void _Dump (const AABBQuantizedNoLeafNode *node)
 
inline_ BOOL IsCacheValid (VolumeCache &cache)
 
 override (Collider) inline_ void InitQuery()
 
- Protected Member Functions inherited from Collider
virtual inline_ void InitQuery ()
 
inline_ BOOL Setup (const BaseModel *model)
 

Protected Attributes

hrp::CollisionPairInserterBasecollisionPairInserter
 
udword mNbPlanes
 
PlanemPlanes
 
VertexPointers mVP
 
- Protected Attributes inherited from VolumeCollider
Point mCenterCoeff
 
Point mExtentsCoeff
 
udword mNbVolumeBVTests
 Number of Volume-BV tests. More...
 
udword mNbVolumePrimTests
 Number of Volume-Primitive tests. More...
 
ContainermTouchedPrimitives
 List of touched primitives. More...
 
- Protected Attributes inherited from Collider
const BaseModelmCurrentModel
 Current model for collision query (owner of touched faces) More...
 
udword mFlags
 Bit flags. More...
 
const MeshInterfacemIMesh
 User-defined mesh interface. More...
 

Detailed Description

Contains a Planes-vs-tree collider.

Author
Pierre Terdiman
Version
1.3
Date
January, 1st, 2002

Definition at line 30 of file OPC_PlanesCollider.h.

Constructor & Destructor Documentation

◆ PlanesCollider()

PlanesCollider::PlanesCollider ( )

Constructor.

Definition at line 58 of file OPC_PlanesCollider.cpp.

◆ ~PlanesCollider()

PlanesCollider::~PlanesCollider ( )
virtual

Destructor.

Definition at line 70 of file OPC_PlanesCollider.cpp.

Member Function Documentation

◆ _Collide() [1/4]

void PlanesCollider::_Collide ( const AABBCollisionNode node,
udword  clip_mask 
)
protected

Recursive collision query for normal AABB trees.

Parameters
node[in] current collision node

Definition at line 277 of file OPC_PlanesCollider.cpp.

◆ _Collide() [2/4]

void PlanesCollider::_Collide ( const AABBNoLeafNode node,
udword  clip_mask 
)
protected

Recursive collision query for no-leaf AABB trees.

Parameters
node[in] current collision node

Definition at line 403 of file OPC_PlanesCollider.cpp.

◆ _Collide() [3/4]

void PlanesCollider::_Collide ( const AABBQuantizedNode node,
udword  clip_mask 
)
protected

Recursive collision query for quantized AABB trees.

Parameters
node[in] current collision node

Definition at line 335 of file OPC_PlanesCollider.cpp.

◆ _Collide() [4/4]

void PlanesCollider::_Collide ( const AABBQuantizedNoLeafNode node,
udword  clip_mask 
)
protected

Recursive collision query for quantized no-leaf AABB trees.

Parameters
node[in] current collision node

Definition at line 451 of file OPC_PlanesCollider.cpp.

◆ _CollideNoPrimitiveTest() [1/4]

void PlanesCollider::_CollideNoPrimitiveTest ( const AABBCollisionNode node,
udword  clip_mask 
)
protected

Recursive collision query for normal AABB trees.

Parameters
node[in] current collision node

Definition at line 306 of file OPC_PlanesCollider.cpp.

◆ _CollideNoPrimitiveTest() [2/4]

void PlanesCollider::_CollideNoPrimitiveTest ( const AABBNoLeafNode node,
udword  clip_mask 
)
protected

Recursive collision query for no-leaf AABB trees.

Parameters
node[in] current collision node

Definition at line 427 of file OPC_PlanesCollider.cpp.

◆ _CollideNoPrimitiveTest() [3/4]

void PlanesCollider::_CollideNoPrimitiveTest ( const AABBQuantizedNode node,
udword  clip_mask 
)
protected

Recursive collision query for quantized AABB trees.

Parameters
node[in] current collision node

Definition at line 369 of file OPC_PlanesCollider.cpp.

◆ _CollideNoPrimitiveTest() [4/4]

void PlanesCollider::_CollideNoPrimitiveTest ( const AABBQuantizedNoLeafNode node,
udword  clip_mask 
)
protected

Recursive collision query for quantized no-leaf AABB trees.

Parameters
node[in] current collision node

Definition at line 480 of file OPC_PlanesCollider.cpp.

◆ Collide() [1/2]

inline_ bool PlanesCollider::Collide ( PlanesCache cache,
const OBB box,
const Model model,
const Matrix4x4 worldb = null,
const Matrix4x4 worldm = null 
)
inline

Definition at line 59 of file OPC_PlanesCollider.h.

◆ Collide() [2/2]

bool PlanesCollider::Collide ( PlanesCache cache,
const Plane planes,
udword  nb_planes,
const Model model,
const Matrix4x4 worldm = null 
)

Generic collision query for generic OPCODE models. After the call, access the results:

Parameters
cache[in/out] a planes cache
planes[in] list of planes in world space
nb_planes[in] number of planes
model[in] Opcode model to collide with
worldm[in] model's world matrix, or null
Returns
true if success
Warning
SCALE NOT SUPPORTED. The matrices must contain rotation & translation parts only.

Definition at line 104 of file OPC_PlanesCollider.cpp.

◆ InitQuery()

BOOL PlanesCollider::InitQuery ( PlanesCache cache,
const Plane planes,
udword  nb_planes,
const Matrix4x4 worldm = null 
)
protected

Initializes a collision query :

  • reset stats & contact status
  • compute planes in model space
  • check temporal coherence
Parameters
cache[in/out] a planes cache
planes[in] list of planes
nb_planes[in] number of planes
worldm[in] model's world matrix, or null
Returns
TRUE if we can return immediately
Warning
SCALE NOT SUPPORTED. The matrix must contain rotation & translation parts only.

Definition at line 178 of file OPC_PlanesCollider.cpp.

◆ override()

PlanesCollider::override ( Collider  ) const

Validates current settings. You should call this method after all the settings and callbacks have been defined for a collider.

Returns
null if everything is ok, else a string describing the problem

◆ PlanesAABBOverlap()

inline_ BOOL PlanesCollider::PlanesAABBOverlap ( const Point center,
const Point extents,
udword out_clip_mask,
udword  in_clip_mask 
)
protected

Planes-AABB overlap test.

  • original code by Ville Miettinen, from Umbra/dPVS (released on the GD-Algorithms mailing list)
  • almost used "as-is", I even left the comments (hence the frustum-related notes)
Parameters
center[in] box center
extents[in] box extents
out_clip_mask[out] bitmask for active planes
in_clip_mask[in] bitmask for active planes
Returns
TRUE if boxes overlap planes

Definition at line 14 of file OPC_PlanesAABBOverlap.h.

◆ PlanesTriOverlap()

inline_ BOOL PlanesCollider::PlanesTriOverlap ( udword  in_clip_mask)
protected

Planes-triangle overlap test.

Parameters
in_clip_mask[in] bitmask for active planes
Returns
TRUE if triangle overlap planes
Warning
THIS IS A CONSERVATIVE TEST !! Some triangles will be returned as intersecting, while they're not!

Definition at line 11 of file OPC_PlanesTriOverlap.h.

◆ setCollisionPairInserter()

void PlanesCollider::setCollisionPairInserter ( hrp::CollisionPairInserterBase collisionPairInserter)
inline

Definition at line 37 of file OPC_PlanesCollider.h.

Member Data Documentation

◆ collisionPairInserter

hrp::CollisionPairInserterBase* PlanesCollider::collisionPairInserter
protected

Definition at line 91 of file OPC_PlanesCollider.h.

◆ mNbPlanes

udword PlanesCollider::mNbPlanes
protected

Definition at line 93 of file OPC_PlanesCollider.h.

◆ mPlanes

Plane* PlanesCollider::mPlanes
protected

Definition at line 94 of file OPC_PlanesCollider.h.

◆ mVP

VertexPointers PlanesCollider::mVP
protected

Definition at line 96 of file OPC_PlanesCollider.h.


The documentation for this class was generated from the following files:


openhrp3
Author(s): AIST, General Robotix Inc., Nakamura Lab of Dept. of Mechano Informatics at University of Tokyo
autogenerated on Wed Sep 7 2022 02:51:05