nvidia 3d 视觉是如何准确实现的

sti*_*ijn 7 windows 3d-vision nvidia-graphics-card

在我的公司,我们多年来一直使用立体快门眼镜以及能够处理垂直刷新率 > 120Hz 的快速 crt 屏幕。最近很难找到这样的显示器,所以我们决定尝试一种支持 120Hz 刷新率的新 LCD,并且正如 nVidia 网站上承诺的那样,支持 3D 视觉。我们得到了三星 2233RZ。我们实现立体声的方式是以 120Hz 的频率交替显示左右图像(使用 DirectX),同时为相应的眼睛交替打开/关闭快门(通过发送与 DirectX 同步的触发器),因此实际图像以 60Hz 的 3D 频率感知。毫无疑问,这个系统是有效的。

然而,运气不好,按原样使用屏幕 + 我们的百叶窗并不太奏效:

  • 液晶显示器上的像素在一帧的持续时间内(8 毫秒)处于开启状态
  • pc发出的帧在实际绘制在屏幕上之前有大约半帧的延迟
  • 换句话说,当快门打开时(也是 8 毫秒),眼睛看到左半部分和右半部分图像

我们用一些硬件解决了这个问题,以补偿延迟并缩短百叶窗打开的时间。到目前为止一切顺利:3D 感知非常好,但仅适用于屏幕中间的小图像。

更多的测量揭示了一些让我们非常惊讶的事情:2233RZ 并没有一次性显示整个画面(我们对 LCD 屏幕的期望:我们这里的任何 LCD,还有 DLP 投影仪,都可以这样做),而是将其写成一行按行,就像 crt 一样。因此,无法通过百叶窗使立体声正常工作,因为左上角像素打开和右下角像素变为 1 之间存在 8 毫秒的延迟。而且,当右下角打开时,左上角已经关闭。

问题是:nVidia 是如何做到的,我们能做到吗?他们的 3D 视觉套件中的眼镜使用与我们相同的原理,所以它必须在屏幕/视频卡中,不是吗?他们如何强制屏幕一次性显示整个帧,以便所有像素同时打开和关闭?这是可以在软件中设置的吗?或者只能在使用其中一张被列为与 3D 套件兼容的 GeForce 卡时才能做到这一点(我们使用 Quadro 570 进行了测试,使用双链路电缆)?如果是这样,他们的 DVI 协议是否类似于“嘿,我是 GeForce,您是 120Hz 屏幕,您能否在 8 毫秒内显示一帧,以便我们可以做一些立体的东西?” 并且屏幕响应“是的,我可以做到”或“不,我不能,因为你是 Quadro”?

编辑:刚刚发现还有一个“3D Vision Pro”,属于该站点的确实支持 Quadro FX570。最大的区别是眼镜使用射频而不是红外发射器。但这意味着我们使用的电脑满足 3D 视觉的要求。

所以“实际”的重要问题是(感谢 Mbraedley):我如何告诉卡和屏幕进入 3D 模式,以便屏幕一次更新所有像素?

edit2:在 nVidia cpl 中,我设置了 3D 设置。现在,当使用兼容应用程序中列出的 StereoView 时,该应用程序确实报告“立体声缓冲区”可用,因此似乎一切都设置正确。然而问题仍然存在:根据在眼镜上调整的延迟量,屏幕顶部、中央或底部会出现串扰(“重影”)。

更新

经过与 nVidia 的大量来回邮寄,他们基本上声称他们的系统会比我们的系统运行得更好,但他们无法告诉我们原因,因为这是他们的知识产权等,我们决定只购买 3D 套件,因为它无论如何都很便宜。

经过一些测量后很清楚:它们使用的原理与我们已经使用了 10 年的完全相同。他们没有使用任何特殊技巧,而且 3D Vision 的性能比我们的系统差得多。只有两点不同:

  • 软件:他们有一些API方法,您可以将两个图像分成两个,并且它们会自动交错显示。我们通过将一帧接一帧发送到视频卡来“手动”执行此操作。
  • 硬件:与我们使用的相比,他们的眼镜非常糟糕。nVidia 眼镜的重影真的很糟糕,从上到下都可以看到:他们玻璃的“关闭”状态真的远非关闭。这里要注意一件事:这是关于使用示波器测量的重影。在查看具有大量细节且没有巨大对比度的实际场景时(通常用于游戏),肉眼几乎看不到重影。

MBr*_*ley 3

其原理基本相同:向一只眼睛显示一个图像,然后向另一只眼睛显示另一个图像。然而,为了正常工作,NVidia 3d(以及与之配合使用的显示器)需要 DVI-D 连接,而我怀疑您一直使用的 CRT 仍然使用模拟。如果您尝试将模拟信号通过管道传输到 2233RZ,我感觉它无法正确渲染 3d。同步是在初始设置期间设置的,尽管我不确定它是如何实现的。

我确实知道显示器知道它正在显示 3D 图像,因为大多数控件(包括亮度和对比度)在 3D 模式下都被禁用。然而,监视器不会仅仅因为使用了特定的卡而发出抱怨。不受支持的卡根本无法工作,而受支持的卡应该可以与所有受支持的显示器配合使用,只要它们连接正确并且安装了驱动程序和软件。

话虽如此,如果您的应用程序不使用与 NVidia 3D 兼容的 3D 模式(我觉得很难相信,因为它使用 DirectX),那么 NVidia 将不知道如何处理所提供的图像。