ClothingPhysicalMesh.h
00001 /*
00002  * Copyright (c) 2008-2017, NVIDIA CORPORATION.  All rights reserved.
00003  *
00004  * NVIDIA CORPORATION and its licensors retain all intellectual property
00005  * and proprietary rights in and to this software, related documentation
00006  * and any modifications thereto.  Any use, reproduction, disclosure or
00007  * distribution of this software and related documentation without an express
00008  * license agreement from NVIDIA CORPORATION is strictly prohibited.
00009  */
00010 
00011 
00012 #ifndef CLOTHING_PHYSICAL_MESH_H
00013 #define CLOTHING_PHYSICAL_MESH_H
00014 
00015 #include "ApexInterface.h"
00016 #include "IProgressListener.h"
00017 
00018 namespace nvidia
00019 {
00020 namespace apex
00021 {
00022 
00023 
00027 struct ClothingConstrainCoefficients
00028 {
00029     float maxDistance; 
00030     float collisionSphereRadius; 
00031     float collisionSphereDistance; 
00032 };
00033 
00034 
00035 PX_PUSH_PACK_DEFAULT
00036 
00040 struct ClothingPhysicalMeshStats
00041 {
00043     uint32_t    totalBytes;
00045     uint32_t    numVertices;
00047     uint32_t    numIndices;
00048 };
00049 
00050 
00054 class ClothingPhysicalMesh : public ApexInterface
00055 {
00056 public:
00060     virtual uint32_t getNumVertices() const = 0;
00061 
00065     virtual uint32_t getNumSimulatedVertices() const = 0;
00066 
00070     virtual uint32_t getNumMaxDistance0Vertices() const = 0;
00071 
00075     virtual uint32_t getNumIndices() const = 0;
00076 
00080     virtual uint32_t getNumSimulatedIndices() const = 0;
00081 
00089     virtual void getIndices(void* indexDestination, uint32_t byteStride, uint32_t numIndices) const = 0;
00090 
00094     virtual bool isTetrahedralMesh() const = 0;
00095 
00109     virtual void simplify(uint32_t subdivisions, int32_t maxSteps, float maxError, IProgressListener* progress) = 0;
00110 
00117     virtual void setGeometry(bool tetraMesh, uint32_t numVertices, uint32_t vertexByteStride, const void* vertices, const uint32_t* driveChannels, 
00118                             uint32_t numIndices, uint32_t indexByteStride, const void* indices) = 0;
00119 
00120     // direct access to specific buffers
00127     virtual bool getIndices(uint32_t* indices, uint32_t byteStride) const = 0;
00128 
00135     virtual bool getVertices(PxVec3* vertices, uint32_t byteStride) const = 0;
00136 
00143     virtual bool getNormals(PxVec3* normals, uint32_t byteStride) const = 0;
00144 
00148     virtual uint32_t getNumBonesPerVertex() const = 0;
00149 
00159     virtual bool getBoneIndices(uint16_t* boneIndices, uint32_t byteStride) const = 0;
00160 
00169     virtual bool getBoneWeights(float* boneWeights, uint32_t byteStride) const = 0;
00170 
00176     virtual void allocateMasterFlagsBuffer() = 0;
00177 
00183     virtual uint32_t* getMasterFlagsBuffer() = 0;
00184 
00192     virtual void allocateConstrainCoefficientBuffer() = 0;
00193 
00199     virtual ClothingConstrainCoefficients* getConstrainCoefficientBuffer() const = 0;
00200 
00206     virtual bool getConstrainCoefficients(ClothingConstrainCoefficients* coeffs, uint32_t byteStride) const = 0;
00207 
00211     virtual void getStats(ClothingPhysicalMeshStats& stats) const = 0;
00212 
00213 };
00214 
00215 PX_POP_PACK
00216 
00217 }
00218 } // namespace nvidia
00219 
00220 #endif // CLOTHING_PHYSICAL_MESH_H

Generated on Tue Aug 1 2017 22:43:52

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