Pikali’s diary

Unity素人,Blenderできない非IT系サラリーマンがVRChatを始めました。

Dynamic Boneで揺らした髪が顔や体にめり込む対策(Dynamic Bone Colider使ってみた)

前回の記事でDynamic Boneで髪の毛を揺らすとこまで行ったのですが髪が体や顔にめり込むのでいちおう対策してみました。

今回はDynamic  Bone Coliderを3個使います。

(1個は頭あたり:前髪と横髪が顔に刺さるのを防ぐ

 もう1個は肩:後ろの髪が胴体に刺さるのを防ぐ

 残りは首:後ろの髪が首に刺さるのを防ぐ)

表示をワイヤーフレームに切り替えると確認しやすい場合があります。

f:id:Pikali:20190114144554j:plain

Headの下に空のGame Objectを作成します。(名前はHead Coliderとかにしときます)

f:id:Pikali:20190114151323j:plain


そこにDynamic Bone Coliderを追加します。

f:id:Pikali:20190114150141j:plain

とりあえずはざっくりこんな感じで作っときます。

f:id:Pikali:20190114152043p:plain

今度は各ボーンにコライダーの当たり判定を設定します。

今回、頭のコライダーには前髪、横髪を設定ます。

まず前髪のDynamic BoneのColider のSizeを1にします。

(このSizeは大きさではなくコライダーの数です)

下のElement 0のマスにDynamic Bone Coliderを作ったオブジェクトをドラックアンドドロップします。

f:id:Pikali:20190114153729j:plain

同じように横髪の2つも設定します。

f:id:Pikali:20190114153937p:plain

ここでコライダーの大きさや位置を調整します。

再生を押すと効果が確認できますので再生しながら調整するのがいいと思います。

アバターの顔は完全な球形ではないので1個のコライダーで完全にカバーするのは難しいのでボーンごとにコライダーを分ける方法もありますが、ほどよいところで決めとくのがよいかと思います。

た再生時の変更は再生を止める(もう1回再生を押す)とリセットされてしまうのでメモを取るなどして再生停止後あらためて入力する必要があります。

f:id:Pikali:20190114155908j:plain

動かしてみる場合はRootを選択して前後左右に動かしてみるとわかりやすいです。

f:id:Pikali:20190114161052j:plain

続いて後です。

(今回の場合後髪のコライダーはRadiusを0.03にしておいたほうが良いようです。)

Upper Chestの下にGameObjectを作成してDynamic Bone Coliderを作成します。

f:id:Pikali:20190114172601j:plain

今回は横に長くしたいのでDirectionをX、Heightを入力します。(とりあえず0.3とか)

球が2個に分かれて見えますが実際には横長のカプセル状のものができています。

続いてNeckの下にも作成します。

こちらは縦長ですのでDirectionをYに設定します。(Heightはとりあえず0.15)

f:id:Pikali:20190114173613j:plain

胴体に貫通しそうな後髪のボーンを選択してDynamic BoneのColiderのSizeを2にします。Elementの欄にそれぞれコライダーを作ったオブジェクトをドラッグアンドドロップします。

同じ作業を他の後髪にも行います。

その後顔と同じようにひたすらサイズや位置を調整して完了です。(この作業がいちばんしんどい)

しかし、頑張った後の結果がこれだからなぁ・・・

f:id:Pikali:20190114183215p:plain

追記

このままではあんまりなので、VRoid直してきました。

VRoidの修正

後髪ボーングループを3分割から左右2分割に

各ボーンの数を3個に減らす。

 Unityでは

頭と首のDynamic Bone Coliderをやめて前髪は固定(Dynamic Boneなし)、

横髪はX方向固定しました。(Freeze Axisをxに)

Upper Chestのコライダーを大きくして後髪だけ関連付けて前に行かないように

してます。

f:id:Pikali:20190114212502p:plain

これでようやくMiddleになりました。

f:id:Pikali:20190114212554p:plain

 

 

Dynamic Boneを使ってVRChatでもVRoidの髪の毛揺らしたい。

先月(2018/12)のアップデートでVRoidで髪の毛を揺らすことができるようになりましたが、VRChatでは揺れてくれません。

これを解決する方法の1つにUnityの有料アセットであるDynamic Boneを使う方法があるらしい、ということがわかり、さらに先月下旬のセールで半額だったので買ってみました。(1/13現在は元の価格に戻っています)

assetstore.unity.com

その後、これを使うとアバターのランクが下がるらしいという話を知ってしまい放置してました・・・がせっかく10$出して買ったんで頑張ってやってみました。

スカートに適用してしまうと足がスカートを貫通してしまい、この対応がまだできないので今回は髪の毛だけやってみようと思います。

VRoid Studioで髪の毛の揺れ物は設定しておいてください。

(ボーングループはあまり多くないほうが良いかもしれません、数がおおいとけっこう面倒ですw)

よくわからない場合はこちらの記事を参考にしていただくとよいかと。

 VRoid公式 on Twitter: "【髪揺れ機能解説①】
現状UIがちょっとわかりにくいので動画で解説します。

揺らしたい髪を選択(複数可)してから「ボーングループを作成」で、選択した房の中心に自動でボーンが設定されます。これだけで揺れます! #VRoid… "

こちらのさくま先生の記事がとても詳しいです、必見!!。

aozoranositade.ape.jp

 

以前の記事5.VRChatにアップロード

の手前まで進んでいる状態から始めます。(UniVRM-xx→Duplicate and Convert for VRChatの操作をしてクローンを作成した後です)

VRoid Studioで揺れ髪の設定をしてあればボーンのHeadの下に以下のHair Joint-~というものが並んでいます。これが髪の毛です。クリックで部位を確認して名称変更しとくと後でやりやすいかと思います。

f:id:Pikali:20190114082417j:plain



 

この時点からDynamic Boneのアセットをインポートしました。

(Dynamic BoneをインポートしてからUniVRM-xx→Duplicate and Convert for VRChatの操作をしてしまうと、足はスカートを貫き、目の動きもおかしくなってしまい、DynamicBoneコライダーが無数に誕生してステータスはVeryPoorになってしまいもはや素人の手には負えなくなってしまいました・・・泣)

f:id:Pikali:20190113163552j:plain

f:id:Pikali:20190113163604j:plain

ダイナミックボーンを髪の毛のボーンに割り当てていきます。

アバターのどこかに空のGame Objectを作ってここで髪の毛ボーンの数と同じだけダイナミックボーンのコンポーネントを作成してもいいという情報もあるのですが、どうもうまくいかないのでこの方法にしました。)

ボーンを選択してAdd ComponentでDynamic Boneを追加します。

f:id:Pikali:20190114094350j:plain

それだけでは動かないのでRootにボーンをD&D割り当てます。

f:id:Pikali:20190114095249j:plain

 

Dynamic Boneのパラメータを設定します。(いろいろ調べましたが結局よくわかんないのでこちらを参考にしました。Radiusは0.01くらいがいい気がします。Unity上だと動きの程度がよくわからないので、何度もアップロードしながら調整することになると思います。)

こちらの記事もおすすめです。

www.asset-sale.net

 

同様の作業をすべての揺らしたいボーンに行います。

今回は8個あるので8回やります

 ここでVRChat SDK ->Show Build Control Panel ->Publishで髪の揺れるアバターがアップロードできます。

注意:VRChatを起動しながら修正するとき、VRChatで選択中のアバターを上書きしようとするとUnityが落ちて作業がパーになるので必ずセーブしましょう。(泣

お疲れさまでした。

 (このままだと髪の毛が顔や体に刺さってしまうのでそれを避けるにはDynamic Bone Coliderの設定が必要です。)

(余談ですが、アップロード時の詳細ステータスにはDynamic Boneの数が0のままですがVRChatで確認すると増えてたりします、バグかな?)

f:id:Pikali:20190114102008j:plain

 

f:id:Pikali:20190114123244p:plain

 

関連記事

pikali.hatenablog.com

VRM(VRoid)アバターに帽子をかぶせてみた

VRoidアバターに帽子をかぶせてみたときの覚書です。

帽子以外にもリボンやかばんなどに応用できそうです。

以前クリスマスにサンタ帽をかぶせてみたのですが、ギリギリすぎたので今回あらためて別の帽子でやってみました。

booth.pm

VRMからVRChat形式に変換するところまでやります。

以前の記事の5.VRChatにアップロード

の手前まで進みます。

pikali.hatenablog.com

ダウンロードした帽子データを解凍します。

解凍したらProjectにドラッグアンドドロップ

f:id:Pikali:20190113131004j:plain

帽子を頭のボーンに貼り付けます。

(VRoidのボーンはボーンと書いていないので初心者の私はしばらくわかりませんでした、、、。)

 

f:id:Pikali:20190113131049j:plain

そのままでは灰色なので帽子にテクスチャを貼り付けます。

(どれか1つでよいようです)

f:id:Pikali:20190113131345j:plain

矢印を操作したり、Inspectorの値を調整して、位置と大きさを調節します。(映っていないときは上の方にあったり足元にあったりします。)

f:id:Pikali:20190113131518j:plain

こんな感じ(多少めりこむのは仕方がないかもです)

f:id:Pikali:20190113131709j:plain

あとはVRChatにアップロードします。

以前の記事5.VRChatにアップロードを参考にしていただければと思います。)

 

VRoidのモデルをVRChatに連れていく(Blenderはわからん、Unityなるべく使わずにとにかく取り込んでみたい人向け)

追記

2018/02/02現在でのUniVRMのバージョンを変更。

2018/02/11ベースヘアと目のハイライトが描写されない件を修正、追記

 VRoidで作成したキャラクターをVRChatに取り込むまでの覚書です。

(なるべくUnityでの手間をかけずに取り込める手順を探っています。)

0.取り込む前の注意事項

 しゃがむと上半身が服からはみ出る問題

 上半身の素体テクスチャ(体型編集→テクスチャ)を消しておくと、しゃがんでもお なかや背中がはみ出なくなります。肩まわりもはみ出ることがありますので消しておおいたほうがいいです。(サンプルモデルのテクスチャが消してあったのはそういう意味だったのか!?)

f:id:Pikali:20190212180348j:plain

 

1.使用したもの

VRoidStudio-v0.5.3-win

Unity 2017.4.15f1

VRM Converter for VRChat-2.0.1 + UniVRM-0.48

(2019/2/2現在VRM Converter for VRChat-3.0.0 + UniVRM-0.49が最新ですが

真っ黒になってしまう事象が発生していますので上記のバージョンがおすすめ)

VRCSDK-2018.12.19.17.03

なお本文ではバージョン番号をxxと記しています。 f:id:Pikali:20190202102732p:plain

2.VRoidでモデルを作ってからVRMファイルにエクスポートする。

 

3.VRCSDK、VRM Converter for VRCha + UniVRMのダウンロード

VRCSDKはブラウザからVRChatにログインするとダウンロードできます。

VRM Converter for VRCha + UniVRMはこちらから

 

ダウンロードしたら解凍しますと

VRM Converter for VRChat-xx + UniVRM-xx

VRM Converter for VRChat-xx (xxはバージョン)

の2つファイルができますが、VRM Converter for VRChat-xx + UniVRM-xxの方を使用しますのでこちらとVRCSDKを適当なフォルダに保存します。

 

4.UnityでVRChat形式に変更

Unityで新規プログラムを作成してからまずVRCSDK,次にVRM Converter for VRChat-xx + UniVRM-xxの順にインポートします。

Asset-> Import Package -> Custom Package でもできますが。フォルダからProjectビューのAssetフォルダにD&D(ドラッグアンドドロップ)でもOKです。

まずVRCSDKから。

f:id:Pikali:20181216104621j:plain

VRCSDKのインポート

f:id:Pikali:20181216105651j:plain


ウィンドウが開いたらImportをクリックしてしばらく待ちます。

同じようにVRM Converter for VRChat-xx + UniVRM-xxもインポートします。

f:id:Pikali:20181216110506j:plain

f:id:Pikali:20181216110526j:plain

続いてVRMファイルを同じようにD&Dします。

f:id:Pikali:20181216111513j:plain

 

しばらくするとAssetsフォルダにPrefabができるのでこれをHierarchyにD&Dします。

f:id:Pikali:20181216124355j:plain

選択状態のままUniVRM-xx→Duplicate and Convert for VRChatをクリックします。

f:id:Pikali:20181216112617j:plain

メニューが開いたら性別がFemaleになっていることを確認し、

視線追従を有効化についてかなり自然な動きになりましたのでチェックを入れていてOKです。(この辺は好みだと思います)

それから「複製して変換」をクリックします

f:id:Pikali:20181216113248j:plain

「複製が完了しました」というウィンドウが出たらOKをクリックしまして閉じます。アバターの(Clone)が出現します。

~(Clone)を選択してInspectorビューのVRC_AvatorDescriptorのView positonを編集して、グレーの球が両目の間になるようにします。

f:id:Pikali:20181216115154j:plain

 

2018/02/11追記:目のハイライトとベースヘアーのマテリアル設定を変更

そのままだと目のハイライトとベースヘアーが描写されず、髪の毛に隙間があると禿げてしまいます。

f:id:Pikali:20190211200909j:plain

F00_000_HairBack_00_HAIR

F00_000_EyeHighlight_00_EYE

のRendering TypeをCutout

Cull ModeをOffにします。

 

追記終わり

5.VRChatにアップロード

VRChatSDK->SettingからVRChatにログインします。

(VRChatのID,Passwordを入力します)

f:id:Pikali:20181216114103j:plain

 

VRChat SDK->Show Build Control Panelをクリックするとウィンドウが開きます。

エラーが出ていなければBuild & Publishをクリックします。

f:id:Pikali:20181216120308j:plain

ここまでSceneを保存していない Scene保存のウィンドウが出るので適当な名前で保存します。

f:id:Pikali:20181216120828j:plain

しばらくするとGame画面になりますので

Avator Nameと 一番下にチェックを入れてUploadをクリックすればOKです。

(たまにズームされていて、ちゃんと動いていても、まともに映っていないことがありますが、スライダーでズームアウトできます。)

f:id:Pikali:20181216121610j:plain

この画面が出たら成功です。

VRChatで確認してみましょう、お疲れさまでした。

f:id:Pikali:20181216122839j:plain