Main Page Class List Class Members

- Main Page
- User's Guide
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

# sdk/extensions/authoring/source/NvBlastExtAuthoringBondGeneratorImpl.h

Go to the documentation of this file.

    00001 // This code contains NVIDIA Confidential Information and is disclosed to you
    00002 // under a form of NVIDIA software license agreement provided separately to you.
    00003 //
    00004 // Notice
    00005 // NVIDIA Corporation and its licensors retain all intellectual property and
    00006 // proprietary rights in and to this software and related documentation and
    00007 // any modifications thereto. Any use, reproduction, disclosure, or
    00008 // distribution of this software and related documentation without an express
    00009 // license agreement from NVIDIA Corporation is strictly prohibited.
    00010 //
    00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
    00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
    00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
    00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
    00015 //
    00016 // Information and code furnished is believed to be accurate and reliable.
    00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
    00018 // information or for any infringement of patents or other rights of third parties that may
    00019 // result from its use. No license is granted by implication or otherwise under any patent
    00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
    00021 // This code supersedes and replaces all information previously supplied.
    00022 // NVIDIA Corporation products are not authorized for use as critical
    00023 // components in life support devices or systems without express written approval of
    00024 // NVIDIA Corporation.
    00025 //
    00026 // Copyright (c) 2020 NVIDIA Corporation. All rights reserved.
    00027
    00028
    00029 #ifndef NVBLASTEXTAUTHORINGBONDGENERATORIMPL_H
    00030 #define NVBLASTEXTAUTHORINGBONDGENERATORIMPL_H
    00031
    00032 #include "NvBlastExtAuthoringBondGenerator.h"
    00033 #include "NvBlastExtAuthoringFractureTool.h"
    00034 #include <PxPlane.h>
    00035 #include <NvBlastExtAuthoringConvexMeshBuilder.h>
    00036 #include <vector>
    00037 #include <set>
    00038
    00039 namespace Nv
    00040 {
    00041 namespace Blast
    00042 {
    00043
    00048 class BlastBondGeneratorImpl : public BlastBondGenerator
    00049 {
    00050 public:
    00051
    00052     BlastBondGeneratorImpl(ConvexMeshBuilder* builder)
    00053         : mConvexMeshBuilder(builder) {};
    00054
    00055     virtual void release() override;
    00056
    00057     virtual int32_t buildDescFromInternalFracture(FractureTool* tool, const bool* chunkIsSupport,
    00058         NvBlastBondDesc*& resultBondDescs, NvBlastChunkDesc*& resultChunkDescriptors)  override;
    00059
    00060     virtual int32_t createBondBetweenMeshes(uint32_t meshACount, const Triangle* meshA, uint32_t meshBCount, const Triangle* meshB,
    00061         NvBlastBond& resultBond, BondGenerationConfig conf) override;
    00062
    00063     virtual int32_t createBondBetweenMeshes(uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry,
    00064         uint32_t overlapsCount, const uint32_t* overlapsA, const uint32_t* overlapsB,
    00065         NvBlastBondDesc*& resultBond, BondGenerationConfig cfg) override;
    00066
    00067     virtual int32_t bondsFromPrefractured(uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry,
    00068         const bool* chunkIsSupport, NvBlastBondDesc*& resultBondDescs,
    00069         BondGenerationConfig conf) override;
    00070
    00071     virtual int32_t bondsFromPrefractured(uint32_t meshCount, const uint32_t* convexHullOffset, const CollisionHull** chunkHulls,
    00072         const bool* chunkIsSupport, const uint32_t* meshGroups, NvBlastBondDesc*& resultBondDescs, float maxSeparation) override;
    00073
    00074
    00075
    00076 private:
    00077     float   processWithMidplanes(TriangleProcessor* trProcessor, const Triangle* mA, uint32_t mavc, const Triangle* mB, uint32_t mbvc, const CollisionHull* hull1, const CollisionHull* hull2,
    00078                              const std::vector<physx::PxVec3>& hull1p, const std::vector<physx::PxVec3>& hull2p,
    00079                              physx::PxVec3& normal, physx::PxVec3& centroid, float maxRelSeparation);
    00080
    00081     int32_t createFullBondListAveraged( uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry, const CollisionHull** chunkHulls,
    00082                                         const bool* supportFlags, const uint32_t* meshGroups, NvBlastBondDesc*& resultBondDescs, BondGenerationConfig conf, std::set<std::pair<uint32_t, uint32_t> >* pairNotToTest = nullptr);
    00083     int32_t createFullBondListExact(    uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry,
    00084                                         const bool* supportFlags, NvBlastBondDesc*& resultBondDescs, BondGenerationConfig conf);
    00085     int32_t createFullBondListExactInternal(uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry,
    00086                                             std::vector<PlaneChunkIndexer>& planeTriangleMapping , NvBlastBondDesc*& resultBondDescs);
    00087     int32_t createBondForcedInternal(   const std::vector<physx::PxVec3>& hull0, const std::vector<physx::PxVec3>& hull1,const CollisionHull& cHull0,
    00088                                         const CollisionHull& cHull1, physx::PxBounds3 bound0, physx::PxBounds3 bound1, NvBlastBond& resultBond, float overlapping);
    00089
    00090     void    buildGeometryCache(uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry);
    00091     void    resetGeometryCache();
    00092
    00093     ConvexMeshBuilder*                          mConvexMeshBuilder;
    00094
    00095     std::vector<std::vector<Triangle> >         mGeometryCache;
    00096
    00097     std::vector<PlaneChunkIndexer>              mPlaneCache;
    00098     std::vector<CollisionHull*>                 mCHullCache;
    00099     std::vector<std::vector<physx::PxVec3> >    mHullsPointsCache;
    00100     std::vector<physx::PxBounds3 >              mBoundsCache;
    00101
    00102
    00103 };
    00104
    00105 }   // namespace Blast
    00106 }   // namespace Nv
    00107
    00108 #endif // NVBLASTEXTAUTHORINGBONDGENERATORIMPL_H

Copyright © 2015-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com