ZxRender v2.0.0 使用文档
版本:v2.0.0
ZxRender 插件是用来渲染光场内容的 unity 扩展插件。所谓光场内容,指的是能在光场全息屏上显示 3D 效果的特殊编码的图像。而 ZxRender 插件支持将 unity 场景渲染成这种能在光场全息屏上显示的内容。
一、环境配置
1.1安装 unity
参照unity官网安装 unity,尽量选择 2019 以上的版本。
1.2安装 cuda
插件功能依赖 cuda 环境,可在cuda官网下载安装包进行安装,cuda 版本选择 11.6 及以上版本。
二、快速入门
2.1新建 unity 工程
- 打开 unity Hub,新建一个 3D 核心模板工程,本插件只支持 unity 内置管线。
- 切换到游戏窗口,新增一个 1536×2048 的分辨率,并命名为 x-real。下面的教程也以 X-real 光场设备为例。
- 打开玩家设置,将颜色空间选择为伽马空间。
2.2导入ZxRender插件
在 unity 菜单选择资源 -> 导入包 -> 自定义包,选择 ZxRender.unitypackage ,然后点击全部导入。
在工程面板找到 ZxRender 目录,进入 Demo 目录,双击打开示例场景。
2.3选择目标设备
- 选中示例场景中的 Main Camera 游戏对象,在属性面板中找到 ZxRender 组件,将设备选择为 ZX_Real 。
- 各选项与设备类型对应关系如下:
ZX_Real:臻像X-Real全息光场平板;
ZX_D32100:臻像32寸100度全息光场屏;
ZX_D65060:臻像65寸60度全息光场屏;
ZX_D65075:臻像65寸75度全息光场屏;
ZX_D65100:臻像65寸100度全息光场屏。
2.4景深与焦距
- 安全框:场景窗口中用红白线条标识出来的棱台是设备的景深范围,在这个参考范围内的模型,经过渲染之后在光场全息屏上能看到较为清晰的结果。这个范围我们称之为安全框。
- 零平面:安全框中白色线条标识的平面称为零平面,完全位于该屏幕的点是最清晰的,但是也没有出入屏效果。
- 前景深:较小的红色方框标识的平面称为前景深,它与零平面之间的距离称为出屏距离,在这个范围内的点能在光场全息屏上看到出屏效果。
- 后景深:较大的红色方框标识的屏幕称为后景深,它与零平面之间的距离称为入屏距离,在这个范围内的点在光场全息屏上体现为入屏效果。
- 焦距:相机到零平面的距离称为焦距。焦距可以自由调节,通过修改 ZxRender 的焦距属性的值即可调整焦距和零平面的位置。
位于零平面上的点,经过渲染之后在臻像全息光场屏上是最清晰的,向前或向后远离零平面,能带来 3D 立体效果,但同时随着距离的增加,当超过安全框标识的范围时,会逐渐产生失焦的效果。
2.5设置蒙板(非必要)
蒙板仅在查看交织预览图时需要设置。生成内容或打包程序时无需蒙版,可忽略蒙版报错信息。
- 在场景面板选中 Main Camera,在属性面板中找到 ZxKnit 组件,可以看到当前正在使用的蒙板是
C:\\ProgramData\\zxkj\\Mask.png
这是默认的蒙板存放路径。- 如果你的电脑中没有这个路径或文件,ZxKnit 组件会提示一个错误,在 C 盘下创建该目录,并将蒙板文件拷贝到该目录即可,如果是臻像的设备,蒙板文件会在出厂前配置好。
- 点击选择蒙版按钮也可以手动选择蒙版文件。
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录制与截图
- 在编辑器中选择臻像科技 -> 录制截图菜单,打开录制截图窗口。
- 点击截图按钮可以捕获当前的多视点图纹理,点击格式下拉框可选择保存的图片格式。
- 点击录制按钮可以录制一段视频,录制时长默认为 5 秒,最多不能超过 30 秒。录制帧率目前支持 24 帧和 30 帧。录制功能支持三种录制模式:
Only Frames:仅录制单帧,不合成视频;
Remove Frames:合成视频,并移除单帧;
Keep Frames:合成视频,并保留单帧。
如果勾选“跳过已存在的帧”,在录制时,如果同名的帧已存在,则不会重复录制。当录制模式选择后两者时,可以设置视频的名称,格式和编码以及视频质量。
在录制过程中,点击取消可以取消录制。
注意: 录制的视频合成功能需要使用到ffmpeg,需要自行去官网下载安装 ffmpeg,并将ffmpeg 命令的目录配置到 Path 环境变量。
2.8关于插件
- 在菜单栏选择臻像科技 -> 关于插件打开关于窗口,点击在线文档按钮可以查看在线帮助文档,点击访问官网可以查看臻像科技官网。
三、自定义开发
新建 unity 3D 核心模板工程,导入 ZxRender 插件。切换到游戏窗口,设置好目标设备的分辨率,以 X-Real 为例,分辨率设置为 1536×2048 。
找到默认场景中的主相机,在检查器面板中点击“添加组件”,选择 zxkj->ZxRender 脚本,将 ZxRender 组件添加到主相机。
该组件会自动在主相机下创建一个子相机,如果不存在的话。
ZxCamera 对象上必须要有两个组件:Camera 和 ZxCamera。添加 ZxRender 组件时会自动设置好该组件。
回到 Main Camera 对象,继续添加 ZxKnit 组件。点击添加组件,选择 zxkj->ZxKnit 组件。
将 ZxKnit 组件拖放到 ZxRender 组件中的 Zx Knit 属性中。
如果你电脑的 C:\ProgramData\zxkj 目录下没有蒙版,ZxKnit 会提示错误,点击选择蒙版按钮选择一张蒙版图。
回到场景编辑窗口,向场景中添加一些立方体模型,将他们摆放在红色方框内靠近零平面的位置。
- 点击运行按钮,即可查看交织图。
3.1自定义对焦
- 如果需要动态调整焦距,可以使用 ZxRender 插件提供的 ZxFocus 组件。在 Main Camera 上点击添加组件,选择 zxkj->ZxFocus 脚本。
- 在 ZxFocus 组件中找到 Focal Handler 消息,运行模式选择 Editor And Runtime ,并将 ZxRender 组件拖放到对象属性上。
- 回调函数选择 ZxRender 的 SetFocalDistance 函数。
- 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);
}
}
- 在场景中新建一个空物体,将上述脚本挂载到新建的空对象上。找到 ZxCamera 对象,将 PrintCameraPosition 函数添加到 Render Callback 回调。
- 运行程序,观察控制台正在输出相机位置。
需要注意的是,回调在每次渲染单视点图之前调用,不宜执行比较耗时的操作!
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 表示出/入屏距离和屏幕物理宽度的比例,调整他们会看到场景中安全框的变化。
高级模式下的参数需要根据设备真实参数调整,否则会看到错误的光场效果!