如何将 3D 图表转换成可在 3D 电视上观看的内容?

如何将 3D 图表转换成可在 3D 电视上观看的内容?

假设我在 R 中有一个 3D 散点图,或者一个包含 3 个字段并填充数字数据的数据框。

如何才能将其“转化”为可在 3D 电视上观看的“内容”(例如三星使用快门眼镜的随机大屏幕电视)?要么是散点图围绕轴旋转的静态剪辑或者更好的是能够与情节互动(移动它、转动它……)。你需要什么程序、库来完成这个任务?

(我之所以提到 R 是因为这项工作就是在 R 中完成的。但解决方案并不一定需要包含 R)

答案1

您可以为动画的每一帧生成两幅图像(分别用于左眼和右眼),将它们并排放置(以制作非常宽的图像或水平压缩的图像),然后以此方式生成视频文件。然后将该文件放到 USB 驱动器上,并将其插入现代 3D 电视,查看其 3D 菜单,您应该会找到“并排”或“SBS”选项,它将了解如何显示图像。(在 YouTube 上搜索“GoPro 3D”可查看许多示例。)

您可能能够使用连接到电视作为显示器的计算机执行相同的操作,但桌面的非 3D 部分需要隐藏,因为它们不会在每只眼睛中重复(并且看起来很奇怪)。

注意:如果您确实将计算机连接到 SBS 模式下的 3D 屏幕,您会发现在导航开始演示时一次闭上一只眼睛很有用。

答案2

实际上你只需要可旋转的 plot3d(),从rgl 包

  1. 从某个特定的、正常的位置开始你的情节定位。

  2. 创建基础图的两个实例,稍微向相反方向旋转(以获得完全居中的镜头状视图)或分别稍微放大和缩小(以获得更标准的 3D 视图)

    x.将较远的图点染成更蓝的颜色,同样将较近的图点染成更红的颜色。

  3. 不实际显示基础图。最好使用基础图来计算四缓冲区(或双缓冲区),交替显示每帧中的两个偏移图中的哪一个。每次绘制循环更新它。更新后同时显示每个实例图。

  4. 使用高分辨率计时器或 VSync,以给定快门眼镜设备的刷新率精确播放缓冲区堆栈。

  5. 希望您的应用程序中可以配置刷新率,加上“跳过下一帧”选项以与快门眼镜同步。(反转左/右同步)

  6. 在更新基础图之前,扫描输入以获取用户反馈,可能来自异步填充的输入缓冲区。

  7. 通过 HDMI 将笔记本电脑或小型 Linux 设备连接到电视上。

  8. 奖励:如果你真的想深入研究,你可以使用远程控制格鲁吉亚一起处理操纵杆/鼠标/游戏手柄的疯狂行为。

本文末尾有关于 rgl 和类似 3D 旋转图包的简要说明,请参见发帖

如果可以的话,你会希望使用 OpenGL 在每个图上稍微添加一些透视驱动的模糊效果。当然,你可能需要对角度进行一些调整才能使其恰到好处。如果我没记错的话,角度应该是 < 20 度,...但谁知道呢,我不知道!

相关内容