diff --git a/book/SUMMARY.md b/book/SUMMARY.md index 62347f0..2598ac1 100644 --- a/book/SUMMARY.md +++ b/book/SUMMARY.md @@ -37,7 +37,7 @@ * [dragon ik plugin](plan/06_dragonik.md) * [unity](unity/README.md) * [blender](blender/README.md) - * [シェイプキーを使う](blender/01_model.md) + * [素体を作る](blender/01_model.md) * [衣装を着せる](blender/02_costume.md) * [vrmで統合する](blender/03_vrm.md) * [issue](issue/README.md) diff --git a/book/blender/01_model.md b/book/blender/01_model.md index f11df6f..51c704f 100644 --- a/book/blender/01_model.md +++ b/book/blender/01_model.md @@ -1,23 +1,50 @@ -# シェイプキーを使う +# 素体を作る -素体を作ります。色々と探したのですが、なかなか納得するものが見つかりません。できる限り現実に近いものを目指します。 +素体を作ります。できる限り現実に近い再現を目指します。これを`gender system`と呼び、わかりやすくいうとキャラクターの性器システムです。 今回は、Aモデル(vrm)とBモデル(部位)の統合をblenderで行います。統合したものをvrmにexportして、ueでimportします。Bモデルにはシェイプキーを設定しているので、ueではモーフターゲットとして動かせるようにします。 -blenderのexportやueのimportは注意が必要です。`VRM MToon`, `ペアレントで[Body]頂点`, `UVMap`, `シェイプキーをSKkeeperで上書き`が必要でした。 +ueで動かすにはmaterialに`VRM MToon`を使うこと、`UVMap`の名前に設定すること、`vrm0`を使うこと、データ転送で`頂点`を設定することが大切です。使用する[addon](/blender/)を確認してください。今回使用するのは、vrmをimport, exportするaddonだけです。 -使用する[addon](/blender/)を確認してください。 +## vroidの設定 -1. まずBモデルをblenderで読み込み、いらないものを削除します。vrmを読み込むaddonが必要です。 -2. materialに`VRM MToon`を設定します。ueでimportする際にcrashします。 -3. dataのUVマップに`UVMap_xxx`となっているときは名前を`UVMap`にします。色がおかしくなります。 -4. 編集モードでBモデルを膨らませます。これは頂点を選択して[G]を押します。 -5. addonの`SKkeeper`を使い、オブジェクトメニューからapply modifyを選択します。追加モデルのmirrorやkeyをまとめます。これをしないとvrmにexportできません。 -6. 次にAモデルの編集です。いくつかの面を削除してBモデルをくっつけても違和感ないようにします。 -7. トランスフォームのペアレントで`[Body]頂点`を選択します。G, [y, z, r]などを駆使して位置調整してください。 +素体はvroidをベースにします。つけている衣装を全部はずします。そして、パンツなどもテクスチャを削除しておくと素体の完成です。 -> シェイプキーをueで使うには、objectを元の構成に再統合してください。 +## materialの設定 -ペアレントは正しく設定されるときもあればズレることもあります。同じファイルをvrmにexportしても結果がその都度異なります。また、モーフターゲットが正しく反映されないこともあります。 +vrmをblenderで読み込みます。 -私は`[Armatrue]ボーン(hip)`につけることで設定しました。しかし、ueで読み込んだとき少し下に表示されるので、これ自体をずらした位置で調整し、ueで確認する必要がありました。 +1. Bモデルのmaterialに`VRM MToon`を設定します。ueでimportする際にcrashします。 +2. dataのUVマップに`UVMap_xxx`となっているときは名前を`UVMap`にします。色がおかしくなります。 + +## 基本的な編集(移動、削除、位置) + +1. Bモデルを正しい位置にセットします。[G], [Z], [R] +2. Aモデルを適切に切り取ります。[面を選択], [細分化], [四角形に], [面を削除] +3. シェイプキーを動かしても問題ないかの確認します。 + +![](/img/0012.png) + +## bodyに追従させる + +このままではBモデルは体に追従しません。追従させるには頂点をアーマチュア(armature)に追加します。 + +1. Bモデルのモディファイアから[データ転送], [Body(J_Bip_C_Hips)], [頂点], [頂点グループ]を選択し、[データレイヤーを生成], [適用]します。 +2. Bモデルのモディファイアでアーマチュアで[Armature]を追加します。 +3. 女性の場合はボーン(足)を調整します。なお、少し浮くようになってしまうため全体を-Zします。[G], [X], [R] + +> シェイプキーをueでも有効にするには、vrm0を使います。また、編集しているときにobjectを分離した場合は元の構成に再統合してください。 + +![](/img/0013.png) + +## gender systemについて + +例外ない限りキャラクターにはgender systemが搭載されます。アイは原作で性別がないので、例外的にgender systemから除外されています。 + +最初に実装するキャラは、仮名で`アダブ(男性)`, `イブチェ(女性)`になります。 + +## issue: ueで読み込むと一部のmaterialが正しく表示されない + +この現象はblenderで作った`.vrm`をvrm4uで読み込み、一旦、ueを終了するとその後、materialがおかしくなります。 + +しかし、`vrm1`の出力は正常なので、それを読み込んで生成されたmaterialを`SK_${name}`にセットしています。 diff --git a/book/blender/03_vrm.md b/book/blender/03_vrm.md index 2da5ca7..b5e000c 100644 --- a/book/blender/03_vrm.md +++ b/book/blender/03_vrm.md @@ -2,14 +2,22 @@ `.vrm`を読み込んで、別の`.vrm`に統合する方法を紹介します。最終的にはueでも動くようにします。 -今回も衣装を着せる方法に使った`データ転送`を使います。例えば、髪の毛を設定してみましょう。 +編集しているうちにblenderのシェイプキーがueのモーフターゲットにexportできなくなったり、髪の毛のウェイトが消えていたりといったトラブルが多発します。 -ここで重要なのはblenderの物理シュミレーションです。髪の毛に物理シュミレーションが設定されているか確認してください。vrm 1.0を前提にしますが`Spring Bone`が消えている可能性があります。そして、統合する際はこのデータを持ってくることができません。blenderで設定しなくてもueの`kawaiiphysics`でも設定できます。 +blenderのvrmはspring boneを設定して髪の毛を動かしています。これはboneに付いているcolliderと連動しています。 -次に、設定されているウェイトが剥がされていないか確認してください。データ転送後は髪の毛にウェイトが付いているか確認してください。 +髪の毛はboneとも連動していて、armature(bone)を統合したあとにheadとheadをつなげなければなりません。 -- 髪の毛に物理シュミレーションはあるか。 -- 髪の毛にウェイトはあるか。 +統合するobjectの動きを本体に追従したい場合は頂点とアーマチュアを正しく設定しなければなりません。データ転送を活用します。 + +髪の毛が動かない場合、物理シュミレーションが設定されているか確認してください。ueの`kawaiiphysics`でも設定できます。私はueのほうで設定しています。また、髪の毛のウェイトが剥がされていないか確認してください。データ転送後は髪の毛にウェイトが付いているか確認しましょう。 + +シェイプキー(モーフターゲット)が消えてしまうのは`vrm1`に起因します。blenderで編集する場合は`vrm0`をベースにしてください。また、シェイプキーは元のobject名に再統合しなければ消えてしまいます。 + +1. vrm0をベースにしているか。 +2. objectを元の状態に再統合できているか。 +3. 髪の毛にウェイトはあるか。 +4. 髪の毛に物理シュミレーションはあるか。 ## 具体的な手順 @@ -21,13 +29,7 @@ hair(髪の毛)とbody(体)で分けられたvrmを読み込むこととしま ウェイトがhair(J_Bip_C_Head)に設定されていることを確認してください。今後、hairのobjectをいじると削除される可能性があります。 -## blendshapeとvmc - -vmcは`.vrm`をblenderで開いたときblendshape(ブレンドシェイプ)が設定されていれば大抵動くと思います。 - -ただし、blenderで編集した際に使えなくなってしまう可能性が高いです。例えば、objectを分離した場合がそうです。後に統合すると動くようになります。 - -## ueで動かす +## ueで物理シュミレーションを設定する 1. 次にueでhairを動くようにします。ueでvrmを読み込んで、`ABP_Post_${name}`を編集します。`kawaiiphysics`でRoot Boneに`J_Sec_Hair_1_xx`を1-12まで入れて、Capsule Limitsに`chest`, `hip`などを設定します。私は`chest`の値を大きめにして対処しました。 2. 次に、服が体に入りこまないようにしなければなりません。これも先ほどと同じように設定します。 @@ -37,5 +39,9 @@ blenderから読み込んだmodelを動かしてみた。 ![](/img/0007.png) -- 髪の毛が動かない: hairにウェイトは設定されているか -- 表情が動かない: 元のobject構成に再統合されているか +## blendshapeとvmc + +vmcは`.vrm`をblenderで開いたときblendshape(ブレンドシェイプ)が設定されていれば大抵動くと思います。 + +ただし、blenderで編集した際に使えなくなってしまう可能性が高いです。例えば、objectを分離した場合がそうです。最初の構成にobjectを統合すると動くようになります。 + diff --git a/book/img/0012.png b/book/img/0012.png new file mode 100644 index 0000000..897cf35 Binary files /dev/null and b/book/img/0012.png differ diff --git a/book/img/0013.png b/book/img/0013.png new file mode 100644 index 0000000..674da8d Binary files /dev/null and b/book/img/0013.png differ