Unity 的全景视频功能使您能够
Unity 支持 180 度和 360 度视频,无论是在等距圆柱投影布局(经度和纬度)还是立方体贴图布局(6 帧)。
等距圆柱投影 2D 视频的纵横比图像比例尺寸的关系,例如宽度和高度。
请参阅 术语表对于 360 内容应正好为 2:1,对于 180 内容应为 1:1。
立方体贴图 2D 视频的纵横比应为 1:6、3:4、4:3 或 6:1,具体取决于面的布局。
要在 Unity 编辑器中使用全景视频功能,您必须能够访问全景视频剪辑,或了解如何创作它们。
此页面描述了在编辑器中显示任何全景视频的以下步骤
注意:这是一个资源密集型功能。为了获得最佳视觉效果,请使用尽可能高的分辨率(通常为 4K 或 8K)的全景视频。大型视频需要更多的计算能力和资源才能进行解码。大多数系统对最大视频解码分辨率都有特定限制(例如,许多手机限制为 HD 或 2K,而旧版台式机可能限制为 2K 或 4K)。
将您的视频作为资源导入 Unity。要创建视频播放器,请将视频资源从项目视图拖动到 Unity 层级视图的空白区域。默认情况下,这会将组件设置为为默认摄像机一个组件,用于创建场景中特定视点的图像。输出要么绘制到屏幕上,要么捕获为纹理。 更多信息
请参阅 术语表播放全屏视频。按播放查看此内容。
您应该更改此行为,使其渲染到渲染纹理。这样,您可以精确控制其显示方式。为此,请转到资源游戏中或项目中可以使用的任何媒体或数据。资源可能来自在 Unity 外部创建的文件,例如 3D 模型、音频文件或图像。您还可以在 Unity 中创建某些资源类型,例如动画控制器、音频混音器或渲染纹理。 更多信息
请参阅 术语表 > 创建 > 渲染纹理一种特殊的纹理类型,在运行时创建和更新。要使用它们,首先创建一个新的渲染纹理,并指定其中一个摄像机渲染到其中。然后,您可以像使用常规纹理一样在材质中使用渲染纹理。 更多信息
请参阅 术语表。
将渲染纹理的大小设置为与您的视频完全匹配。要检查视频的尺寸,请在资源文件夹中选择视频并查看检查器一个 Unity 窗口,显示有关当前选定的游戏对象、资源或项目设置的信息,允许您检查和编辑值。 更多信息
请参阅 术语表窗口。滚动到 Unity 预览视频的部分,在预览窗口中选择视频的名称,然后将其更改为源信息。
接下来,将渲染纹理的深度缓冲区一个内存存储,用于保存图像中每个像素的 z 值深度,其中 z 值是从投影平面到每个渲染像素的深度。 更多信息
请参阅 术语表选项设置为无深度缓冲区。
现在,打开视频播放器检查器并将渲染模式切换到渲染纹理。将新的渲染纹理从资源视图拖动到目标纹理插槽。
进入播放模式以验证此功能是否正常工作。
视频不会在游戏窗口中渲染,但您可以选择渲染纹理资源以查看其内容是否随每个视频帧更新。
您需要将默认天空盒替换为视频内容,以将全景视频渲染为场景的背景。
为此,请创建一个新的材质(资源 > 创建 > 材质定义如何渲染表面的资源。 更多信息
请参阅 术语表)。转到新材质的检查器并将材质的着色器设置为 Skybox/Panoramic(转到着色器在 GPU 上运行的程序。 更多信息
请参阅 术语表 > 天空盒一种特殊的材质类型,用于表示天空。通常是六面体。 更多信息
请参阅 术语表 > 全景)。
将渲染纹理从资源视图拖动到新材质检查器中的纹理插槽。
您必须正确识别视频中内容的类型(立方体贴图或等距圆柱投影),才能使全景视频正确显示。对于立方体贴图内容(例如十字形和条形布局,这对于静态天空盒纹理很常见),请将映射设置为6 帧布局。
对于等距圆柱投影内容,请将映射设置为纬度经度布局,然后选择360 度或180 度子选项。如果视频覆盖了完整的 360 度视图,请选择360 度选项。如果视频只是正面的 180 度视图,请选择180 度。
查看材质检查器底部的预览。环顾四周并检查内容是否正确。
最后,您必须将新的天空盒材质连接到场景。
打开灯光窗口(菜单:窗口 > 常规 > 灯光)。
将新的天空盒材质资源拖放到环境下的第一个插槽。
按播放以在天空盒上显示视频作为场景背景。
更改场景摄像机的方向以显示天空盒的不同部分(以及因此全景视频的不同部分)。
在播放器设置中打开虚拟现实支持(菜单:编辑 > 项目设置一系列广泛的设置,允许您配置物理、音频、网络、图形、输入以及项目其他许多方面的行为。 更多信息
请参阅 术语表,然后选择播放器类别,并打开XR 设置面板),尤其是在源视频具有立体内容的情况下。这将在天空盒/全景材质中解锁一个额外的3D 布局选项。3D 布局有三个选项:并排、上下和无(默认值)。
如果视频在左侧包含左眼的內容,在右侧包含右眼的內容,请使用并排设置。如果左右内容在视频中上下放置,请选择上下。Unity 检测当前正在渲染的眼睛,并将此信息发送到天空盒/全景着色器,使用单通道立体渲染。当 Unity 在 VR 中渲染每个眼睛的内容时,着色器包含根据此信息选择视频正确一半的逻辑。
对于非 360 度 3D 视频(不应使用天空盒材质),当使用摄像机近/远平面渲染模式时,相同的3D 布局直接在视频播放器组件中可用。
在处理立方体贴图视频时,您可以让视频播放器直接渲染到渲染纹理立方体,而不是渲染到 2D 渲染纹理并保留精确的立方体贴图布局。
为此,请将渲染纹理资源的维度从2D更改为立方体,并将渲染纹理的大小__设置为与源视频各个面的尺寸完全相同。
例如,如果您有一个 4 x 3 水平交叉立方体贴图布局视频,其尺寸为 4096 x 3072,请将渲染纹理的大小设置为 1024 x 1024(4096 / 4 和 3072 / 3)。
在渲染到立方体目标纹理时,视频播放器假设源视频包含以十字形或条形布局的立方体贴图(它使用视频纵横比确定)。然后,视频播放器使用正确的立方体面填充渲染纹理的面。
将生成的渲染纹理立方体用作天空盒。为此,请创建一个材质并将Skybox/Cubemap指定为着色器(着色器 > 天空盒 > 立方体贴图六个方形纹理的集合,可以表示环境中的反射或几何体后面绘制的天空盒。这六个正方形形成了围绕对象的假想立方体的面;每个面都表示沿世界轴方向(上、下、左、右、前和后)的视图。 更多信息
请参阅 术语表),而不是上面描述的天空盒/全景材质。
包含 3D 内容需要视频的宽度或高度的两倍(对应于并排或上下布局)。
请记住,许多台式机硬件视频解码器限制为 4K 分辨率,而移动硬件视频解码器通常限制为 2K 或更低,这限制了这些平台上实时播放的分辨率。
您可以使用视频转码来生成全景视频的较低分辨率版本,但请注意避免在左右 3D 内容之间或立方体贴图面和相邻黑色区域之间引入出血。一般来说,您应该以 2 的幂尺寸创作视频,并转码到其他 2 的幂尺寸,以减少视觉伪影。
2017 年 10 月 25 日 页面发布
在 2017.3 版本中添加了 2D 和 3D 全景视频支持 NewIn20173
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.