Three.js: USDおよびUSDZ形式のサポートを追加します

作成日 2018年06月05日  ·  22コメント  ·  ソース: mrdoob/three.js

ユニバーサルシーンディスクリプション(USD)ファイル形式と本日WWDCで発表される今後のUSDZ形式に対するThree.jsのサポートを得るのは素晴らしいことです。

USDZ仕様書: https ://graphics.pixar.com/usd/files/USDZFileFormatSpecification.pdf(この形式の詳細は今後数か月以内に発表されると思います)

Enhancement Loaders

最も参考になるコメント

それは、Appleが彼らのプラットフォームでのみ機能する排他的な3Dフォーマットで、ハイエンドの贅沢な選択肢であると主張し続けることができるようにするためです...

私はここで疑いの恩恵をもっと与えたいと思っています-彼らは私たち(threejs + Web開発者)とは異なる「ランタイム」フォーマットの目標を持っており、結果として異なる選択をすることができます。 特に、最大15MBのUSDランタイムをiOSにバンドルするということは、ネイティブランタイムなしでUSDZをロードすることが非常に難しいことを気にしないことを意味し、Webアプリケーションにモデルへのアクセスを提供せず、ただ開くだけで問題ないようです。代わりに、ネイティブアプリでそのままモデル化します。

「ハイエンドラグジュアリー」では、AppleのiOS QuickLookビューアはメタリック/ラフネスPBRマテリアルをサポートし、マテリアルモデルはglTF2.0が現在サポートしているものとほぼ同等です。 将来的にglTF2.0で計画され、 https://github.com/mrdoob/three.js/issues/16977で説明されている追加のマテリアル機能は、AppleのUSDZビューアが現在サポートしているものを超えます。

私が「AppleのUSDZビューア」について言及するのは、それが事実上、人々がUSDZによって意味しているように見えるからです。 ただし、USDZ形式は、技術的には単なるzip形式のUSDファイルであり、一般的なマテリアルモデルから完全にカスタムのシェーダーまでほとんどすべてを含めることができます。 AppleのビューアはUSDの小さなサブセットをサポートしており、そのサブセットは明確に定義されていませんが、見つける可能性のある最良の要約はここにあります: https

レンダリングの忠実度に関しては、モデルビューアがthreejsでglTFモデルを表示し、iOS Quick LookでUSDZバージョンを開く手段を提供し、視覚的な結果は非常に似ていることを指摘しておきます。 このページはいくつかの直接比較を提供しますが、残念ながら現在はダウンしています。

いずれにせよ、ここでAppleの悪意のある目標を覆す以外の理由がなければ、いつかUSDZをサポートする必要があると思います。

https://github.com/mrdoob/three.js/issues/14219#issuecomment-395107896を参照して

全てのコメント22件

これは有効な機能リクエストですが、私は個人的にApple / Pixarを理解していません。 glTFだけでなく、新しいファイル形式を導入しているのはなぜですか? USD / USDZglTFよりも優れていることを誰かが説明できますか?

米ドルのドキュメント: http

これは有効な機能リクエストですが、私は個人的にApple / Pixarを理解していません。 なぜ彼らはglTFだけでなく、新しいファイル形式を導入しているのですか? 誰かがUSD / USDZがglTFよりも優れていることを説明できますか?

私は同意します、それの一部は私が考える政治です。 しかし、それは別の議論です:)

USDは数年前から存在しています—映画で一般的に使用されており、ランタイム送信の明白な選択ではありません。 私が知る限り、USDZはそのラッパーです。 Appleは現時点ではあまり詳細を明らかにしていない。 おそらく彼らはそれをより実行時間に適したものにする計画を持っているか、あるいはWWDCでのメッセージングが実際にそれをどのように使用しているかに関してちょうど不明確だったのかもしれません。 いずれにせよ、私たちはおそらくもっと多くの情報を待つ必要があると思います。

誰かがTHREE.USDZLoaderを寄付することに興味があるなら、ぜひ。 🙂しかし、これまでに見つけたすべてのドキュメントは、FBXやFBX SDKと同様に、フォーマットが解析用の公式(C ++ / Python)ライブラリに非常に密接に関連していることを示唆しています。 したがって、それらをWASMでWebフレンドリーにできない限り、three.jsでUSDZサポートを実装し、時間の経過に伴う形式の変更に対応することは、これらのライブラリの利点がなければ、非常に時間のかかるプロセスのように見えます。

好奇心から、 https://developer.apple.com/arkit/gallery/から「RetroTV」ファイルを単純なzipのように開いてみました。 .usdzの拡張子を.zipに変更し、OSに通常のオープン手順を実行させることで、.usdzを「アーカイブ解除」しました。 おそらく、 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ファイル–バイナリ形式」(https:// graphicsの_CrateFileFormat_を参照)。 pixar.com/usd/docs/USD-Glossary.html)形式。

ASCIIでエンコードされた.usdaもあります。これは、ローダーを作成するのがおそらく簡単です。

このためのいくつかのやることの大まかな概要として、ローダーは最低限、JSでZipファイルを抽出し、.usda(および場合によってはバイナリCrate .usdcも)を理解することを検討します。

こんにちは@richardmonette 、私はUSDZとUSDA形式についていくつかの調査を行い、概念実証のglTFからUSDZへのコンバーターを作成しました。 おそらくそれはあなたの研究に役立つでしょう: httpshttpshttps

つまり、ジオメトリは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ファイルに直接書き込むことができます(これは、実際には、私の概念実証の良い次のステップになる可能性があります)。 プロジェクトの寄稿者がUSDCファイルをusdcatデコードした後、USDAファイルを送ってくれたので、ARギャラリーの例のファイル構造を知っています。

AppleがUSDZ QuickLookを提供することの要点は、WebGL、DOM、およびJavascriptの使用を完全にバイパスし、ARkit2.0でシーンを直接使用することです。
これは、Apple / Pixar技術に基づくrOSへの単なるマイルストーンです。
後で対話性/スクリプト可能性を追加すると、必要なWeb-UIはさらに少なくなります。

ジオメトリに非常に効率的なOpenSubDivパッチを使用し、モバイルMetalに移植されたPixar USDは、間もなくHighEnd PC-VRWebVRよりも優れたパフォーマンスを発揮します。
ファイル形式としてではなく、全体としてのエクスペリエンス作成/プレゼンテーション/(-インタラクション)パイプライン。

したがって、私見では、 WebGL2パイプラインにインポーターを追加するよりも、AR / VRエディターからUSDZをエクスポートし、AndroidとWindowsでUSDトレインをキャッチすることが重要です。

重要な問題は、Appleが使用するUSDを完全にサポートするには、WebXRがレガシーポリメッシュではなくSubDivパッチもサポートする必要があるということです。

@pixelpartnerあなたはちょっと私を失いました。

ローダーがブラウザーにネイティブに組み込まれていない限り、JavaScriptでローダーを構築すると役立つように思われます。

クイックルックは高度に最適化されていると思いますが、ブラウザーでUSDZアセットを使用してインタラクティブコンテンツを作成するための今後の道は何ですか?

これは有効な機能リクエストですが、私は個人的にApple / Pixarを理解していません。 なぜ彼らはglTFだけでなく、新しいファイル形式を導入しているのですか? 誰かがUSD / USDZがglTFよりも優れていることを説明できますか?

最近、製品表示ソフトウェアに取り組んでいる誰かとチャットしました。彼らはglTFとUSDZにエクスポートしているので、彼にこれについてどう思うか尋ねました。 彼の見解は、AppleがARKit2.0 / SceneKitを介したプラットフォームでのみ機能する排他的な3D形式で、ハイエンドの贅沢な選択肢であると主張し続けることができるようにするためです。 標準のglTF形式を採用すると、ここでの目標に反して実行されます。彼らは、glTFが(まだ?)サポートしていないPBR材料特性により、_their_形式の方が優れており、より高品質の結果が得られると主張できるようにしたいと考えています。

three.jsをAppleの製品と同じレンダリング標準にするには、16977、おそらく#14051が必要になる可能性がありますが、glTFの現在の状態または将来の計画がこれにどのように関連しているかはわかりません。

いずれにせよ、ここでAppleの悪意のある目標を覆す以外の理由がなければ、いつかUSDZをサポートする必要があると思います。

それは、Appleが彼らのプラットフォームでのみ機能する排他的な3Dフォーマットで、ハイエンドの贅沢な選択肢であると主張し続けることができるようにするためです...

私はここで疑いの恩恵をもっと与えたいと思っています-彼らは私たち(threejs + Web開発者)とは異なる「ランタイム」フォーマットの目標を持っており、結果として異なる選択をすることができます。 特に、最大15MBのUSDランタイムをiOSにバンドルするということは、ネイティブランタイムなしでUSDZをロードすることが非常に難しいことを気にしないことを意味し、Webアプリケーションにモデルへのアクセスを提供せず、ただ開くだけで問題ないようです。代わりに、ネイティブアプリでそのままモデル化します。

「ハイエンドラグジュアリー」では、AppleのiOS QuickLookビューアはメタリック/ラフネスPBRマテリアルをサポートし、マテリアルモデルはglTF2.0が現在サポートしているものとほぼ同等です。 将来的にglTF2.0で計画され、 https://github.com/mrdoob/three.js/issues/16977で説明されている追加のマテリアル機能は、AppleのUSDZビューアが現在サポートしているものを超えます。

私が「AppleのUSDZビューア」について言及するのは、それが事実上、人々がUSDZによって意味しているように見えるからです。 ただし、USDZ形式は、技術的には単なるzip形式のUSDファイルであり、一般的なマテリアルモデルから完全にカスタムのシェーダーまでほとんどすべてを含めることができます。 AppleのビューアはUSDの小さなサブセットをサポートしており、そのサブセットは明確に定義されていませんが、見つける可能性のある最良の要約はここにあります: https

レンダリングの忠実度に関しては、モデルビューアがthreejsでglTFモデルを表示し、iOS Quick LookでUSDZバージョンを開く手段を提供し、視覚的な結果は非常に似ていることを指摘しておきます。 このページはいくつかの直接比較を提供しますが、残念ながら現在はダウンしています。

いずれにせよ、ここでAppleの悪意のある目標を覆す以外の理由がなければ、いつかUSDZをサポートする必要があると思います。

https://github.com/mrdoob/three.js/issues/14219#issuecomment-395107896を参照して

ここで言及したいのは、Appleが「贅沢な選択であると主張する」以外にUSDをサポートする理由があるということです。 @ Mugen87は、「USD / USDZがglTFよりも優れていることを誰かが説明できますか?」と尋ねます。
私が気にかけているいくつかのこと:

  • HDR /フロートテクスチャ
  • 環境マップ(UsdLuxDomeLight)
  • エリアライトと球体ライト(UsdLuxRectLightなど)
  • WebGL用の「プレビューサーフェス」を備えたシェーダーマテリアル(OSL / MDL)

私のユースケースは、同じシーンの説明をWebGLとハイエンドレンダリングパイプラインにロードすることです。もちろん、外観は異なり、いくつかの置換が行われます。

@garyoの照明と環境は、実際の環境をシミュレートするために、ARビューアによって処理されます。
このビデオでは、それらがサポートするマップ(アルベド、メタリック、ラフネス、ノーマル、アンビエントオクルージョン、放射)について説明します。
https://developer.apple.com/videos/play/wwdc2018/603/

私が見たいのは、three.jsからのUSDAエクスポーターです。これにより、3つのプロジェクトで作成/構成したモデルを保存して、ARで表示できます。
「model-view」には、iOSで表示する場合に、USDZモデルの代替を指定するためのタグが含まれています。
https://modelviewer.dev/

Appleが他の誰も使用していないフォーマットを採用したのは本当に残念であり、どこでもネイティブにサポートされていません(Blenderではベータエクスポータが利用可能です)。 したがって、既存のすべてのモデルを手動で変換する以外に選択肢はありません。 モデルの全範囲で同じテクスチャを使用する場合、テクスチャを含める必要があるという事実も苦痛です。 確かに彼らは外部参照を持つことができますか?
これは実際にはちょっとした寄せ集めの形式であり、Pixar仕様のジオメトリとマッピングのみを利用し、それらを画像ファイルと一緒に圧縮します。
glTF / glbの方がはるかに優れていて、どこにでも1つのモデルしか必要ありません...
彼らが目指しているeコマースの分野では、iOSでのみ機能するWebエクスペリエンスを望んでいる顧客はいないでしょう。 いつものように、私たちはすべての猿の仕事とメンテナンスをしなければなりません。

@garyo

私のユースケースは、同じシーンの説明をWebGLとハイエンドのレンダリングパイプラインにロードすることです。

待って、webglにusd(z)をロードする方法はありますか?

USDZの機能セットは最近iOS13.4(およびRealityComposer 1.4(133+))で大幅に増加しました

Appleは、現在他のソフトウェアが解釈できず、単に無視する可能性のある多くのUSDスキームを追加しました。
RealityComposerのほとんどすべてのインタラクティブ機能が.realityシーンファイルに保存されるだけでなく、この新しいUSDフレーバーでエクスポートすることもできます。
私の頭のてっぺんのいくつかの新しいUSD機能:
バウンディングをトリガーし、エリアをタップまたは入力します
グループ化されたアニメーションアクション、順番におよび/または並行して
Text Geometrieは、文字列、フォント、サイズを使用する新しいタイプのPrimによってオンザフライで作成されます

これは新しい時代を開きます。 開発者は、任意のプラットフォームでPixar使用ツールとライブラリ(C ++ / python 2.6 / python 3.x)を使用して、コンテンツを表示したりインタラクティブなエクスペリエンスを作成したりできるUSDファイルを作成できるようになりました。
明らかに、テストにはまだiDeviceが必要です。

-
よろしくお願いします(検疫を終了し、ホームオフィスに滞在するだけです)
興奮したトーマス

アム2020年4月14日午後8時25 umのschrieb themightyatom [email protected]
@garyo https://github.com/garyo照明と環境は、実際の環境をシミュレートするために、ARビューアによって処理されます。
このビデオでは、それらがサポートするマップ(アルベド、メタリック、ラフネス、ノーマル、アンビエントオクルージョン、放射)について説明します。
https://developer.apple.com/videos/play/wwdc2018/603/ https://developer.apple.com/videos/play/wwdc2018/603/
私が見たいのは、three.jsからのUSDAエクスポーターです。これにより、3つのプロジェクトで作成/構成したモデルを保存して、ARで表示できます。
iOSで表示する場合に、USDZモデルの代替を指定するためのタグが含まれています。
https://modelviewer.dev/ https://modelviewer.dev/
Appleが他の誰も使用していないフォーマットを採用したのは本当に残念であり、どこでもネイティブにサポートされていません(Blenderではベータエクスポータが利用可能です)。 したがって、既存のすべてのモデルを手動で変換する以外に選択肢はありません。 モデルの全範囲で同じテクスチャを使用する場合、テクスチャを含める必要があるという事実も苦痛です。 確かに彼らは外部参照を持つことができますか?
これは実際にはちょっとした寄せ集めの形式であり、Pixar仕様のジオメトリとマッピングのみを利用し、それらを画像ファイルと一緒に圧縮します。
glTF / glbの方がはるかに優れていて、どこにでも1つのモデルしか必要ありません...


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信するか、GitHub https://github.com/mrdoob/three.js/issues/14219#issuecomment-613604756で表示するか、 https://github.com/notifications/unsubscribe-auth/AAAR6X5SXAY32JAPYL5V44TRMSTBTANCNFSM4FDHSXWQの登録を解除して

USDまたはUSDZ用のWeb互換パーサーを知りません。 WebGLまたは別のAPIでのレンダリングは問題ではなく、複雑なファイルのコンテンツを解析します。このタスクは、OpenSubdivやMaterialXなどの依存関係を持つ公式のUSDランタイムによって最適に処理されます。

これで、すべての開発者が、任意のプラットフォームでPixar使用ツールとライブラリ(C ++ / python 2.6 / python 3.x)を使用してUSDファイルを書き込むことができます。

どのプラットフォームでもUSDファイルを読み取れると便利です。 🙂技術的な理由から、機能的なthree.jsの実装は今のところありそうにないと思います。 誰かが暇な時間に恵まれているなら、私の提案は、OpenSubdiv(WASM?)またはMaterialX(THREE.NodeMaterial?)の実装に取り​​組むことです。これらは、USDパーサーがなくてもそれ自体で役立つからです。 。

@garyo

私のユースケースは、同じシーンの説明をWebGLとハイエンドのレンダリングパイプラインにロードすることです。

待って、webglにusd(z)をロードする方法はありますか?

いいえ、それが私が探しているものです。 シーン(オブジェクト、ライト、マテリアル、カメラ、アニメーションなど-すべて)があり、プレビューなどのために、同じシーンを任意の形式でWebGLに(three.js経由で)ロードできるようにしたいと考えています。最終レンダリング用のBlenderのように。 glTFは今のところ私の最善のオプションですが、上記のもの(エリアライトなど)をサポートしていません。glTFの人々は、実際のシーンではなくラストマイルをデバイスに向けているため、機能を追加することを躊躇していることを理解しています。移行。
オプションを探しているだけです。

@garyo Colladaが法案に合うかもしれないように

@themightyatom数年前にColladaを調べましたが、再検討する必要があるかもしれません。 ありがとう。 (当時、私はGodotの議論、PBRのサポートなしなど、変更された可能性のある議論に確信を持っていました。)

@garyo Colladaは、すべて異なるプラットフォームで作業しているゲーム開発者間でアセットを転送するために設計されました。 それは実行可能な配信形式ではありませんが、それが意味することを非常にうまく実行します:)
私は幸運にも、イタリアでそのクリエイターの1人であるReneArnaudと1週間過ごすことができました。 これは「GPUの観点から」書かれており、通常、仕様の変更をサポートする最初の形式です。 (OpenGL、DirectXなど)。

https://github.com/google/usd_from_gltfをエクスポーターとして統合することは非常に価値があると思います。 米ドルを開くことができることは私にとってそれほど重要ではありません。

USDZ(ロードまたはエクスポート)で役立つことを行うには、USDSDKが必要になります。 glTF_の_USDは、依存関係としてUSD SDKを必要としますが、SDKはWebではサポートされていません。 Appleは、Webブラウザを離れてネイティブのAR Quick Lookアプリケーションに移動することでこれを回避しますが、それは一般的にWebの解決策とは言えません。

このページは役に立ちましたか?
0 / 5 - 0 評価