👗

【Roblox】アバターアイテム作成時のウェイトについて(2024/11/14更新)

2024/08/08に公開

はじめに

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

Robloxバージョン:0.625.0.6250509

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

モデルの用意

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

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

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

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

ケージの名前とボーンのバインドについて(2024/11/14更新)

ケージの名前ですが、3D衣装モデルと同じ名前を先頭に入れて命名します。
「xxxxx_outercage」「xxxxx_innercage」
これにより、インポート時にケージとして正しく読み込まれるようになり、
Robloxにインポートした際、Roblox内でのモデルの変形は名前を合わせてリンクさせたケージの変形に沿って行われます。

また、Roblox公式のテンプレートサンプルだと、インナーケージとアウターケージにボーンがバインドしてあるのが確認できるので、ケージにボーンをバインドしておきます。

※後からわかった事ですが、ケージのウェイト情報は特に動きに関係ないようなので、ここではバインドする必要はありませんでした。

モデルの書き出し

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

Robloxへインポート

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

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

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

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

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

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

スカートの異常な動作

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

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

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

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

Roblox側での調査

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

AutoSkinのトラブルの解決策と対策 (2024/11/14更新)

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

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

AutoSkinの設定項目と、モデル自体へのウェイト付け

上半身のウェイトは上記の調整で正常な動きになりましたが、
下半身のパーツ(特にスカート)は腰周辺のウェイト情報の制御が難しいままでした。

別方向で調整ができないかとAutoSkinの設定項目を調べ、各項目では以下のウェイト情報が付与されることがわかりました。

  • Disabled
    オートでウェイト情報を付与せず、モデルに設定されているウェイト情報を参照する。
  • EnabledOverride
    オートでウェイト情報を上書きして付与する。
  • EnablePreserve
    モデルに設定されているウェイト情報を残しつつ、設定されていない箇所のみオートでウェイト情報が付与される。

上記の3つの設定項目で今回は「EnabledOverride」で設定を行っていましたが、
これだとオートで付与されるウェイト情報を制御することが難しいので
maya側でモデル自体にウェイト情報を設定し、「Disabled」の設定にすることで意図しない動きを抑えられるようになりました。

上記修正後の動き

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

まとめ (2024/11/14更新)

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

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

  • 上記2点のAutoSkin設定で意図しない動きをしてしまう場合は、モデル自体にmaya側でウェイト情報を設定し、AutoSkin設定を「Disabled」にすることで、mayaで設定したウェイト情報が反映され、意図しない動きを抑えることができる。

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

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

Discussion