如何使用 Xcode 转换器创建 USDZ 文件?
Posted
技术标签:
【中文标题】如何使用 Xcode 转换器创建 USDZ 文件?【英文标题】:How to create USDZ file using Xcode converter? 【发布时间】:2018-11-23 14:10:06 【问题描述】:在 2018 WWDC Apple announced 推出新的 USDZ 文件格式。
关于创建 USDZ 文件的内容如下:
为了创建您自己的 usdz 文件,一个 usdz_converter 已作为 Xcode 10 beta 的一部分捆绑在一起。它是一个命令行工具,用于从 OBJ 文件、单帧 Alembic (ABC) 文件、USD 文件(.usda 或 usd.c)创建 usdz 文件
基本的命令行是
xcrun usdz_converter myFile.obj myFile.usdz
我已安装 Xcode 10 测试版,但无法运行,甚至无法在 2018 年 6 月 4 日提供的 Xcode 10 测试版包(内部版本 10L176w)中找到 usdz_converter。
注意:我还在 macOS highSierra 上运行,我还没有安装 macOS Mojave 10.14 beta……但我认为这不是原因。
还有其他人能够让这个 xcrun usdz_converter 工作吗?
如果是,请分享步骤。
【问题讨论】:
运行该命令会得到什么?我没有要尝试转换的文件,但是当我运行命令时,它会打印出使用说明,因此它至少在那里。 xcrun:错误:无法找到实用程序“usdz_converter”,不是开发人员工具或路径中 确保 xcrun 正在寻找正确的位置,方法是使用xcode-select
将活动开发者目录设置为 Xcode-beta.app 中的目录,或者将其提供到 usdz_converter
的完整路径
好的,我有几个 Xcode 版本……所以现在就来看看。谢谢
xcode-select -p /Applications/Xcode.app/Contents/Developer 应该是 /Applications/Xcode-beta 10.app/Contents/Developer - 谢谢
【参考方案1】:
更新日期:2021 年 12 月 20 日。
Xcode 13、12、11 中的usdzconvert
命令
在 macOS Monterey、Big Sur 和 Catalina
USDZ converter
拥有丰富的命令集,并且支持比之前版本更多的输入格式进行转换。但在使用之前您需要下载USDZ Tools。并且不要忘记为 Python usdz 工具设置一个全局变量。 终端中的新命令如下所示:
usdzconvert ~/Desktop/file.gltf -diffuseColor albedo.png -metallic brass.jpg
在 macOS Monterey、Big Sur 和 Catalina 中,默认的命令 shell 是 ZSH。
创建外壳资源文件
如果你想使用USDPython
工具你需要创建一个Shell资源文件.zshrc
。
为此,在终端中使用change directory
命令转到主页区域:
cd /Users/<UserName>
使用parent working directory
命令检查你是否在那里:
pwd
然后输入ls
指令listing
的目录内容包括隐藏文件:
ls -a
现在您可以创建一个隐藏的.zshrc
文件了:
touch ~/.zshrc
使用以下命令打开此文件:
open ~/.zshrc
现在您可以将这些行添加到 zsh 资源文件中:
export PATH="/Users/yourUserName/usdpython/USD:$PATH"
export PATH="/Users/yourUserName/usdpython/usdzconvert:$PATH"
export PYTHONPATH="/Users/yourUserName/usdpython/USD/lib/python:$PYTHONPATH"
echo "Now I can use USDPython commands here."
保存并重启终端。
usdzconvert
是一个 Python 脚本,可将以下资产转换为 usdz
:
如需使用FBX
格式转换需下载安装FBX Python SDK。
然后在.zshrc
文件中再添加一行:
export PYTHONPATH="/Applications/Autodesk/FBXPythonSDK/2020.0.1/lib/Python27_ub:$PYTHONPATH"
保存.zshrc
文件并重启终端。
这是您可以在终端中看到的完整选项列表,请输入 usdzconvert -h
:
# DON'T USE usdzconvert 0.63 BECAUSE IT CAUSES ERRORS.
# USE usdzconvert 0.64
# or
# USE usdzconvert 0.62
outputFile Output .usd/usda/usdc/usdz files.
-h, --help Show this help message and exit.
-f <file> Read arguments from <file>
-v Verbose output.
-url <url> Add URL metadata
-copyright "copyright message" Add copyright metadata
-copytextures Copy texture files (for .usd/usda/usdc) workflows
-metersPerUnit value Set metersPerUnit attribute with float value
-loop Set animation loop flag to 1
-no-loop Set animation loop flag to 0
-m materialName Subsequent material arguments apply to this material.
-ios12 Make output file compatible with iOS 12 frameworks
-texCoordSet name The name of the texture coordinates to use for current material.
-diffuseColor r,g,b Set diffuseColor to constant color r,g,b with values in the range [0 .. 1]
-diffuseColor <file> fr,fg,fb Use <file> as texture for diffuseColor.
fr,fg,fb: (optional) constant fallback color, with values in the range [0..1].
-normal x,y,z Set normal to constant value x,y,z in tangent space [(-1, -1, -1), (1, 1, 1)].
-normal <file> fx,fy,fz Use <file> as texture for normal.
fx,fy,fz: (optional) constant fallback value, with values in the range [-1..1].
-emissiveColor r,g,b Set emissiveColor to constant color r,g,b with values in the range [0..1]
-emissiveColor <file> fr,fg,fb Use <file> as texture for emissiveColor.
fr,fg,fb: (optional) constant fallback color, with values in the range [0..1].
-metallic c Set metallic to constant c, in the range [0..1]
-metallic ch <file> fc Use <file> as texture for metallic.
ch: (optional) texture color channel (r, g, b or a).
fc: (optional) fallback constant in the range [0..1]
-roughness c Set roughness to constant c, in the range [0..1]
-roughness ch <file> fc Use <file> as texture for roughness.
ch: (optional) texture color channel (r, g, b or a).
fc: (optional) fallback constant in the range [0..1]
-occlusion c Set occlusion to constant c, in the range [0..1]
-occlusion ch <file> fc Use <file> as texture for occlusion.
ch: (optional) texture color channel (r, g, b or a).
fc: (optional) fallback constant in the range [0..1]
-opacity c Set opacity to constant c, in the range [0..1]
-opacity ch <file> fc Use <file> as texture for opacity.
ch: (optional) texture color channel (r, g, b or a).
fc: (optional) fallback constant in the range [0..1]
-clearcoat c Set clearcoat to constant c, in the range [0..1]
-clearcoat ch <file> fc Use <file> as texture for clearcoat.
ch: (optional) texture color channel (r, g, b or a).
fc: (optional) fallback constant in the range [0..1]
-clearcoatRoughness c Set clearcoat roughness to constant c, in the range [0..1]
-clearcoatRoughness ch <file> fc Use <file> as texture for clearcoat roughness.
ch: (optional) texture color channel (r, g, b or a).
fc: (optional) fallback constant in the range [0..1]
或者,您可以使用 Reality Converter 应用程序 (GUI),而不是使用命令行转换工具 (CLI)。新应用程序可以轻松地在 Mac 上转换、查看和自定义 .usdz
对象。只需拖放常见的 3D 文件格式,例如 .obj
、.gltf
和 .usd
,即可查看转换后的 .usdz
结果,使用自己的纹理自定义材质属性,并编辑文件元数据。您甚至可以使用内置 IBL 选项在各种光照和环境条件下预览您的 .usdz
对象。
Reality Composer 中的USDZ Export
命令
在 Reality Composer for Xcode 13/12 中,您可以直接从 Reality 导出
usdz
模型作曲家的用户界面。为此,您只需在 RealityComposer - Preferences 菜单中激活 USDZ 导出。
您还可以使用 AR USD Schemas,当然还有 Autodesk Maya 2022 工作流程。
从 SceneKit 的场景创建 USDZ 文件
获取 USDZ 文件的另一个好方法是使用 write(to:options:delegate:progressHandler:) 实例方法从 SCNScene 创建它。
我们看一下代码:
import ARKit
class ViewController: UIViewController
@IBOutlet var sceneView: ARSCNView!
let scene = SCNScene(named: "art.scnassets/ship.scn")!
override func viewDidLoad()
super.viewDidLoad()
sceneView.scene = scene
let path = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask)[0]
.appendingPathComponent("model.usdz")
scene.write(to: path, options: nil,
delegate: nil, progressHandler: nil)
print(path)
Xcode 10 中的xcrun usdz_converter
命令
在 macOS Mojave 10.14 和 Xcode 10 中,
USDZ converter
的参数和标志集略有不同.以下是旧命令在 Terminal 中的样子:
xcrun usdz_converter file.obj file.usdz -color_map color.jpg -ao_map ao.png
在 macOS Mojave 中,默认的命令 shell 是 BASH。
这是您可以在终端中看到的完整选项列表,请输入 xcrun usdz_converter -h
:
-g groupName [groupNames ...] Apply subsequent material properties to the named group(s).
-m materialName [materialNames ...] Apply subsequent material properties to the named material(s).
-h Display help.
-a Generate a .usda intermediate file. Default is .usdc.
-l Leave the intermediate .usd file in the source folder.
-v Verbose output.
-f filePath Read commands from a file.
-texCoordSet set The name of the texturemap coordinate set to use if multiple exist (no quotes).
-opacity o Floating point value 0.0...1.0
-color_default r g b a Floating point values 0.0...1.0
-normal_default r g b a Floating point values 0.0...1.0
-emissive_default r g b a Floating point values 0.0...1.0
-metallic_default r g b a Floating point values 0.0...1.0
-roughness_default r g b a Floating point values 0.0...1.0
-ao_default r g b a Floating point values 0.0...1.0
-color_map filePath
-normal_map filePath
-emissive_map filePath
-metallic_map filePath
-roughness_map filePath
-ao_map filePath
【讨论】:
您对只使用 Python 工具而不使用 XCode 有什么建议吗? 我被困在Error: failed to import pxr module. Please add path to USD Python bindings to your PYTHONPATH
...解决此问题的最佳方法是什么?
嗨@ChrisB!我将库重命名为 usdpython
并将其放在 Mac 的 Home
目录中。可以看到,路径如下:/Users/<UserName>/usdpython/
.
感谢@AndyJazz,快速解答!我已将文件夹usdpython
移动到我的~
文件夹,并根据上述说明将.zshrc
路径调整为:export PATH="/Users/myuser/usdpython/USD:$PATH" export PATH="/Users/myuser/usdpython/usdzconvert:$PATH" export PYTHONPATH="/Users/myuser/usdpython/USD/lib/python:$PYTHONPATH"
重新启动机器但仍然出现错误。自述文件说它是 usdzconvert 版本 0.64。我还能尝试什么?
我找到了解决办法:你需要在Rosetta模式下打开终端。然后就可以了。【参考方案2】:
您必须在 Xcode > Preferences > Locations
上启用 Xcode 10 命令行工具【讨论】:
我需要从使用 v. 9 命令行工具更改为使用 10 beta cmd 行工具【参考方案3】:您必须在 Xcode 首选项中激活命令行工具,以防它们尚未激活(这是我的情况)。请参阅此主题:
How to create a USDZ file?
【讨论】:
以上是关于如何使用 Xcode 转换器创建 USDZ 文件?的主要内容,如果未能解决你的问题,请参考以下文章