メインコンテンツへスキップ
見出し画像

【VRChat】私は悪くないのにPickUpがバグる

    記事のおおよそのターゲット層

    ・なんかpickupしたオブジェクトのRigidbodyがバグってる人

    ・自作モデルを作っている人(今回はBlenderを開くやる気さえあればいいです)

    ・なにかしらのギミック(VRC PickUp等)をつけてる人

    こんなバグり方をしていませんか?

    VRC Object PoolでなぜかpickupするとRigidbodyの挙動がバグった様におかしくなる理由がようやくわかった pic.twitter.com/LMQTsucqjx

    — たくあん🥟 (@takuan_vrc) December 3, 2022

    上のツイートのようにRigidbodyのIs Kinematicをつけておらず持った瞬間にオブジェクトがめちゃくちゃ荒ぶる人はおそらく今から解説する内容が原因です。

    原因1

    モデルデータの原点がモデル自体から著しく離れているときになります

    原点について軽く解説するとモデルにはモデリングした際のXYZの原点があります。推察ですがおそらくVRC PickUpはこの原点からモデルまでをひとつのオブジェクトとして扱っているのかと思われます。

    普通は原点を中心にモデリングするものですが、例えば複数個のモデルを1つのFBXにしてUnity上で分割、別々のプレハブにする。といった手法をとった場合この事象に陥ることがあります。

    画像
    ひとつのFBX
    画像
    分割してプレハブ化されたもの

    原点の確認方法

    自作モデルなら3Dソフトを開いて確認してもいいですがUnity上で確認する方法です

    画像

    見ただけではわかりませんがこの緑と赤の立方体は【原点がオブジェクトの中心のもの】と【原点がオブジェクトから離れているもの】です。

    画像
    緑の立方体を選んでます

    Unityの左上のほうのこのボタンを押してpivotの表記にすることによって原点が確認できます。

    マニピュレーター(回したり大きさ変えたり動かすやつ)が立方体の中心に来てますね

    (余談ですが逆に、家やお部屋のモデルなどを触るときなどマニピュレーターが変なところにあるときはここを触ると便利です)

    画像
    赤色の立方体を選んでます

    次に赤色の立方体を選ぶとpivotモードの時このようにオブジェクトから離れた位置にマニピュレーターが表示されます。
    しっかり離れてますね(よくない)

    原因1の対処方法

    Blender(モデリングソフト)を開きましょう

    僕はBlenderじゃないShade3Dというソフトを使っているますがどのソフトでもやることは全く一緒です。

    画像

    念のためモデルデータとsceneのバックアップを取る
    ↓
    BOOTH等で買った物でもFBXなどのモデルファイルがあるのでそれを見つける
    ↓
    モデルファイルをモデリングソフトにインポートする
    ↓
    原点にモデルを合わせ、モデルの中心に原点が来るようにする
    ↓
    エクスポートして上書き

    原因2

    (空の)ゲームオブジェクトの位置がおかしい

    まだ直らないって人はおそらく空のゲームオブジェクトの位置がおかしいかもしれません。

    原因2の対象方法

    こちらはケースによりますがunityのみで解決します。

    画像

    なにかの処理をさせる都合で親オブジェクトにPickUpを持たせていたりはしませんか?
    ・モデル自体にPickUp等のコンポーネントをつける。
    ・ゲームオブジェクトの原点とオブジェクトの位置を合わせる
    と直るはずです

    余談

    正直モデリングする際に原点から著しく離れたところにモデルをつくるのは制作途中でもかなりビューカメラ操作がやりづらいので意図しない限りはならないはずですが複数個のオブジェクトでUVを共有する際などはこうなってしまうかと思われます。
    Unity上で分解するにしてもFBXでエクスポートするときだけ重ねて原点がオブジェクトの中心に来るようにしましょう。

    あなたへのおすすめ