00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef NX_CLOTHING_PHYSICAL_MESH_H
00029 #define NX_CLOTHING_PHYSICAL_MESH_H
00030
00031 #include "NxApexInterface.h"
00032 #include "NxApexUserProgress.h"
00033
00034 namespace physx
00035 {
00036 namespace apex
00037 {
00038
00039
00043 struct NxClothingConstrainCoefficients
00044 {
00045 PxF32 maxDistance;
00046 PxF32 maxDistanceBias;
00047 PxF32 collisionSphereRadius;
00048 PxF32 collisionSphereDistance;
00049 };
00050
00051
00052 PX_PUSH_PACK_DEFAULT
00053
00057 struct NxClothingPhysicalMeshStats
00058 {
00060 physx::PxU32 totalBytes;
00062 physx::PxU32 numVertices;
00064 physx::PxU32 numIndices;
00065 };
00066
00067
00071 class NxClothingPhysicalMesh : public NxApexInterface
00072 {
00073 public:
00077 virtual physx::PxU32 getNumVertices() const = 0;
00078
00082 virtual physx::PxU32 getNumIndices() const = 0;
00083
00091 virtual void getIndices(void* indexDestination, physx::PxU32 byteStride, physx::PxU32 numIndices) const = 0;
00092
00096 virtual bool isTetrahedralMesh() const = 0;
00097
00111 virtual void simplify(physx::PxU32 subdivisions, physx::PxI32 maxSteps, physx::PxF32 maxError, IProgressListener* progress) = 0;
00112
00118 virtual void setGeometry(bool tetraMesh, physx::PxU32 numVertices, physx::PxU32 vertexByteStride, const void* vertices, physx::PxU32 numIndices, physx::PxU32 indexByteStride, const void* indices) = 0;
00119
00120
00127 virtual bool getIndices(physx::PxU32* indices, physx::PxU32 byteStride) const = 0;
00128
00135 virtual bool getVertices(physx::PxVec3* vertices, physx::PxU32 byteStride) const = 0;
00136
00143 virtual bool getNormals(physx::PxVec3* normals, physx::PxU32 byteStride) const = 0;
00144
00148 virtual physx::PxU32 getNumBonesPerVertex() const = 0;
00149
00159 virtual bool getBoneIndices(physx::PxU16* boneIndices, physx::PxU32 byteStride) const = 0;
00160
00169 virtual bool getBoneWeights(physx::PxF32* boneWeights, physx::PxU32 byteStride) const = 0;
00170
00176 virtual bool getConstrainCoefficients(NxClothingConstrainCoefficients* coeffs, physx::PxU32 byteStride) const = 0;
00177
00181 virtual void getStats(NxClothingPhysicalMeshStats& stats) const = 0;
00182
00183 };
00184
00185 PX_POP_PACK
00186
00187 }
00188 }
00189
00190 #endif // NX_CLOTHING_PHYSICAL_MESH_H