Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【アセット紹介】Grabbitでオブジェクトを配置する【Unity】

今回はアセットの紹介をしていきます。
紹介するのはGrabbit - Editor Physics Transforms
物理ベースでオブジェクトを配置するデザインツールアセットです。

f:id:Raspberly:20210801000349p:plain

 

 

この記事はUnity アセット真夏のアドベントカレンダー 2021 Summer! 1日目の記事です。

f:id:Raspberly:20210729193647p:plain

2日目はNakaji Kohkiさんの
【Unity】NatShareでツイート後に報酬を付与する #アセットアドカレ2021」です。

 

 

どんなアセット?

物理的なシミュレーションを行いながらオブジェクトを配置するアセットです。
公式のビデオがとてもわかりやすい。

www.youtube.com

 

機能の特長

✔️グラバーで物理学衝突トランスフォーム
✔️グループ&整列は、物理学を持つオブジェクト
✔️動的な重力の選択
✔️ローテーションAlignementシステム
✔️スマートテレポート&衝突検出
✔️全元に戻すサポート
✔️ 優れたパフォーマンスと大規模なシーン向けに最適化
✔️柔軟なインターフェイス
✔️アクティブなサポートとコマンドロードマップ
✔️1つのかわいいウサギ!

かわいいウサギ!

 

 

机の上に複数のオブジェクトを配置したい場合、通常であればSceneビューのギズモを動かし、
それぞれの位置や角度を調整し、他のオブジェクトと重ならないように配置しなければなりませんが、
これはなかなか面倒な作業です。

f:id:Raspberly:20210731230914p:plain

Grabbitを使うとメッシュとの衝突を考慮して素早くオブジェクトを配置したり、
重力落下をシミュレートした自然な配置が実現できます。

f:id:Raspberly:20210731232228g:plain

Grabbitのもう一つの特徴は、衝突判定はGrabbit側が自動で調整してくれる所です。
ColliderやRigidbodyが設定されていないオブジェクト同士を衝突させて配置してくれます

(作業時にメッシュを計算して自動的にColliderを設定し、作業終了後は削除される)

 

VRChatでも使える?

このアセットはUnity 2018では動作しません
Unity ProjectをUnity 2019(厳密にはUnity2019.4.16以降)にアップデートしてあれば使えます。

vrc.wiki

インポートする前にUnityのバージョンをご確認ください。
間違ってインポートした場合は、Assets/Plugins/Grabbitフォルダを削除すればOK。

f:id:Raspberly:20210802161025p:plain

 

 

開発環境

Unity2020.3.14f1

Grabbit - Editor Physics Transforms ver2021.0.5

※GrabbitはUnity2019.4.16 以降が対象です

 

 

インポートの確認

アセットインポート完了時はこんな感じです。
Pluginsの中に入っています。

f:id:Raspberly:20210731233818p:plain

 

セットアップ

インポート直後はこのようなセットアップウィザードが表示されます。
ここではGrabbitを使うための初期設定を行います。設定は後から変えることができます。

f:id:Raspberly:20210730005359p:plain

 

コライダータイプ

使用するコライダータイプの設定
Grabbitでは、オブジェクトを配置する時に凹型コライダー(より精密な衝突が取れるコライダー)を生成します。
ただし、このコライダーを生成するには事前にメッシュのスキャンが必要になります。

f:id:Raspberly:20210730030337p:plain

正確に衝突を再現したい場合は凹面コライダーを使用しましょう。
そこまで正確さを求めないのであればデフォルトコライダーでも構いません。

 

シーンスキャン

シーンをスキャンする時に、シーン全体をスキャンするかどうかの設定
Grabbitは起動時にシーンをスキャンします。大きいシーン(20000以上のオブジェクトがあるもの)の場合は約0.8秒(CPUによる)かかります。
これが長いと感じる場合、スキャンする範囲を限定してより早くスキャンを終わらせることができます。

f:id:Raspberly:20210730030425p:plain

 

衝突設定

高精度な衝突をシミュレートするかどうかの設定

Grabbitでは高精度な衝突をシミュレートしスムーズな衝突を行うことができます。
ただし一度にたくさん移動させると動作が遅くなるのでフレームレートがすでに低い場合はオフにしましょう。

f:id:Raspberly:20210730030546p:plain

 

これで設定は終わりです。
簡単にまとめるとよほど処理負荷が高くない限り全部左を選んでおけばOK

 

それ以外の細かい設定はオプション画面から設定できます。
・Grabbitと連動するレイヤーやタグのチェック
・Grabbitが大きすぎるオブジェクト(地形など)を選択しないようにする
など

 

設定しなおしたい時

Tools/Grabbit/OpenStartupMenuからセットアップウィザードを表示できます

f:id:Raspberly:20210731213552p:plain

 

 

 

実際に試してみる

実際にオブジェクトを配置してみます。
今回はこちらのアセットを使用して、机の上にノートを配置してみます。

f:id:Raspberly:20210731224254p:plain

 

ツールウインドウの表示

ツールバーにGrabbitのウサギマークのボタンが追加されているのでこれを押します。

f:id:Raspberly:20210731224843p:plain

これでツールウインドウが表示されます。
ここからrabbitの機能を利用できます。

f:id:Raspberly:20210731225014p:plain

 

 

Placement Mode

配置を行うモードです。

f:id:Raspberly:20210731231157p:plain

 

まず机の上にノートや辞書のオブジェクトを適当に配置しておきます。

f:id:Raspberly:20210731230914p:plain

Grabbitのツールウインドウが表示されている状態で、オブジェクトを選択するとSceneビューにウサギマークがでます。
このマークが出ていればGrabbitは正常に動作しています。

f:id:Raspberly:20210731231256p:plain

この状態でオブジェクトを移動するだけで簡単に配置できました。
机や他オブジェクトとの衝突も考慮されていますね。

f:id:Raspberly:20210731232228g:plain

Rotationギズモの無効化

Placement ModeではPositionとRotation両方のギズモが表示されます、
操作しにくいときはRotationのみ無効化できます。

f:id:Raspberly:20210731233033p:plain

 

 

Rotation Mode

衝突を考慮しながらオブジェクトを回転させるモードです。
Placement Modeでも回転されることはできましたが、こっちは位置を無視します。

f:id:Raspberly:20210731234547p:plain

f:id:Raspberly:20210731235828g:plain

 

 

Align Mode

オブジェクトを整列させるモードです。 

f:id:Raspberly:20210801005640p:plain

ギズモのスケールハンドルを操作することで、選択したオブジェクトの中心を軸に整列させることができます。

f:id:Raspberly:20210801010518g:plain

 

 

Fall Mode

オブジェクトを重力で落下させるモードです。

f:id:Raspberly:20210801000539p:plain

初期状態ではPausedになっているので、Resume Grabbitボタンを押して落下させます。
物理的に自然な感じで配置したい時に便利そうですね。

f:id:Raspberly:20210801002131g:plain

 

 

Point Mode

マウスの位置に合わせてオブジェクトを追従させるモード
ドキュメントには載っていないので比較的新しい機能らしい。

f:id:Raspberly:20210801012035p:plain

Fall Modeと同じくデフォルトでPausedになっているのでResume Grabbitで停止を解除します。
オブジェクトを選択すると、マウスカーソルに合わせて地形や他オブジェクトに沿った移動が可能です。

f:id:Raspberly:20210801020147g:plain

 

 

 

 

まとめ

・Grabbit - Editor Physics Transformsを使うと、オブジェクトを物理的シミュレートして配置できる
・Sceneビュー上で移動、回転、重力落下など複数の方法で配置できる
・オブジェクト側にColliderやRigidbodyをつける必要はない

 

以上です。

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。