Могу ли я конвертировать USDZ в сплошную сетку, такую как STL
Я использовал приложение ios для создания файла usdz с использованием arkit, но теперь я хочу преобразовать сканирование в твердую 3d-модель, такую как stl или obj. Есть ли приложение IOS или Mac, которое позволяет для этого преобразования. Я не могу найти ни одного приложения, которое может открыть их, кроме xcode и preview, но ни одно из них не позволяет мне экспортировать в 3d модель.
1 ответ
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 и распаковал пример 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
}
Спасибо! Именно то, что я искал. Я создал сценарий Mac OS для автоматизации этого в Терминале. Я также сделал что-то подобное в быстром действии Automator для запуска из Finder с помощью RightClick в файле, но не смог найти способ прикрепить это здесь.
#!/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);
}
Просто откройте файл.USDZ или USDC в XCODE
Если вы распаковали.zip, вы сохраните файл.USDC и папку с именем "0", которая содержит все текстуры, материалы, альфа-канал в.PNG.
После открытия.USDZ или.USDC в XCODE >> File >> Export
Вы можете напрямую выбирать основные форматы.OBJ,.STL и многие другие.