2013-03-19 141 views
2

我正在尝试创建一个在三维空间中采用一个平面的函数,并返回一个完全适合屏幕上一个网格部分的平面。将一个平面缩放以适应一个网格或网格单元格

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

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

我在Unity3.5.2f2中使用C#工作。我已经在SO上发布了这个数据,因为它的数学基础相当庞大,而不仅仅是Unity的一般知识。理想情况下,解决方案不会使用外部库,尽管这是一种可能性。

我有几种方法,并会感激任何输入;

  1. 项目的平面到屏幕空间,得到目,(边界框)的最小/最大x和y值,用此来计算一个比例的XForm(使用在高度/长度网格的差异在于的屏幕部门)。在将网格的两个边缘捕捉到选定的分割之后,重新投影到世界空间中。

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

函数原型是;

Plane adjustPlaneToFitScreens(Plane _plane) 

有什么想法?

+0

我没有使用它,但[GeometryUtility.CalculateFrustumPlanes](http://docs.unity3d.com/Documentation/ScriptReference/GeometryUtility.CalculateFrustumPlanes.html)可能会有用。也许这个来自Unity Answers的[回答](http://answers.unity3d.com/questions/143025/more-questions-on-generating-camera-frustrum.html)。 – Kay 2013-03-19 16:47:12

回答

0

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

没有与再投影到世界缩放后的问题,但这个特殊的应用程序可是没有照相机视线缩放对象移动时,这样的问题并不在黑盒子实际上是显着的

相关问题