diff options
| author | mtamis <[email protected]> | 2017-02-28 18:24:59 +0100 |
|---|---|---|
| committer | mtamis <[email protected]> | 2017-02-28 18:24:59 +0100 |
| commit | 5581909a4d19db97304449f66404ff99a0429d3f (patch) | |
| tree | a90f7eb85c095a8aba45cf5e909c82c1cdbed77d /NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h | |
| parent | Fix cmake visual studio project generation (locate_gw_root.bat) (diff) | |
| download | nvcloth-5581909a4d19db97304449f66404ff99a0429d3f.tar.xz nvcloth-5581909a4d19db97304449f66404ff99a0429d3f.zip | |
Add visual samples.
Diffstat (limited to 'NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h')
| -rw-r--r-- | NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h b/NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h new file mode 100644 index 0000000..0f57230 --- /dev/null +++ b/NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h @@ -0,0 +1,54 @@ +/* +* Copyright (c) 2008-2017, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, 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. +*/ + +#pragma once +#include <vector> +#include <foundation/PxVec3.h> +#include <foundation/PxVec2.h> +#include "NvClothExt/ClothFabricCooker.h" +#include <foundation/PxMat44.h> +#include "Mesh.h" + +struct ClothMeshData +{ + struct Triangle + { + Triangle(){} + Triangle(uint32_t _a, uint32_t _b, uint32_t _c) : + a(_a), b(_b), c(_c){} + uint32_t a, b, c; + }; + struct Quad + { + Quad(){} + Quad(uint32_t _a, uint32_t _b, uint32_t _c, uint32_t _d) : + a(_a), b(_b), c(_c), d(_d){} + uint32_t a, b, c, d; + }; + std::vector<physx::PxVec3> mVertices; + std::vector<physx::PxVec2> mUvs; + std::vector<Triangle> mTriangles; + std::vector<Quad> mQuads; + std::vector<physx::PxReal> mInvMasses; + + SimpleMesh mMesh; + + void Clear(); + void GeneratePlaneCloth(float width, float height, int segmentsX, int segmentsY, bool createQuads = false, physx::PxMat44 transform = physx::PxIdentity, bool alternatingDiagonals = true); + + void AttachClothPlaneByAngles(int segmentsX, int segmentsY, bool attachByWidth = true); + void AttachClothPlaneBySide(int segmentsX, int segmentsY, bool attachByWidth = true); + + void SetInvMasses(float invMass); + void SetInvMassesFromDensity(float density); // Todo + + nv::cloth::ClothMeshDesc GetClothMeshDesc(); + SimpleMesh GetRenderMesh(); +}; |