Sam*_*n T 6 xcode 3d-modelling arkit usdz
我使用 ios 应用程序使用 arkit 创建了一个 usdz 文件,但现在我想将扫描结果转换为实体 3d 模型,例如 stl 或 obj。是否有允许进行这种转换的 ios 或 mac 应用程序。除了 xcode 和预览之外,我找不到任何可以打开它们的应用程序,但都不允许我导出到 3d 模型。
ModelIO可以,至少在 iOS 中。
import ModelIO
let usdz = URL(fileURLWithPath: "model.usdz")
let asset = MDLAsset(url: usdz)
let stl = URL(fileURLWithPath: "model.stl")
try asset.export(to: stl)
Run Code Online (Sandbox Code Playgroud)
.usdz只是一个.usdc带有纹理的压缩文件(来自官方文档)。如果要在mac上导出文件,请将文件扩展名更改为.zip,解压缩文件并用于ModelIO导出.stl文件。
打开 Xcode,新建一个 Playground,选择 macOS 作为平台。我已经从Apple 的 Quick Look Gallery下载了一个测试文件,并将一个示例解压缩到stratocoaster_usdz/我的 Downlaods 目录中。然后使用以下代码:
import ModelIO
// Get the path to the Downloads directory in your home folder
let directory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first!
let usdc = URL(fileURLWithPath: "stratocaster_usdz/Stratocaster.usdc", relativeTo: directory)
// Load the usdc file that was packed in the usdz file
let asset = MDLAsset(url: usdc)
do {
let target = URL(fileURLWithPath: "stratocaster.stl", relativeTo: directory)
// Export to .stl
try asset.export(to: target)
} catch {
error
}
Run Code Online (Sandbox Code Playgroud)
小智 6
谢谢!正是我要找的。我创建了一个 Mac OS 脚本来在终端中自动执行此操作。我还在 Automator Quick Action 中做了类似的事情,通过右键单击文件从 Finder 运行,但无法找到一种方法将其附加到此处。
#!/usr/bin/env osascript -l JavaScript
// Save to a file, e.g. usdz2stl.js
// chmod +x usdz2stl.js
// usdz2stl.js /path/to/model.usdz
ObjC.import('ModelIO')
function run(argv) {
var inFile = argv[0];
var outFile = inFile + ".stl";
console.log("Converting " + inFile + " ...");
var usdz = $.NSURL.alloc.initFileURLWithPath(inFile);
var asset = $.MDLAsset.alloc.initWithURL(usdz);
var stl = $.NSURL.alloc.initFileURLWithPath(outFile);
asset.exportAssetToURL(stl);
console.log("Conversion Complete: " + outFile);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7496 次 |
| 最近记录: |