如何创建 .usdz 动画?

Posted

技术标签:

【中文标题】如何创建 .usdz 动画?【英文标题】:How to create a .usdz animation? 【发布时间】:2018-12-03 04:20:43 【问题描述】:

您现在可以使用与 Xcode 10 测试版捆绑的 Apple 命令行工具将 3D 模型转换为 .usdz 文件(未压缩的 zip 存档)。

.obj 文件转换为.usdz 的示例代码:

xcrun usdz_converter magnifying_glass.obj -g frame magnifying_glass.usdz 
-color_map gold-basecolor.png -normal_map gold-normal.png
-roughness_map gold-roughness.png -metallic_map gold-metallic.png

支持以下输入 3D 文件类型:

OBJ 文件 单帧 Alembic (ABC) 文件 美元文件是 .usda (ascii) 或 .usdc (binary)

据我了解,OBJ 文件本身不支持动画。

单帧 Alembic 文件也不支持单帧动画。

所以我猜你需要使用链接到一系列单帧 Alembic 或单帧 OBJ 文件的 usda 文件来生成动画。

是否有任何公开可用的文档说明如何进行此操作?

usda 文件可以使用有效负载文件来引用单帧网格。下面的示例引用了 Treasure Chest 单帧 Alembic 文件几何图形。

#usda 1.0

def "Chest_Base" (
     references = [ @./Chest.abc@</Chest_Base> ])



但我还没有找到任何具体的方法来将一系列 .obj 或单帧 alembic .abc 文件链接在一起以创建一个 10 秒的动画。

任何帮助或提示将不胜感激。

6 月 30 日编辑:

我现在已经成功地制作了 USDZ 文件的动画。我有一个live demo 这里的旋转齿轮和直升机。

基本上,我需要从 github 下载 usd 管道并在我的 mac 上构建它。您可以从here获得有关如何执行此操作的良好说明

请注意至少预留几个小时,构建本身大约需要一个小时。

之后我在美元管道包中运行了animated tutorial example。 Step5.usda(ascii usd 文件)有一个动画示例,我按照该示例使用旋转创建自己的动画。

如果您按照上面链接中的皮克斯教程创建 Step5.usda 文件,运行此 usdz 命令将创建一个简单的陀螺动画。

xcrun usdz_convertor Step5.usda animationTest.usdz

2018 年 7 月 10 日编辑:

usdz 还支持 alembic 资产(带有动画)。

我现在已经设法在 usdz 中制作了一个简单的动画(使用 alembic 文件格式)。但是,我尝试的角色的骨骼动画不起作用。

我使用 Blender 和 Modo Alembic 导出器导出了 Alembic 资产...结果相同。

UV 材质也没有正确映射到网格。 uv 缩放和映射出了点问题……材料碎片化了。在这个阶段,我不知道这是否是一个错误,或者我是否在这里做错了什么。 Apple forum上有一些关于这个uv映射问题的讨论

2018 年 9 月 8 日编辑:

这是一个快速发展的领域,我相信随着时间的推移会出现更多处理 usdz 动画创作的方法。然而,目前制作变换、骨骼、混合形状或变形动画 usdz 文件的最佳且成本最低的方法(开源)是使用托管在 GitHub 上的名为 glTF2usd 的命令行工具。

该工具可以将glTF动画文件转换为usda文件(中间文件类型),用于创建usdz文件。它还应该很快支持直接创建 usdz,无需使用 Apple 的 usdz_converter 命令行工具从 usda -> usdz 转到。

目前仅支持 1 个动画组。一些关于旋转的错误仍然存​​在,--use-euler-rotation 句柄可用于帮助更平滑的旋转。

我一直在将使用该工具创建的 usdz 动画发布到在线 usdz 画廊www.fusionar.app

【问题讨论】:

骨骼骨骼动画怎么样,我们如何构建带有骨骼动画和纹理的USDZ模型? 我尝试过带有骨骼动画的搅拌机、modo Alembic 导出器,但没有成功。在 Xcode beta 10 中打开的 Alembic 文件附有动画文件,但由于某种原因它们无法运行。我不确定如何直接使用 Usd 来制作骨骼动画……我找不到任何文档或示例。我认为目前是观望的情况。 Alembic 文件和扭曲的纹理也存在问题。 关于骨架动画的美元文档 => graphics.pixar.com/usd/docs/api/usd_skel_page_front.html。据推测,皮克斯可能会在不久的将来发布 UsdSkel 示例/教程。 XCode 10 Beta 4 似乎在转换 Alembic ABC 时向 USDA 提供了更多描述。动画似乎还没有起作用...... OBJ -> USDZ 仅支持静态网格。 Alembic (ABC) -> USDZ 仅支持变换动画(位置、旋转、缩放)。要获得骨骼骨骼动画 -> USDZ,您必须使用由 pixar 提供的完整版 Maya + USD Plugin(此建议由 USD pixar 团队提供)。鉴于 Maya 完整许可证的成本为 3,500 美元……我希望 Apple 将努力降低访问这些新框架的成本。 【参考方案1】:

更新日期:2021 年 12 月 10 日

USDZ 动画

您可以在 Autodesk Maya 2022 中轻松 import、制作动画然后导出 USDZUSDUSDAUSDC 模型,并预装 Pixar Renderman 或 Maya USD 插件。您需要做的就是知道如何在 Maya 中 animate 您的模型(无论是 Asset Animation 还是 Transform Animation),另一个 – 就像说“奶酪”一样简单。

此外,USDZ 中的简单 Transform Animation 模型在 Apple Reality Composer 中也是可能的。

为此,只需将 USDZ 模型拖放到 Reality Composer 的场景中,应用您需要的任何行为,然后将结果导出为 USDZ 文件。

USDZ 架构

如果您喜欢 Python 脚本,您可以使用 USDZ Schemas 应用简单的变换动画。

带有动画的FBX

在 Maya 2022 中创建动画后,使用菜单烘焙动画:

Edit -> Keys -> Bake Simulation

然后将您的场景导出为.fbx

File –> Export All (option box) –> FBX Export (dropdown menu)

现在是时候使用以下终端命令为 Xcode 13/12/11 转换您的 FBX 文件了:

usdzconvert ~/Desktop/model.fbx -v

如果您使用的是 Xcode 10,终端中的命令如下所示:

xcrun usdz_converter ~/Desktop/model.fbx ~/Desktop/model.usdz -v

关于如何在终端中使用usdzconvert 命令的详细说明您可以看到HERE。

【讨论】:

你如何在你的 mac 上预览 .usdz 文件?显示在 Xcode 中打开的图像? 抱歉,“预览”是什么意思?每个人都可以在 macOS Mojave 中预览usdz 格式。 Mac OS 10.14 内置了Preview 应用程序,可以播放usdz 文件(与ios 12 相同)。 或者您可以简单地选择一个文件并按Spacebar 播放您的usdz 文件。 好吧,很酷,空格键起作用了,抱歉我不知道那个快捷方式。我也在预览中查看我的 usdz 文件,但没有得到任何动画,所以我想也许我使用的预览器与你不同,但看起来我的方法有问题。我导出为 Alembic 缓存以及作为父级的定位器,然后运行 ​​xcrun usdz_converter 命令但没有得到任何动画结果。真的很令人沮丧。 感谢您的帮助,但我仍然无法为我的 .usdz 获得任何动画。也许如果我概述了我的流程,您可能会看到我做错了什么。 1. 全部导出到 Alembic - 在我的情况下,这会导出平移和旋转。然后,我将 .abc 导入回 Maya 以确保它正常工作。 2. 运行 .abc 文件的 xcrun 命令以创建它所做的 .usdz,文件大小与 .abc 相似。将 .usdz 拖放到 xcode 中,但不获取动画。尝试将组节点添加到网格 alembic 导出,但 .usdz 仍然不保留动画。有什么想法吗?【参考方案2】:

现在 Apple 提供了一种更简单的方法来转换几乎任何文件(我建议在 Blender 中使用 glTF/ glb 作为导出选项):

Reality Converter

它是 2021 年 1 月 发布的一个简单的 GUI 工具,您将文件拖放到其中,它会给您一个 usdz 文件。包括网格、材质和动画。对于download,您需要一个 Apple 开发者帐户。

【讨论】:

以上是关于如何创建 .usdz 动画?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 SceneKit 动画在加载时立即播放?

从搅拌机导出的 USDZ 模型损坏

如何使用纹理将 fbx 转换为 usdz

如何添加/乘以 USDZ 格式的纹理?

从 USDZ 文件到 glTF 文件的转换

USDZ 模型在 SceneKit 中有孔,但在 QuickLook 中没有