From 5581909a4d19db97304449f66404ff99a0429d3f Mon Sep 17 00:00:00 2001 From: mtamis Date: Tue, 28 Feb 2017 18:24:59 +0100 Subject: Add visual samples. --- .../samples/SampleBase/utils/ClothMeshGenerator.h | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h (limited to 'NvCloth/samples/SampleBase/utils/ClothMeshGenerator.h') 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 +#include +#include +#include "NvClothExt/ClothFabricCooker.h" +#include +#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 mVertices; + std::vector mUvs; + std::vector mTriangles; + std::vector mQuads; + std::vector 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(); +}; -- cgit v1.2.3