2024年12月2日 (現地時間) – Khronos Group は、glTF Sample Viewer 1.1 のリリースを発表しました。
glTF Sample Viewer 1.1 がリリース
glTF sample viewerは、Khronos 3D Formats Working Groupによって開発されたオープンソースのJavaScriptビューアです。
このビューアは、glTFの最新機能をハイライトするもので、glTFファイルをウェブブラウザで直接レンダリングし、glTFを使用する他のJavaScriptプロジェクトに簡単に統合することができます。
この度Khronosは、3Dレンダリングとユーザーインターフェイスを専門とするソフトウェア会社であるUX3Dと緊密に協力し、大幅な機能性とユーザビリティの向上を実現したビューアのバージョン1.1をリリースしました。
以下では、Khronos 3D Formats ワーキング グループの glTF-Sample-Viewer プロジェクトに取り組んでいる、UX3DのエンジニアPatrick Härtl 氏とMathias Kanzler氏によって共有されているglTF Sample Viewer 1.1の新機能の内容を紹介したいと思います。
レンダラの埋め込みを容易にするリポジトリの再構築
glTF Sample Viewerを統合するプロジェクトが増加する中、埋め込みを効率化するために、適切に設計されたプロジェクト構造がますます重要になっています。
そこで、Viewerのレンダラーをユーザーインターフェイスから切り離すことが重要視されました。
Sample Viewer プロジェクトはもともと一体的に開発されており、レンダラーとユーザーインターフェイスが明確に分離されていませんでした。このため、glTF Sample Viewer リポジトリをクローンする際、レンダラーだけが必要なプロジェクトでも、依存関係の多いユーザーインターフェイスをダウンロードする必要がありました。
このアップデートにより、glTF レンダラー用の独立した git リポジトリが git サブモジュールとして作成されました。glTF サンプル ビューアのメイン リポジトリにはユーザー インターフェイスのみが含まれるため、レンダラーを大規模なプロジェクトにはるかに柔軟に統合できるようになりました。
WebPサポートが追加
glTF 2.0のコア規格は、よく知られているPNGとJPEGの画像フォーマットを サポートしており、glTFの拡張(extension)により、さらにいくつかのフォーマットが可能になりました。
各フォーマットは、異なるユースケースに適しています。例えば
- PNG はロスレス画像圧縮を提供するため、表面法線を表すテクスチャに適しています。
- JPEG は非可逆圧縮を提供し、適切な品質でアセットのサイズを縮小します。
■EXT_texture_webp
glTFの拡張機能EXT_texture_webpによって、PNGやJPEGよりも現代的な画像フォーマットであるWebPのサポートが可能になりました。
WebPは、PNGやJPEGよりもファイルサイズを小さくするために、VP8キーフレームエンコーディングと同じ方法を使用して、可逆圧縮と非可逆圧縮の両方をサポートしています。例えば、Googleの開発者の調査によると、WebPは、同程度の画質レベルで、JPEGと比較してファイルサイズを25%から34%削減することがわかっています。
このSample Viewerのアップデートにより、WebP画像フォーマットのサポートが追加され、開発者はWebPを使用したglTFモデルを簡単にテストし、他の画像フォーマットとビジュアル品質を比較することができます。
■KHR_texture_basisu
KHR_texture_basisu拡張は、プラットフォームに依存しない超圧縮テクスチャのサポートを提供し、GPUネイティブのブロック圧縮テクスチャフォーマットにその場でトランスコードすることができます。
これらのテクスチャはGPU上で圧縮されたままであるため、PNG、JPEG、またはWebP画像に比べてGPUメモリと電力消費が大幅に削減され、パフォーマンスが向上します。
モバイルサポートの強化
このアップデートにより、モバイル機器での glTF サンプルビューアの動作が強化されました。
■デフォルトでアクティブになるフルスクリーンモードが導入
以前は、画面幅の制限により、一部のデバイスではユーザー インターフェイスが表示されず、他のデバイスでは、浮動小数点テクスチャのハードウェア サポートがないため、まったくレンダリングできませんでした。
モバイルインターフェースの問題を解決する方法は、シンプルであることで、水平方向のスクリーンが小さいデバイスでは、デフォルトでアクティブになるフルスクリーンモードが導入されました。
このアプローチは、利用可能なスクリーンスペースを最大化することで、アセットのレンダリングを重点的に表示します。ユーザーはワンクリックでコントロールパネルにアクセスでき、デスクトップでビューアを実行するのと同じ機能を利用できます。
■レンダリング問題の解決
レンダリングの問題は、以前はビューアが、チャンネルあたり32ビットのテクスチャを使用し、照明設定を事前に計算するためにハイダイナミックレンジの環境画像に依存していたことに起因していました。
デフォルトでWebGL 2.0は32ビット深度でのテクスチャフィルタリングまたはフレームバッファターゲットをサポートしておらず、32ビットテクスチャ用の拡張機能はモバイルデバイスではサポートされていないことがよくあります。この場合、テクスチャリソースとして使用する前に、32ビットの浮動小数点値を16ビットの浮動小数点値に変換し、テクスチャの精度をチャンネルごとに16ビットに下げます。Firefoxの実験的なバージョンでは、JavaScriptで16ビットfloatで構成される配列をサポートしており、32ビットfloatから16ビットfloatテクスチャへの自動変換が可能です。
最終的に、16ビットfloatを使っても32ビットfloatを使っても、視覚的に顕著な違いがないことがわかったので、処理効率のために、現在はデフォルトで16ビットfloatテクスチャが使用されています。また、16ビットfloatテクスチャでさえサポートされていないまれなケースでは、8ビット値にフォールバックします。これは、標準範囲外の値をクランプし、クランプによって失われたすべての照明エネルギーを累積します。この累積値は、シェーダのスケーリング係数として使用され、失われたエネル ギーを近似的に補正します。
上記のユーザーインターフェイスへのこれらの適応と、レンダリング能力を十分に考慮することで、glTFサンプルビューアはほとんどのモバイルデバイスで使用できるようになりました。
KHR_animation_pointerのサポートが追加
glTF KHR_animation_pointer拡張は、JSONポインタによって指定された任意の変更可能なプロパティをアニメーション化するための汎用メソッドを提供することによって、glTFシーン内のアニメーション機能を大幅に強化するものです。
これにより、これまで利用可能だった位置、回転、スケールのアニメーションよりもはるかに柔軟なアニメーションが可能になります。例えば、発光色、ライトの強度、カメラの FoV、エクステンションの任意のプロパティをアニメーション化できるようになりました。
glTF Sample ViewerのV1.1リリースでは、プログラマがプロパティがアニメートされているかどうかを知る必要がないように、組み込みのJavascriptゲッターとセッターを通して、KHR_animation_pointerサポートが将来に向けて実装されています。
変数にアクセスすると、現在正しい値が返されますが、プロパティを設定すると、その値は上書きされることになります。したがって、アニメーションと無関係なコードは変更されません。KHR_animation_pointerサポートを
ビューアの新しい拡張機能に追加するには、アニメーション可能なプロパティの名前を配列で定義するだけです。
glTF Validator 統合
glTF Sample Viewerは、glTFアセットが視覚的に正しく表示されるかどうかをチェックするためによく使われますが、これまでは、表示されているglTFファイルが正しく形成されているかどうかをチェックすることはできませんでした。今回のアップデートにより、glTF Validatorがビューアに統合されました。
オープンソースのglTF Validatorは、glTFまたはGLBファイルに含まれるすべてのデータをチェックします。例えば、zfarがznearより小さいとエラーにしたり、頂点の数が描画モードと合っていないと警告したり、空のノードや何の効果もない値について有益なコメントを与えたりといったことをしてくれます。
Validator には新しい Viewer タブからアクセスでき、現在表示されている glTF に関連するエラー、警告、情報コメントが表示されます。Validatorタブのアイコンは問題の数を表示し、深刻度によって色分けされます(エラーは赤、警告は黄、有益なコメントは白)。ファイルに問題がない場合は、通常のアイコンが表示されます。JSON glTF Validator レポートをクリップボードにダウンロードまたはコピーすることも可能です。
この追加により、glTF サンプル ビューアーは、glTF ファイルを表示するだけでなく、検証するための堅牢なツールとなりました。
利用について
glTF Sample Viewer 1.1の新機能は Webで確認でき、Viewerパッケージは npm にアップロードされているので、簡単に統合できます。
バグを見つけたり、機能の要望がある場合、オープンソースの GitHub repoレポにissueを作成するか、プルリクエストを提出することができます。
コメント