Могу ли я преобразовать USDZ в сплошную сетку, такую ​​как stl

Я использовал приложение ios для создания файла usdz с помощью arkit, но теперь я хочу преобразовать сканирование в твердую трехмерную модель, такую ​​как stl или obj. есть ли приложение для iOS или Mac, которое позволяет такое преобразование. Я не могу найти ни одного приложения, которое могло бы их открывать, кроме xcode и предварительного просмотра, но ни одно из них не позволяет мне экспортировать в 3D-модель.


person Samson T    schedule 22.02.2019    source источник


Ответы (3)


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, создайте новую площадку, выберите macOS в качестве платформы. Я загрузил тестовый файл из галереи Apple Quick Look и разархивировал его в 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
}
person jlsiewert    schedule 22.02.2019

Спасибо! Именно то, что я искал. Я создал сценарий 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);
}
person wr0ngway    schedule 28.09.2019
comment
Я попробовал твой сценарий. к сожалению, я получаю сообщение об ошибке: ./usdz2stl.js:440:489: ошибка сценария: ошибка в строке 16: SyntaxError: неожиданный конец сценария (-2700). Понятно: я забыл скопировать} в конце - person Jonathan; 22.04.2021

Просто откройте файл .USDZ или USDC в XCODE.

Если вы разархивировали .zip, вы сохраните файл .USDC и папку с именем «0», которая содержит все текстуры, материалы, альфа-канал в .PNG.

После открытия .USDZ или .USDC в XCODE >> Файл >> Экспорт

Вы можете напрямую выбирать основные форматы .OBJ, .STL и многие другие.

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

person user12805200    schedule 29.01.2020
comment
К сожалению, экспорт его в DAE или OBJ приводит к сбою Xcode. - person atulkhatri; 27.04.2020