Bullet Collision Detection & Physics Library
|
The btOptimizedBvh extends the btQuantizedBvh to create AABB tree for triangle meshes, through the btStridingMeshInterface. More...
#include <btOptimizedBvh.h>
Public Member Functions | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
btOptimizedBvh () | |
virtual | ~btOptimizedBvh () |
void | build (btStridingMeshInterface *triangles, bool useQuantizedAabbCompression, const btVector3 &bvhAabbMin, const btVector3 &bvhAabbMax) |
void | refit (btStridingMeshInterface *triangles, const btVector3 &aabbMin, const btVector3 &aabbMax) |
void | refitPartial (btStridingMeshInterface *triangles, const btVector3 &aabbMin, const btVector3 &aabbMax) |
void | updateBvhNodes (btStridingMeshInterface *meshInterface, int firstNode, int endNode, int index) |
virtual bool | serializeInPlace (void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const |
Data buffer MUST be 16 byte aligned. More... | |
Public Member Functions inherited from btQuantizedBvh | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
btQuantizedBvh () | |
virtual | ~btQuantizedBvh () |
void | setQuantizationValues (const btVector3 &bvhAabbMin, const btVector3 &bvhAabbMax, btScalar quantizationMargin=btScalar(1.0)) |
***************************************** expert/internal use only ************************* More... | |
QuantizedNodeArray & | getLeafNodeArray () |
void | buildInternal () |
buildInternal is expert use only: assumes that setQuantizationValues and LeafNodeArray are initialized More... | |
void | reportAabbOverlappingNodex (btNodeOverlapCallback *nodeCallback, const btVector3 &aabbMin, const btVector3 &aabbMax) const |
***************************************** expert/internal use only ************************* More... | |
void | reportRayOverlappingNodex (btNodeOverlapCallback *nodeCallback, const btVector3 &raySource, const btVector3 &rayTarget) const |
void | reportBoxCastOverlappingNodex (btNodeOverlapCallback *nodeCallback, const btVector3 &raySource, const btVector3 &rayTarget, const btVector3 &aabbMin, const btVector3 &aabbMax) const |
void | quantize (unsigned short *out, const btVector3 &point, int isMax) const |
void | quantizeWithClamp (unsigned short *out, const btVector3 &point2, int isMax) const |
btVector3 | unQuantize (const unsigned short *vecIn) const |
void | setTraversalMode (btTraversalMode traversalMode) |
setTraversalMode let's you choose between stackless, recursive or stackless cache friendly tree traversal. Note this is only implemented for quantized trees. More... | |
QuantizedNodeArray & | getQuantizedNodeArray () |
BvhSubtreeInfoArray & | getSubtreeInfoArray () |
unsigned | calculateSerializeBufferSize () const |
virtual bool | serialize (void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const |
Data buffer MUST be 16 byte aligned. More... | |
virtual int | calculateSerializeBufferSizeNew () const |
virtual const char * | serialize (void *dataBuffer, btSerializer *serializer) const |
fills the dataBuffer and returns the struct name (and 0 on failure) More... | |
virtual void | deSerializeFloat (struct btQuantizedBvhFloatData &quantizedBvhFloatData) |
virtual void | deSerializeDouble (struct btQuantizedBvhDoubleData &quantizedBvhDoubleData) |
bool | isQuantized () |
Static Public Member Functions | |
static btOptimizedBvh * | deSerializeInPlace (void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian) |
deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place' More... | |
Static Public Member Functions inherited from btQuantizedBvh | |
static btQuantizedBvh * | deSerializeInPlace (void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian) |
deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place' More... | |
static unsigned int | getAlignmentSerializationPadding () |
Additional Inherited Members | |
Public Types inherited from btQuantizedBvh | |
enum | btTraversalMode { TRAVERSAL_STACKLESS = 0 , TRAVERSAL_STACKLESS_CACHE_FRIENDLY , TRAVERSAL_RECURSIVE } |
Protected Member Functions inherited from btQuantizedBvh | |
void | setInternalNodeAabbMin (int nodeIndex, const btVector3 &aabbMin) |
two versions, one for quantized and normal nodes. More... | |
void | setInternalNodeAabbMax (int nodeIndex, const btVector3 &aabbMax) |
btVector3 | getAabbMin (int nodeIndex) const |
btVector3 | getAabbMax (int nodeIndex) const |
void | setInternalNodeEscapeIndex (int nodeIndex, int escapeIndex) |
void | mergeInternalNodeAabb (int nodeIndex, const btVector3 &newAabbMin, const btVector3 &newAabbMax) |
void | swapLeafNodes (int firstIndex, int secondIndex) |
void | assignInternalNodeFromLeafNode (int internalNode, int leafNodeIndex) |
void | buildTree (int startIndex, int endIndex) |
int | calcSplittingAxis (int startIndex, int endIndex) |
int | sortAndCalcSplittingIndex (int startIndex, int endIndex, int splitAxis) |
void | walkStacklessTree (btNodeOverlapCallback *nodeCallback, const btVector3 &aabbMin, const btVector3 &aabbMax) const |
void | walkStacklessQuantizedTreeAgainstRay (btNodeOverlapCallback *nodeCallback, const btVector3 &raySource, const btVector3 &rayTarget, const btVector3 &aabbMin, const btVector3 &aabbMax, int startNodeIndex, int endNodeIndex) const |
void | walkStacklessQuantizedTree (btNodeOverlapCallback *nodeCallback, unsigned short int *quantizedQueryAabbMin, unsigned short int *quantizedQueryAabbMax, int startNodeIndex, int endNodeIndex) const |
void | walkStacklessTreeAgainstRay (btNodeOverlapCallback *nodeCallback, const btVector3 &raySource, const btVector3 &rayTarget, const btVector3 &aabbMin, const btVector3 &aabbMax, int startNodeIndex, int endNodeIndex) const |
void | walkStacklessQuantizedTreeCacheFriendly (btNodeOverlapCallback *nodeCallback, unsigned short int *quantizedQueryAabbMin, unsigned short int *quantizedQueryAabbMax) const |
tree traversal designed for small-memory processors like PS3 SPU More... | |
void | walkRecursiveQuantizedTreeAgainstQueryAabb (const btQuantizedBvhNode *currentNode, btNodeOverlapCallback *nodeCallback, unsigned short int *quantizedQueryAabbMin, unsigned short int *quantizedQueryAabbMax) const |
use the 16-byte stackless 'skipindex' node tree to do a recursive traversal More... | |
void | walkRecursiveQuantizedTreeAgainstQuantizedTree (const btQuantizedBvhNode *treeNodeA, const btQuantizedBvhNode *treeNodeB, btNodeOverlapCallback *nodeCallback) const |
use the 16-byte stackless 'skipindex' node tree to do a recursive traversal More... | |
void | updateSubtreeHeaders (int leftChildNodexIndex, int rightChildNodexIndex) |
Protected Attributes inherited from btQuantizedBvh | |
btVector3 | m_bvhAabbMin |
btVector3 | m_bvhAabbMax |
btVector3 | m_bvhQuantization |
int | m_bulletVersion |
int | m_curNodeIndex |
bool | m_useQuantization |
NodeArray | m_leafNodes |
NodeArray | m_contiguousNodes |
QuantizedNodeArray | m_quantizedLeafNodes |
QuantizedNodeArray | m_quantizedContiguousNodes |
btTraversalMode | m_traversalMode |
BvhSubtreeInfoArray | m_SubtreeHeaders |
int | m_subtreeHeaderCount |
The btOptimizedBvh extends the btQuantizedBvh to create AABB tree for triangle meshes, through the btStridingMeshInterface.
Definition at line 26 of file btOptimizedBvh.h.
btOptimizedBvh::btOptimizedBvh | ( | ) |
Definition at line 21 of file btOptimizedBvh.cpp.
|
virtual |
Definition at line 25 of file btOptimizedBvh.cpp.
btOptimizedBvh::BT_DECLARE_ALIGNED_ALLOCATOR | ( | ) |
void btOptimizedBvh::build | ( | btStridingMeshInterface * | triangles, |
bool | useQuantizedAabbCompression, | ||
const btVector3 & | bvhAabbMin, | ||
const btVector3 & | bvhAabbMax | ||
) |
if the entire tree is small then subtree size, we need to create a header info for the tree
Definition at line 29 of file btOptimizedBvh.cpp.
|
static |
deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place'
Definition at line 358 of file btOptimizedBvh.cpp.
void btOptimizedBvh::refit | ( | btStridingMeshInterface * | triangles, |
const btVector3 & | aabbMin, | ||
const btVector3 & | aabbMax | ||
) |
now update all subtree headers
Definition at line 191 of file btOptimizedBvh.cpp.
void btOptimizedBvh::refitPartial | ( | btStridingMeshInterface * | triangles, |
const btVector3 & | aabbMin, | ||
const btVector3 & | aabbMax | ||
) |
we should update all quantization values, using updateBvhNodes(meshInterface); but we only update chunks that overlap the given aabb
Definition at line 213 of file btOptimizedBvh.cpp.
|
inlinevirtual |
Data buffer MUST be 16 byte aligned.
Definition at line 47 of file btOptimizedBvh.h.
void btOptimizedBvh::updateBvhNodes | ( | btStridingMeshInterface * | meshInterface, |
int | firstNode, | ||
int | endNode, | ||
int | index | ||
) |
Definition at line 251 of file btOptimizedBvh.cpp.