Three.js: Добавить поддержку форматов USD и USDZ

Созданный на 5 июн. 2018  ·  22Комментарии  ·  Источник: mrdoob/three.js

Было бы здорово получить поддержку Three.js для формата файлов универсального описания сцены (USD) и будущего формата USDZ, анонсированного сегодня на WWDC.

Документ спецификации USDZ: https://graphics.pixar.com/usd/files/USDZFileFormatSpecification.pdf (я предполагаю, что более подробная информация об этом формате появится в ближайшие месяцы)

Enhancement Loaders

Самый полезный комментарий

это для того, чтобы Apple могла и дальше претендовать на звание лидера роскоши с эксклюзивным 3D-форматом, который работает только на их платформе ...

Я готов дать больше пользы от сомнения здесь - у них другие цели для формата "времени выполнения", чем у нас (threejs + веб-разработчики), и в результате они могут делать другой выбор. В частности, объединение среды выполнения ~ 15 МБ в iOS означает, что им все равно, что загрузка USDZ _ без_ собственной среды выполнения является чрезмерно сложной, и, похоже, они в порядке, не предоставляя веб-приложению никакого доступа к модели, а просто открывая вместо этого модель как есть в собственном приложении.

Что касается «роскоши высокого класса», программа просмотра Apple QuickLook для iOS поддерживает материалы PBR с металлическими / шероховатыми поверхностями, а модель материала в значительной степени эквивалентна тому, что сегодня поддерживает glTF 2.0. Дополнительные функции материалов, запланированные для glTF 2.0 в будущем и описанные в https://github.com/mrdoob/three.js/issues/16977 , выходят за рамки того, что сейчас поддерживают программы просмотра Apple USDZ.

Я упоминаю «зрителей Apple's USDZ», потому что де-факто именно это люди, похоже, подразумевают под USDZ. Но формат USDZ технически представляет собой просто заархивированный файл USD и может содержать практически все, от общей модели материала до полностью настраиваемого шейдера. Зрители Apple поддерживают небольшое количество долларов США, и это подмножество четко не определено, но лучшее резюме, которое вы, вероятно, найдете здесь: https://github.com/google/usd_from_gltf#compatibility.

Что касается точности рендеринга, я бы отметил, что программа просмотра моделей отображает модели glTF с помощью threejs и предоставляет средства для открытия версии USDZ в iOS Quick Look, и визуальные результаты очень похожи. Эта страница содержит несколько прямых сравнений, хотя, к сожалению, сейчас она недоступна.

В любом случае, если не по какой-либо другой причине, кроме как подорвать гнусные цели Apple здесь, я думаю, что нам нужно будет поддержать USDZ в какой-то момент.

См. Https://github.com/mrdoob/three.js/issues/14219#issuecomment -395107896.

Все 22 Комментарий

Это действительный запрос функции, но я лично не понимаю Apple / Pixar. Почему они вводят новый формат файлов, а не просто используют glTF ? Может кто-нибудь объяснить, что USD / USDZ делает лучше, чем glTF ?

Документация по доллару США: http://graphics.pixar.com/usd/docs/index.html

Это действительный запрос функции, но я лично не понимаю Apple / Pixar. Почему они вводят новый формат файлов, а не просто используют glTF? Может кто-нибудь объяснить, что у USD / USDZ лучше, чем у glTF?

Я согласен, мне кажется, что отчасти это политика. Впрочем, это отдельная тема :)

Доллар США существует уже пару лет - он обычно используется в кино и не является очевидным выбором для передачи во время выполнения. Насколько я могу судить, USDZ - это оболочка вокруг этого. Apple не предоставила подробностей на данный момент; возможно, у них есть какой-то план, чтобы сделать его более подходящим для времени выполнения, или, может быть, обмен сообщениями на WWDC был просто неясным в отношении того, как они на самом деле его используют. В любом случае я думаю, что нам, вероятно, нужно дождаться дополнительной информации.

Если кто-то заинтересован в предоставлении THREE.USDZLoader , то непременно. 🙂 Но вся документация, которую я нашел до сих пор, предполагает, что формат очень тесно связан с официальными (C ++ / Python) библиотеками для его анализа, подобно FBX и FBX SDK. Поэтому, если их нельзя сделать веб-дружественными с помощью WASM, реализация поддержки USDZ в three.js и отслеживание изменений формата с течением времени выглядит очень трудоемким процессом без использования этих библиотек.

Из любопытства я попытался открыть файл «Ретро ТВ» с https://developer.apple.com/arkit/gallery/, как если бы это был простой zip-архив. Я «разархивировал» .usdz, переименовав его расширение в .zip, а затем заставил мою ОС выполнить обычную процедуру открытия. Предположительно, чего-то подобного можно добиться с помощью https://gildas-lormeau.github.io/zip.js/

Вот что я вижу, когда «разархивирую» usdz:

screen shot 2018-07-04 at 2 17 46 pm

Итак, текстуры - это просто PNG, на которые, вероятно, ссылаются из этого .usdc, что является следующей проблемой. Согласно https://graphics.pixar.com/usd/docs/Converting-Between-Layer-Formats.html , «файлы .usdc - двоичный формат» находятся в ящике (см. _Crate File Format_ в https: // graphics. pixar.com/usd/docs/USD-Glossary.html) формат.

Существует также .usda, который закодирован в ASCII, что, по-видимому, было бы проще написать загрузчик.

В качестве приблизительного наброска некоторых задач для этого, как минимум, загрузчик будет рассматривать извлечение Zip-файла в JS, а затем также понимать .usda (и, возможно, двоичный Crate .usdc).

Привет @richardmonette , я провел небольшое исследование по USDZ и формату USDA и написал экспериментальный конвертер glTF в USDZ. Возможно, это будет полезно для вашего исследования: https://github.com/timvanscherpenzeel/gltf-to-usdz. Вы можете увидеть демонстрацию здесь: https://twitter.com/domenicopanacea/status/1011292393801420800 или попробовать сами здесь: https://timvanscherpenzeel.github.io/gltf-to-usdz/ (требуется iOS 12).

Вкратце: геометрия преобразуется в OBJ , текстура с металлической шероховатостью разделяется по каналам, а текстуры переворачиваются по оси Y. Из этого динамически создается файл USDA который передается в usdz_converter для создания окончательного usdz .

Я знаю, что некоторые люди хотят написать прямой конвертер в USDZ, но на данный момент о формате USDC известно не так много (также с точки зрения декодирования).

Привет, @TimvanScherpenzeel , спасибо за ваше сообщение и работайте над этим!

Рассматривали ли вы использование USD Python API (https://graphics.pixar.com/usd/docs/Hello-World---Creating-Your-First-USD-Stage.html)? Мне было интересно, можно ли пропустить этап .obj и, используя Python, прочитать glTF и перейти прямо в .usda / c таким образом?

У меня было много проблем с настройкой USD, и я еще не нашел времени, чтобы исправить эту проблему (я думаю, что это как-то связано с установкой нескольких версий Python и во время компиляции он ссылается на неправильный Python).

Вы действительно можете записать файл OBJ прямо в файл USDA (это действительно может быть хорошим следующим шагом в моем доказательстве концепции). Я знаю файловую структуру примеров AR Gallery, потому что участник моего проекта отправил мне файлы USDA после того, как файлы USDC декодировали их с помощью usdcat .

Вся суть Apple, предоставляющая USDZ QuickLook, заключается в том, чтобы полностью обойти использование WebGL, DOM и Javascript и напрямую использовать сцену с ARkit2.0.
Это просто веха для ROS, основанной на технологиях Apple / Pixar.
Когда они позже добавят интерактивность / возможность создания сценариев, потребуется еще меньше Web-UI.

Pixar USD, использующий высокоэффективные патчи OpenSubDiv для геометрии, перенесенный на мобильный Metal, скоро превзойдет HighEnd PC-VR WebVR.
Не как формат файла, а как целый конвейер создания опыта / презентации / (- взаимодействия).

Так что, IMHO, важнее экспортировать USDZ из редакторов AR / VR и для Android и Windows, чтобы поймать поезд долларов, чем добавлять импортера в конвейер WebGL2 .

Важным вопросом является то, что WebXR должен также поддерживать патчи SubDiv вместо устаревших полимешей, чтобы полностью поддерживать доллары США, используемые Apple.

@pixelpartner, ты меня

Мне кажется, что если загрузчик не встроен изначально в браузеры, было бы полезно создать его на JavaScript ..

Я уверен, что быстрый просмотр сильно оптимизирован, но каков путь вперед для создания интерактивного контента с использованием ресурсов USDZ в браузере?

Это действительный запрос функции, но я лично не понимаю Apple / Pixar. Почему они вводят новый формат файлов, а не просто используют glTF? Может кто-нибудь объяснить, что у USD / USDZ лучше, чем у glTF?

Я недавно разговаривал с кем-то, кто работал над программным обеспечением для отображения продуктов, они экспортируют в glTF и USDZ, поэтому я спросил его, что он думает по этому поводу. Его взгляд вкратце: так, чтобы Apple могла продолжать претендовать на звание лидера роскоши, с эксклюзивным 3D-форматом, который работает только на их платформе через ARKit2.0 / SceneKit. Принятие стандартного формата glTF будет противоречить их целям здесь, они хотят иметь возможность утверждать, что их формат лучше и обеспечивает более качественные результаты из-за свойств материала PBR, которые glTF (пока?) Не поддерживает.

16977 и, возможно, # 14051, вероятно, необходимы для того, чтобы довести three.js до тех же стандартов рендеринга, что и предложения Apple, но я не уверен, как текущее состояние или планы на будущее связаны с этим.

В любом случае, если не по какой-либо другой причине, кроме как подорвать гнусные цели Apple здесь, я думаю, что нам нужно будет поддержать USDZ в какой-то момент.

это для того, чтобы Apple могла и дальше претендовать на звание лидера роскоши с эксклюзивным 3D-форматом, который работает только на их платформе ...

Я готов дать больше пользы от сомнения здесь - у них другие цели для формата "времени выполнения", чем у нас (threejs + веб-разработчики), и в результате они могут делать другой выбор. В частности, объединение среды выполнения ~ 15 МБ в iOS означает, что им все равно, что загрузка USDZ _ без_ собственной среды выполнения является чрезмерно сложной, и, похоже, они в порядке, не предоставляя веб-приложению никакого доступа к модели, а просто открывая вместо этого модель как есть в собственном приложении.

Что касается «роскоши высокого класса», программа просмотра Apple QuickLook для iOS поддерживает материалы PBR с металлическими / шероховатыми поверхностями, а модель материала в значительной степени эквивалентна тому, что сегодня поддерживает glTF 2.0. Дополнительные функции материалов, запланированные для glTF 2.0 в будущем и описанные в https://github.com/mrdoob/three.js/issues/16977 , выходят за рамки того, что сейчас поддерживают программы просмотра Apple USDZ.

Я упоминаю «зрителей Apple's USDZ», потому что де-факто именно это люди, похоже, подразумевают под USDZ. Но формат USDZ технически представляет собой просто заархивированный файл USD и может содержать практически все, от общей модели материала до полностью настраиваемого шейдера. Зрители Apple поддерживают небольшое количество долларов США, и это подмножество четко не определено, но лучшее резюме, которое вы, вероятно, найдете здесь: https://github.com/google/usd_from_gltf#compatibility.

Что касается точности рендеринга, я бы отметил, что программа просмотра моделей отображает модели glTF с помощью threejs и предоставляет средства для открытия версии USDZ в iOS Quick Look, и визуальные результаты очень похожи. Эта страница содержит несколько прямых сравнений, хотя, к сожалению, сейчас она недоступна.

В любом случае, если не по какой-либо другой причине, кроме как подорвать гнусные цели Apple здесь, я думаю, что нам нужно будет поддержать USDZ в какой-то момент.

См. Https://github.com/mrdoob/three.js/issues/14219#issuecomment -395107896.

Я просто хочу упомянуть здесь, что есть причины для поддержки долларов США, помимо того, что Apple «претендует на звание предмета роскоши». @ Mugen87 спрашивает: «Может ли кто-нибудь объяснить, что USD / USDZ лучше, чем glTF?»
Несколько вещей, которые меня волнуют:

  • HDR / плавающие текстуры
  • Карты окружения (UsdLuxDomeLight)
  • Области и сферические источники света (UsdLuxRectLight и т. Д.)
  • Материалы шейдеров (OSL / MDL) с "поверхностью предварительного просмотра" для WebGL

Мой вариант использования - загрузка одного и того же описания сцены в WebGL и в высокопроизводительный конвейер рендеринга - понимание, что внешний вид будет отличаться, конечно, и произойдет некоторая замена.

@garyo освещение и окружающая среда обрабатываются программой просмотра
Это видео дает вам представление о том, какие карты они поддерживают (альбедо, металлик, шероховатость, нормаль, окружающая окклюзия, эмиссионная).
https://developer.apple.com/videos/play/wwdc2018/603/

Я бы хотел увидеть экспортера USDA из three.js, чтобы вы могли сохранять модели, которые вы создали / сконфигурировали в трех проектах, для просмотра в AR.
"model-view" включает тег для указания альтернативы модели USDZ при просмотре на iOS.
https://modelviewer.dev/

Очень жаль, что Apple выбрала формат, который никто больше не использует, и нигде изначально не поддерживается (бета-экспортер доступен для Blender). Таким образом, у вас нет выбора, кроме как вручную преобразовать все существующие модели. Тот факт, что вы должны включать свои текстуры, также является проблемой, если вы используете одну и ту же текстуру для всего диапазона моделей. Неужто у них могут быть внешние ссылки?
Это действительно что-то вроде солянки, в которой используются только геометрия и отображение из спецификаций Pixar, и они сжимаются вместе с вашими файлами изображений.
glTF / glb было бы намного лучше, и нам нужна была бы только ОДНА модель для всех ...
В сфере электронной коммерции, к которой они стремятся, ни один покупатель не захочет иметь опыт работы в Интернете, который работает ТОЛЬКО для iOS. Как обычно, нам придется делать всю обезьянью работу и обслуживание.

@garyo

Мой вариант использования - загрузка одного и того же описания сцены в WebGL и в высокопроизводительный конвейер рендеринга.

подождите, а есть ли способ загрузить usd (z) в webgl?

Набор функций USDZ недавно резко увеличился с выходом iOS 13.4 (и RealityComposer 1.4 (133+)).

Apple добавила множество схем в долларах, которые в настоящее время никакое другое программное обеспечение не может интерпретировать и может просто игнорировать.
Практически вся интерактивная функциональность RealityComposer теперь не только сохраняется в файлах сцены .reality, но также может быть экспортирована в этом новом варианте USD.
Некоторые новые особенности доллара в моей голове:
Ограничение триггера, коснитесь или введите область
сгруппированные анимационные действия, последовательно и / или параллельно
Текстовая геометрия создается на лету с помощью нового типа Prim, который принимает строку, шрифт и размер.

Это открывает новую эру. Теперь любой разработчик может использовать инструменты и библиотеки Pixar (C ++ / python 2.6 / python 3.x) на любой платформе для записи файлов в долларах США, которые могут либо просто отображать контент, либо создавать интерактивные взаимодействия.
Очевидно, вам все еще понадобится iDevice для тестирования.

-
С наилучшими пожеланиями (только что закончился карантин, остаюсь в домашнем офисе)
Возбужденный Томас

Am 14.04.2020 гм 20:25 schrieb themightyatom [email protected] :
@garyo https://github.com/garyo освещение и окружение обрабатываются программой просмотра дополненной реальности в попытке имитировать реальную среду.
Это видео дает вам представление о том, какие карты они поддерживают (альбедо, металлик, шероховатость, нормаль, окружающая окклюзия, эмиссионная).
https://developer.apple.com/videos/play/wwdc2018/603/ https://developer.apple.com/videos/play/wwdc2018/603/
Я бы хотел увидеть экспортера USDA из three.js, чтобы вы могли сохранять модели, которые вы создали / сконфигурировали в трех проектах, для просмотра в AR.
включает тег для указания альтернативы модели USDZ при просмотре на iOS.
https://modelviewer.dev/ https://modelviewer.dev/
Очень жаль, что Apple выбрала формат, который никто больше не использует, и нигде изначально не поддерживается (бета-экспортер доступен для Blender). Таким образом, у вас нет выбора, кроме как вручную преобразовать все существующие модели. Тот факт, что вы должны включать свои текстуры, также является проблемой, если вы используете одну и ту же текстуру для всего диапазона моделей. Неужто у них могут быть внешние ссылки?
Это действительно что-то вроде солянки, в которой используются только геометрия и отображение из спецификаций Pixar, и они сжимаются вместе с вашими файлами изображений.
glTF / glb было бы намного лучше, и нам нужна была бы только ОДНА модель для всех ...

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub https://github.com/mrdoob/three.js/issues/14219#issuecomment-613604756 или откажитесь от подписки https://github.com/notifications/unsubscribe-auth/AAAR6X5SXAY32JAPYL5VANCTRMSTB

Я не знаю ни одного совместимого с Интернетом парсера для USD или USDZ. Рендеринг в WebGL или другом API не проблема, это сложный синтаксический анализ содержимого файла - эту задачу лучше всего выполняет официальная среда выполнения USD, которая имеет зависимости, включая OpenSubdiv и MaterialX.

Теперь любой разработчик может использовать инструменты и библиотеки Pixar use (C ++ / python 2.6 / python 3.x) на любой платформе для записи файлов в долларах США.

Было бы неплохо иметь возможность читать файлы в долларах США на любой платформе. 🙂 По техническим причинам я не думаю, что в настоящий момент возможна функциональная реализация three.js. Если у кого-то есть свободное время, я бы посоветовал поработать над реализацией OpenSubdiv (с WASM?) Или MaterialX (с THREE.NodeMaterial?), Поскольку они были бы полезны сами по себе, даже без парсера долларов США. .

@garyo

Мой вариант использования - загрузка одного и того же описания сцены в WebGL и в высокопроизводительный конвейер рендеринга.

подождите, а есть ли способ загрузить usd (z) в webgl?

Нет, это то, что я ищу. У меня есть сцены (объект, источники света, материалы, камера, анимация и т. Д. - все это), и я хочу иметь возможность загружать ту же сцену в любом формате в WebGL (через three.js) для предварительного просмотра и еще кое-что. как Blender для финальных рендеров. glTF - мой лучший вариант на данный момент, но он не поддерживает вещи, о которых я упомянул выше (освещение области и т. д.). Я понимаю, что люди, работающие с glTF, не хотят добавлять больше функций, потому что они нацелены на последнюю милю на устройства, а не на настоящую сцену передача.
Просто ищу варианты.

@garyo Похоже,

@themightyatom Я заглянул в Collada пару лет назад - возможно, придется вернуться к нему. Спасибо. (В то время меня убедили такие аргументы, как аргумент Годо , отсутствие поддержки PBR и т. Д. - это могло измениться.)

@garyo Collada был разработан для передачи активов между разработчиками игр, работающими на разных платформах. Это не жизнеспособный формат доставки, но он очень хорошо выполняет то, для чего предназначен :)
Мне посчастливилось провести неделю в Италии с одним из его создателей, Рене Арно. Он написан «с точки зрения графического процессора» и, как правило, является первым форматом, поддерживающим изменения в спецификации. (OpenGL, DirectX и др.).

Я думаю, что было бы очень ценно интегрировать https://github.com/google/usd_from_gltf в качестве экспортера. Для меня гораздо менее важно иметь возможность открывать USD.

Чтобы делать что-нибудь полезное с USDZ (загрузка или экспорт), вам понадобится USD SDK. _USD от glTF_ требует SDK USD в качестве зависимости, но SDK не поддерживается в Интернете . Apple решает эту проблему, покидая веб-браузер и открывая свое собственное приложение AR Quick Look, но это вряд ли решение для Интернета в целом.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги