Xna/OpenGL中的鱼眼投影矩阵 - 3D

5
我正在寻找一个在3D中使用的投影矩阵,可以给我鱼眼效果。我不需要像素着色器或任何操作像素的东西 - 而是实际用于从3D空间投影到2D的投影矩阵。
谢谢。

这可能很方便:http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/domefisheye/fisheye/ - George Profenza
谢谢。这对我正在考虑的其他情况也很有用。 - Einar Ingebrigtsen
3个回答

12

这并不是真正可能的。在齐次坐标中,矩阵将直线转换为直线。因此,任何仅基于矩阵的解决方案都必然无法像您想要的那样弯曲线条。


3

Carlos的说法并没有错,但您可能想尝试在投影矩阵生成器中调整“视野(FOV)”参数。


谢谢你们两位。我想我需要检查一下我的矩阵计算了——我的第一个猜测也是尝试调整视野,但没有得到期望的效果。我更倾向于使用近似值,而不是完美像素。 - Einar Ingebrigtsen
@Einar,正如Goz所说,Carlos是正确的- FOV适用于端点,将它们转换到它们应该在的位置,但它仍然在它们之间画直线。尝试创建几个表示三角形的网格-使用单个多边形或使用10个多边形和使用1000个多边形。然后尝试使用FOV进行调整,也许事情会更清晰。 - Unreason

0

Carlos是正确的。有一种方法可以模拟它,但你需要多次重新渲染你的场景。

基本上,你要先弄清楚如何做二点透视。我会用一个投影矩阵来渲染两次场景,其中消失点在交替的两侧。然后,你使用模板图合并这两个部分。

你可以尝试四点透视,将四个消失点的图像组合起来。你可以重复这个过程多次。

接下来,你需要将场景投影到一个近似球体的多边形上。

我可以解释得更详细,但我猜这听起来太复杂了。

最简单的模拟方法是将其渲染到纹理中,扭曲图像,然后作为全屏四边形渲染。


感谢您的回应,这是个好主意。我的问题和一个让我感到尴尬的事情有关。我在投影到屏幕时出现了一个错误,这导致我所做的所有改变视野的努力都毫无用处,无法获得我想要的效果。 - Einar Ingebrigtsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接