From 7115f60b91b5717d90f643fd692010905c7004db Mon Sep 17 00:00:00 2001 From: Bryan Galdrikian Date: Thu, 31 May 2018 11:36:08 -0700 Subject: Blast 1.1.3. See docs/release_notes.txt. --- .../import/include/NvBlastExtApexImportTool.h | 418 ++++++++++----------- 1 file changed, 209 insertions(+), 209 deletions(-) mode change 100644 => 100755 sdk/extensions/import/include/NvBlastExtApexImportTool.h (limited to 'sdk/extensions/import/include/NvBlastExtApexImportTool.h') diff --git a/sdk/extensions/import/include/NvBlastExtApexImportTool.h b/sdk/extensions/import/include/NvBlastExtApexImportTool.h old mode 100644 new mode 100755 index 2867eac..3eb4f71 --- a/sdk/extensions/import/include/NvBlastExtApexImportTool.h +++ b/sdk/extensions/import/include/NvBlastExtApexImportTool.h @@ -1,209 +1,209 @@ -// This code contains NVIDIA Confidential Information and is disclosed to you -// under a form of NVIDIA software license agreement provided separately to you. -// -// Notice -// NVIDIA Corporation and its licensors retain all intellectual property and -// proprietary rights in and to this software and related documentation and -// any modifications thereto. Any use, reproduction, disclosure, or -// distribution of this software and related documentation without an express -// license agreement from NVIDIA Corporation is strictly prohibited. -// -// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES -// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO -// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, -// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. -// -// Information and code furnished is believed to be accurate and reliable. -// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such -// information or for any infringement of patents or other rights of third parties that may -// result from its use. No license is granted by implication or otherwise under any patent -// or patent rights of NVIDIA Corporation. Details are subject to change without notice. -// This code supersedes and replaces all information previously supplied. -// NVIDIA Corporation products are not authorized for use as critical -// components in life support devices or systems without express written approval of -// NVIDIA Corporation. -// -// Copyright (c) 2016-2018 NVIDIA Corporation. All rights reserved. - - -#ifndef NVBLASTEXTAPEXIMPORTTOOL_H -#define NVBLASTEXTAPEXIMPORTTOOL_H - -#include "NvBlast.h" -#include -#include -#include "NvBlastExtPxAsset.h" -#include -#include - -namespace physx -{ - class PxFoundation; - class PxPhysics; - class PxCooking; - -namespace general_PxIOStream2 -{ -class PxFileBuf; -} -} - -namespace NvParameterized -{ - class Interface; -} - -namespace nvidia -{ -namespace apex -{ -class ApexSDK; -class ModuleDestructible; -class DestructibleAsset; -} -using namespace physx::general_PxIOStream2; -} - - -namespace Nv -{ -namespace Blast -{ - -struct CollisionHull; -class TkFramework; - -namespace ApexImporter -{ - -struct ApexImporterConfig -{ - /** - Interface search mode: - - EXACT - - Importer tries to find triangles from two chunks which lay in common surface. - If such triangles are found, their intersections are considered as the interface. - - FORCED - Bond creation is forced no matter how far chunks from each other. - - */ - enum InterfaceSearchMode { EXACT, FORCED, MODE_COUNT }; - - ApexImporterConfig() - { - setDefaults(); - } - - void setDefaults() - { - infSearchMode = EXACT; - } - InterfaceSearchMode infSearchMode; -}; - - -class ApexDestruction; - - -/** - ApexImportTool provides routines to create NvBlastAssets from APEX assets. -*/ -class ApexImportTool -{ -public: - ApexImportTool(); - ~ApexImportTool(); - - /** - Method loads APEX Destruction asset from file - \param[in] stream Pointer on PxFileBuf stream with Apex Destruction asset - \return If not 0, pointer on DestructibleAsset object is returned. - */ - bool loadAssetFromFile(nvidia::PxFileBuf* stream, NvParameterized::Serializer::DeserializedData& data); - - - /** - Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph! - \param[out] chunkReorderInvMap Chunk map from blast chunk to apex chunk to be filled. - \param[in] apexAsset Pointer on DestructibleAsset object which should be converted to NvBlastAsset - \param[out] chunkDescriptors Reference on chunk descriptors array to be filled. - \param[out] bondDescriptors Reference on bond descriptors array to be filled. - \param[out] flags Reference on chunk flags to be filled. - - \return If true, output arrays are filled. - */ - bool importApexAsset(std::vector& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc, - std::vector& chunkDescriptors, std::vector& bondDescriptors, std::vector& flags); - - /** - Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph! - Parameteres of conversion could be provided with ApexImporterConfig. - \param[out] chunkReorderInvMap Chunk map from blast chunk to apex chunk to be filled. - \param[in] apexAsset Pointer on DestructibleAsset object which should be converted to NvBlastAsset - \param[out] chunkDescriptors Reference on chunk descriptors array to be filled. - \param[out] bondDescriptors Reference on bond descriptors array to be filled. - \param[out] flags Reference on chunk flags to be filled. - \param[in] config ApexImporterConfig object with conversion parameters, see above. - \return If true, output arrays are filled. - */ - bool importApexAsset(std::vector& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc, - std::vector& chunkDescriptors, std::vector& bondDescriptors, std::vector& flags, - const ApexImporterConfig& config); - - /** - Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph! - */ - bool importRendermesh(const std::vector& chunkReorderInvMap, const NvParameterized::Interface* assetNvIfc, Nv::Blast::ExporterMeshData* outputData, const char* materialsDir); - - - /** - Method serializes user-supplied NvBlastAsset object to user-supplied PxFileBuf stream. - \param[in] asset Pointer on NvBlastAsset object which should be serialized - \param[in] stream Pointer on PxFileBuf object in which NvBlastAsset should be serialized. - \return If true, NvBlastAsset object serialized successfully. - */ - bool saveAsset(const NvBlastAsset* asset, nvidia::PxFileBuf* stream); - - /** - Method creates collision geometry from user-supplied APEX Destructible asset. - \param[in] apexAsset Pointer on DestructibleAsset object for which collision geometry should be created. - \param[in] chunkCount Blast asset chunk count, should be equal to number of blast chunk descriptors which are gathered at ApexImportTool::importApexAsset(...) - \param[in] chunkReorderInvMap Chunk map from blast chunk to apex chunk filled in ApexImportTool::importApexAsset(...) - \param[in] apexChunkFlags Chunk flags array - \param[out] physicsChunks Chunk physics info output array - \param[out] physicsSubchunks Chunk collision geometry and transformation data output array - \param[out] hullsDescs Chunk collision geometry descriptors, can be used to save to some third party format - \return If true - success, output arrays are filled. - */ - bool getCollisionGeometry(const NvParameterized::Interface* assetPrm, uint32_t chunkCount, std::vector& chunkReorderInvMap, - const std::vector& apexChunkFlags, std::vector& physicsChunks, - std::vector& physicsSubchunks, std::vector >& hullsDesc); - - ////////////////////////////////////////////////////////////////////////////// - - bool isValid(); - - physx::PxPhysics* getPxSdk() { return m_PhysxSDK; } - physx::PxCooking* getCooking() { return m_Cooking; }; - -private: - bool importApexAssetInternal(std::vector& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc, - std::vector& chunkDescriptors, std::vector& bondDesc, std::vector& flags, - const ApexImporterConfig& configDesc); - -protected: - ApexImportTool(const ApexImportTool&); - ApexImportTool& operator=(const ApexImportTool&); - - physx::PxFoundation* m_Foundation; - physx::PxPhysics* m_PhysxSDK; - physx::PxCooking* m_Cooking; - -}; - -} // namespace ApexImporter - -} // namespace Blast -} // namespace Nv - -#endif // NVBLASTEXTAPEXIMPORTTOOL_H +// This code contains NVIDIA Confidential Information and is disclosed to you +// under a form of NVIDIA software license agreement provided separately to you. +// +// Notice +// NVIDIA Corporation and its licensors retain all intellectual property and +// proprietary rights in and to this software and related documentation and +// any modifications thereto. Any use, reproduction, disclosure, or +// distribution of this software and related documentation without an express +// license agreement from NVIDIA Corporation is strictly prohibited. +// +// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +// +// Information and code furnished is believed to be accurate and reliable. +// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright (c) 2016-2018 NVIDIA Corporation. All rights reserved. + + +#ifndef NVBLASTEXTAPEXIMPORTTOOL_H +#define NVBLASTEXTAPEXIMPORTTOOL_H + +#include "NvBlast.h" +#include +#include +#include "NvBlastExtPxAsset.h" +#include +#include + +namespace physx +{ + class PxFoundation; + class PxPhysics; + class PxCooking; + +namespace general_PxIOStream2 +{ +class PxFileBuf; +} +} + +namespace NvParameterized +{ + class Interface; +} + +namespace nvidia +{ +namespace apex +{ +class ApexSDK; +class ModuleDestructible; +class DestructibleAsset; +} +using namespace physx::general_PxIOStream2; +} + + +namespace Nv +{ +namespace Blast +{ + +struct CollisionHull; +class TkFramework; + +namespace ApexImporter +{ + +struct ApexImporterConfig +{ + /** + Interface search mode: + + EXACT - - Importer tries to find triangles from two chunks which lay in common surface. + If such triangles are found, their intersections are considered as the interface. + + FORCED - Bond creation is forced no matter how far chunks from each other. + + */ + enum InterfaceSearchMode { EXACT, FORCED, MODE_COUNT }; + + ApexImporterConfig() + { + setDefaults(); + } + + void setDefaults() + { + infSearchMode = EXACT; + } + InterfaceSearchMode infSearchMode; +}; + + +class ApexDestruction; + + +/** + ApexImportTool provides routines to create NvBlastAssets from APEX assets. +*/ +class ApexImportTool +{ +public: + ApexImportTool(); + ~ApexImportTool(); + + /** + Method loads APEX Destruction asset from file + \param[in] stream Pointer on PxFileBuf stream with Apex Destruction asset + \return If not 0, pointer on DestructibleAsset object is returned. + */ + bool loadAssetFromFile(nvidia::PxFileBuf* stream, NvParameterized::Serializer::DeserializedData& data); + + + /** + Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph! + \param[out] chunkReorderInvMap Chunk map from blast chunk to apex chunk to be filled. + \param[in] apexAsset Pointer on DestructibleAsset object which should be converted to NvBlastAsset + \param[out] chunkDescriptors Reference on chunk descriptors array to be filled. + \param[out] bondDescriptors Reference on bond descriptors array to be filled. + \param[out] flags Reference on chunk flags to be filled. + + \return If true, output arrays are filled. + */ + bool importApexAsset(std::vector& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc, + std::vector& chunkDescriptors, std::vector& bondDescriptors, std::vector& flags); + + /** + Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph! + Parameteres of conversion could be provided with ApexImporterConfig. + \param[out] chunkReorderInvMap Chunk map from blast chunk to apex chunk to be filled. + \param[in] apexAsset Pointer on DestructibleAsset object which should be converted to NvBlastAsset + \param[out] chunkDescriptors Reference on chunk descriptors array to be filled. + \param[out] bondDescriptors Reference on bond descriptors array to be filled. + \param[out] flags Reference on chunk flags to be filled. + \param[in] config ApexImporterConfig object with conversion parameters, see above. + \return If true, output arrays are filled. + */ + bool importApexAsset(std::vector& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc, + std::vector& chunkDescriptors, std::vector& bondDescriptors, std::vector& flags, + const ApexImporterConfig& config); + + /** + Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph! + */ + bool importRendermesh(const std::vector& chunkReorderInvMap, const NvParameterized::Interface* assetNvIfc, Nv::Blast::ExporterMeshData* outputData, const char* materialsDir); + + + /** + Method serializes user-supplied NvBlastAsset object to user-supplied PxFileBuf stream. + \param[in] asset Pointer on NvBlastAsset object which should be serialized + \param[in] stream Pointer on PxFileBuf object in which NvBlastAsset should be serialized. + \return If true, NvBlastAsset object serialized successfully. + */ + bool saveAsset(const NvBlastAsset* asset, nvidia::PxFileBuf* stream); + + /** + Method creates collision geometry from user-supplied APEX Destructible asset. + \param[in] apexAsset Pointer on DestructibleAsset object for which collision geometry should be created. + \param[in] chunkCount Blast asset chunk count, should be equal to number of blast chunk descriptors which are gathered at ApexImportTool::importApexAsset(...) + \param[in] chunkReorderInvMap Chunk map from blast chunk to apex chunk filled in ApexImportTool::importApexAsset(...) + \param[in] apexChunkFlags Chunk flags array + \param[out] physicsChunks Chunk physics info output array + \param[out] physicsSubchunks Chunk collision geometry and transformation data output array + \param[out] hullsDescs Chunk collision geometry descriptors, can be used to save to some third party format + \return If true - success, output arrays are filled. + */ + bool getCollisionGeometry(const NvParameterized::Interface* assetPrm, uint32_t chunkCount, std::vector& chunkReorderInvMap, + const std::vector& apexChunkFlags, std::vector& physicsChunks, + std::vector& physicsSubchunks, std::vector >& hullsDesc); + + ////////////////////////////////////////////////////////////////////////////// + + bool isValid(); + + physx::PxPhysics* getPxSdk() { return m_PhysxSDK; } + physx::PxCooking* getCooking() { return m_Cooking; }; + +private: + bool importApexAssetInternal(std::vector& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc, + std::vector& chunkDescriptors, std::vector& bondDesc, std::vector& flags, + const ApexImporterConfig& configDesc); + +protected: + ApexImportTool(const ApexImportTool&); + ApexImportTool& operator=(const ApexImportTool&); + + physx::PxFoundation* m_Foundation; + physx::PxPhysics* m_PhysxSDK; + physx::PxCooking* m_Cooking; + +}; + +} // namespace ApexImporter + +} // namespace Blast +} // namespace Nv + +#endif // NVBLASTEXTAPEXIMPORTTOOL_H -- cgit v1.2.3