以下是我的推理:
如果你想让z值对透视产生一些影响,你需要改变场景(通常用矩阵),这样就可以产生远处物体变小的错觉。
立方体的z值从-1到1.
现在我想要它,以便z = 1的对象被无限缩放,z = 0的对象是正常大小,而z = -1的对象是1/2大小。
当我说一个物体被缩放时,我的意思是它的点的(x,y)坐标乘以缩放器缩放因子,它是基于它的z坐标。
如果一个点位于2x2x2立方体之外,我希望在z = 1和z = -1之间仍然可以对其进行计算。由于z值没有改变,我不关心任何不在此范围内的点会发生什么,只要它们的z值没有改变。
广义点转换:
如果我有一个点P =(x,y,z),并且-1< = z< = 1那么:
缩放系数,S = 1 /(1 - z)
所以翻译如下:
(x,y,z)==> (x * S,y * S,z)
创建矩阵?
这是我遇到问题的地方。我不知道如何创建一个矩阵,以便它将一个广义点转换为具有预期效果。
我正在考虑不使用矩阵并通过glsl中的函数应用此转换...
如果有人对如何创建这样的矩阵有所了解,我想知道。