00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef CLOTHING_ASSET_AUTHORING_H
00013 #define CLOTHING_ASSET_AUTHORING_H
00014
00015 #include "Asset.h"
00016 #include "IProgressListener.h"
00017 #include "ClothingPhysicalMesh.h"
00018
00019
00020 namespace nvidia
00021 {
00022 namespace apex
00023 {
00024
00025 PX_PUSH_PACK_DEFAULT
00026
00027
00028 class ClothingPhysicalMesh;
00029
00030
00034 class ClothingAssetAuthoring : public AssetAuthoring
00035 {
00036 public:
00037
00041 virtual void setDefaultConstrainCoefficients(const ClothingConstrainCoefficients& coeff) = 0;
00042
00046 virtual void setInvalidConstrainCoefficients(const ClothingConstrainCoefficients& coeff) = 0;
00047
00063 virtual void setMeshes(uint32_t lod, RenderMeshAssetAuthoring* graphicalMesh, ClothingPhysicalMesh* physicalMesh,
00064 float normalResemblance = 25, bool ignoreUnusedVertices = true, IProgressListener* progress = NULL) = 0;
00065
00066
00070 virtual bool addPlatformToGraphicalLod(uint32_t lod, PlatformTag platform) = 0;
00071
00075 virtual bool removePlatform(uint32_t lod, PlatformTag platform) = 0;
00076
00080 virtual uint32_t getNumPlatforms(uint32_t lod) const = 0;
00081
00085 virtual PlatformTag getPlatform(uint32_t lod, uint32_t i) const = 0;
00086
00090 virtual uint32_t getNumLods() const = 0;
00091
00097 virtual int32_t getLodValue(uint32_t lod) const = 0;
00098
00102 virtual void clearMeshes() = 0;
00103
00107 virtual ClothingPhysicalMesh* getClothingPhysicalMesh(uint32_t graphicalLod) const = 0;
00108
00117 virtual void setBoneInfo(uint32_t boneIndex, const char* boneName, const PxMat44& bindPose, int32_t parentIndex) = 0;
00118
00124 virtual void setRootBone(const char* boneName) = 0;
00125
00133 virtual uint32_t addBoneConvex(const char* boneName, const PxVec3* positions, uint32_t numPositions) = 0;
00134
00142 virtual uint32_t addBoneConvex(uint32_t boneIndex, const PxVec3* positions, uint32_t numPositions) = 0;
00143
00152 virtual void addBoneCapsule(const char* boneName, float capsuleRadius, float capsuleHeight, const PxMat44& localPose) = 0;
00153
00162 virtual void addBoneCapsule(uint32_t boneIndex, float capsuleRadius, float capsuleHeight, const PxMat44& localPose) = 0;
00163
00167 virtual void clearBoneActors(const char* boneName) = 0;
00168
00172 virtual void clearBoneActors(uint32_t boneIndex) = 0;
00173
00177 virtual void clearAllBoneActors() = 0;
00178
00191 virtual void setCollision(const char** boneNames, float* radii, PxVec3* localPositions, uint32_t numSpheres, uint16_t* pairs, uint32_t numIndices) = 0;
00192
00196 virtual void setCollision(uint32_t* boneIndices, float* radii, PxVec3* localPositions, uint32_t numSpheres, uint16_t* pairs, uint32_t numIndices) = 0;
00197
00201 virtual void clearCollision() = 0;
00202
00208 virtual void setSimulationHierarchicalLevels(uint32_t levels) = 0;
00209
00210
00214 virtual void setSimulationThickness(float thickness) = 0;
00215
00219 virtual void setSimulationVirtualParticleDensity(float density) = 0;
00220
00224 virtual void setSimulationSleepLinearVelocity(float sleep) = 0;
00225
00229 virtual void setSimulationGravityDirection(const PxVec3& gravity) = 0;
00230
00239 virtual void setSimulationDisableCCD(bool disable) = 0;
00240
00244 virtual void setSimulationTwowayInteraction(bool enable) = 0;
00245
00251 virtual void setSimulationUntangling(bool enable) = 0;
00252
00256 virtual void setSimulationRestLengthScale(float scale) = 0;
00257
00265 virtual void setExportScale(float scale) = 0;
00266
00281 virtual void applyTransformation(const PxMat44& transformation, float scale, bool applyToGraphics, bool applyToPhysics) = 0;
00282
00291 virtual void updateBindPoses(const PxMat44* newBindPoses, uint32_t newBindPosesCount, bool isInternalOrder, bool maintainCollisionWorldSpace) = 0;
00292
00297 virtual void setDeriveNormalsFromBones(bool enable) = 0;
00298
00302 virtual NvParameterized::Interface* getMaterialLibrary() = 0;
00303
00311 virtual bool setMaterialLibrary(NvParameterized::Interface* materialLibrary, uint32_t materialIndex, bool transferOwnership) = 0;
00312
00324 virtual ::NvParameterized::Interface* getRenderMeshAssetAuthoring(uint32_t lodLevel) const = 0;
00325
00329 virtual bool getBoneBindPose(uint32_t boneIndex, PxMat44& bindPose) const = 0;
00330
00334 virtual bool setBoneBindPose(uint32_t boneIndex, const PxMat44& bindPose) = 0;
00335 };
00336
00337 PX_POP_PACK
00338
00339 }
00340 }
00341
00342 #endif // CLOTHING_ASSET_AUTHORING_H