在 2018 年的 WWDC 上,Apple 宣布推出新的 USDZ 文件格式。
https://developer.apple.com/videos/play/wwdc2018/603/
关于创建 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 工作?
如果是这样,请分享步骤。
最佳答案
更新时间:2021 年 6 月 24 日 。
Reality Composer 中的 USDZ Export
命令
usdzconvert
命令在 Xcode 13, 12, 11
usdzconvert ~/Desktop/file.gltf -diffuseColor albedo.png -metallic brass.jpg
因此,如果您想使用
USDPython
工具 ,您需要使用以下终端命令创建一个 Shell 资源文件 .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 脚本,它将以下 Assets 转换为 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.
# DO USE usdzconvert 0.62
# or
# DO USE usdzconvert 0.64
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
,即可查看转换后的 0x251812231343 属性和结果,编辑您自己的纹理元数据文件。您甚至可以使用内置 IBL 选项在各种照明和环境条件下预览 .usdz
对象。从 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 中的
.usdz
命令xcrun usdz_converter file.obj file.usdz -color_map color.jpg -ao_map ao.png
这是您可以在终端中看到的完整选项列表,输入
xcrun usdz_converter
:-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
关于swift - 如何使用 Xcode 转换器创建 USDZ 文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50846627/