ZxRender v2.0.0 使用文档

版本:v2.0.0

ZxRender 插件是用来渲染光场内容的 unity 扩展插件。所谓光场内容,指的是能在光场全息屏上显示 3D 效果的特殊编码的图像。而 ZxRender 插件支持将 unity 场景渲染成这种能在光场全息屏上显示的内容。

一、环境配置

1.1安装 unity

参照unity官网open in new window安装 unity,尽量选择 2019 以上的版本。

1.2安装 cuda

插件功能依赖 cuda 环境,可在cuda官网open in new window下载安装包进行安装,cuda 版本选择 11.6 及以上版本。

二、快速入门

2.1新建 unity 工程

  1. 打开 unity Hub,新建一个 3D 核心模板工程,本插件只支持 unity 内置管线。

  1. 切换到游戏窗口,新增一个 1536×2048 的分辨率,并命名为 x-real。下面的教程也以 X-real 光场设备为例。

  1. 打开玩家设置,将颜色空间选择为伽马空间。

2.2导入ZxRender插件

  1. 在 unity 菜单选择资源 -> 导入包 -> 自定义包,选择 ZxRender.unitypackage ,然后点击全部导入。

  2. 在工程面板找到 ZxRender 目录,进入 Demo 目录,双击打开示例场景。

2.3选择目标设备

  1. 选中示例场景中的 Main Camera 游戏对象,在属性面板中找到 ZxRender 组件,将设备选择为 ZX_Real 。

  1. 各选项与设备类型对应关系如下:
  • ZX_Real:臻像X-Real全息光场平板;

  • ZX_D32100:臻像32寸100度全息光场屏;

  • ZX_D65060:臻像65寸60度全息光场屏;

  • ZX_D65075:臻像65寸75度全息光场屏;

  • ZX_D65100:臻像65寸100度全息光场屏。

2.4景深与焦距

  1. 安全框:场景窗口中用红白线条标识出来的棱台是设备的景深范围,在这个参考范围内的模型,经过渲染之后在光场全息屏上能看到较为清晰的结果。这个范围我们称之为安全框

  1. 零平面:安全框中白色线条标识的平面称为零平面,完全位于该屏幕的点是最清晰的,但是也没有出入屏效果。
  2. 前景深:较小的红色方框标识的平面称为前景深,它与零平面之间的距离称为出屏距离,在这个范围内的点能在光场全息屏上看到出屏效果。
  3. 后景深:较大的红色方框标识的屏幕称为后景深,它与零平面之间的距离称为入屏距离,在这个范围内的点在光场全息屏上体现为入屏效果。
  4. 焦距:相机到零平面的距离称为焦距。焦距可以自由调节,通过修改 ZxRender 的焦距属性的值即可调整焦距和零平面的位置。

位于零平面上的点,经过渲染之后在臻像全息光场屏上是最清晰的,向前或向后远离零平面,能带来 3D 立体效果,但同时随着距离的增加,当超过安全框标识的范围时,会逐渐产生失焦的效果。

2.5设置蒙板(非必要)

蒙板仅在查看交织预览图时需要设置。生成内容或打包程序时无需蒙版,可忽略蒙版报错信息。

  1. 在场景面板选中 Main Camera,在属性面板中找到 ZxKnit 组件,可以看到当前正在使用的蒙板是 C:\\ProgramData\\zxkj\\Mask.png 这是默认的蒙板存放路径。
    • 如果你的电脑中没有这个路径或文件,ZxKnit 组件会提示一个错误,在 C 盘下创建该目录,并将蒙板文件拷贝到该目录即可,如果是臻像的设备,蒙板文件会在出厂前配置好。

  1. 点击选择蒙版按钮也可以手动选择蒙版文件。

2.6查看效果

查看 3D 效果有两种方式:

  • 一是在编辑模式下,外接拓展屏预览;
  • 二是将程序打包出来,在光场设备上运行查看效果。
2.6.1编辑预览
  • 以臻像 X-Real 全息平板为例,使用 HDMI 线将平板连接到主机,打开显示设置,将 X-Real 的屏幕分辨率设置为 1536×2048 。

  • 回到 unity 编辑器,选择菜单栏的臻像科技 -> 预览菜单,打开预览窗口。将预览窗口拖放到拓展屏上,即可预览画面 3D 效果。

2.6.2打包运行
  • 如果有臻像 32 或 65 寸大屏设备,也可以将场景打包出来,放到光场设备上直接运行,注意在 ZxRender 中需要选择相应的设备类型。

  • 打包时,在 project setting->player 设置中,分辨率选择全屏模式运行。

2.7录制与截图

  1. 在编辑器中选择臻像科技 -> 录制截图菜单,打开录制截图窗口。

  1. 点击截图按钮可以捕获当前的多视点图纹理,点击格式下拉框可选择保存的图片格式。

  1. 点击录制按钮可以录制一段视频,录制时长默认为 5 秒,最多不能超过 30 秒。录制帧率目前支持 24 帧和 30 帧。录制功能支持三种录制模式:
  • Only Frames:仅录制单帧,不合成视频;

  • Remove Frames:合成视频,并移除单帧;

  • Keep Frames:合成视频,并保留单帧。

  1. 如果勾选“跳过已存在的帧”,在录制时,如果同名的帧已存在,则不会重复录制。当录制模式选择后两者时,可以设置视频的名称,格式和编码以及视频质量。

  2. 在录制过程中,点击取消可以取消录制。

注意: 录制的视频合成功能需要使用到ffmpeg,需要自行去官网open in new window下载安装 ffmpeg,并将ffmpeg 命令的目录配置到 Path 环境变量。

2.8关于插件

  1. 在菜单栏选择臻像科技 -> 关于插件打开关于窗口,点击在线文档按钮可以查看在线帮助文档,点击访问官网可以查看臻像科技官网。

三、自定义开发

  1. 新建 unity 3D 核心模板工程,导入 ZxRender 插件。切换到游戏窗口,设置好目标设备的分辨率,以 X-Real 为例,分辨率设置为 1536×2048 。

  2. 找到默认场景中的主相机,在检查器面板中点击“添加组件”,选择 zxkj->ZxRender 脚本,将 ZxRender 组件添加到主相机。

  3. 该组件会自动在主相机下创建一个子相机,如果不存在的话。

  1. ZxCamera 对象上必须要有两个组件:Camera 和 ZxCamera。添加 ZxRender 组件时会自动设置好该组件。

  2. 回到 Main Camera 对象,继续添加 ZxKnit 组件。点击添加组件,选择 zxkj->ZxKnit 组件。

  3. 将 ZxKnit 组件拖放到 ZxRender 组件中的 Zx Knit 属性中。

  1. 如果你电脑的 C:\ProgramData\zxkj 目录下没有蒙版,ZxKnit 会提示错误,点击选择蒙版按钮选择一张蒙版图。

  2. 回到场景编辑窗口,向场景中添加一些立方体模型,将他们摆放在红色方框内靠近零平面的位置。

  1. 点击运行按钮,即可查看交织图。

3.1自定义对焦

  1. 如果需要动态调整焦距,可以使用 ZxRender 插件提供的 ZxFocus 组件。在 Main Camera 上点击添加组件,选择 zxkj->ZxFocus 脚本。

  1. 在 ZxFocus 组件中找到 Focal Handler 消息,运行模式选择 Editor And Runtime ,并将 ZxRender 组件拖放到对象属性上。

  1. 回调函数选择 ZxRender 的 SetFocalDistance 函数。

  1. ZxFocus 提供了两种对焦方式:对焦到某个游戏对象和对焦到相机看到的第一个物体。 如果要对焦到某个对象,将目标对象拖放到目标属性,并取消勾选RayCast。当在编辑器中调整目标对象的位置时,零平面的位置也会跟随变化。

如果要对焦到相机看到的第一个物体,勾选 RayCast 即可。

如果有更复杂的对焦需求,如在相机漫游的时候对焦到物体表面,可以自定义实现对焦组件,ZxRender 提供了 SetFocalDistance 接口用来设置焦距。

public void SetFocalDistance(float distance)

3.2单视点渲染回调

如果需要在渲染每个视点之前,对场景或模型做一些调整,可以使用单视点渲染回调功能,ZxCamera 提供了 RenderCallback 消息来实现这一功能。

我们通过在渲染每个视点前打印相机位置为例来说明这一功能。新建 PrintCamera.cs 脚本,输入以下脚本。

public class PrintCamera : MonoBehaviour
{
   public void PrintCameraPosition(Vector3 p)
   {
      Debug.Log(p);
   } 
}

  1. 在场景中新建一个空物体,将上述脚本挂载到新建的空对象上。找到 ZxCamera 对象,将 PrintCameraPosition 函数添加到 Render Callback 回调。

  1. 运行程序,观察控制台正在输出相机位置。

需要注意的是,回调在每次渲染单视点图之前调用,不宜执行比较耗时的操作!

3.3运行时自动确定硬件平台

为了让程序打包之后可以在不同参数的机器上运行,而不用重新打包,可以将 ZxTarget 组件添加到 Main Camera 上。点击添加组件,选择 zxkj->ZxTarget。

将 ZxTarget 组件设置到 ZxRender 和 ZxKnit 的 Target 字段。

参数的默认存放路径为 C:\\ProgramData\\zxkj\\ ,ZxTarget 组件也支持添加搜索路径,实现开发,测试和生产环境的隔离。点击添加搜索路径按钮,可添加自定义搜索路径。

程序启动时,会自动读取机器配置的参数,做为光场渲染的参数。

3.4高级模式

移除 Main Camera 上的 ZxRender 组件,将ZxRenderPro组件添加到 Main Camera 即可开启高级模式。相比于 ZxRender ,ZxRenderPro 开放了更多光场参数可供自由调节。

ZxRenderPro 组件与 ZxRender 组件功能完全一样,但是开放了更多可调参数。新增可调参数有 5 个:

  • 多视点图视点排布
  • 多视点图分辨率
  • 可视角度(范围:[0, 180])
  • 入屏比例(范围:[0, 1])
  • 出屏比例(范围:[0, 1])

上图是以 X-Real 设备为例的参数配置,Size 表示多视点在X(横)和Y(竖)方向的视点排布数;Resolution 表示多视点图的分辨率,View Angle 表示设备可视角度,Out Screen Ratio 和 In Screen Ratio 表示出/入屏距离和屏幕物理宽度的比例,调整他们会看到场景中安全框的变化。

高级模式下的参数需要根据设备真实参数调整,否则会看到错误的光场效果!

更新时间: