浏览代码

Drawing Minkowski difference when JPH_EPA_CONVEX_BUILDER_DRAW is enabled

Jorrit Rouwe 1 年之前
父节点
当前提交
0bbfc1518d
共有 2 个文件被更改,包括 16 次插入0 次删除
  1. 9 0
      Jolt/Geometry/EPAConvexHullBuilder.h
  2. 7 0
      Jolt/Geometry/EPAPenetrationDepth.h

+ 9 - 0
Jolt/Geometry/EPAConvexHullBuilder.h

@@ -657,6 +657,15 @@ public:
 		mOffset += Vec3(5.0f, 0.0f, 0.0f);
 	}
 
+	/// Draw geometry for debugging purposes
+	void				DrawGeometry(const DebugRenderer::GeometryRef &inGeometry, ColorArg inColor)
+	{
+		RMat44 origin = RMat44::sScale(Vec3::sReplicate(cDrawScale)) * RMat44::sTranslation(mOffset);
+		DebugRenderer::sInstance->DrawGeometry(origin, inGeometry->mBounds.Transformed(origin), inGeometry->mBounds.GetExtent().LengthSq(), inColor, inGeometry);
+
+		mOffset += Vec3(inGeometry->mBounds.GetSize().GetX(), 0, 0);
+	}
+
 	/// Draw a triangle for debugging purposes
 	void				DrawWireTriangle(const Triangle &inTriangle, ColorArg inColor)
 	{

+ 7 - 0
Jolt/Geometry/EPAPenetrationDepth.h

@@ -221,6 +221,13 @@ public:
 		}
 
 #ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+		hull.DrawLabel("Complete hull");
+
+		// Generate the hull of the Minkowski difference for visualization
+		MinkowskiDifference diff(inAIncludingConvexRadius, inBIncludingConvexRadius);
+		DebugRenderer::GeometryRef geometry = DebugRenderer::sInstance->CreateTriangleGeometryForConvex([&diff](Vec3Arg inDirection) { return diff.GetSupport(inDirection); });
+		hull.DrawGeometry(geometry, Color::sYellow);
+
 		hull.DrawLabel("Ensure origin in hull");
 #endif