ごきげんよう。べるネです。
これから不定期で、NeosVRの様々なコンポーネントをご紹介いたします。
NeosVR歴1年弱の若輩者の為、内容に若干の誤りがある場合がございますので、予めご容赦ください。
第一回目のテーマは「物を掴めるようにする」です。
グラバブルとコライダー、ついでにオブジェクトルートコンポーネントをご紹介いたします。
Grabbable(グラバブル)
オブジェクトを掴めるようにするコンポーネント。
・場所
Transform/Interaction/
項目 | 解説 | 初期値 |
Enabled: | このコンポーネントを有効にするかどうか。 | 有効 |
ReparentOnRelease: | 掴んでいる物を離したときに元親スロットに再親子化する。 | 有効 |
PreserveUserSpace: | ローカルユーザースペースに再親子化する。 | 有効 |
DestroyOnRelease: | 掴んでいる物を離したときに削除する。 | 無効 |
GrabPriority: | 掴む優先度。 | 0 |
GrabPriorityWhenGrabbed: | 掴む優先度。(同じ設定の場合、最初に掴んだ方が優先される。) | 無効 |
CustomCanGrabCheck: | ??? | null |
EditModeOnly: | 編集モードの時だけ掴めるようにする。 | 無効 |
AllowSteal: | 他のユーザーが奪い取れるようにする。 | 無効 |
DropOnDisable: | 掴んでいる間にEnabledを無効にしても、それを離すまでは掴んでいられるようにする。 | 有効 |
ActiveUserFilter: | 物がユーザーの中にあるとき、掴めるかどうかを指定する。 | 無効 |
OnlyUsers(list): | 掴めるユーザーのリスト。 | 無し |
Scalable: | 拡大縮小できるようにする。 | 無効 |
Receivable: | GrabbableReceiverSurfaceが使えるようにする。 | 有効 |
AllowOnlyPhysicalGrab: | レーザーで掴めないようにする。 | 無効 |
_grabber: | 自動。手のヤツ。 | null |
_lastParent: | 自動。元親スロット。 | null |
_lastParentIsUserSpace: | 自動。元親スロットはユーザーの中だった。 | 無効 |
__legacyActiveUserRootOnly: | 自動。??? | 無効 |
・使い方
掴みたいオブジェクトのスロットにアタッチ。
オブジェクトにコライダーが有れば、掴むことができるようになります。
・補足
物を掴むと、手にあるHolderスロットの子になります。
DestroyOnReleaseで消えた物は二度と復活しないので、誤操作に気を付けましょう。
物によっては掴む優先度を変更しておくと操作性が良くなります。マイナスにすると優先度が下がって、増やすと上がります。
グラバブルとは直接関係ないのですが、コンテキストメニューから掴み方に関する設定ができます。
AllowStealを有効にすると、トランプ遊びのババ抜きのように、相手が持っている物をとれるようになります。
OnlyUsersなどを設定すると、帽子や眼鏡等を自分だけが掴めるようにできます。
3Dモデル等を新規作成すると拡大縮小の項目は有効の状態で作成されますが、コンポーネントを新規アタッチしたときは無効の状態です。
LogiXでグラバブルに関する様々な制御も可能です。
・Neos Wiki リンク
https://wiki.neosvr.com/Grabbable_(Component)
・関連
GrabbableReparentBlock
GrabbableReceiverSurface
Interaction/Grabbableフォルダー(LogiX)
Collider(コライダー)
当たり判定のコンポーネント。
・場所
Physics/Colliders/
種類 | 全8種 |
BoxCollider | 箱形のコライダー。XYZ(幅、高さ、奥行)で設定する。 |
CapsuleCollider | カプセル形のコライダー。高さと、半径で設定する。 |
ConeCollider | 円錐形のコライダー。高さと、底面の半径で設定する。 |
ConvexHullCollider | 凸包形のコライダー。メッシュを指定する。 |
CylinderCollider | 円柱形のコライダー。高さと半径で設定する。 |
MeshCollider | メッシュと同じ形のコライダー。メッシュを指定する。 |
SphereCollider | 球形のコライダー。半径で設定する。 |
TriangleCollider | 三角板のコライダー。それぞれの頂点(ABC)のXYZで設定する。 |
基本形状コライダーの項目 | 解説 | 初期値 |
Offset: | 位置調整。 | 0 |
Type: | 他のコライダーとの相互作用設定。 | Static |
Mass: | 質量。 | 1 |
CharacterCollider: | キャラクターの当たり判定。 | 無効 |
IgnoreRaycasts: | レーザーが当たらないようにする。 | 無効 |
コライダーを可視化 | コライダーが半透明の緑色で表示される。 | |
バウンドで設定 | オブジェクトの大きさに合わせてサイズを自動で設定する。 |
メッシュコライダーの項目 | 解説 | 初期値 |
Offset: | 位置調整。 | 0 |
Type: | 他のコライダーとの相互作用設定。 | NoCollision |
Mass: | 質量。 | 1 |
CharacterCollider: | キャラクターの当たり判定。 | 無効 |
IgnoreRaycasts: | レーザーが当たらないようにする。 | 無効 |
Mesh: | メッシュを指定する。 | null |
Sidedness: | コライダーの面。 | Front |
ActualSpeculativeMargin: | 自動。??? | 0.1 |
凸包に分解(V-HACD 2.0) | 複数の凸包コライダーに分解する。 | |
Box Collider に置き換える | ボックスコライダーに置き換える。 |
Type 一覧 | |
NoCollision | 何にも作用しない。 |
Static | Activeと反応する。 |
Trigger | 同上。ユーザーのロコモーションと反応する。 |
StaticTrigger | 同上。??? |
StaticTriggerAuto | ??? |
Active | 1フレーム毎に衝突判定処理をするので負荷が高い。(メッシュコライダーのアクティブタイプとは反応しない。) |
CharacterController | CharacterControllerコンポーネント(物理演算)用。 |
HapticTrigger | ハプティクス(触覚)用。 |
HapticStaticTrigger | ハプティクス(触覚)用。 |
HapticStaticTriggerAuto | ??? |
HapticSampler | HapticTrigger類に反応する。 |
・使い方
コライダーが必要なスロットか、その子スロットにアタッチ。
基本形状コライダーの場合は、サイズや位置を調整する。
コンベックスハルとメッシュコライダーの場合は、Meshを指定する。(同じスロット内にメッシュが有れば自動で指定される。)
キャラクターの当たり判定が必要な場合は、TypeをStaticにしてCharacterColliderを有効にする。
・補足
メッシュコライダーは便利ですが、何でもかんでもメッシュコライダーを使うのはお勧めできません。小さいのにハイポリゴンな物に使用すると、それに初めて触れた瞬間フリーズするかも。
トライアングルとメッシュコライダー以外は、中身もコライダーがあります。壁抜けされたくないときは分厚いボックスコライダー等を使用すると良いです。
スポーン地点の床がメッシュコライダーだと、スポーン直後に動けなくなるかもしれないので、処理が軽いボックスコライダー等を置いておくと安心です。
スフィアやカプセルコライダーは処理がとても軽いので、動く物等にお勧めです。
コライダーの頻繁なアクティブON/OFFは、ワールドの処理負荷が上がっちゃうかも。
コライダーのプレビュー表示を消すには、インスペクター選択解除すればOK。
3Dモデル新規作成でボックス等を作ると、コライダー付きで出てきます。コライダーのサイズがドライブ(ピンク色で、余所から制御)されていますが、これはボックスメッシュ等のサイズをValueCopyで連動させているからです。
コライダーが反応した際のインパルスを取得できるLogiXがあります。
・Neos Wiki リンク
https://wiki.neosvr.com/Collider/ja
・関連
Physicsフォルダー(LogiX)
CharacterController
Haptics
ObjectRoot(オブジェクト ルート)
オブジェクトの基準を示すためのコンポーネント。
・場所
Transform/
項目 | 解説 |
Remove all children object roots | 子スロットのオブジェクトルートコンポーネントを全部削除するボタン。 |
・使い方
オブジェクトの一番上のスロットにアタッチ。
・補足
アイテム等にこのコンポーネントが有ると、オブジェクトの基準が分かりやすいので作業が捗ります。
一部のツールやLogiXでは、このコンポーネントが付いてないと想定通りに動かない場合があります。
オブジェクトの子スロットを開いているときにインスペクター左上にある上向きの矢印(⇑)を押すと、オブジェクトルートのスロットが表示できます。
ちなみに、このコンポーネントが無いときに上向き矢印(⇑)を押すと、Grabbableコンポーネントが付いてるスロットが表示されます。
このコンポーネントがアタッチされているスロットを探すためのLogiXがあります。
・Neos Wiki リンク
https://wiki.neosvr.com/ObjectRoot_(Component)
・関連
Get Object Root(LogiX)
UserRoot
AvatarRoot
おわり
以上で第一回は終了です。拙文ではございますが、最後までご覧頂きありがとうございました。
次回は掴むと増えるコンポーネントと、表面に引き寄せるコンポーネントを紹介する予定です。
お楽しみに!