在 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 命令

swift - 如何使用 Xcode 转换器创建 USDZ 文件?-LMLPHP

usdzconvert 命令在 Xcode 13, 12, 11

usdzconvert ~/Desktop/file.gltf -diffuseColor albedo.png -metallic brass.jpg
  • 在 macOS Monterey、Big Sur 和 Catalina 中,默认的命令 shell 是 ZSH

  • 因此,如果您想使用 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 :
  • 对象
  • gltf
  • fbx
  • abc
  • 美国农业部
  • 美元
  • 美元

  • 如果您需要使用 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)
        }
    }
    
    swift - 如何使用 Xcode 转换器创建 USDZ 文件?-LMLPHP

    Xcode 10 中的 .usdz 命令
    xcrun usdz_converter file.obj file.usdz -color_map color.jpg -ao_map ao.png
    
  • 在 macOS Mojave 中,默认的命令 shell 是 BASH

  • 这是您可以在终端中看到的完整选项列表,输入 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/

    10-14 02:23