缩放平面以适应截锥体或网格单元

本文关键字:网格 单元 平面 缩放 | 更新日期: 2023-09-27 18:04:53

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

屏幕上的网格是固定的,可以通过X和Y的划分来定义,或者通过屏幕上的一组线来定义。

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

我在Unity3.5.2f2与c#工作。我已经在SO上发布了这篇文章,因为它是相当多的数学基础,而不是Unity的一般知识。理想情况下,解决方案不会使用外部库,尽管这是可能的。

我心中有几个方法,欢迎任何输入;

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

  2. 由于划分本质上是矩形的,创建几个视图锥台,并提出一些在3d空间中缩放/平移平面以适应锥台的方法。

函数原型为;

Plane adjustPlaneToFitScreens(Plane _plane)

任何想法吗?

缩放平面以适应截锥体或网格单元

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

缩放后的重新投影有一些问题,但是这个特殊的应用程序在观看缩放后的对象时没有相机移动,所以这个问题实际上在黑盒

中并不明显。