こんにちは.れいじです.
前からUnityでARアプリを作ってあれそれしてたんですが,リアリティ追求のためキャラクターに影をつけることにしました.
いつもの如く使用ソフトウェアはUnity(4.3.4),AR機能はVuforia(2.5.8)を使います.
お借りしたモデルはかわいい&あざといで有名なLat式ミクです.お世話になってます.
製作者様のサイトはこちら→ \\innoce\\
ちなみに影が付く前はこんな感じ
もうこれだけでもかわいいんですが,さらにリアリティを追求しましょう.
そんなわけで影だけマーカーに投影したいのですが,ImageTargetプレファブは影を受けることも,また影を落とすこともありません.
ということで,足元に影を受ける為のプリミティブをおかないといけません.
ちなみに私はPlaneを敷きました.
しかしプリミティブを置いただけでは影どころか,プリミティブに指定されているマテリアルまで表示されてしまいます.デフォルトでは真っ白なマテリアルが指定されていますので,白いプリミティブが表示されてしまいます.
そこで,以下のシェーダを適用させるとマテリアルが影のみの表示に切り替えることができます.
元ソースはこちら
http://forum.unity3d.com/threads/14438-Matte-Shadow?highlight=matte+shadow
使い方ですが,
Projectタブ内の適当な場所で右クリックをしてメニューを表示します.
Create->Shaderを選び,新しいShaderを作りましょう.
新しいShaderを作ったら,これをエディタで開き,中身をまるっと上のコードに書き換えて保存します.
あとは足元にしいたプリミティブのShaderを先ほど作ったShaderに変更します.
ユーザーが作成したShaderはCustumの中にあるようです.
これで準備はOKです.
あとはGameタブで光源の位置を調整してキレイに影が出るように調整して影が出るようにしてあげるとよいです.
書き出すとこんな感じ
いい感じになりました!
ちなみに本の高さに合わせて影を落とすようにしています.
かわいいんだぜ.