unity 录制 360° 视频不是 equirectangular

Record 360° video in unity is not equirectangular

我在 Unity 2018.2.10f1 中有一个时间线项目。我使用 Unity Recorder 导出 360° 视频。这是设置:

但输出不是等角的,不能作为 360° 视频播放:

出了什么问题以及如何解决?谢谢

2:1 视频

免费相机设置

编辑3:
显然,问题是由相机组件上的 Physical camera 设置引起的。关闭物理相机将按预期导出等距柱状 images/movies。

下面的信息仍然相关,但不是这个特定问题的确切解决方案。


您的设置现在不导出等距柱状图像,而是导出方形图像。 Equirectangular 图像需要具有 2:1 的纵横比。而您当前的宽高比是 1:1.

在 Unity 记录器设置中,您已将“360 度视图输出”设置为 2048x2048。导致您看到的方形图像。尝试将其设置为 4096x2048。这将生成纵横比为 2:1 的 4k 图像,这应该适用于等距柱状投影。

See this page 了解有关等距柱状投影工作原理的更多信息。 (强调我的)

Scanning cameras sometimes cover more than one 360° turn but software often assumes that equirectangular images cover 360° horizontally and 180° vertically, i.e. make sure that your equirectangular image has a proper aspect ratio of 2:1.


编辑:
查看 2:1 图片,似乎 Unity 记录的是立方体贴图,而不是等距柱状图。您可能需要使用 RenderTexture.ConvertToEquirectthe docs:

将立方体贴图转换为等距柱状贴图
if (renderStereo)
{
    cubemap.ConvertToEquirect(equirect, Camera.MonoOrStereoscopicEye.Left);
    cubemap2.ConvertToEquirect(equirect, Camera.MonoOrStereoscopicEye.Right);
}

看看这个 Unity bog,它更详细地介绍了 unity 如何使用 cubemaps/equirectangular 投影 来自博客:

After stereo cubemaps are generated, we can convert these cubemaps to stereo equirectangular maps which is a projection format used by 360 video players [...] To convert cubemaps to stereo equirectangular maps, call RenderTexture.ConvertToEquirect()

可能需要调整 Recorder 上的 "Cube map" 宽度参数以获得所需的结果。但不确定哪个值最有效。

编辑2:
我创建了一个测试项目(在 GitHub here 上)。但是,尽管(看似)具有相同的设置,但我没有得到与您相同的输出。我的输出看起来像一个完美的 equirectangular 图像(不需要像我第一次编辑中解释的那样进行任何转换)。

我的设置:

输出: