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.ConvertToEquirect
从 the 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 图像(不需要像我第一次编辑中解释的那样进行任何转换)。
我的设置:
输出:
我在 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.ConvertToEquirect
从 the 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 图像(不需要像我第一次编辑中解释的那样进行任何转换)。
我的设置:
输出: