让游戏通过红蓝立体眼镜展现立体效果



  相信大部分人小时候都通过红蓝或者红绿眼镜看过立体图片。在各种立体图像观察方式中使用红蓝或者红绿眼镜的方案应该是成本最低最容易实现的,虽然这种方式存在着色彩还原不好,眼睛容易疲劳等缺点,但仍然有着不错的效果,值得我们尝试。
  观看立体图像的主要原理是让左右两只眼镜分别观看有一定视差的两幅图片,两幅图片的差别刚好相当于将两台摄像机置于两只眼睛的位置,注视同一视觉兴趣点所拍摄的两幅图像。将这样两幅有着视差的图像分别通过显示设备的红色通道和蓝色通道显示出来,利用红蓝眼镜两个镜片的滤色效果使左右眼分别看到显示设备红色通道和蓝色通道中的图像,就实现了图像的立体效果。在实际使用中通常将蓝色镜片做得颜色较浅且稍微偏绿,使之只阻塞红色光线而可以让蓝绿色光线通过,这样可以实现更好的颜色还原,提供更高的亮度,也更容易观察出立体效果。


  下面说说立体画面的程序实现。首先保留所有3d程序的原有摄像机,无论它是第一人称还是第三人称。在每一帧渲染前取得主摄像机的位置和注视点,将主摄像机位置分别向主摄像机左右两个方向平移相当于人类两眼间距离的一半得到两个新的位置,将摄像机A和B分别置于这两个位置,注视与主摄像机相同的注视点。分别以摄像机A、B为活动摄像机,将场景渲染到两张贴图TA和TB。构造一个覆盖全屏的矩形,通过一个Shader程序将贴图TA的红色通道和贴图TB的绿色和蓝色通道混合在一起输出到屏幕就得到了我们希望的立体图像。
  另外要注意的是程序摄像机所设的视角宽度和我们观察图像的视角宽度越接近立体效果越好,我们观察图片的视点和程序摄像机的观察视点越接近立体效果越好。

原文地址:https://www.cnblogs.com/cproom/p/492639.html