RavEngine
Loading...
Searching...
No Matches
PxTriangleMeshExt.h
1// Redistribution and use in source and binary forms, with or without
2// modification, are permitted provided that the following conditions
3// are met:
4// * Redistributions of source code must retain the above copyright
5// notice, this list of conditions and the following disclaimer.
6// * Redistributions in binary form must reproduce the above copyright
7// notice, this list of conditions and the following disclaimer in the
8// documentation and/or other materials provided with the distribution.
9// * Neither the name of NVIDIA CORPORATION nor the names of its
10// contributors may be used to endorse or promote products derived
11// from this software without specific prior written permission.
12//
13// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
14// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24//
25// Copyright (c) 2008-2022 NVIDIA Corporation. All rights reserved.
26// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
27// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
28
29#ifndef PX_TRIANGLE_MESH_EXT_H
30#define PX_TRIANGLE_MESH_EXT_H
35#include "PxPhysXConfig.h"
36#include "common/PxPhysXCommonConfig.h"
37#include "foundation/PxArray.h"
38
39#if !PX_DOXYGEN
40namespace physx
41{
42#endif
43
44class PxGeometry;
45class PxTriangleMesh;
46class PxTriangleMeshGeometry;
47class PxHeightFieldGeometry;
48
62 {
63 public:
77 PxU32 findOverlap(const PxGeometry& geom, const PxTransform& geomPose, const PxTriangleMeshGeometry& meshGeom, const PxTransform& meshPose);
78
90 PxU32 findOverlap(const PxGeometry& geom, const PxTransform& geomPose, const PxHeightFieldGeometry& hfGeom, const PxTransform& hfPose);
91
96 PX_FORCE_INLINE const PxU32* getResults() const { return mResultsMemory; }
97
102 PX_FORCE_INLINE PxU32 getNbResults() const { return mNbResults; }
103
104 private:
105 PxU32* mResultsMemory;
106 PxU32 mResults[256];
107 PxU32 mNbResults;
108 PxU32 mMaxNbResults;
109 };
110
138 bool PxComputeTriangleMeshPenetration(PxVec3& direction,
139 PxReal& depth,
140 const PxGeometry& geom,
141 const PxTransform& geomPose,
142 const PxTriangleMeshGeometry& meshGeom,
143 const PxTransform& meshPose,
144 PxU32 maxIter,
145 PxU32* usedIter = NULL);
146
174 bool PxComputeHeightFieldPenetration(PxVec3& direction,
175 PxReal& depth,
176 const PxGeometry& geom,
177 const PxTransform& geomPose,
178 const PxHeightFieldGeometry& heightFieldGeom,
179 const PxTransform& heightFieldPose,
180 PxU32 maxIter,
181 PxU32* usedIter = NULL);
182
190 bool PxExtractIsosurfaceFromSDF(const PxTriangleMesh& triangleMesh, PxArray<PxVec3>& isosurfaceVertices, PxArray<PxU32>& isosurfaceTriangleIndices);
191
192#if !PX_DOXYGEN
193} // namespace physx
194#endif
195
197#endif
A geometry object.
Definition PxGeometry.h:79
Height field geometry class.
Definition PxHeightFieldGeometry.h:55
Utility class to find mesh triangles touched by a specified geometry object.
Definition PxTriangleMeshExt.h:62
PxU32 findOverlap(const PxGeometry &geom, const PxTransform &geomPose, const PxTriangleMeshGeometry &meshGeom, const PxTransform &meshPose)
Find the mesh triangles which touch the specified geometry object.
Definition ExtTriangleMeshExt.cpp:54
PX_FORCE_INLINE PxU32 getNbResults() const
Retrieves number of triangle indices after a findOverlap call.
Definition PxTriangleMeshExt.h:102
PX_FORCE_INLINE const PxU32 * getResults() const
Retrieves array of triangle indices after a findOverlap call.
Definition PxTriangleMeshExt.h:96
class representing a rigid euclidean transform as a quaternion and a vector
Definition PxTransform.h:49
Triangle mesh geometry class.
Definition PxTriangleMeshGeometry.h:81
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
bool PxComputeTriangleMeshPenetration(PxVec3 &direction, PxReal &depth, const PxGeometry &geom, const PxTransform &geomPose, const PxTriangleMeshGeometry &meshGeom, const PxTransform &meshPose, PxU32 maxIter, PxU32 *usedIter=NULL)
Computes an approximate minimum translational distance (MTD) between a geometry object and a mesh.
Definition ExtTriangleMeshExt.cpp:152
bool PxComputeHeightFieldPenetration(PxVec3 &direction, PxReal &depth, const PxGeometry &geom, const PxTransform &geomPose, const PxHeightFieldGeometry &heightFieldGeom, const PxTransform &heightFieldPose, PxU32 maxIter, PxU32 *usedIter=NULL)
Computes an approximate minimum translational distance (MTD) between a geometry object and a heightfi...
Definition ExtTriangleMeshExt.cpp:164
bool PxExtractIsosurfaceFromSDF(const PxTriangleMesh &triangleMesh, PxArray< PxVec3 > &isosurfaceVertices, PxArray< PxU32 > &isosurfaceTriangleIndices)
Extracts an isosurface from the SDF of a mesh if it the SDF is available.
Definition ExtTriangleMeshExt.cpp:176