こんにちはAMDLabの番匠です。
最近、建築業界では内見をVR・ARでやったりするという話を聞いたことがあります。コロナ禍だったり、遠方の物件を自宅で確認できたら便利だな〜と夢が膨らみます。
また、建築家目線でも作成したBIMモデルの確認を模型を作らずに確認したり出来たらそれもまた便利ですよね。
今回はNreal Air(ARグラス)を手に入れたので、簡単なサンプルアプリを作っていき3D建築モデルをARで見るとどうなるのか試してみたいと思います。
サンプルアプリを作る
こちらを参考にアプリを作っていきます。
開発環境
macOS Monterey ver12.4
Unity 2021.3.5f1
Nreal Air対応Androidスマホ
※Windowsの場合も同じ構成いけます。
開発
- Unity新規開発プロジェクトを作成する
- Nreal SDKをインポートする
- Unityの設定を行う。
- カメラとコントローラーを追加する
- オブジェクトを配置する
- スクリプトを追加する
- 実機でアプリをテストする
1.Unity新規開発プロジェクトを作成する
Unityを開きNew Projectを作成します。
3Dを選択し、プロジェクト名を変更し作成を実行します。
2.Nreal SDKをインポートする
Nreal SDK 1.10.0ここからダウンロードしたSDKファイルを開くとインポート画面が現れるのでそのままimportボタンを押します。
3.Unityの設定を行う
NRSDK用のUnity設定を行います。幸い自動セッティング機能があるのでそちらを使用していきます。
ツールバーのNRSDKからProject Tiosを選びAccept Allを押します。
↓
今回使用する開発環境ですと一つ残るのでこちらを手動で設定していきます。
Fileの中のBuild Settingを開き次にPlayer Settingを開きます。
ここでPlatformがAndroidになっていなければAndroidに設定しておきます。
Auto GraphicsAPIのチェックを外せば 設定は完了です。
4.カメラとコントローラーを追加する
Assets>NRSDK>Prefabsの中にあるNRInputとNRCameraをSceneに追加します。
ついでにメインカメラは今回使わないのでSceneから削除しておきます。
NRInputを追加するとスマホで操作する際のコントローラー画面が追加されます。
NRCameraはグラス用のカメラになっています。
実行してGameViewを見てみましょう。
右下にコントローラーが追加されていることが確認できますね。
5.オブジェクトを追加する
いよいよ3Dモデルを配置します。
3Dモデルは適当に用意したfbxファイルで大丈夫です。
今回はこちらからダウンロードさせていただき使用します。
Assetsの中にモデル用フォルダを作りそこにドラッグアンドドロップしてUnityにインポートします。
インポートしたモデルをさらにSceneに追加し、大きさを調整します。
今回使用したモデルですと大きいのでScaleを0.2にしておきます。
6.スクリプトを追加する
モデルを見るだけですとこれで完了なのですが、それだと少し寂しいので動きを加えてみます。
AssetsにScriptsフォルダを作成し、ModelMove.csを新規作成します。
内容は以下の通りです。
センサーがモデルにぶつかっている状態でコントローラーをクリックすると回転したりサイズを変更したりします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
using UnityEngine; using UnityEngine.EventSystems; public class ModelMove : MonoBehaviour, IPointerClickHandler { // 回転角度 [SerializeField] private float angle = 90f; // 回転方向 Vector3.leftは-x軸回転 [SerializeField] private Vector3 axis = Vector3.left; // 回転速度 [SerializeField] private float speed = 3f; private Vector3 scale; private Quaternion targetRotation; private Vector3 targetScale; private int count = 0; private void Start() { //init targetRotation = this.transform.rotation; targetScale = this.transform.localScale; } public void OnPointerClick(PointerEventData eventData) { if (count < 4) { // 角度を設定する targetRotation = Quaternion.AngleAxis(angle, axis) * transform.rotation; }else if(count < 6){ // 大きさを2倍に targetScale = targetScale * 2; }else{ // 大きさを半分に targetScale = targetScale / 2; count = 0; } count++; } private void Update() { // 変更を反映させる transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, Time.deltaTime * speed); transform.localScale = targetScale; } } |
こちらのスクリプトを設定したいモデルにドラッグ&ドロップし、さらにセンサーがモデルにぶつかっていることを認識できるように衝突判定を加えていきます。
3Dモデルを選択状態でInspector欄の一番下からBox Colliderを選択し追加します。
7.実機でアプリをテストする
早速アプリを起動しみてみましょう!
対応スマホを開発者モードからデバッグモードに設定してください。(各スマホ毎にやり方が異なるのでメーカーサイトを確認してください。)
PCとスマホを有線で繋ぎ、Build & Runを実行します。
すると一旦アプリが開きますが、終了させておいてください。
PCとの接続を解除し、Nreal Airとスマホを接続しARモードを選択します。
TOPメニュー右端に作成したアプリがあるので起動します。
感想
いかがでしたでしょうか?
自分は、モデル自体はかなり綺麗に見える反面直感的な操作ではないな〜と感じてしまいました。
例えば、モデルに近づくためには顔を前後に動かすとその分近づく、という風にしたかったのですがこのデバイスは前後左右上下に動いたことを感知できないため顔を前に出すとその分モデルが遠のいて縮まりません。
コントローラーを使って引き寄せるなど、他の対応策が必要です。
同社の他製品であるNreal Lightであればセンサーがさらに多いのでより直感的に操作できたかもしれませんね。(その代わりお値段も高いですが。。。)
次は家の屋根をパカっと開けたり、家の中に入るような体験を作ってみたいですね。
COMMENTS