使用Unity录制360度视频不是等距的

5
我有一个Unity 2018.2.10f1的时间轴项目。我使用Unity Recorder导出360度视频。以下是设置:

enter image description here

但输出结果不是等距圆柱形的,无法作为360°视频播放:

enter image description here

What is wrong and how to fix it? Thank you 有什么问题,如何修复?谢谢。
2:1 video 2:1 视频

enter image description here

免费相机设置

enter image description here enter image description here

1个回答

3

Edit3:
显然,此问题是由相机组件上的“物理相机”设置引起的。关闭物理相机将按预期导出全景图像/电影。

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


您的设置当前不能导出全景图像,而是正方形图像。全景图像需要具有2:1的宽高比。而您当前的宽高比为1:1。

在Unity录制器设置中,您将“360视图输出”设置为2048x2048。这将导致您看到的正方形图像。尝试将其设置为4096x2048。这将产生一个2:1纵横比的4k图像,适用于全景图像的投影。

请参阅此页面以获取有关全景图像投影的更多信息。(强调我的)

扫描相机有时涵盖多个360° 圈数,但软件通常假定全景图像水平覆盖360°,垂直覆盖180°,即确保您的全景图像具有正确的2:1宽高比。


Edit:
查看2:1的图片后,似乎Unity使用记录立方图而不是全景图像。您可能需要使用文档中的RenderTexture.ConvertToEquirect将立方图转换为全景图像:

if (renderStereo)
{
    cubemap.ConvertToEquirect(equirect, Camera.MonoOrStereoscopicEye.Left);
    cubemap2.ConvertToEquirect(equirect, Camera.MonoOrStereoscopicEye.Right);
}

请查看这个Unity博客,它详细介绍了Unity如何使用立方体贴图/等距投影(点击此处)。
从博客中可以得知: 生成立体立方贴图后,我们可以将这些立方贴图转换为立体等距矩形映射,这是360度视频播放器所使用的投影格式[...]。要将立方贴图转换为立体等距矩形贴图,请调用RenderTexture.ConvertToEquirect()。 Recorder上的"Cube map"宽度参数可能需要进行调整以获取所需的结果,但不确定哪个值最适合。 Edit2:
我创建了一个测试项目(在GitHub上)。但是,尽管设置似乎相同,我没有获得与您相同的输出结果。我的输出结果看起来像完全正常的等距矩形图像(不需要进行任何转换,因为我认为根据我第一次编辑的解释可能需要这样做)。
我的设置: Settings of the Unity Recorder 输出结果: 360 equirectangular output image

谢谢,我觉得这一定是一些愚蠢的问题。 - Leos Literak
视频现在变宽了两倍,但外观看起来没有变化。当我在360度投影中观看时,似乎有盒状视图(正交边)。 - Leos Literak
请问您能告诉我如何使用这个脚本吗?我需要将它附加到某个对象上吗?它似乎使用了一些纹理。这些参数应该是什么?最好有一个示例项目,我可以导入并分析。谢谢! - Leos Literak
谢谢。我已经下载了最新的Unity并成功运行了您的项目,从中获得了正确的360度视频。然后我升级了我的项目,将立方体贴图修复为2048像素,但结果与之前相同。我已经附上了我的层次结构和主摄像机设置。这很奇怪。 - Leos Literak
@LeosLiterak 好的,太棒了。我已经将你的相机设置应用到我的演示场景中,这使得我的导出看起来像你的。所以肯定是其中一个相机设置引起了问题!你能否尝试在你的场景中放置一个默认相机(或重置你的相机组件)来查看是否可以解决你的问题?编辑:似乎是由于“物理相机”引起的,只需关闭它即可修复导出问题! - Remy
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接