出来たー
— bibinba (@kagemiyaryu1) July 12, 2017
影だけを表示するシェーダーをつけたマテリアルをメッシュに設定したMeshbuilder with Physics pic.twitter.com/tpUkwxw28B
現実世界の床に仮想物体の影が落ちるARをTangoで実装します。
MeshBuilderサンプルを使う
TangoSDKの中にあるExperimentalMeshBuilderWithPhysicsを改造します。これは部屋の面を認識してメッシュを構成するサンプルです。
こんな感じになります。タッチするとボールが発射されて、メッシュの上で転がります。
このメッシュのマテリアルを影のみ表示するシェーダーをつけたマテリアルに変えます。
元のサンプルシーンはコピーを取っておいたほうがいいかもしれませんね。
マテリアルを作る
このシェーダーをコピーして、Create>Shaderで作ったshaderに貼り付けます。
次に新しいMaterialを作って、Shaderをさっきのにします。FX/mmatにあります。
そしてそれをDynamicMeshというゲームオブジェクトにつけます。
この状態でビルドするとしたみたいな感じ。
カメラ画像を読み込んでなかったし、メッシュ自体の影が落ちてしまってすごいことになっています。
細かな設定
DynamicMeshのMeshRendererのCast ShadowsをOffにしてメッシュ自身の影を落とさないようにします。
Receive Shadowにはチェックが入っているのでボールの影は落ちます。
次にTango CameraのTango AR Screenにチェックを入れます。これでカメラ画像が表示される。
Tango ManagerのEnable Video Overrayにもチェックを入れる。
その状態でビルドするとこんな感じ・・・だったかな?
とりあえずできたはできた。
ライトの調整
影が濃いのでDirectional LightのIntensityを0.18、Strengthを0.9ぐらいにする。あとLightingのAmbient Intensityを1.54にして、skyboxは自分の部屋のやつにした。
あと右下に表示されるObserver Cameraが影を落として邪魔だったのでそれ関係のを消したら・・・
結果
最初の動画みたいなやつができました。
ちゃんと壁を認識して当たってくれるし、影も落ちるし楽しーーー!
まあMesh構成がされているのかが表示されないので右下のはあった方がいいのかもしれませんね。