swift ARKit -将场景另存为USDZ?

aamkag61  于 2022-10-31  发布在  Swift
关注(0)|答案(1)|浏览(130)

现在我可以将我在ARKit中创建的内容保存为场景文件,并在以后重新加载。

sceneView.scene.write(to: path, options: nil, delegate: nil, progressHandler: nil)

但是是否可以将场景另存为USDZ文件并将其加载回来?

3ks5zfa0

3ks5zfa01#

首先,阅读下面的SO帖子是非常有帮助的。

从SCN以编程方式创建USDZ

在SceneKit中,有一个write(to:options:delegate:progressHandler:)示例方法可以实现这个功能(您唯一需要做的就是为URL指定一个文件格式)。

let path = FileManager.default.urls(for: .documentDirectory,
                                     in: .userDomainMask)[0]
                                         .appendingPathComponent("model.usdz")

sceneView.scene.write(to: path)

使用SceneKit.ModelIO将OBJ转换为USDZ

但是,如果需要将OBJ模型转换为USDZ,则必须先导入SceneKit.ModelIO模块,然后使用以下代码:

let objAsset = MDLAsset(url: objFileUrl)
let destinationFileUrl = URL(fileURLWithPath: "path/Scene.usdz")
objAsset.exportToUSDZ(destinationFileUrl: destinationFileUrl)

终端进近

在Xcode 11/12/13/14中,您可以通过命令行将几种常用输入格式转换为USDZ:第一个是第四个是第一个,第五个是第六个,第七个是第八个。

usdzconvert file.gltf

在Xcode 10中,仅**OBJ-to-USDZ、单帧ABC-to-USDZUSD(x)-to-USDZ**转换可通过命令行进行:

xcrun usdz_converter file.obj file.usdz

正在为RealityKit准备文件

在Xcode 12+中,你可以使用***Reality Composer***软件将任何RC场景转换为usdz文件格式(直接从用户界面)。此外,还有一个***Reality Converter***独立应用程序。
当然,您也可以使用Autodesk Maya 2020|小行星2022| Maya USD plugin的2023版本。

相关问题