はじめに
今回は、Blenderでキャラモデルにウエイトを塗って動かす方法を解説します。
第18回の続きになります。
このような、ウエイトが塗られたキャラが用意されてる状態で進めます。
(体はセンシティブ判定回避用に立方体で隠してます)
![](https://signyamo.blog/wp-content/uploads/2023/08/add-00.jpg)
また、このモデルはマテリアルで”単色”が塗られた状態になってます。
![](https://signyamo.blog/wp-content/uploads/2023/08/add-05.jpg)
マテリアルの割り当て方はこちらをご覧ください。
このタイミングで実機に入れる狙い
色を塗るための処理の後に、構造を変えるとすべてやり直しになります。
なので、最低限の見栄えが分かる状態にして実機に入れます。
そして、上手くいかない場所があればこのタイミングで構造を修正します。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-84-6.jpg)
これが、このタイミングで実機に入れる狙いです。
VRChat用に最低限動かす設定
VCCでプロジェクト作成
VCCとUnityが入ってる前提で進めます。
無ければ、こちらを見ながら導入。
VCCを立ち上げ。
「Create New Project」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-01-10.jpg)
「Avatars」を選択。
任意の名前と保存先を設定。
Create Projectを選択。
![](https://signyamo.blog/wp-content/uploads/2023/03/image-11-16.jpg)
入れるアドオンを設定します。
こだわりが無ければ、そのまま「Open Project」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-03-10.jpg)
これで、VCCでプロジェクト作成が完了です。
アバターモデルの読み込み
VCC経由でUnityが立ち上がります。
私は下図のような画面構成を使ってます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-04-10.jpg)
UIは右上の3つの点 → Add Tabで増やせます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-05-11.jpg)
Projectに.blendファイルをドラッグ&ドロップ。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-06-9.jpg)
Projectの3Dモデルを、Hierarchyにドラッグ&ドロップ。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-07-9.jpg)
これで、アバターモデルの読み込みが完了です。
面が正しく表示されない場合(面の向き)
読み込んだモデルは、下図のように正しく表示されないことがあります。
面の裏側が見えるのは、面の向きが正しく設定されてないからです。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-08-9.jpg)
直すために、Projectの.blendファイルをダブルクリック。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-09-9.jpg)
Blenderを立ち上げ。
ビューポートオーバーレイ → 「面の向き」にチェック。
赤くなってるところが裏返った面です。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-10-9.jpg)
Ctrl+Tab → 6キーで編集モード。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-11-9.jpg)
Lキーのリンク選択などを使い、赤くなった面を選択。
Alt+N → 「反転」で面の向きを反転。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-12-10.jpg)
全体が青くなればCtrl+Sで保存。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-13-9.jpg)
これで、表示が治ります。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-24-8.jpg)
ヒューマノイドボーンの設定
Unityはヒューマノイドというボーンの共通規格があります。
VRChatで動かす場合、ボーンをこの規格に “対応” させる必要があります。
![](https://signyamo.blog/wp-content/uploads/2022/03/image-04-5.jpg)
Projectで読み込んだモデルを1回クリック。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-31-8.jpg)
Inspectorを確認。
Rig → Animation Typeを「Humanoid」に設定。
Applyを押します。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-32-10.jpg)
この状態で「Configure…」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-33-8.jpg)
すると、今のHierarchyの状態を保存するかと聞かれます。
「Save」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-34-9.jpg)
任意の名前を付けて保存。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-35-8.jpg)
すると、下図のような画面になります。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-36-8.jpg)
Inspectorも、下図のような画面が出てきます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-37-8.jpg)
出てこない方は、複数のInspectorを開いてないか確認してください。
ヒューマノイドの設定が出るInspectorは1つだけです。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-38-8.jpg)
ボーン名を確認。
誤認証されてるところがあれば修正します。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-39-9.jpg)
修正はHierarchyのボーンをドラッグ&ドロップで出来ます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-40-8.jpg)
Headなどをクリック。
すると、顔のボーンが表示されます。
ここも同じく確認。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-41-8.jpg)
Jawは顎です。
前髪が認証された場合は選択 → Deleteキーで削除。
Noneの状態にします。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-48-8.jpg)
Hand系も軽く確認。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-49-8.jpg)
問題がなさそうであれば「Done」をクリック。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-42-9.jpg)
Applyを選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-43-8.jpg)
これでヒューマノイドボーンの設定が完了です。
自動設定の挙動を見てボーンを変える
先ほどの自動設定で、下記の2つの問題点が分かりました。
・RootボーンがHipsとして認識される
・Jawに前髪が認識される
この2つに対処するため、ProjectからBlenderファイルを開きます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-09-9.jpg)
今回は、顎とRootボーンを削除することにしました。
選択 → Xキーで削除。
Ctrl+Sで保存。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-44-8.jpg)
ボーンなどの構造を変えると、高確率で不具合が起こります。
今回は体が消えました。
なので、一度Hierarchyから「モデル」を選択 → Deleteキーで削除。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-45-10.jpg)
Projectから読み込みなおします。
これで、ボーンの修正ができます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-46-8.jpg)
もう一度、モデルのInspectorを確認。
ここも初期化されていれば、HumanoidでApply。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-32-10.jpg)
Configure…を選択して、設定をやり直します。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-33-8.jpg)
Jawは消したので、Noneか前髪が誤認証されます。
誤認証された場合は手動で消してください。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-48-8.jpg)
問題がなさそうであれば「Done」をクリック。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-42-9.jpg)
Applyを選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-43-8.jpg)
これで、ヒューマノイドボーンの設定が完了です。
この時点で行った方がよい設定
「最低限必要」から少し離れますが…
アップロードした際に起こる、よくある問題をここで潰します。
Hierarchyで表示されるモノの整理
Hierarchyで読み込んだモデルを開きます。
すると、意図しない形状が入ってる事があります。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-14-8.jpg)
この形状は、Blenderでアウトライナーを確認。
そこにある「オプジェクト」に対応してます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-15-8.jpg)
.001のような、意図しないモノが入ってるは、どこかでパーツ分けしたのが原因です。
なので「.001」の名前があるモデル → 「.001」の名前がないモデルの順に選択。
Ctrl+Jで結合します。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-16-8.jpg)
最後に、全体にCtrl+A → 「全トランスフォーム」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-17-9.jpg)
オプジェクトプロパティで、名前とトランスフォームの値を確認。
トランスフォームは「位置0,0,0 回転0,0,0 スケール1,1,1」になっていればokです。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-18-8.jpg)
Ctrl+Sで保存。
すると、モデルデータが上書きされ、Hierarchyで表示されるモノが変わります。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-19-8.jpg)
以上が、Hierarchyで表示されるモノの整理です。
Boundsの設定
Hierarchyから、モデルを展開。
中にあるメッシュ情報を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-20-8.jpg)
Inspector → Boundsの「Extent」の値を少しふやします。
そして、白い枠がモデルより少し大きいぐらいに設定。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-21-8.jpg)
以上で、Boundsの設定が完了です。
不要な形状の非表示化
Hierarchyから不要なメッシュを選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-22-8.jpg)
Inspector からチェックのオンオフを切り替え。
すると、メッシュの表情/非表示を切り替えれます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-23-8.jpg)
これで、不要な形状の非表示化が完了です。
光の調整
デフォルト環境の場合、逆光で体の陰影が見づらいです。
そこで、光の向きを変えます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-24-8.jpg)
Hierarchy → 「Directional Light」を選択。
Eキーで回転用のUIを表示。
回転させて光の向きを調整。
![](https://signyamo.blog/wp-content/uploads/2023/08/add-01-7.jpg)
これで、正面が明るくなります。
![](https://signyamo.blog/wp-content/uploads/2023/08/add02.jpg)
また、デフォルトのDirectional Lightは若干黄色みがかってます。
気になる方は、Inspector → 「Color」の所で白色に修正してください。
![](https://signyamo.blog/wp-content/uploads/2023/08/add-03-4.jpg)
以上で、光の調整が完了です。
VRChatにアバターをアップロード
ビューポイントの設定
Hierarchyから、アバターのモデルを選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-25-8.jpg)
Inspectorを確認。
Add Component → 「vrc」で検索。
VRC Avatar Descriptorを選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-26-8.jpg)
View → View Positionの「Edit」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-27-8.jpg)
Sceneを確認。
すると、画面にビューポイントが表示されます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-28-7.jpg)
このビューポイントを調整して、目と目の間の顔の中に入れます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-29-8.jpg)
位置が決まれば、Returnで確定。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-30-8.jpg)
これで、ビューポイントの設定が完了です。
アバターのアップロード
VRChat SDK → 「Show Control Panel」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-50-8.jpg)
VRChat SDK にログインします。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-51-8.jpg)
「Builder」を選択。
赤いエラーが出たものは「Auto Fix」を選択してエラーを取ります。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-52-8.jpg)
「Build & Publish for Windows」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-53-8.jpg)
もし、ほかのエラーが出て、アップロードできない方はGoogle翻訳などのアプリり入れてカメラ入力。
エラー文を翻訳して修正してください。
![](https://signyamo.blog/wp-content/uploads/2023/08/add-06.jpg)
名前を入力。
利用規約に同意にチェック。
「Upload」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-54-8.jpg)
アップロードできましたら、下図のような画面が出てきます。
Okeyを押して確定。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-55-8.jpg)
これで、アップロードが完了です。
VRChatで挙動確認
デフォルトマテリアルの場合、光と影の影響を強く受けます。
![](https://signyamo.blog/wp-content/uploads/2023/08/add-04-4.jpg)
そこで、確認は環境光が強く陰影差が出にくい「Just 三面図」がおすすめ。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-56-8.jpg)
ここでウエイトこのミスなどを確認。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-57-9.jpg)
また、間接を曲げた形をみます。
これで、違和感がある所は修正します。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-58-8.jpg)
頭で思い描いた挙動と、実際の挙動を観察しながら修正します。
例えば、私は腕は二の腕の影響はなく、90°回るモノと思ってました。
が、VRChatは肘の痩せ対策なのか、二の腕から回ってました。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-59-9.jpg)
このような、エラーを修正 → 再アップロードを繰り返して取り去ります。
VRChatに入った際、修正ポイントをまとめておくと作業しやすいです。
【修正リストの例】
・脇、 腕のウエイト入って削げる
・二の腕、分割が少ないのか、角張りが出る
・手、指が綺麗に曲がらない
・手が小さいので治す
…など
![](https://signyamo.blog/wp-content/uploads/2023/02/pd0ogJ64_400x400-150x150.jpg)
Blender画面で見る印象と、VRで入ってみる印象はかなり変わります。
VRで一番いい見え方になるように調整してください。
以上が、VRChatでの挙動確認です。
最低限のPhys Bone設定
Unity上でPhys Boneを動かす
下記のことをやって行きます。
【Phys Boneでやる事】
・Transforms → Root Transformsで親ボーンを設定
・Collision → Radiusでボーンの大きさを決める
・Unity上で動かす
・Forcesで動きの設定を入れる
・動き方を見ながらLimitsを設定
アーマチュアを開き、中にあるボーンから揺れもの設定したいボーンを選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-61-8.jpg)
Inspectorを確認。
Add Component → 「VRC Phys Bone」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-62-9.jpg)
Root Transformを確認。
ここに揺れモノ親ボーンを読み込ませます。
Hierarchyからドラッグ&ドロップで設定可能。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-63-9.jpg)
Collision → Radiusでボーンの大きさを設定。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-64-8.jpg)
この大きさはPhys Boneのプレビューに影響を与えます。
![](https://signyamo.blog/wp-content/uploads/2022/04/image-30-2.jpg)
Forcesを展開。
Integration Typeを「Advanced」に設定。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-65-8.jpg)
画面上部の「再生ボタン」を押します。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-66-8.jpg)
Hierarchyからモデル全体を選択。
(変化が分かりやすいよう、体を非表示にしました)
![](https://signyamo.blog/wp-content/uploads/2023/08/image-67-8.jpg)
3Dビュー上で移動。
すると、尻尾が動きます。
![](https://signyamo.blog/wp-content/uploads/2023/08/gif-1-6.gif)
あとはForcesの「Advanced」にある値を設定調整します。
・Pull = 影響の受けやすさ、どのように元の状態に戻るか(減衰)
・Momentum = 動きのバネっぽさ(弾力性)
・Stiffness = 元の形の保ち具合(剛性)
・Immobile = 動かなさ、元の動きがどれぐらい影響受けないか(不動性)
・Gravity = 重力の影響、下方向への加速度(重力)
・Gravity Falloff = 体などが傾いてない時の重力影響の無効化(回転角度による重力相殺)
※Cを押すとカーブで細かく動きを設定可能。
動きが決まりましたら、Limitsを展開。
Limit Typeを「Angle」などに設定。
Max Angleを任意の値に設定。
これで、ボーンが動きすぎて崩れる対策ができました。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-69-9.jpg)
以上が、Unity上でPhys Boneを動かすための最低限の設定です。
あと必要な方は、Stretch & Squish や Grab & Poseなどの細かい設定を行ってください。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-71-9.jpg)
Phys Bone設定の詳細はこちらでまとめてます。
他のボーンにPhys Boneを割り当てる
Inspectorの設定をコピーして、ほかのボーンに割り当てます。
VRC Phys Bone横の3つの点 → 「Copy Component」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-70-9.jpg)
Hierarchyから、ほかに割り当てたいボーンの親をを選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-72-9.jpg)
Transform横の3つの点を選択。
「Paste Component As New」を選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-73-8.jpg)
すると、先ほどのPhys Boneの値がコピーされて貼り付けられます。
これを、再生ボタンを押しながら調整する流れになります。
![](https://signyamo.blog/wp-content/uploads/2023/08/re-01-1.jpg)
以上が、他のボーンにPhys Boneを割り当てる方法です。
再生モードで値を操作した際の注意点
再生ボタンを押しながら、値を調整した場合の注意点があります。
![](https://signyamo.blog/wp-content/uploads/2023/08/re-01-1.jpg)
それは… もう一度再生ボタンを押すと設定した値が元に戻る事。
![](https://signyamo.blog/wp-content/uploads/2023/08/re-02.jpg)
再生ボタンを押してる中で、良い値ができた場合「3つの点」をクリック。
「Copy Component」で値をコピー。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-75-8.jpg)
再生ボタンを解除。
これで、値が初期化されます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-76-9.jpg)
再生ボタンが入ってない状態で「3つの点」をクリック。
「Paste Component Values」で値を貼り付けます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-77-9.jpg)
以上が、再生モードで値を操作した際の注意点と対策です。
Unityで触った際の挙動テスト
Phys Boneは触る事ができます。
Unity上で「掴み」は再現できません。
が…「触れる」は再現できます。
この触れるを再現して挙動テストを行います。
![](https://signyamo.blog/wp-content/uploads/2022/04/image-23-3.jpg)
Hierarchyの何もない所を右クリック。
3D Object → 「Sphere」などを選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-78-8.jpg)
Inspectorを確認。
・Mesh Rendererのチェックを解除
・Sphere Colliderのチェックを解除
・Add Component → 「Phys」で検索
・VRC Phys Bone Colliderを選択して追加
![](https://signyamo.blog/wp-content/uploads/2023/08/image-79-9.jpg)
Hierarchyで、挙動テストをしたいPhys Boneを選択。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-72-9.jpg)
Inspectorを確認。
Collison → Collidersの値を1に設定。
Element 0に「Shpere」をドラッグ&ドロップで割り当て。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-80-8.jpg)
この状態で再生モード。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-66-8.jpg)
ShpereをPhys Boneにぶつけます。
すると、触った時の挙動を確認できます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-81-9.jpg)
最後は、VRChatに上げて挙動確認してください。
Unityとは少し違った挙動になります。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-82-10.jpg)
実機(VRChat)で一番綺麗に見えることが重要です。
これらの方法を使い、調整すればPhys Boneの設定が完了です。
形が崩れた場合の対処法
ボーンや形状の修正を繰り返すと、形が崩れる事があります。
これは、Unity上ボーンなどの位置データと修正した形状が合わなくなったから起こります。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-83-7.jpg)
治すには、再度Unityに読み込みなおす必要があります。
一番簡単な方法は「名前を変えたBlenderファイル」を再導入。
一連の流れを辿って再アップロード。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-85-6.jpg)
![](https://signyamo.blog/wp-content/uploads/2023/02/pd0ogJ64_400x400-150x150.jpg)
ただ、Blenderファイルが4~5個になると訳が分かりません。
そこで、消して上げなおす方法を紹介します。
消して上げなおす場合…
まず、Phys Boneの設定データを残すために「Prefab化」します。
Hierarchyから読み込んだモデルをProjectにドラッグ&ドロップ。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-60-8.jpg)
![](https://signyamo.blog/wp-content/uploads/2023/02/pd0ogJ64_400x400-150x150.jpg)
Prefab化は、Hierarchyの中身を保存する機能です
次に、モデルデータを削除。
すると、参照できる形状データが無くなり、Prefabからモデルが消えます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-86-6.jpg)
ただ、この中にはPhys Boneの設定は残ってます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-87-6.jpg)
そしたら、Blenderファイルを上げなおします。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-88-5.jpg)
あとは気が済むまで調整
あとは気が済むまで調整します。
ただ、無限にやってると病んできます。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-89-5.jpg)
公的に推奨はできませんが… 衣装のデザイン画を確認。
修正箇所が服と被って無さそうな場所であれば、先に服を作るのもアリです。
![](https://signyamo.blog/wp-content/uploads/2023/08/image-90-5.jpg)
![](https://signyamo.blog/wp-content/uploads/2023/02/pd0ogJ64_400x400-150x150.jpg)
モチベーションの問題
以上が、VRChatへのアップロードとモデルの調整です。
まとめ
今回はVRChatで自作モデルを動かすための設定方法を紹介しました。
・UnityはVCC経由で立ち上げる
・VCCを経由すると、アバターアップに必要なSDKが入る
・モデルはUnityのProjectに入れて読み込む
・読み込んだモデルは、ヒューマノイド設定を入れて動くようにする
・アバターはVRC Avatar Descriptorを入れてビューポイントを設定すれば最低限の設定が完了
・揺れ物ボーンを動かしたい場合は、PhysBoneを使う
↓次回↓
![](https://signyamo.blog/wp-content/uploads/2023/08/dc3ee87ef36f8aef46a0fe859f673171-21-320x180.jpg)
また、ほかにも3DCGについて解説してます。
ぜひ、こちらもご覧ください。
コメント