为切片网格创建端盖

时间:2014-12-01 16:23:32

标签: c# 3d mesh

我正在研究一个带有网格和给定平面的裁剪算法,它已经对网格进行切片,但是我需要用一个或多个2d多边形覆盖这些洞,我已经拥有代表所有的三维点多边形,所以下一步将是生成表示多边形的三角形,我已经找到了一个三角形三角形算法,但我很难理解:“如何用给定的平面将3d点转换为2d

我找到了这个链接:Retrieve 2D co-ordinate from a 3D point on a 3D plane

但我不确定 imagePosTo3D 做了什么。

任何帮助都非常感谢,谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,似乎我在这里找到了答案:

http://xboxforums.create.msdn.com/forums/p/16529/86429.aspx

Vector3 up = Vector3.Normalize(plane.N);
Vector3 right = Vector3.Normalize(Vector3.Cross(up, Math.Abs(plane.N.X) > Math.Abs(plane.N.Z) ? Vector3.UnitZ : Vector3.UnitX));
Vector3 backward = Vector3.Cross(right, up);

Matrix4 transformMatrix = new Matrix4(right.X, up.X, backward.X, 0, right.Y, up.Y, backward.Y, 0, right.Z, up.Z, backward.Z,0, 0, 0, 0, 1);

然后将transformMatrix乘以每个3d点并使用x和z坐标