新闻中心

EEPW首页>电源与新能源>设计应用> 虚拟现实中立体显示技术研究与实现

虚拟现实中立体显示技术研究与实现

作者: 时间:2013-11-21 来源:网络 收藏
: Arial, 宋体; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255); ">

本文引用地址://m.amcfsurvey.com/article/227870.htm

虚拟现实中立体显示技术研究与实现

  使用OpenGL的透视投影变换,需设置前后裁剪面到观察者的距离及前裁剪面的宽度和高度等。前裁剪面的宽度用该宽度与高度的比值表示,取显示窗口的宽度和高度之比。

  double Near.Far;//前后裁剪面距观察者的距离

  int ratio=width/height;//显示屏的宽和高之比

  ViewHeight2=Near*tan(radians);//计算视野的高度

  ViewWidth2=ViewHeight2*ratio;//计算视野的宽度

  计算右眼的视野范围;

  left=-ViewWidth2-0.5*e*0.3;

  right=ViewWidth2-0.5*e*0.3;

  投影并绘制模型:

  glFruSTum(left,right,bottom,top,Near,Far);

  glDrawBuffer(GL_BACK_RIGHT);//使用右后缓存

  gluLookAt(0+e/2。0,5。0+d/2,0,-5,0,1,0);

  //确定右眼位置

  glColor3f(1.0,0.0,0.0);//用红色绘制

  draw();//计算立体图像对并绘制

  同理绘制左眼的图像,如图3所示。

虚拟现实中立体显示技术研究与实现

  4.2 双缓存区的使用

  OpenGL提供双缓存技术,支持两个完整颜色缓存的硬件或软件。绘制一个缓存时,显示另一个缓存中的内容。每绘制好一帧便交换缓存;这样刚才被显示的缓存被用来绘制,而用来绘制的缓存被显示。这样,当显示器刷新时,缓存区进行交换,画面就不会闪烁。

  OpenGL也支持立体观察,实现左颜色缓存和右颜色缓存,它们分别用于左立体图像和右立体图像。可在初始化时,分别使用参数PFD_DOUBLEBUFFER和PFD_STERE-O_DONTCARE支持和双缓存。使用双缓存时,通常只绘制后缓存,使用函数glDrawBuffer()还可指定将立体图像渲染到具体的某个缓存。

  例如,绘制右眼图像时使用右后缓存区glDrawBuffer(GL_BACK_RIGHT),绘制左眼时使用左后缓冲区glDraw-Buffer(GL_BACK_LEFT)。

  4.3 立体图像的观察

  使用简单的滤光镜就可观察有立体感的图像。其原理是:由于滤光片(实验中使用红、绿滤光片)吸收其他光线,只让相同颜色的光线通过,因此左、右眼各透过不同颜色的光。当使用滤光镜观察计算机屏幕上的立体图像对时,就会看到具有深度感受的图像。在实验中发现,刷新频率对图像立体效果的形成具有重要作用。刷新频率过低,由于人眼所维持的图像已消失,不能得到三维立体感受;刷新频率过高就会出现一只眼睛可看到两幅图像的现象。将显示的刷新频率设置合适,在程序中设置图像刷新频率设置为50 Hz,利用红绿滤光镜观察模型的立体成像,得到较明显的立体视觉效果。

  5 结论

  根据原理,采用双目视差算法对物体进行,利用OpenGL生成立体图像对,并借助红绿滤光眼镜观察,得到了较好的立体视觉效果。立体显示技术的引入增强了人在虚拟环境中的沉浸感,可广泛应用于建筑物和视景漫游、虚拟战争演练场和各种模拟训练等多种场合。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭