我可以将 USDZ 转换为实体网格,例如 stl
Can I convert a USDZ to solid mesh such as stl
我使用 ios 应用程序使用 arkit 创建 usdz 文件,但现在我想将扫描件转换为实体 3d 模型,例如 stl 或 obj。是否有允许此转换的 ios 或 mac 应用程序。除了 xcode 和预览,我找不到任何可以打开它们的应用程序,但都不允许我导出到 3d 模型。
ModelIO
can,至少在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
文件(来自官方 documentation)。
如果要导出 mac 上的文件,请将文件扩展名更改为 .zip
,解压缩文件并使用 ModelIO
导出 .stl
文件。
打开Xcode,新建一个游乐场,选择macOS作为平台。我已经从 Apple's Quick Look Gallery 下载了一个测试文件,并在我的 Downlaods 目录中将一个示例解压缩到 stratocoaster_usdz/
。然后使用下面的代码:
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
}
谢谢!正是我要找的。
我创建了一个 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);
}
直接打开XCODE
中的.USDZ或USDC文件即可
如果您解压了 .zip,您将保留一个 .USDC 文件和一个名为“0”的文件夹,其中包含 .PNG 中的所有纹理、材料和 alpha。
一旦在 XCODE>> 文件 >> 导出
中打开 .USDZ 或 .USDC
您可以直接选择主要的 .OBJ .STL 格式和许多其他格式
我使用 ios 应用程序使用 arkit 创建 usdz 文件,但现在我想将扫描件转换为实体 3d 模型,例如 stl 或 obj。是否有允许此转换的 ios 或 mac 应用程序。除了 xcode 和预览,我找不到任何可以打开它们的应用程序,但都不允许我导出到 3d 模型。
ModelIO
can,至少在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
文件(来自官方 documentation)。
如果要导出 mac 上的文件,请将文件扩展名更改为 .zip
,解压缩文件并使用 ModelIO
导出 .stl
文件。
打开Xcode,新建一个游乐场,选择macOS作为平台。我已经从 Apple's Quick Look Gallery 下载了一个测试文件,并在我的 Downlaods 目录中将一个示例解压缩到 stratocoaster_usdz/
。然后使用下面的代码:
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
}
谢谢!正是我要找的。 我创建了一个 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);
}
直接打开XCODE
中的.USDZ或USDC文件即可如果您解压了 .zip,您将保留一个 .USDC 文件和一个名为“0”的文件夹,其中包含 .PNG 中的所有纹理、材料和 alpha。
一旦在 XCODE>> 文件 >> 导出
中打开 .USDZ 或 .USDC您可以直接选择主要的 .OBJ .STL 格式和许多其他格式