aboutsummaryrefslogtreecommitdiff
path: root/NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h
diff options
context:
space:
mode:
authormtamis <[email protected]>2017-02-28 18:24:59 +0100
committermtamis <[email protected]>2017-02-28 18:24:59 +0100
commit5581909a4d19db97304449f66404ff99a0429d3f (patch)
treea90f7eb85c095a8aba45cf5e909c82c1cdbed77d /NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h
parentFix cmake visual studio project generation (locate_gw_root.bat) (diff)
downloadnvcloth-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.h54
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();
+};