![](/img/trans.png)
[英]Given an array of 3D points, and an array of their corresponding temperatures, how to make a contour plot of a cross-section?
[英]Generate 2D cross-section polygon from 3D mesh
我正在编写一个游戏,该游戏使用3D模型绘制场景(自上而下的正投影),但使用2D物理引擎来计算对碰撞的反应等。我希望获得一些3D资源通过将3D网格与XY平面“切片”并从生成的边创建多边形,自动生成匹配盒。
Google在这方面让我失望(也没有关于SO的有用材料)。 有什么建议吗?
我正在处理的网格将是所显示模型的简化版本,这些模型是连接的,闭合的,非凸的并且具有零属。
由于您的网格不是凸形的,因此所产生的横截面可能会断开,因此实际上包含多个多边形。 这意味着必须检查每个三角形,因此对于n个三角形,您至少需要进行O(n)次运算。
这是一种实现方法:
T <- the set of all triangles
P <- {}
while T is not empty:
t <- some element from T
remove t from T
if t intersects the plane:
l <- the line segment that is the intersection between t and the plane
p <- [l]
s <- l.start
while l.end is not s:
t <- the triangle neighbouring t on the edge that generated l.end
remove t from T
l <- the line segment that is the intersection between t and the plane
append l to p
add p to P
这将在O(n)个时间中对n个三角形运行,前提是您的三角形具有指向三个邻居的指针,并且T
支持固定时间删除(例如,哈希集)。
与所有几何算法一样,细节在于魔鬼。 例如,仔细考虑三角形的顶点恰好在平面中的情况。
您可以通过找到与平面相交的所有多边形,然后找到相交的精确线段,来进行一系列几何处理。 这些线段就是您要查找的2D多边形的线。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.