AR(拡張現実)で床に埋まる3Dオブジェクトを作ろう
はじめに
AR(拡張現実)で凹みのある3Dオブジェクトを表示する方法を紹介します。『凹み』があることで、より現実に溶け込む3Dオブジェクトになります。
まずは、完成品を紹介します。
3Dオブジェクトが床にめり込んでいるように見えますよね?
参考
こちらのサイトを参考にさせて頂きました。
作成環境
Windows10 (Surface Pro4)
Unity ( Version 2019.3.0a3 )
Vuforia ※拡張現実
作り方
最初に、凹む3Dオブジェクトの作り方を紹介します。
新規プロジェクト作成
Unityで新規プロジェクトを作成します。
サーフェスシェーダー作成
『Assets』を右クリックし、Create -> Shader -> Standard Surface Shader をクリックします。
シェーダー作成時に、名称を『CutOut-SurfaceShader』とします
サーフェスシェーダー編集
作成した『CutOut-SurfaceShader』を右クリックし、Create -> Material をクリックします。
名称を『CutOut-SurfaceShaderMaterial』とします。
『CutOut-SurfaceShader』を編集するため、『CutOut-SurfaceShader.shader』をテキストエディタで開きます。
『CutOut-SurfaceShader.shader』をテキストエディタで開くと以下のようになります。
以下のように編集します。
以下は、コピー用です
Shader "Custom/CutOut-SurfaceShader"
{
Properties {
_Color ("Color", Color) = (1,1,1,1)
}
SubShader {
Tags {"Queue" = "Geometry-2"}
Pass{
Zwrite On
ColorMask 0
}
}
}
青色のマテリアル作成
凹ませる側の3Dオブジェクトのテクスチャを作成します。『Assets』に新規にマテリアルを作成し、名前を『Blue』にします。
青色に設定します。
これで、オブジェクトを透過させるマテリアルと、青色のマテリアルの準備ができました。
3Dオブジェクト作成
『Hierarchy』で右クリックし、3D Object -> Cube を選択します。
オブジェクトのマテリアルを設定
『Element 0』 に、マテリアル『Blue』を設定します。立方体が青色になります。
名前を『Cube-Blue』にします。
透過用のオブジェクト作成
『Hierarcky』 で、3D Object -> Sphere をクリックします。
作成したオブジェクトを選択し、『Element 0』 に、『CutOut-SurfaceShaderMaterial』を設定します。
このように、青い立方体と、球体『Sphere』が重なるところが透明になると成功です。
ですが、カメラからの映像だと、球体が黒く表示されます。カメラからの映像も透明になるようにします。
カメラ映像での透過設定
『Main Camera』 を右クリックし、Camera をクリックします。
作成した 『Main Camera』 の下の Camera を選択します。
『Culling Mask』 を Nothing に、『Depth』 を -2 にします。これで、黒色だった球体が、透明になるはずです。
凹んだオブジェクト作成
凹んだオブジェクトを作成します。
マテリアル追加
以下のように、『Assets』 にマテリアルを追加しました。あと、4色のマテリアルと、画像を表示するマテリアルを作ります。
オブジェクト追加
4つのCubeオブジェクトを作成し、色つきのマテリアルを設定します。5つめのCubeオブジェクトは底に配置して、画像のマテリアル『Img-Bottom』を設定します。それらオブジェクトを囲むように透過のマテリアル『CutOut-SurfaceShaderMaterial』を設定したCubeオブジェクトを4つ作成します。
上の図のように、穴があいたような3Dオブジェクトが完成しました。
AR(拡張現実)を実装する
穴があいたような3DオブジェクトをAR(拡張現実)で表示できるようにします。といっても、ARで表示できるようにする手順は↓に書きましたので、こちらをご覧ください。
完成するとこのようになります。
各オブジェクトの Position と Scale は、以下になります。ARカメラ以外のRotetion(X, Y, Z) は、(0, 0, 0) にします。
動かしてみる
実行のボタンをクリックします。
ARマーカーを認識させてみます。
このように、3Dオブジェクトが表示されたら成功です。
床に埋まっているように見えますか?動画だと、オブジェクトが床に埋まっている感じに見えると思います。
冒頭で紹介した動画をもう一度紹介しておきます。
終わりに
やっと、床に埋まる3Dオブジェクトが作れるようになりました。これを使って、面白いものが作れそうな気がします。
こんな弱小ブログでもサポートしてくれる人がいることに感謝です。