支持皮克斯USD格式:USD Unity SDK预览版现已推出
大名鼎鼎的皮克斯工作室推出了Universal Scene Description简称USD,这是一种专为大型资源管线设计的文件格式,特别注重并行工作流程。苹果最近也采用了这种格式,发布了使用USDZ文件格式的增强现实应用程序。
USD Unity SDK已经作为Unity预览版资源包现已推出,该资源包将大幅扩展了现有USD格式与Unity的集成效果。本文我们将介绍USD Unity SDK的功能和使用方法。
安装USD Unity SDK
获取USD Unity SDK,请点击Window > Package Manager,打开资源包管理器,在Advanced选项选中“Show preview packages”,搜索USD,然后单击Install按钮。
USD导入器被设计为使用线性颜色空间,因此要确保场景的颜色空间设为线性。
USD Unity SDK要求对Standalone Player版本有.NET 4.x API兼容性,目前该兼容性仅限于OSX系统和Windows系统,请在Project Settings中进行设置。
最后,启用最高保真度的顶点蒙皮,在Unity 2019及更高版本中,项目的Quality设置内Skin Weights应该设为Unlimited,如下图所示。
示例场景
我们提供了多个示例场景,展示如何使用USD资源包和运行时组件。
在使用Unity 2019.1及更高版本时,资源包的示例项目可以通过资源包管理器获取,并可以直接导入项目。对于较早的Unity版本,示例项目可以在Film & TV Toolbox代码库作为资源套件获取。
Film & TV Toolbox代码库:
https://github.com/Unity-Technologies/film-tv-toolbox/tree/master/UsdSamples
系统要求
USD资源包支持在Windows系统和OSX系统使用,包括编辑器和Player的功能,并兼容Unity 2018.3(Unity 2018.3.4f1及更高版本)和Unity 2019.1(Unity 2019.1.0b2及更高版本)。
导入和导出资源
USD Unity SDK安装完成后,新的顶层USD菜单可以让开发者能导入和导出USD资源。
所有USD支持的文件类型都能进行导入,包括:.usd格式、.usda (ASCII / 文本)格式、.usdc (二进制)格式和Alembic .abc 格式。
资源可以作为预制件导入以实现最大的重用性;作为游戏对象导入可以快速进行处理;如果资源是动画剪辑且只需要和Timeline结合使用,也可以作为Timeline剪辑导入。
导入资源总会带有包含UsdAsset组件的根对象,该组件保存着源USD文件的路径,路径不仅可以是相对项目路径,也可以是指向有效文件位置的绝对路径。通过这种方式,可以支持Unity以项目为中心的传统工作流程和大型资源管线工作流程。
UsdAsset组件能控制导入方法和导入资源的哪些部分,该组件也提供了多个按钮:刷新USD数值的按钮、从USD文件完全重新导入的按钮、以及删除所有USD组件的按钮。Advanced高级标签页适用于需要对导入流程进行额外控制的高级用户。
摄像机
摄像机可以导入和导出,并通过Timeline制作动画。剪裁平面和摄像机投影会与摄像机位置和朝向一起保存。
材质和着色
USD资源可能包含关联几何体的材质,Unity的导入器支持二个材质系统:
Display Color(显示颜色)仅限于反照率和Alpha顶点颜色,
Preview Surface(预览表面)类似高清晰渲染管线HDRP的Lit表面着色器。
材质可以从Unity内置渲染管线,高清晰渲染管线HDRP或轻量级渲染管线LWRP中导入和导出,开发者可以使用简单的接口编写自定义导出器,自定义Unity着色器参数会在导出和导入过程中自动保留。
顶点蒙皮
USD文件为通过UsdSkel实现的顶点蒙皮的形式提供对骨骼变形支持。
当资源带有UsdSkel骨骼绑定时,它将作为SkinnedMeshRenderer自动导入到Unity。在导出带有SkinnedMeshRenderer的模型时,它将导出为UsdSkel骨骼。
下面是《The Blacksmith》演示项目的Volund示例,它被导出为USD文件,带有顶点蒙皮,并在查看USD文件的外部查看工具Usdview中渲染。
USD变体
Universal Scene Description的一个强大功能是可以创建对象的变体。皮克斯提供的USD Kitchen Set示例展示了变体如何用于实现几何体和着色变体。
下载USD Kitchen Set示例:
http://graphics.pixar.com/usd/downloads.html
在下面的示例中,选中的蜡笔可以在新旧效果的几何变体间改变,而颜色可以从多个着色变体选取。
USD Payloads
USD Payloads载荷可以构建超大型资源,提供了选择性加载和卸载场景部分的机制。当Payload载荷卸载时,数据不会保存在Unity场景或内存中的USD场景内,从而使卸载资源的过程非常高效。
使用Payloads载荷制作的USD资源最初将现实为空白内容,以确保可以根据需要逐渐加载大型场景。Payloads载荷可以使用USD菜单加载或卸载,方法是通过使用UsdPayload组件,或者在USD根游戏对象修改默认方法。
流式数据回放
USD动画缓存和骨骼动画可以使用Timeline流式传输到Unity。
每一帧动画都会根据需要从磁盘传输,从而实现大型动画缓存的高效利用。USD文件可以用作Timeline动画剪辑,以便应用于场景层级窗口的单个UsdAsset资源。
为了进一步提升性能,Playback回放已集成C# Job System,支持使用多个线程从磁盘读取数据并流式传输到Unity中。
Timeline Recorder录制器
类似流式数据回放的方法,我们可以添加Timeline USD Recorder录制器轨道,从特定帧范围采集动画。
添加录制器轨道时,右键单击已有Timeline,选择Formats.Unity.USD > Usd Recorder Track来添加新轨道,然后右键单击录制器轨道,选择Add USD Recorder Clip,添加录制器剪辑。
属性检视窗口
有时我们需要查看文件内的基础USD数据,通常我们会使用Usdview这样的外部查看工具,但是该数据也可以通过UsdPrimSource组件直接在Unity查看。
展开该组件后,我们能查看基础USD Prim上的所有属性。
我们也可以查看USD对任何属性的声明,这样有助于进行调试,而且可以了解数据是如何制作的。当这项输出属于官方模式的一部分时,它也包含关联着属性的文档。
未来展望
USD Unity SDK可以帮助你轻松设置和运行皮克斯的Universal Scene Description文件。通过使用这些工具,我们可以为Unity创建影视级别的工作管线。
USD图层能实现无障碍工作流程,使艺术家们可以对单个资源进行并行处理,不会因锁定文件而阻碍各自的工作。
我们期待开发者能够使用最新的USD格式创建出更多精彩的作品。更多Unity精彩技术经验分享和谈论,尽在Unity Connect平台(Connect.unity.com)。
推荐阅读
Unite Shanghai 2019
5月10日-12日上海,Unite大会强势回归。技术门票正在热销中,购票即获指定Asset Store资源商店精品21款资源的5折优惠券。
购票请访问:Unite2019.csdn.net
点击“阅读原文”访问Unity Connect