👗

【Roblox】アバターアイテム作成時のウェイトについて

2024/08/08に公開

はじめに

この記事では、RobloxStudio内でアバターアイテムを作成する際に3DモデルをRobloxStudioにインポートしてからのモデルのウェイトの挙動で起こったトラブルと、その対策、解決策を簡単に解説します。
(今回はmayaで作成したモデルを読み込んでの事象となります。)
調査して判明した項目順に記載していきますので、結果だけ読みたい方は下方のまとめまで進んでください。

Robloxバージョン:0.625.0.6250509

Roblox内でアバターアイテムを作成する。

モデルの用意

※メッシュアバターの作成法に関して、今回は簡易的な説明とさせていただきます。
まず最初にRoblox内で使用したい3Dモデルを作成します。
(本記事ではmayaで作成した3モデルを使用します。)
Roblox公式から衣装用のテンプレートがDLできるので、それをベースに作成するといいでしょう。

インナーケージ、アウターケージの設定

Roblox公式のテンプレートサンプルからインナーケージとアウターケージのデータをDLし、
作成した3Dモデルと同位置に配置します。
3Dモデル衣装の内側にインナーケージが収まり、3Dモデル衣装を覆うようなアウターケージとなるように形状を編集します。

この時、スカートなどの面積がケージの形状から大きく外れてしまうようなパーツはその根元付近だけ覆えば問題なさそうです。

ケージとボーンのバインド

まずケージの名前を3D衣装モデルと同じ名前を先頭に入れて変更します。
「xxxxx_outercage」「xxxxx_innercage」

次に形状を編集したインナーケージとアウターケージにボーンをバインドします。
ボーンは最初にDLしたテンプレート内に含まれているかと思います。
Robloxへインポートした際にオートでスキンウェイトが設定されるので、maya上での細かなウェイト調整は不要です。

  • Robloxにインポートした際、Roblox内でのモデルの変形は名前を合わせてリンクさせたケージの変形に沿って行われます。
  • ですのでこの段階での3D衣装モデルへのバインドは不要です。

モデルの書き出し

最後にボーン、ケージ、3D衣装モデルの3種を合わせて出力します。
ヒストリ情報のチェックを入れておいてください。

Robloxへインポート

出力したfbxデータをRobloxへインポートします。
この時に「アップロードの設定」「メッシュ頂点カラーの無効」「添付テクスチャ」のチェックを外しておいてください。

アクセサリ装着ツールの設定

インポートし、テクスチャも設定したメッシュデータを使用してアクセサリー化します。

  • 最初にメッシュデータ内のwarplayerのプロパティから、「Autoskin」の項目を「Disabled」から「EnableOverride」に変更します。
    ※この設定をしておかないとアクセサリーをアタッチした時にメッシュの大きさが変わらなくなってしますのでご注意ください。

  • アクセサリ装着ツールでメッシュを選択し、順位沿って作成を進めます。

アバターアイテム作成時に発生したトラブル

スカートの異常な動作

今回発生したトラブルは、上記の作成手順のアクセサリー装着ツールの設定の段階で発覚しました。
参考の様に、設定したスカートのモデルの端の部分が両手にくっついてきてしまい、異常な動作をするようになっていました。

今回はスカートとソックス、靴のパーツを一つのメッシュのアクセサリーとして設定する必要があり、その要件を満たすために以下の順で調査を行いました。

maya側でのウェイト情報の調査

スカートの両端にmayaのバインド時にウェイト情報が入ってしまっていると思い、最初にmayaでウェイトの確認を行いました。
最初に記載した通り、アウターケージとインナーケージにボーンをバインドしている為、3D衣装モデル側へのウェイトは入っていません。
ケージ側の腰の部分にウェイトが入っていたので、それを腕以外に入らないように調整後、インポートして確認してみました。
結果は変わらず、maya側で設定したウェイト情報はRobloxのアクセサリ装着ツール上で設定する際に新たなスキン情報に上書きされてしまっていることがわかりました。

Roblox側での調査

Robloxでインポートしたデータと、アクセサリ装飾ツール上の設定を調査し
やはりプロパティの「Autoskin」に設定した「EnableOverride」で上書きされたスキン情報に
ケージの手の部分のウェイトがついてしまっています。
原因として、バインドしたウェイト情報はインナーケージとアウターケージに反映されるので、そのバインドされる手のボーンの位置が腰付近に近いのではないかと考えられます。
また、膝付近のケージの変形に引っ張られ、スカートの前面と後面の変形もおかしくなっているので、膝付近のボーンのウェイトも調整する必要がありそうです。
以降はその回避策を検討しました。

AutoSkinのトラブルの解決策と対策

腕回りのボーンとケージの調整

作業をmaya側に戻しまして、まずボーンとケージの腕付近の角度を調整しました。
テンプレートのポーズから変更してしまっても、インポートには影響はないようなので、ウェイトを付けた時にケージの腰付近まで影響が出ない角度まで肩の回転角度を調整しました。
これにより、AutoAkinで上書きされた時に腰付近にウェイトが影響しなくなりました。

膝のボーンとケージの調整

膝付近のケージがスカートの前面後面を変形させてしまうのを防ぐために、ケージの腰から下の頂点を削除しました。
これにより膝付近にウェイトが乗ることを防止し、動かなくすることができました。
今回は靴も一緒のメッシュにしなければならないので、膝下のケージはそのままとなっています。
注意として、ケージの頂点を削除する場合はインナーケージとアウターケージでそれぞれ対応する頂点が決まっているようなので、対応する頂点及び、頂点数は合わせなくてはならないようです。

ソックス部分の範囲の見直し

当初のデザインでは、スカートの中から見える足部分全てをソックスとしてメッシュを作成していましたが、膝部分のケージを削除した影響で膝付近のソックスの大きさが縮尺しなくなってしまいました。
なので、ケージが残っている膝下部分からのソックスへデザインの変更が必要でした。
Robloxのストア上で膝下のブーツや靴下がセットになっているモデルがほとんどなのはこれが原因だと考えられます。

上記修正後の動き

上記の3点を修正後、スカートが手に干渉することもなく、走ったりした時にスカートが変な挙動にならないよう設定することができました。

まとめ

  • アクセサリー装着ツールで衣装をアクセサリー化する際、「Autoskin」で「EnableOverride」を設定すると、外部ツールで設定したウェイト情報が新規に上書きされる。
    そのウェイト情報はボーンをインナーケージとアウターケージにバインドしなおしたものである。

  • ケージの意図しない箇所へウェイトが乗ってしまう場合は、ウェイトが乗ってほしくないゲートの頂点から、影響してしまっているボーンの位置を変更する必要がある。
    ※テンプレートのボーンとケージは、角度や形状を変更してしまってインポート時に問題はない。

  • ケージに不要なウェイトが入ってしまう時は、影響が出そうなケージの頂点を削除することで
    想定しない動きを抑えることができる。
     この時、インナーケージとアウターケージの頂点数と、対応した頂点は合わせておかなければならない。

ご愛読ありがとうございます。

ランド・ホー Roblox開発チーム

Discussion