| 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 27 of file btOptimizedBvh.h.
| btOptimizedBvh::btOptimizedBvh | ( | ) | 
Definition at line 23 of file btOptimizedBvh.cpp.
| 
 | virtual | 
Definition at line 27 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 32 of file btOptimizedBvh.cpp.
| 
 | static | 
deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place'
Definition at line 385 of file btOptimizedBvh.cpp.
| void btOptimizedBvh::refit | ( | btStridingMeshInterface * | triangles, | 
| const btVector3 & | aabbMin, | ||
| const btVector3 & | aabbMax | ||
| ) | 
now update all subtree headers
Definition at line 206 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 233 of file btOptimizedBvh.cpp.
| 
 | inlinevirtual | 
Data buffer MUST be 16 byte aligned.
Definition at line 50 of file btOptimizedBvh.h.
| void btOptimizedBvh::updateBvhNodes | ( | btStridingMeshInterface * | meshInterface, | 
| int | firstNode, | ||
| int | endNode, | ||
| int | index | ||
| ) | 
Definition at line 272 of file btOptimizedBvh.cpp.
 1.8.12
 1.8.12