本日はファンタジー世界をHoloLensで再現します。
〇環境
・Unity2021.1.10f1
・UniversalRP
・Energy Springjoint Ball by Raivo
〇プラズマボール
今回はインターネットマーケットの[Booth]で公開、販売されていた[Energy Springjoint Ball by Raivo]を見たときにHoloLens 2のHandTrackingを用いて面白い表現ができそうと感じたことがきっかけでした。
購入しダウンロードしておきます。
①Unityプロジェクトへ購入しダウンロードしたUnityPackageをインポートします。
②Assets/Raivos Prefabs/Energy Springjoint Ball by Raivoからプレファブをシーンに配置しています。
③URPプロジェクトでは[Sine VFX/StartSphereV5]Shaderが対応しておらずピンクのエラーを吐きます。修正します。
ここでは著作物の関係で変更点のみ記載します。
Tagsブロックの中身をコメントアウトします。
Tags { // "LightMode"="ForwardBase" }
これはURPプロジェクトではLightModeが使用できないためです。
次にCGPRPGRAM~ENDCGをHLSLに変換します。
HLSLPROGRAM ... ENDHLSL
UnityCG.cgincから[Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl]へと変更します。
//#include "UnityCG.cginc" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
fixed4型をhalf4型へと書き換えます。
half4 finalRGBA = half4(finalColor,1);
UnityTransformToWorldNormalおよびUnityObjectToClipPosを次のように[Core.hlsl]で提供される関数に変更します。
o.normalDir = TransformObjectToWorldNormal(v.normal); ... o.pos = TransformObjectToHClip( v.vertex );
最後にFOG系の処理をコメントアウトします。
struct VertexOutput { ... // UNITY_FOG_COORDS(3) }; VertexOutput vert (VertexInput v) { ... // UNITY_TRANSFER_FOG(o,o.pos); return o; }
以上でShaderのエラーを回避することができます。
以上でURPプロジェクトで使用できるようになりました。
次回以降でHoloLensの機能と組み合わせていきます。