夜風のMixedReality

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

MixedRealityToolKit v2 Examplesを触ってみる Standerdshader/MaterialGallery その②

 


 前回からMixedRealityToolKit v2のExamplesを触っていますが、今回は前回の続きから見ていきます。

f:id:Holomoto-Sumire:20191021100255j:plain

MixedRealityToolKit v2 Examples MaterialGallery

 前回の記事

redhologerbera.hatenablog.com

 

デモシーンの概要 

 前回は最前列の4つを見てMixedRealityToolKit Standerd ShaderのRound CornersのなかのUnit Radiusの値を変化させることでキューブやカードに張り付けられたテクスチャの面が丸みを帯びることがわかりました。

 今回は次の列を見ていきます。

f:id:Holomoto-Sumire:20191022125546j:plain

 〇BorderCube

BorderCubeよく見るとBorder(淵)にそって紫色のラインが入っていることがわかります。

f:id:Holomoto-Sumire:20191022125938j:plain

 また、どうやら透過率を持っているようで後ろのオブジェクトが見えます。

f:id:Holomoto-Sumire:20191022130341j:plain

  アタッチされているMaterialのShaderを見てみるとRendering ModeがFadeに設定されていることがわかります。

 UnityではいくつかのRendering Modeがあります。

  • Opaque - デフォルトです。透明な部分のない、一般的な固形のオブジェクトに適しています。

  • Cutout - 不透明と透明な領域をはっきり分ける透明効果を作成することができます。このモードでは、半透明の領域は存在せず、テクスチャは100%不透明か、まったく見えなくなるか、どちらかになります。これは、葉っぱや穴だらけでボロボロの服などの素材を形作るのに便利です。

  • Transparent - 透明なプラスチックやガラスなどの現実的な透明なマテリアルのようなレンダリングに適しています。このモードでは、マテリアル自体は、(テクスチャのアルファチャンネルとティントカラーのアルファに基づいた)透明度の値になります。しかし、本物の透明なマテリアルの場合と同様に、反射や照明のハイライトは、完全な明快さで表示されたままになります。

  • Fade - オブジェクトが鏡面反射光や反射を含んでいる場合でも、透明度の値を使ってオブジェクトを完全にフェードアウトすることができます。このモードは、オブジェクトのフェードインやフェードアウトをアニメーション化する場合に便利です。反射やハイライトもフェードアウトするので、透明なプラスチックやガラスのような透過素材を写実的にレンダリングするのには適していません。

 Unity公式レファレンスより引用

 どうやらFadeに設定して透明度であるAlbedのα値を設定することで透過を行っているようです。

 ではオブジェクト名でもあるBorderに関してみていきましょう。

f:id:Holomoto-Sumire:20191022132221j:plain

  Override Colorという箇所のColorを変えると淵の色が変わりました。

 どうやらOverrideColorが対応しているようです。

 Border Lightのwidth %のパラメータを変えると淵が大きくなります。

 Brightnessは淵に当たるLight(Border LightとあるのでLightなのでしょう)の強さです。

f:id:Holomoto-Sumire:20191022132804j:plain

 試しにBorderColorを赤に、Width %を上げさらにbrightnessを1へ変更してみました。

するとキューブの変化を確認できました。

OpaqueBorderCube

 BorderCubeとの違いはOpaqueBorderCubeでは枠のみの骨組みのようになっています。

f:id:Holomoto-Sumire:20191022162605j:plain

  Rendering ModeがCut outになっています。 またAlbedoの α値が0になっています。

 Unity公式レファレンス表でRendering Modeは透過率に直結するらしいので試しにBorderCubeを利用してOpaqueBorderCubeを再現します。

f:id:Holomoto-Sumire:20191022175013j:plain

  BorderCubeのRendering ModeをCutoutに変更して、Albedoのα値を0に変えたところ中だけではなく枠も含め透明になってしまいました。

f:id:Holomoto-Sumire:20191022175403j:plain

  Border Lightのパラメータの中にあるOpaque Bordersのチェックを入れAlphaのパラメータを1にすることでOpaqueBorderCubeと同じように枠のみのオブジェクトを再現することができました。

InnerGlowCube

 こちらのオブジェクトはInnerGlowという名前から内部が光っているのかな?と感じますが、一見するとBorderCubeとの違いが分かりにくいです。

 前二つ同様 Override ColorやBorder Lightのチェックが入っていて有効化されています。

  違いとして Inner Glowのチェックが入って有効化されています。

f:id:Holomoto-Sumire:20191023091200j:plain

 まずBorderCubeとの違いを確認するためにOverride ColorとBorder Lighitのチェックを外し、無効化します。

f:id:Holomoto-Sumire:20191023095038j:plain

 すると、BorderLightを外したにもかかわらず淵が出ています。

 ここでInner Glowのチェックを外し無効化したところ完全にふちが消えて単色のキューブになりました。

f:id:Holomoto-Sumire:20191023103432j:plain

  どうやらInner GlowはBorder Lightのように淵に対して作用するようですがBorder Lightも同じように淵(Border)に対して作用するようです。

 Border Lightと組み合わせることで面白い表現ができるかもしれません。

f:id:Holomoto-Sumire:20191023130017j:plain

Border LightとInner Glowを組み合わせてみた例

IridescentCube・EnvironmentColorCube


MaterialGallery IridescentCube and EnvironmentColorCube

 直訳すると虹色のキューブと環境色キューブですが動画を見ていただければどのようなものなのかわかると思います。

 二つとも見る位置によって見える色が変化します。

 inspectorを見るとIridescent と EnvironmentColorの設定があるので、どうやらここで機能しているようです。

 この二つの違いは

 ・Iridescent…アルベドを介した観察角度による色彩変化のシュミュレーション

 ・Environment Coloring…viewに基づいて色を変える。

 IridescentにはSpectrum Mapというテクスチャを読み込むことができます。

f:id:Holomoto-Sumire:20191023132916j:plain

 Spectrum Mapに設定されたテクスチャに基づいてIntensityで影響の強さを、thresholdでしきい値、Angleでテクスチャの角度を変更しています。

 Environment ColoringはX,Y,Zそれぞれ色を指定してみる角度(X軸、Y軸、Z軸)によってその色の割合が変化するようです。

f:id:Holomoto-Sumire:20191023133037j:plain

 これを使えばHoloLensユーザーの視線やポジションの誘導に使えそうかもしれませんね。

 

 今回は2列目の4つを見てみました。

 次回は次の列を見てみたいとおもいます。