AR アプリ リジッドボディを導入した結果

AR

前回の記事では選択しているオブジェクトの操作性を高めるところまで実現出来ました

更に追加したい要素があったので以下に記します



このアプリの目的

空の部屋にARアプリを通して疑似的に家具や家電の配置を行うことを最終目的としています

当たり判定を盛り込む

現段階ではオブジェクトの移動は可能ですが、あらゆるものを貫通出来てしまう状態です

例えば平面検出された壁面を越えられないようにすれば現実空間の壁面に沿ってオブジェクトを並べることが可能になります

そこで試験的にオブジェクトにリジッドボディをアタッチして動作を見てみる事にしました

平面検出されたプレーンを認識してくれました!

しかも壁面に若干押し付けることでオブジェクトを壁面と平行に出来ることが分かりました

しかし次のような問題が発生してしまいました

上方向に行こうとすると、リジッドボディの物理演算の影響で重力によって落下するため、動画のようにジャンプしているような感じになってしまったのです

そこでリジッドボディについて調べた結果

rb.AddForce(0, 0.07f, 0, ForceMode.VelocityChange);

フォースモードというものがあり、上記のパラメータの場合重力を無視するとのことだったのでこれをupボタンに組み込んでテストした結果、オブジェクトが遥か上空へと旅立って行きました

他に対策がないか調べてく中、重力のパラメータに着目しました

写真の赤線部分がそれに該当するのですが、このチェックの有無で重力を有効/無効を選択出来るというものです

試験的にこのチェックを外して動作を確認してみます・・・

もふもふ
もふもふ

宇宙!?

うまくいったと思った次の瞬間には失敗が確定してしまいました

次に着目したのが空気抵抗のパラメータです

赤線部分がそれに該当します

今回はその値を100にして動作を確認してみました

空気抵抗により見事にホバリングしてくれましたが、飛行中に衝突する部位によって体制が崩れてしまうという問題が発生しました

もふもふ
もふもふ

そもそも飛ぶ必要あるもふ(=゚ω゚)ノ?

何故空中に移動させたいかというと、TV台にTVを乗せるシチュエーションがあるからです

更に調べを進めていき、以下のパラメータに着目しました

任意の軸方向への回転を無効にするというものです

x軸とz軸の回転を無効にして動作を確認すると・・・

衝突時の部位に関わらず全く体勢が崩れなくなりました!

これで今回の目的を達成することが出来たので、最後にオブジェクトを重ねるテストをしてみようと思います

もふもふ
もふもふ

重ねすぎもふ(;゚Д゚)



まとめ

リジッドボディを使用し、パラメータを調整することでスクリプトに手を加えることなく今回の目的を達成することが出来ました

動作系についてはほぼ完成と言ってもいいと思うので、他の要素にも着手していこうと思います

タイトルとURLをコピーしました