-1

我正在建造许多不同形状的房间:平行四边形、矩形、菱形、正方形等。观众应该从不同的角落看房间,左右转动他的头,然后猜测房间的形状。所以这里“对墙之间角度的感知”非常重要。我的问题是这些:

1)从远处看,大多数锐角似乎是90度,

2)当观众向左或向右转头时,墙壁之间的角度以及墙壁的长度似乎会发生变化。

正如我到目前为止所读到的,这是使用透视投影的结果;然而,使用正交投影,我在屏幕上没有深度(没有深度感知),而且由于我在房间内,所以房间的大小应该大于裁剪区域,这会产生非常垃圾的图像。

我只是想知道有什么方法可以避免或至少最小化这种变形效果?我应该建立自己的投影(介于 glortho 和 glprospective 之间)吗?

还值得一提的是,我使用“glutlookatfunction”来定位相机和观察点。眼睛 位置 始终 是 房间 的 一个 角落 , 初始 观察 点 是 观察者 的 对 角 . 通过 按 左右 箭头 键 , 观察 点 在 环绕 房间 的 假想 圆 上 移动 , 就像 OpenGL 的 大部分到目前为止我看过的程序。你认为如果我移动墙上的观察点会更好吗?或者旋转房间而不是改变看点?

我添加了一些图片以更好地说明我的问题:

这是我的平行四边形房间:

平行四边形.png

正如你在这里看到的,锐角,应该是 60 度,似乎至少是 90 度。这是我的长方形房间,它根本不会给你在长方形房间里的感觉:

矩形.png

4

1 回答 1

0

我会说,在没有看到实际问题的情况下,您的相机 FOV 太大。

根据您的评论,您的相机具有 112.5° 的水平 FOV,我认为这会在屏幕边缘引入“不自然的失真”:简单的 OpenGL 透视投影是线性的,并且 FOV 太宽。

您可能想看看这篇将相机与人眼进行比较的文章,因为您想判断用户的感知。

您应该尝试减少相机的水平 FOV,可能在 80-90° 范围内,看看是否有帮助。

作为最后的手段,您可以切换到非线性投影,但在切换到此之前,您应该做出明智的选择,应该有可能对您有所帮助的心理物理学研究(例如这个)。

于 2012-08-18T21:38:52.687 回答