概要
OvrvisionSDKのマーカーARを使って、CGのオブジェクトをマーカーの上に表示すると、そのままではマーカーの板の上にCGオブジェクトの影が落ちないので、リアリティが無い(CGが浮いて見える)という問題があります。
これを解決した結果が以下のScreenShot。マーカーの上に自然な影が落ちているのが分かります。
このイカすシェーダーの紹介と、出来た経緯を書きます。まず先に配布先を示します。
MMD4Mecanimで有名なNoraさんのサイトです。
経緯
マーカーの上にCGの影を落としたいな、と思ったときに、パッと思いつくのは、いわゆるmatte_shadow(普段は透明で、他のオブジェクトの影だけが表示される)のシェーダーを適用した板を下に置くという解決策。
Unityでいわゆるmatte_shadow(影だけ映って、普段は透明)のshaderはここにソースがありますね。
http://t.co/rW5Qpw6QGl
— izm @電脳フィギュア (@izm) 2014, 5月 15
しかし、どうやらOvrvisionSDK内部の処理と競合してしまうらしく、この解決策ではUnityEditor上では影が描画されるが、プレビュー表示上は表示されない
Gyazo - 2949fa64bbea60b4be457f1906c978ff.gif
これをTwitterで相談していたところ、通りすがりのシェーダーの神
が、原因をエスパーして
@izm @hecomi 見てみました、DstAlpha 使ってるので、ColorMask RGB を RGBA に書き換えるとたぶん動きます
— Nora (@Stereoarts) 2014, 5月 15
@izm @hecomi 一応書き換えたやつも。http://t.co/FmsrDYzhjD
— Nora (@Stereoarts) 2014, 5月 15
作成、配布してくれました。
この間わずか10分くらいです。何がどうなっているのか分からないですが、神です…
使い方
普通のOvrvisionSDKを使う環境で、tracker以下に大きなplaneを置いて、このmatte_shadowシェーダーを適用させます。影の色合いはUnityEdito上で編集可能です。