将任意2D多边形投影到3D三角网格上的最佳方法是什么?
为了使事情更清楚,这里是问题的可视化:
三角形网格表示地形,因此可以被认为是2.5D。我希望能够将投影多边形视为单独的对象。 这个特殊的实现是在WebGL和three.js中完成的,但任何适合交互式3D应用程序的解决方案都很有用。
答案 0 :(得分:1)
如果您的问题不是如何纹理贴图表面,那么您必须生成新的3D多边形。
您将使用一些投影机制(例如平行机制)将3D问题转换为2D。
首先将曲面反投影到多边形平面上。多边形将覆盖在相应的2D网格上。现在,对于每个方面,找到构面和多边形的交点(在布尔意义上)。
为此目的,您将需要一个多边形交叉机械,例如Weiler-Atherton或Sutherland-Hodgman裁剪算法(后者更简单,但仅适用于凸窗)。 (另请查看http://www.angusj.com/delphi/clipper.php)
剪裁后,您将投射到原始小平面。