cp的小屋

not yet

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  26 随笔 :: 0 文章 :: 200 评论 :: 1 Trackbacks



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


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

posted on 2006-09-01 22:35 cproom 阅读(3238) 评论(5)  编辑 收藏

评论

#1楼  2006-09-02 17:32 ChenA      
这车下面的地面的贴图看着好熟。
  回复  引用  查看    

#2楼  2006-09-03 17:04 LOGOLS [未注册用户]
是不是,绿色通道的值取TA和TB的平均值好一点呢
  回复  引用    

#3楼  2006-09-03 17:07 frland [未注册用户]
如果有办法让现有的游戏也支持这种就好了,ATI的SHMART SHADER是不是可以用
  回复  引用    

#4楼  2007-01-09 23:58 neoragex2002      
oh yeah,照目前的这个3D游戏发展下去,那是不是可以直接整两个微型屏幕戴在两只眼睛上,然而在引擎里面用两个相对位置/视线固定的camera来直接针对每只眼睛进行单独的渲染?这样可能比分光立体眼睛对大脑负担轻一点.呵呵,我在想有没可能发生斗鸡眼的情况.
  回复  引用  查看    

#5楼  2007-01-18 21:51 空明流转      
ATI SDK有一个红绿的Stereo的一个demo。
  回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-09-01 22:38 编辑过
 
另存  打印
 


Locations of visitors to this page