我正在建造许多不同形状的房间:平行四边形、矩形、菱形、正方形等。观众应该从不同的角落看房间,左右转动他的头,然后猜测房间的形状。所以这里“对墙之间角度的感知”非常重要。我的问题是这些:
1)从远处看,大多数锐角似乎是90度,
2)当观众向左或向右转头时,墙壁之间的角度以及墙壁的长度似乎会发生变化。
正如我到目前为止所读到的,这是使用透视投影的结果;然而,使用正交投影,我在屏幕上没有深度(没有深度感知),而且由于我在房间内,所以房间的大小应该大于裁剪区域,这会产生非常垃圾的图像。
我只是想知道有什么方法可以避免或至少最小化这种变形效果?我应该建立自己的投影(介于 glortho 和 glprospective 之间)吗?
还值得一提的是,我使用“glutlookatfunction”来定位相机和观察点。眼睛 位置 始终 是 房间 的 一个 角落 , 初始 观察 点 是 观察者 的 对 角 . 通过 按 左右 箭头 键 , 观察 点 在 环绕 房间 的 假想 圆 上 移动 , 就像 OpenGL 的 大部分到目前为止我看过的程序。你认为如果我移动墙上的观察点会更好吗?或者旋转房间而不是改变看点?
我添加了一些图片以更好地说明我的问题:
这是我的平行四边形房间:
正如你在这里看到的,锐角,应该是 60 度,似乎至少是 90 度。这是我的长方形房间,它根本不会给你在长方形房间里的感觉: