我有一台 3D 电视,如果我不至少尝试让它显示我自己创作的漂亮 3D 图像,我就会逃避我的责任(作为一个极客)!
我之前已经完成了非常基本的 OpenGL 编程,因此我了解所涉及的概念 - 假设我可以为自己渲染一个简单的四面体或立方体并使其旋转一点;我怎样才能让我的 3D 电视以 3D 方式显示该图像?
请注意,我了解 3D 工作原理的基础知识(从 2 个不同角度渲染同一图像两次,每只眼睛一个),我的问题是关于实际执行此操作的流程(我需要 SDK 吗?等等...)
- 我拥有的电视使用偏振 3D,尽管我的意图是这个问题也与其他 3D 技术相关(如果可能)
- 我的笔记本电脑有一个 HDMI 输出,我打算用它来连接到我的电视(这与使用 VGA/分量视频电缆有什么区别吗?)
- 过去我曾尝试过 GLUT / OpenGL,但是如果使用一些替代技术更容易/只有真正可能做到这一点那就很好
主要问题是让 GPU 发送立体格式。对于 HDMI 连接,如果没有驱动程序的帮助,这将无法工作。如果您有专业级 GPU(Quadro、FireGL),那么它们可能支持 OpenGL 四缓冲区,即您可以为左眼和右眼、后眼和前眼获得帧缓冲区:
glDrawBuffer(GL_BACK_LEFT);
render_left_eye();
glDrawBuffer(GL_BACK_RIGHT);
render_right_eye();
glDrawBuffer(GL_BACK); // renders to both eyes simultanously
render_screen_level_and_nonstereoscopic();
SwapBuffers();
不幸的是,OpenGL 四缓冲区被认为是专业级的东西。
相反,NVidia(至少)提供了一个惯用的立体视觉库以及一些控制它的扩展。主要原因是,共享片段仅渲染一次,然后应用适当的视差发送到双眼。然而,从我半专业的立体观察经验来看,这些类型的半/自动立体观察并不能解决问题。立体视觉需要严格控制整个“生产”流程,否则你就完蛋了。在《Elephants Dream》中,我甚至修改了渲染器的核心代码。
我向 NVidia 3D 部门的人员发送了一些需要精确控制立体视觉过程的案例场景,我希望他们能够看到曙光,并在消费级硬件上也能访问四缓冲立体。
请注意,我了解 3D 工作原理的基础知识(从 2 个不同角度渲染同一图像两次,每只眼睛一个)
实际上,您不是从两个不同的角度进行渲染,而是使用移动的视差和镜头移动。否则,你会在水平方向上得到一些梯形/梯形失真,这非常非常令人不舒服(事实上,我现在认为在立体渲染过程中,应该稍微偏离光轴——即与天真的做法完全相反)做 – 并“过度”补偿镜头移位,我目前正在准备对此进行一项小型研究,但仍需要收集我的测试组和对照组)。
1:哎呀,我就是那个人单手立体照相 http://www.blendernation.com/2010/09/17/rendering-elephants-dream-in-stereoscopic-3d/大象梦,渲染它 http://orange.blender.org/blog/elephants-dream-in-stereoscopic-3d/并得到了3D电影节获奖 http://www.3dmedia2010.com/en/3d-film-festival-0.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)