Могу ли я конвертировать 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 и многие другие.

введите описание изображения здесь

Другие вопросы по тегам