现在我可以将我在ARKit中创建的内容保存为场景文件,并在以后重新加载。
sceneView.scene.write(to: path, options: nil, delegate: nil, progressHandler: nil)
但是是否可以将场景另存为USDZ文件并将其加载回来?
3ks5zfa01#
首先,阅读下面的SO帖子是非常有帮助的。
在SceneKit中,有一个write(to:options:delegate:progressHandler:)示例方法可以实现这个功能(您唯一需要做的就是为URL指定一个文件格式)。
write(to:options:delegate:progressHandler:)
let path = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] .appendingPathComponent("model.usdz") sceneView.scene.write(to: path)
但是,如果需要将OBJ模型转换为USDZ,则必须先导入SceneKit.ModelIO模块,然后使用以下代码:
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-USDZ和USD(x)-to-USDZ**转换可通过命令行进行:
OBJ-to-USDZ
ABC-to-USDZ
USD(x)-to-USDZ
xcrun usdz_converter file.obj file.usdz
在Xcode 12+中,你可以使用***Reality Composer***软件将任何RC场景转换为usdz文件格式(直接从用户界面)。此外,还有一个***Reality Converter***独立应用程序。当然,您也可以使用Autodesk Maya 2020|小行星2022| Maya USD plugin的2023版本。
usdz
1条答案
按热度按时间3ks5zfa01#
首先,阅读下面的SO帖子是非常有帮助的。
从SCN以编程方式创建USDZ
在SceneKit中,有一个
write(to:options:delegate:progressHandler:)
示例方法可以实现这个功能(您唯一需要做的就是为URL指定一个文件格式)。使用SceneKit.ModelIO将OBJ转换为USDZ
但是,如果需要将
OBJ
模型转换为USDZ
,则必须先导入SceneKit.ModelIO
模块,然后使用以下代码:终端进近
在Xcode 11/12/13/14中,您可以通过命令行将几种常用输入格式转换为USDZ:第一个是第四个是第一个,第五个是第六个,第七个是第八个。
在Xcode 10中,仅**
OBJ-to-USDZ
、单帧ABC-to-USDZ
和USD(x)-to-USDZ
**转换可通过命令行进行:正在为RealityKit准备文件
在Xcode 12+中,你可以使用***Reality Composer***软件将任何RC场景转换为
usdz
文件格式(直接从用户界面)。此外,还有一个***Reality Converter***独立应用程序。当然,您也可以使用Autodesk Maya 2020|小行星2022| Maya USD plugin的2023版本。