夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MRDevDays MovingPlatformModeセッションを読み解く その①

本日はイベント枠です。

 6月の頭Microsoft社によるMixedReality関連のワールドワイドなイベントMRDevDaysが開催されていました。

 実は開催前の5月ごろMicrosoftの方より筆者のYoutubeに挙げている動画を参考動画としてセッションで使用してもよいか?というようなDMがありました。

 筆者はもちろんOKを出したのですが、残念ながらMRDevDaysが平日の日本時間で深夜であったこともあり、見逃していました。    先日MRDevDaysの全セッションがYoutube上で公開されたので改めて内容を読み解いていきます。

〇MRDevDaysセッションMoving Platform Mode

www.youtube.com

Joshua Elsdonさんは今回DMで動画の使用をコンタクトいただいた方で、Microsfot researchで働いておられるようです。

〇MovingPlatformModeとは?

 HoloLens 2で移動する環境での使用を円滑にするためのHoloLens 2に備わったモードです。

 スライドでは

Moving Platform Mode(MPM) aims to allow HoloLens 2 to track well within moving environments ムービングプラットフォームモード(MPM)は、HoloLens 2が移動する環境下でもうまく追跡できるようにすることを目的としています。

〇移動環境(MovingPlatform)とは?

移動環境とは車や船などの乗り物だけではなく、高層ビルの高層階、などあらゆる動きのある場所を指します。

わずかな揺れでも発生する環境では従来ホログラムが安定しないことがあり、これを解消するためにMPMは使用されます。

 

redhologerbera.hatenablog.com

〇MPMの開発タイムライン

MPMは2019年に先行的に使用が可能になったHoloLensの中でも新しい機能です。 

 セッションでは開発においてのタイムラインが共有されました。

 開発自体はCOVID時代の2020年から2年かけチューリッヒAIとMicrosoftの本拠地があるRedmondのMixedRealityチームの合同により始まり2021年10月にコミュニティからの情報収集を目的としてインサイダービルドで先行的にリリースされました。

 筆者が最初に触ったのもこのタイミングになります。

 最初のリリースではデバイスポータル経由でのみ機能を使用することができるものでしたが、22年の2月にアプリ内で使用可能なAPIやMDMプロファイルなどと一緒にフルリリースとしてHoloLens 2自体の設定画面でオンオフができるようになりました。

 また5月にはMicrosoftとのパートナーとの実験の詳細が公開されました。

redhologerbera.hatenablog.com

〇MPMの仕組みと種類

 MPMによってどのような話題が解決されるか?

HoloLens では前頭部に搭載されている合計4つの環境カメラによって周囲の環境を計測しています。 また、それとは別にIMU(加速度センサー)によっても自己位置を推測しています。

 これらはSLAMに使用されていますが、これらのいずれかの情報をもとにより信頼性の高い情報を使用することで高性能なSLAMを実現しています。

 具体的には精度の面ではカメラのほうがより高速であるようですが、遅延という点ではIMUに利点があります。 そのためIMUによって細かいフレームの位置情報をとり、カメラで補完しているようです。

 これは逆のことも言え、カメラで行うSLAMのフレームレートの間をIMUで補完しているとも言えます。

  このSLAMの問題点として、管制が常にかかっている環境・・・つまりMovingPlatformにおいてIMUは運動量を常に計測していますが、カメラは移動しない空間をとらえているという各部センサーの誤認が生じることでSLAMのアルゴリズムが失敗し、ホログラムが安定しないという現象が発生します。

 これは人間で例えるとすると船酔いやVR酔いに近い現象がHoloLensのSLAMシステムで発生しているということを指します。  これらも体には加速度が加わっていますが、自分自身の見ている映像は固定されています。  VR酔いの場合は逆で自分自身の見ている映像は動いているにもかかわらず、本来感じるはずの加速度は感じることはありません。

 MovingPlatformModeでは慣性形をカメラとIMUでそろえるアルゴリズムが動いています。

 これはデフォルトのアルゴリズムと比べLOSTが発生しにくいようになっていますが、逆に静止環境では自分自身の移動に応じてホログラムも移動してしまうことがあるなど、不具合が発生することがあります。

 これがMovingPlatformModeがデフォルトのSLAMシステムに置き換わらない理由です。

  ユーザーや開発者自身が環境を想定し任意に切り替えて使用することになっています。

〇MPMの使用法

 現時点では3つの方法でMPMを使用する ことができます。

方法 説明
MDM 組織の管理者が管理しているデバイスで実行します。
Unity SDK(API) アプリ内でアプリ開発者が使用を促します。また状況を取得できます。
Settingアプリ HoloLens内でユーザーが自由にオンオフできます。

これらを使い分けるうえで、重要なことが誰がデバイスを管理しているのか?という点です。

 例えば船会社に所属している人が、船舶内で常に使用することを想定している場合、MDMによって管理することで不意にユーザーがオフにしてトラッキングが飛んでしまうトラブルを未然に押されることができます。

 たとえば開発者がそのアプリを移動環境で使用する前提で開発している場合はAPIで呼び出すことによってアプリを使用してアプリ内から変更できます。

 最後にユーザー自身がこの機能を知っている場合任意で切り替えることであらゆる状況に対応できます。

 本日はここまでです。  元のセッションが英語のものなので翻訳しながらにはなりますが、続きも読み解いていきます。  

HoloLens Meetup Vol.30 LT登壇しました。「HolographicRemotingで最高のグラフィックを」

本日はイベント登壇枠です。

先日HoloLens Meetup Vol.30が開催されました。

redhologerbera.hatenablog.com

ここではMicrosoft社のメタバースに関する話題やMRTK3など多くの最新情報がシェアされました。

筆者もLT登壇しましたので本日はLT登壇内容をまとめます。

〇HolographicRemotingで最高のグラフィックを

今回はグラフィックに関する話題で登壇しました。

〇HolographicRemotingとは?

HolographicRemotingはHoloLens初期から提供されている機能です。

HoloLensはWindowsOSを搭載したPCですが、HoloLens自体でアプリ開発を行うことはできません。

外部のPCを使用して開発を行いますが、この際にデバッグなどで一回一回デプロイせずにUnityEditor上で動きを再現できる機能がHolographicRemotingとなります。

redhologerbera.hatenablog.com

 またもう一つの使用方法としてHoloLensのオンボードのパワーではなくPCのパワーを使用することで非常に高性能な処理を行うことができます。

 今回は後者の利用法を使用したいくつかの事例を紹介しました。

〇高精細なレンダリング

youtu.be

今回60万ポリゴンでURPの最高グラフィックを使用し、RenderScaleを最大かつPostProcessingを使用しFPS60をキープすることができました。

RenderScaleはUnityに提供されている画像のレンダリング解像度を示すパラメータです。

値を上げることでメモリを圧迫しHoloLens単体ではFPSが急激に落ちますがPCのパワーを使用することでFPSを維持できます。

また、HoloLens単体ではMixedRealityCaptureを使用する際にクラッシュする問題がありますが、PCを使用することでMRCも使用することができるようになります。

redhologerbera.hatenablog.com

PostProcessingは後処理とも呼ばれますが、発光現象のにじみなどを描画できます。

こちらもxRにおいて非常に重い処理であると呼ばれています。

redhologerbera.hatenablog.com

〇Blender×HoloLensでリアルタイムモデリング

BlenderではVRSessionと呼ばれる機能を使用することでBlender内でVRビューを行うことができます。

redhologerbera.hatenablog.com

 実際にBlenderの世界に入り自分の目で確認できるため非常にわかりやすいですが、VRという性質上HMDをかけながらモデリングを行うことは非常に困難です。

 そこで今回HolographicRemotingを使用することでBlenderでモデリングしているモデルをリアルタイムでMR表示して現実世界で確認しながらモデリングを行う手法を紹介しました。

  youtu.be

これはUnity JPによって提供されているMeshSyncの機能とHolographicRemotingの機能を組み合わせて実現しています。

MeshSyncは過去の記事で紹介しています。

redhologerbera.hatenablog.com

 今回は以上の2つの例をシェアしました。

 リアルタイムモデリングの事例は時間をとってgitHubで提供できるようにしようと思っています。

 本日は以上になります。

HoloLens Meetup Vol.30 に参加しLT登壇をしました。

本日はイベント枠です。

本日22年6月23日HoloLens Meetup val.30**が開催されました。

〇HoloLens Meetupとは?

 HoloLens Meetupは日本のHoloLensコミュニティが主催するイベントです。

 毎回メインセッションとしてHoloLensに関する知見の共有と、LT(ライトニングトーク)枠として5分ほどでHoloLensに関する話をします。

筆者は3年間連続でLT枠として登壇させていただいています。

今回は30回目のイベントになります。

〇マイクロソフトのメタバース&MixedReality最新情報アップデート

 日本マイクロソフトの上田さん、濱口さん ニコンクリエイツの屋比久さんの登壇でした。

 先月行われたMicrsoft BuildでMicrosoftのCEOサティラ・ナディラの10個のトピックとして基調講演で公開された川崎重工のメタバースの例が共有されました。

 またニコンのMixedRealityCaptureStudioに関する情報も教諭されました。

 この3つの事例に関して共有がありました。

〇マイクロソフトの考えるメタバース

マイクロソフトはメタバースを現実世界の要素を永続的にデジタルで表示するための一連のテクノロジーととらえているようです。

 xRにとらわれず、現実世界とデジタルの世界の融合、相互作用に価値があると考えているようです。

〇メタバースの価値

 3つの価値が紹介されました。

・デジタル空間で2Dではできない人の存在を高める。   ・デジタル空間に新しい空間を無限に作れ、そこに人があるまることでコミュニティ画まれる。没入型世界の創造

・現実世界との相互作用

 これらを提供するうえで安心安全そしてオープンなプラットフォーム上に構築されることが非常に重要ととらえているようです。

 

 デバイスにとらわれず、誰もが心地よいインクルーシブなコミュニティを構築することを目指しているようです。

〇川崎重工とマイクロソフトによるインダストリアルメタバースへの取り組み

〇インダストリアルメタバースとは?

 製造業として抱えている問題に労働人口の減少により自動化が重要であるが、ロボット一台使うにも導入コストがかかるという点があります。

 これには機械台のコストのほか開発関係者が現場で作業をするというコストもあります。

 ここでデジタルツインをうまく活用してリモートで開発者が現場にいるように技術者が対応できるようにした事例が川崎重工のインダストリアルメタバースです。

news.microsoft.com

このようなインダストリアルな世界にメタバースを持ち込むことをインダストリアルメタバースと名付けたようです。

本来現場に直接向かう必要がある技術者がリモートで複数現場に対応できることで非常に効率的にかつコロナ禍の社会で有用であると感じます。

〇ニコンクリエイツによるMixedRealityCapture

MixedReality CaptureStudioに関する新しい話題が共有されました。

ニコンクリエイツは22年にニコンから誕生した映像コンテンツを作成する企業です。

 MixedRealityCaptureStudioは世界中にマイクロソフトによって提供されているボリュメトリックビデオスタジオです。

ニコンクリエイトはこの日本第一号としてマイクロソフトとパートナーとなりスタジオを提供し始めるようです。

 22年の秋に羽田空港そばにスタジオが移転し、ボリュメトリックビデオの撮影装備に加えハイスピードカメラなどニコンの持つ撮影技術を詰め込んだ複合施設としてPOLYMOTION STAGE が提供されるようです。

〇MixedRealityToolkit v3 Recap

全国的に活躍されるMRTKを切り開いておられる宮浦さんによるMRTKのRecapです。

MRTK3はMixedRealityToolkitの最新型で第3世代です。

今回はMixedRealityDevDaysで発表されたセッション

〇MixedRealityDevDaysとは?

 毎年春頃に開催されるMicrosoft社によるMRの開発技術イベントで、MRTK3はここで発表されました。

 MRTK3は現時点でプレビュー段階で、現時点では検証を目的に使用することを推奨されています。

MRTKは最初HoloLens専用に開発されていましたが、その後WindowsMixedReality イマーシブヘッドセットの登場を受けHoloLensだけではなくVRデバイスにも対応するようにMixedRealityToolkitとして改められ、その後MetaQuestなどに対応したクロスプラットフォームなMixedRealityToolkit v2として再登場、そして今回MRTK3が提供されました。

 MRTKv2の課題として挙がった点を受け、また最新のUnity、XR環境に対応するためにOpenXRに対応しています。

 

〇LT登壇

今回は筆者を含む8名がLT登壇を行いました。

筆者は「HolographicRemotingで最高のグラフィックを」というタイトルで登壇しました。

こちらは別途明日の記事として共有します。

本日は以上です。

MixedReality-GraphicsTools-Unityを触る その⑨ MaterialGallery サンプル MainMap その②

本日はMRTK3調査枠です。

現在GraphicsToolsを読み解いています。

今回はGraphicsTools/StandardシェーダーのサンプルであるMaterialGalleryサンプルシーンを見ていきます。

〇ChannelMap

チャンネルマップはMainMapsセクションでChannelMapを有効化することで使用できるようになる機能です。

ChannelMapはメタリック、オクリュージョン、発光、スムースを一つの画像する機能です。

画像としては次のようになっており、赤成分がmetallic、緑成分がオクリュージョン、青成分が発光、α値がスムースを示します。

ChannelMapを使用しない場合さびている部分もそうではない部分も全体的にmetallicがかかった見た目になっていますが、ChannnelMapを使用することで一つのマテリアルでさらに細かい見た目を調整しています。

〇Albedo Alpha Smoothness

これはAlbedo Alpha ModeSmoothnessに指定されています。

これはMainMapのAlbedoのAlpha値をどのように使用するかのパラメータで通常の透明を表すほかにMetalicとSmoothnessが使用できます。

〇Cull Off Cutout

Cull Off CutoutはCutoutでAlbedoに指定した画像のα値に応じてAlpha Cutoffの値を閾値として完全透明化を行います。

〇Rim Lit

Rim Litはリムライトのサンプルです。

リムライトとはその名の通りリム(縁)が発光する機能です。

リムライトの例 NASAより画像を引用

リムライトを使用するためにはRin Lightにチェックを入れることで使用できます。

〇Near Plane Fade

Near Plane Fadeはカメラとの距離に応じてフェードアウト、フェードインが行われる機能です。

Fade Beginを起点にFade Complateまでの距離でフェードイン、フェードアウトが行われます。

 Fade Begin >Fade Completeの場合近づくことでフェードアウトし、FadeBegin< Fade Completeの場合近づくことでフェードインします。

〇Triplanar Mapping

Triplanar Mappingはテクスチャのサンプリングに関する機能で、通常モデルの持つUVに応じて画像がサンプリングされますが、Triplanar Mappingを有効にしている場合はUnityのワールド座標に応じてorオブジェクトのローカル座標に応じてモデルの形状に依存せずテクスチャがサンプリングされます。

〇Edge Smoothing

Edge Smoothingオブジェクトにはアニメーションがアタッチされています。

このアニメーションによりEdge Smoothing ValueGradient Angleのパラメータをいじっています。

Edge Smoothing Valueは0~1で値を上げることでEdgeにぼかしが入ります。

本日は以上です。

GraphicsToolsStandardシェーダーにEmissiveMapの機能を追加する。 その② Shaderの改造

本日は昨日に引き続きGraphicsToolsのStandardシェーダー機能開発を行います。

 ここ数日でGraphicsToolsに関して調査していますが、現在GraphicsToolsへ筆者がFeatureRequestを行いイシューを立て新機能の開発を行っています。

 

github.com

 MixedRealityToolkitはMicrosoft主導でオープンソースソフトウェアとして提供、開発されています。

我々Microsoft社外の開発者でも、開発に参加することができ、これにはバグレポート、ドキュメント、クエスチョン、そして機能開発のような部類があります。

今回GraphicsToolsStandardシェーダーの新機能として、EmissitionMap(発行マップ)を提案し、リーダーであるMicrosoftのエンジニア、Cameronさんより提案に対して賛成をいただいたため開発に取り掛かっています。

 GraphicsToolsStandardシェーダーに新しいプロパティを追加し、機能を追加するにはシェーダー本体の処理の追加に加えStandardShaderGUI.csの改修を行いUnityのインスペクタにマテリアルプロパティとしての表示をカスタマイズする必要があります。

 前回はこのカスタムエディタの実装を行いました。

redhologerbera.hatenablog.com

 今回はShader本体の処理を行います。

〇GraphicsToolsStandardInput.hlsl

GraphicsToolsStandardInput.hlslGraphicsToolsStandardシェーダーで使用されるサンプラーや変数の定義が行われています。

新しいプロパティを追加した場合、このファイルで変数を定義する必要があります。

テクスチャの定義は100行目当たりから行われており、#if defined(_URP)~ #else~ #endifでURPの場合とビルドインの場合で定義を分岐させています。

つまりURP、ビルドインそれぞれで定義を行う必要があります。

今回は次のようにEmissionに関連してテクスチャを定義しました。

#if defined(_URP)
TEXTURE2D(_MainTex);
SAMPLER(sampler_MainTex);
 ...
#if defined(_EMISSION)
TEXTURE2D(_EmissiveMap); //追加
SAMPLER(sampler_EmissiveMap);//追加
#endif
 ...
#else
sampler2D _MainTex;
  ...
#if defined(_EMISSION)
sampler2D _EmissiveMap;//追加
#endif
 ...
#endif

URPではTexture2DとSamplerをそれぞれ定義しています。

〇GraphicsToolsStandardProgram.hlsl

GraphicsToolsStandardProgram.hlslはStandardシェーダーのメインの処理を行っています。

 今回EmissiveMapの機能は380行目当たりのピクセルシェーダーに処理を記述します。

half4 PixelStage(Varyings input, bool facing : SV_IsFrontFace) : SV_Target
{
...
}

ピクセルシェーダーでは冒頭部でテクスチャ関連のサンプリングを行っています。

今回はGrapcisToolsStandardシェーダーのマテリアルプロパティの並びにのっとってChannelMapのサンプリングの次にEmissiveMapの処理を記述しました。

#if defined(_EMISSION)//Emissionを有効にしている場合
#if defined(_URP)//URPの処理
    half3 emissionMap = SAMPLE_TEXTURE2D(_EmissiveMap, sampler_EmissiveMap, input.uv);
#else//ビルドインの処理
    half3 emissionMap = tex2D(_EmissiveMap, input.uv);
#endif
#endif

処理内容としてはいずれもemissonMapという変数を用意し、テクスチャをサンプリングしているだけです。

最後にサンプリングした値を_EmissiveColorと掛け合わせます。

この処理は480行目当たりで行われています。

#if defined(_EMISSION)
#if defined(UNITY_COLORSPACE_GAMMA)
    half3 emission = _EmissiveColor.rgb;
    emission *= emissionMap;
#else // Since emission is an HDR color convert from sRGB to linear.
    half3 emission = GTsRGBToLinear(_EmissiveColor.rgb);
    emission *= emissionMap;
#endif

これによって最終的に出力される値に加算されているemission_EmissiveColor_EmissiveMapを掛け合わせた値が加算されることになります。

以上でGraphicsToolsStandardシェーダーにEmissiveMap(発光マップ)を追加することができました。

以上で機能としては完成しましたが、OSSとしてPRを出すうえでコードなどをもう少ししてPRを出したいと思います。

GraphicsToolsStandardシェーダーにEmissiveMapの機能を追加する。

本日はShader調査枠です。

ここ数日でGraphicsToolsに関して調査していますが、現在GraphicsToolsへ筆者がFeatureRequestを行いイシューを立て新機能の開発を行っています。

github.com

MixedRealityToolkitはMicrosoft主導でオープンソースソフトウェアとして提供、開発されています。

我々Microsoft社外の開発者でも、開発に参加することができ、これにはバグレポート、ドキュメント、クエスチョン、そして機能開発のような部類があります。

今回GraphicsToolsStandardシェーダーの新機能として、EmissitionMap(発行マップ)を提案し、リーダーであるMicrosoftのエンジニア、Cameronさんより提案に対して賛成をいただいたため開発に取り掛かっています。

〇インスペクタのマテリアルプロパティにオリジナルのプロパティを追加する。

 通常UnityのシェーダーではPropertiesブロックに任意の変数を追加することでUnityのインスペクター上でマテリアルのプロパティとして扱うことができます。

 Properties
    {
  ...
    }

 GraphicsToolsStandardシェーダーはCustomEditorによってマテリアルのインスペクタに表示される表示をカスタマイズしています。

    CustomEditor "Microsoft.MixedReality.GraphicsTools.Editor.StandardShaderGUI"

ちなみにこのCustomEditorをコメントアウトすると次の画像のようにGraphicsToolsStandardシェーダーの機能すべてのプロパティが表示されるため非常に可読性が悪くなっています。

このためShader機能として新しいプロパティを追加してもインスペクタ上に表示されることがありません。

まずは新しいプロパティが表示されるように取り組みます。

Graphics ToolsStandardシェーダーのPropertiesブロックに_EmissiveMapを追加します。

    Properties
    {
  ...
        [Toggle(_EMISSION)] _EnableEmission("Enable Emission", Float) = 0.0
        [HDR]_EmissiveColor("Emissive Color", Color) = (0.0, 0.0, 0.0, 1.0)
        _EmissiveMap("Emissive Map",2D) = "white"{}
      ...
    }

前述のとおりこの時点ではマテリアルのプロパティとして作成したEmissive Mapが表示されることはありません。

StandardShaderGUI.csを開き90行目当たりのGUIContent enableEmissionの次の行にGUIContentの処理を追加します。

            public static readonly GUIContent enableEmission = new GUIContent("Emission", "Enable Emission");
            public static readonly GUIContent emissiveColor = new GUIContent("Color");
            public static readonly GUIContent emissiveMap = new GUIContent("Emission Map"); //追加
            public static readonly GUIContent enableTriplanarMapping = new GUIContent("Triplanar Mapping", "Enable Triplanar Mapping, a technique which programmatically generates UV coordinates");
            public static readonly GUIContent enableLocalSpaceTriplanarMapping = new GUIContent("Local Space", "If True Triplanar Mapping is Calculated in Local Space");

これはインスペクタのプロパティに関する関数で、表示するパラメータの方を作っています。

docs.unity3d.com

GUIContentの引数のうち第一引数が名称、第二引数がToolTip(カーソルを当てた際に表示される説明文)を示しています。

次に200行目当たりにMaterialProperty型の変数emissiveMapを定義します。

        protected MaterialProperty emissiveColor;
        protected MaterialProperty emissiveMap; //追加
        protected MaterialProperty enableTriplanarMapping;

次にFindProperties関数にemissiveMapとしてShaderのプロパティから_EmissiveMapを取得するようにします。

        protected override void FindProperties(MaterialProperty[] props)
        {
            base.FindProperties(props);

             ...
            enableEmission = FindProperty("_EnableEmission", props);
            emissiveColor = FindProperty("_EmissiveColor", props);
            emissiveMap = FindProperty("_EmissiveMap", props);//追加
            enableTriplanarMapping = FindProperty("_EnableTriplanarMapping", props);
            ...
         }

最後に実際にEmissionが有効である際に表示されるようにしている処理である620行目当たりのif (PropertyEnabled(enableEmission))にpropertyを追加します。

            materialEditor.ShaderProperty(enableEmission, Styles.enableEmission);

            if (PropertyEnabled(enableEmission))
            {
                materialEditor.ShaderProperty(emissiveColor, Styles.emissiveColor, 2);
                materialEditor.ShaderProperty(emissiveMap,Styles.emissiveMap,2);//追加
            }

これによってEmissionMapが使用できるようになりました。

今回はEmissiveMapの機能をマテリアルプロパティから使用可能にしました。

Shaderの処理自体は変更していないので次回以降詳しく解説していきます。

ShaderのCustomEditor機能は興味はあったものの触ったことがなかったので実際のShaderを見ながら改修していくととても勉強になります。

MixedReality-GraphicsTools-Unityを触る その⑧ MaterialGallery サンプル MainMap その①

本日はMRTK3調査枠です。

現在GraphicsToolsを読み解いています。

今回はGraphicsTools/StandardシェーダーのサンプルであるMaterialGalleryサンプルシーンを見ていきます。

前回はSaderのレンダリングモードについてのサンプルオブジェクト見ました。

redhologerbera.hatenablog.com

今回は基本的な機能となるMainMapの前半部を見ていきます。

〇Unlit

Unlitは光の影響を受けないシェーダーです。

GraphicsToolsStandardシェーダーはDirectionalLightのチェックボックスからチェックを外すことでUnlitの再現ができます。

一般的にUIや光の影響を受けたくないオブジェクト、テクスチャが提供されているオブジェクト等で使用されますが、光の計算を行うことがないため、最も軽い部類のシェーダーになります。

〇Default Lit

Default Litはその名の通りGraphicsToolsStandardシェーダーをアタッチした際のデフォルトの状態のマテリアルにテクスチャのみがアタッチされています。

〇SemiSmooth

SemiSmoothReflectionsが有効化されていることで周囲の光を反射するようになっています。

斜めなど味方によってはこの反射が見ることができます。

〇SmoothMetallic

SmoothMetallicは金属光沢を再現しています。

これはMetallicの値とSmoothnessの値がそれぞれ1になっていることで実現しています。

Reflectionsを無効にすることで、周囲の影響を受けない反射が行われます。

〇NormalMap

NormalMapは多くのShaderで用意されている法線マップ(NormalMap)を使用した例です。

NormalMapを使用することでオブジェクト表面の細かい凸凹を再現することができます。

光の当たり方(影)を制御するマップですので、当然ですがDirectionalLightを有効にしている場合のみ発揮されます。

今回は以上です。