缩放平面以适合Frustum或网格单元格

时间:2013-03-19 12:32:08

标签: c# graphics 3d unity3d

我正在尝试创建一个在3d空间中占据一个平面的函数,并返回一个平面,该平面完全适合屏幕上网格的一个部分。

屏幕上的网格是固定的,由X和Y中的分区或屏幕上的一组线条定义。

原始平面可以是屏幕上的任何大小或方向,但它永远不会占据整个屏幕。

我使用C#在Unity3.5.2f2中工作。我已经将它发布在SO上,因为它基于数学而非仅仅是Unity一般知识。理想情况下,解决方案不会使用外部库,但这是可能的。

我有一些方法,并希望得到任何意见;

  1. 将平面投影到屏幕空间,获取网格的最小/最大x和y值(边界框),使用它来计算比例xform(使用网格的高度/长度差异)一个屏幕划分)。在将网格的两个边缘捕捉到选定的区域后重新投影到世界空间。

  2. 由于划分本质上是矩形的,因此可以创建多个视锥体,并提出一些缩放/平移三维空间中的平面以适应平截头体的方法。

  3. 函数原型将是;

    Plane adjustPlaneToFitScreens(Plane _plane)
    

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我使用上面的方法01解决了这个问题。 Unity提供了几个方便的功能,使数学变得简单,在像素/屏幕空间中计算缩放和平移比在3d空间中更容易,同时必须考虑视角/视场。

缩放后重新投影到世界存在问题,但是这个特定的应用程序在查看缩放对象时没有移动相机,所以问题在黑匣子中实际上并不明显