我使用 ios 应用程序使用 arkit 创建了一个 usdz 文件,但现在我想将扫描转换为实体 3d 模型,例如 stl 或 obj。是否有允许此转换的 ios 或 mac 应用程序。除了 xcode 和预览之外,我找不到任何可以打开它们的应用程序,但也不允许我导出到 3d 模型。
8229 次
3 回答
7
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)
.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
}
于 2019-02-22T17:22:18.433 回答
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);
}
于 2019-09-28T18:18:44.727 回答
4
只需直接在 XCODE 中打开 .USDZ 或 USDC 文件
如果您已解压缩 .zip,您将保留一个 .USDC 文件和一个名为“0”的文件夹,其中包含 .PNG 中的所有纹理、材料和 alpha。
在 XCODE >> 文件 >> 导出中打开 .USDZ 或 .USDC
您可以直接选择主要的 .OBJ .STL 格式和许多其他格式
于 2020-01-29T09:33:45.453 回答