Ovrvision+UnityでマーカーARをする時、マーカーの上にCGの影を描画する

概要

OvrvisionSDKのマーカーARを使って、CGのオブジェクトをマーカーの上に表示すると、そのままではマーカーの板の上にCGオブジェクトの影が落ちないので、リアリティが無い(CGが浮いて見える)という問題があります。

これを解決した結果が以下のScreenShot。マーカーの上に自然な影が落ちているのが分かります。

f:id:izm_11:20140516005625p:plain

このイカすシェーダーの紹介と、出来た経緯を書きます。まず先に配布先を示します。
MMD4Mecanimで有名なNoraさんのサイトです。

http://t.co/FmsrDYzhjD

経緯

マーカーの上にCGの影を落としたいな、と思ったときに、パッと思いつくのは、いわゆるmatte_shadow(普段は透明で、他のオブジェクトの影だけが表示される)のシェーダーを適用した板を下に置くという解決策。

しかし、どうやらOvrvisionSDK内部の処理と競合してしまうらしく、この解決策ではUnityEditor上では影が描画されるが、プレビュー表示上は表示されない

Gyazo - 2949fa64bbea60b4be457f1906c978ff.gif

これをTwitterで相談していたところ、通りすがりのシェーダーの神

Nora (Stereoarts) on Twitter

が、原因をエスパーして

作成、配布してくれました。

この間わずか10分くらいです。何がどうなっているのか分からないですが、神です…

使い方

普通のOvrvisionSDKを使う環境で、tracker以下に大きなplaneを置いて、このmatte_shadowシェーダーを適用させます。影の色合いはUnityEdito上で編集可能です。