2023/9/30
第12回 Unity Editor と Unity PolySpatialで Apple Vision Pro の アプリ開発(Unity PolySpatial の Materialサポート編)
はじめに
今回は、Unity Polyspatial の Materialサポートについて説明します。
Apple Vision Pro について
Apple Vision Pro について、以下の記事にまとめてます。
RealityKitへのマッピング
Unityの標準シェーダーは、RealityKit上で使用しているシェーダーに変換されます。(将来、変換されるシェーダーが追加される予定です。)
URPシェーダー:Lit、Simple Lit、Unlit
ビルトイン・シェーダー:Standard
カスタムシェーダー
Unity Shader Graphで作成されたシェーダーとマテリアルはサポートしています。Unity Shader Graphで作成されたシェーダーやマテリアルはMaterialXに変換されます。Unity Shader Graphのノードの中にはMaterialXにはないものもあります。Unity Shader Graph の Editor内で、サポートされていないノードは#
で示されます。LitとUnlit、両方のルートノードがサポートされています。
RealityKit for visionOSは現在、低レベルのシェーディング言語を公開していないため、ShaderLab、Metal、その他のコードベースのシェーダは使用できません。
Unlit マテリアル
Universal Render Pipeline/Unlit
URP Unlit マテリアルでは、PolySpatialはベースマップのカラーとテクスチャプロパティ、および不透明と透明(ブレンドモードアルファ)のサーフェスタイプをサポートしています。アルファクリッピングを有効にすることができます。Thresholdが0より大きい場合、ブレンドは実行されません(アルファテストのみ)。
Unlit/Color
組み込みレンダラー・パイプラインのunlit color マテリアルでは、Main Colorプロパティがサポートされています。
Unlit/Texture
ビルトイン レンダラー パイプラインのunlit texture マテリアルでは、ベース(RGB)テクスチャがサポートされます。
Unlit/Transparent
ビルトイン レンダラー パイプラインのunlit transparentマテリアルでは、ベース(RGBA)テクスチャがサポートされています。
Lit マテリアル
Litマテリアルを使用すると、ホストシステムのイルミネーションのみがマテリアルに適用されます。たとえば、visionOSでは、現実世界ののイルミネーションをエンコードしたシステムIBLのみを適用します。Unityの内部イルミネーション(ライトマップ、ライトプローブ、および/またはダイナミックライトなど)もマテリアルに適用する場合は、PolySpatial Lightingノードに接続して、マテリアルごとにコストの高いライティングの計算を追加する必要があります。
Universal Render Pipeline/Lit
URP lit マテリアルでは、Base Map のカラーとテクスチャが尊重され、Render Face オプションとSurface Input のTilingとOffsetプロパティも尊重されます。
スペキュラ(Specular)ワークフローでスペキュラハイライト(Specular Highlights)が有効になっている場合、PolySpatialはスペキュラマップ(Specular Map)テクスチャまたは関連する色の(グレースケール)強度をサポートします。Metallicワークフローでは、PolySpatialはMetallic Mapテクスチャまたは強度をサポートし、Specular Highlightsトグルを尊重します。
どちらのワークフローでも、Smoothness 強度は尊重されますが、テクスチャチャンネルからの Smoothness(Metallic Alphaなど)はサポートされません。Normal Map はサポートされますが、法線スケールはサポートされません。同様に、Occlusion Mapはサポートされていますが、オクルージョン強度はサポートされていません。Emission カラーまたはテクスチャを指定することができます。両方が指定された場合、色はグレースケールに縮小され、乗数として動作します。
Opaque(不透明)とTransparent(アルファブレンドモード)のサーフェスタイプがサポートされています。Transparentモードでは、Preserve Specularフラグが尊重されます。アルファクリッピングを有効にすることができます。Thresholdが0より大きい場合、ブレンドは実行されません(アルファテストのみ)。
Universal Render Pipeline/Simple Lit
URP complex lit マテリアルでは、lit マテリアルでサポートされているすべてのオプションに加えて、Clear Coat オプションとその Mask および Smoothness プロパティがサポートされています。
Standard
ビルドインの Standard lit マテリアルは、URP lit マテリアルとほぼ同じように Metallic ワークフローでサポートされています。Albedo テクスチャと色、Metallic マップまたは強度、Smoothness 強度(ただし Smoothness ソースは除く)が同様に尊重されます。Normal Map と Occlusion がサポートされています(ただし、対応する強度はサポートされていません)。また、Emissionカラーまたはテクスチャ、Main Map のTilingとOffset、Specular Highlight フラグもサポートされています。Opaque、Transparent、Fade、Cutout のすべてのレンダリング モードがサポートされています。
Standard (Specular setup)
ビルドインの Standard lit specular マテリアルは、URP lit マテリアルとほぼ同じように Specular ワークフローでサポートされています。Albedo テクスチャと色、Specular マップまたは(グレースケールの)強度、Smoothness 強度(ただし Smoothness ソースは除く)が同様に尊重されます。Normal Map[^1] と Occlusion がサポートされています(ただし、対応する強度はサポートされていません)。また、Emission カラーまたはテクスチャ、Main Map のTilingとOffset、Specular Highlight フラグもサポートされています。Opaque、Transparent、Fade、Cutout のすべてのレンダリング モードがサポートされています。
Special Purpose Materials
TextMeshPro/Distance Field
TextMeshPro/Mobile/Distance Field
TMP distance field マテリアルは、Face ColorとFace Textureプロパティのみを尊重するシェーダグラフマテリアルに変換されます。
UI/Default
UI default マテリアルは、色とテクスチャのプロパティを尊重する unlit マテリアルに変換されます。
Universal Render Pipeline/Particles/Unlit
URP unlit パーティクル マテリアルは、Base Mapのテクスチャと色、Surface Typeを尊重した非点灯素材に変換されます。
AR/Basic Occlusion
AR/Occlusion
オクルージョンマテリアルは基本的な物として変換される。
まとめ
今回は、Apple Vision Pro のアプリ開発をUnityで行う際に使用するUnity PolySpatial の Materialサポートについてまとめました。次回は、Unity PolySpatial のShader Graph について説明します。
Unity PolySpatial の 他の記事は コチラ にあります。
XR エンジニア
徳山 禎男
SIerとして金融や飲料系など様々な大規模プロジェクトに参画後、2020年にOnePlanetに入社。ARグラスを中心とした最先端のAR技術のR&Dや、法人顧客への技術提供を担当。過去にMagic Leap 公式アンバサダーを歴任。
View More