前回からMixedRealityToolKit v2のExamplesを触っていますが、今回は前回の続きから見ていきます。
前回の記事
デモシーンの概要
前回は最前列の4つを見てMixedRealityToolKit Standerd ShaderのRound CornersのなかのUnit Radiusの値を変化させることでキューブやカードに張り付けられたテクスチャの面が丸みを帯びることがわかりました。
今回は次の列を見ていきます。
〇BorderCube
BorderCubeよく見るとBorder(淵)にそって紫色のラインが入っていることがわかります。
また、どうやら透過率を持っているようで後ろのオブジェクトが見えます。
アタッチされているMaterialのShaderを見てみるとRendering ModeがFadeに設定されていることがわかります。
UnityではいくつかのRendering Modeがあります。
Opaque - デフォルトです。透明な部分のない、一般的な固形のオブジェクトに適しています。
Cutout - 不透明と透明な領域をはっきり分ける透明効果を作成することができます。このモードでは、半透明の領域は存在せず、テクスチャは100%不透明か、まったく見えなくなるか、どちらかになります。これは、葉っぱや穴だらけでボロボロの服などの素材を形作るのに便利です。
Transparent - 透明なプラスチックやガラスなどの現実的な透明なマテリアルのようなレンダリングに適しています。このモードでは、マテリアル自体は、(テクスチャのアルファチャンネルとティントカラーのアルファに基づいた)透明度の値になります。しかし、本物の透明なマテリアルの場合と同様に、反射や照明のハイライトは、完全な明快さで表示されたままになります。
Fade - オブジェクトが鏡面反射光や反射を含んでいる場合でも、透明度の値を使ってオブジェクトを完全にフェードアウトすることができます。このモードは、オブジェクトのフェードインやフェードアウトをアニメーション化する場合に便利です。反射やハイライトもフェードアウトするので、透明なプラスチックやガラスのような透過素材を写実的にレンダリングするのには適していません。
Unity公式レファレンスより引用
どうやらFadeに設定して透明度であるAlbedのα値を設定することで透過を行っているようです。
ではオブジェクト名でもあるBorderに関してみていきましょう。
Override Colorという箇所のColorを変えると淵の色が変わりました。
どうやらOverrideColorが対応しているようです。
Border Lightのwidth %のパラメータを変えると淵が大きくなります。
Brightnessは淵に当たるLight(Border LightとあるのでLightなのでしょう)の強さです。
試しにBorderColorを赤に、Width %を上げさらにbrightnessを1へ変更してみました。
するとキューブの変化を確認できました。
〇OpaqueBorderCube
BorderCubeとの違いはOpaqueBorderCubeでは枠のみの骨組みのようになっています。
Rendering ModeがCut outになっています。 またAlbedoの α値が0になっています。
Unity公式レファレンス表でRendering Modeは透過率に直結するらしいので試しにBorderCubeを利用してOpaqueBorderCubeを再現します。
BorderCubeのRendering ModeをCutoutに変更して、Albedoのα値を0に変えたところ中だけではなく枠も含め透明になってしまいました。
Border Lightのパラメータの中にあるOpaque Bordersのチェックを入れAlphaのパラメータを1にすることでOpaqueBorderCubeと同じように枠のみのオブジェクトを再現することができました。
〇InnerGlowCube
こちらのオブジェクトはInnerGlowという名前から内部が光っているのかな?と感じますが、一見するとBorderCubeとの違いが分かりにくいです。
前二つ同様 Override ColorやBorder Lightのチェックが入っていて有効化されています。
違いとして Inner Glowのチェックが入って有効化されています。
まずBorderCubeとの違いを確認するためにOverride ColorとBorder Lighitのチェックを外し、無効化します。
すると、BorderLightを外したにもかかわらず淵が出ています。
ここでInner Glowのチェックを外し無効化したところ完全にふちが消えて単色のキューブになりました。
どうやらInner GlowはBorder Lightのように淵に対して作用するようですがBorder Lightも同じように淵(Border)に対して作用するようです。
Border Lightと組み合わせることで面白い表現ができるかもしれません。
〇IridescentCube・EnvironmentColorCube
MaterialGallery IridescentCube and EnvironmentColorCube
直訳すると虹色のキューブと環境色キューブですが動画を見ていただければどのようなものなのかわかると思います。
二つとも見る位置によって見える色が変化します。
inspectorを見るとIridescent と EnvironmentColorの設定があるので、どうやらここで機能しているようです。
この二つの違いは
・Iridescent…アルベドを介した観察角度による色彩変化のシュミュレーション
・Environment Coloring…viewに基づいて色を変える。
IridescentにはSpectrum Mapというテクスチャを読み込むことができます。
Spectrum Mapに設定されたテクスチャに基づいてIntensityで影響の強さを、thresholdでしきい値、Angleでテクスチャの角度を変更しています。
Environment ColoringはX,Y,Zそれぞれ色を指定してみる角度(X軸、Y軸、Z軸)によってその色の割合が変化するようです。
これを使えばHoloLensユーザーの視線やポジションの誘導に使えそうかもしれませんね。
今回は2列目の4つを見てみました。
次回は次の列を見てみたいとおもいます。