ワールドに庭子アバターを設置して、髪揺れなどの物理シミュレーション付きで踊らせ津ためにはPhysBoneをDynamic Boneへ変換する必要があります。PhyBoneはアバターのみでしか利用できないためです。
パッケージ準備
まず必要パッケージを準備します。
Unity Asset Storeから Dynamic Bone を購入して導入しましょう。通常$20ですが、時々セールをやっています。
PhysBone から Dynamic Boneへの変換は下記ツールを使わせて貰いました。最終的にはパラメータ調整しますが、まずは自動変換で雰囲気を見ます。
[Free]VRCPhysBone To DynamicBone Converter V0.4
利用するダンスモーションと音楽を購入しておきます。
今回はデジタルモーションさんの「僕らのミライ」を購入して使いました。
曲(歌のみ含む)とダンスモーションがセットになっており、とてもお得です。
VCC: アバターprj準備
下記のようにアバターprjを準備しておきます。
Prjを立ち上げて、Directional Lightの色(真っ白にしました)や方向(デフォルトだと逆光なのでY回転で180度設定しました)など調整しましょう。
これに庭子アバターをインポートしましょう。
AssetにDataというフォルダを作って、僕らのミライのダンスモーションFBXと曲データを置きましょう。
Dataフォルダの「bokuranomiraie_dance.fbx」をクリックして、Inspector の Rig からHumaroidを選択し、Applyします。
さらにConfigureを惜します。シーンを保存しろと言われたら適当な名前をつけて保存してください。Configureでは特にHeadのJawに変なボーンが入ってないか確認しましょう。一通り確認したら「Done」をおします。
ダンスモーション確認
Dataフォルダの「bokuranomiraie_dance.fbx」の中のアニメーションクリップ「bokuranomiraie_dance.」をHierarchyのniwako-v01へDrag&Dropします。niwako-v01のAnimatorがNoneではなくniwako-v01などが設定されているのを確認して、上部のプレイボタン「>」をおしましょう。ワールドに設置した庭子がダンスし始めます。もう一度プレイボタン押すと止まります。
PhysBoneで髪の毛は物理シミュレーションされて動作しています。これをリファレンスとして確認しながら、Dynamic Bone変換していきます。
PhysBone→Dynamic Bone変換
ここにDynamic Bone(Asset Storeからimport), PhysBone2DynamicBone_0.4をimportします。
Moyuer→PhysBone2DynamicBoneを選択。
PhysBone2DynamicBoneウィンドウが立ち上がります。
庭子アバターをDrag&Dropして、Applyします。
元のアバター:niwako-v01が非アクティブになり、niwako-v01_DBが新しく出来てアクティブになっています。niwako-v01_DBがDynamic Bone変換されたアバターです。
niwako-v01の Position Xを1にして、アクティブにしましょう。二人表示されます。カメラの位置など再調整しています。
niwako-v01_DBのAnimatorにも同様に設定されているのを確認してプレイボタンを押しましょう。二人並んでダンスします。
このままだとDynamic Boneの動きが変です。
髪の毛の根元が動きすぎですし、全体的にフワッと感が足りません。
Dynamic Boneパラメータ調整
PhysBone側hair.ROOTパラメータは下記:
Pull = 0.10
Spring = 0.95
Gravity = 0.05
Gravity Falloff = 0
Immobile = 0.5
Limit Type = Angle
Max Angle = 90 → 45
Collision
Radius = 0.015
MaxStretch = 0
Colliders size = 1 (headコライダーをDrag&Drop)
hair.ROOTの変換直後パラメータは下記のようになっています。
Update Rate : 60
Update Mode : Dfault
Damping : 0.95
Damping Distrib :
Elasticity : 0.1
Slasticity Distrib :
Stiffness : 0.2
Stiffness Distrib :
Inert : 0.5
Inert Distrib :
Friction : 0
Radius : 0.015
Radius Distrib :
End Length : 0
End Offset all 0
Grabity x:0, y:-0.005, z:0
Force : all 0
Blend Weight
今回はフワッと回る髪の毛を目指します。髪の毛の根元が動かないようにするためにElasticity Distribを設定します。
Update Rate : 60
Update Mode : Dfault
Damping : 0.1 ★★★★★
Damping Distrib :
Elasticity : 0.2 ★★★★★
Elasticity Distrib : ★★★★★
1→0の下降直線に(0.1,0.95), (0.5,0.1)にポイント追加しS字に角度は良い感じに
Stiffness : 0 ★★★★★元は0.2
Stiffness : Distrib :
Inert : 0 ★★★★★
Inert Distrib : なし ★★★★★
Friction : 0
Radius : 0.015
Radius Distrib :
End Length : 0
End Offset all 0
Grabity x:0, y:0★★★★★, z:0
Force : all 0
Blend Weight
パラメータ調整後の比較動画
あとは niwako-v01_DB をプレファブ化して、VRChat ワールドPrjなどにimportすれば髪の毛がゆれながら踊るアバターオブジェクトをワールドに配置できます。
次は口パクを入れてみましょう。