AdSense

2020年5月4日月曜日

Avatarifyを動かしてみた

1枚の画像を元にWebカメラの映像にフェイルトラッキングできるすごいやつ、Avatarifyを動かしてみた記録。


ソースは下記で入手できる
https://github.com/alievk/avatarify

環境構築手順も上記githubにかかれている通り。
Minicondaが公式手順だが、Anacondaでもいけた。

実行環境は結構スペックが必要のようだが、GTX1060でも動いた。

公式の手順で行けたが、下記を参考にさせて頂いた。
https://note.com/dobamine/n/n71951956feda



ざっくり手順:
・Windows用のgitインストール
・git cloneでavatarifyを入手
・anacondaの(Anaconda3)プロンプトでinstall_windows.batをたたくとgitが無いと言われる
 →anaconda navigatorでプロンプトの対象環境でgitを選択して入れる
 →再度install_windows.batをたたくとOK

・vox-adv-cpk.pth.tarをダウンロードして置く
・run_windows.batするがエラーがでた
 File "cam_fomm.py", line 15, in <module>
    from modules.generator import OcclusionAwareGenerator
 ModuleNotFoundError: No module named 'modules'

 →pythonでimportしたいが入ってない場合に出るらしい
 →pip install modulesすると、下記エラーにかわるが駄目。
 ModuleNotFoundError: No module named 'modules.generator'; 'modules' is not a package

  どうやら、環境構築中にscriptフォルダ下に入ってinstall_windows.batを叩いたのがまずかった模様
 →再度git clone取得からやりなおし、avatarify下にてscripts\install_windows.batを実行
 →anacondaにavatarifyという環境がもう一つできる
 →古い方のavatarifyを消す
 →新しいavatarifyでコンソール起動して「run_windows.bat」する
 →動いた
 



2020年2月9日日曜日

3DセンシングしたモデルデータをVRchatのアバターにした



前回の記事にてStructure Sensorで3DスキャンしたデータをUnityで動かしたが、そのデータをVRchatのアバターにした記録。



前回の記事:

https://mementomorisince2013.blogspot.com/2020/01/3dblenderunity.html



前回Unityで歩き回れるようにした3Dデータだが、どうやらポリゴン数やらボーン数やらの制約がありそのままではVRchatに使えないとのこと。



順を追って記載する:


・ボーン多すぎ

 →骨間引き必要


 Blenderで関係なさそうな骨を適当に減らした。

 表情に使ってなかったので、顔の骨と胸の骨を消した。


これが




こうなった




・ポリゴン数圧縮

 下記を参考に、ポリゴン数を15000くらいにした 

https://vrchatjp.playing.wiki/d/%A5%A2%A5%D0%A5%BF%A1%BC%BA%EE%C0%AE%20MMD%CA%D4

 ポリゴン数は減ったが、顔が潰れた。

 全体を均一に削減してはだめ。


・顔と身体のメッシュを分離して身体だけポリゴン圧縮

 CTL+クリックでくくって分離できる。

 https://blender-cg.net/separate-join-objects/







 この状態で体だけポリゴン削減する。


・モデルが分割されたままだとVRChatのほうで怒られうので、分離したやつは圧縮後再び結合する。

 そうすると、今度はボーンとヒートマップズレた


 自動でウェイトをつけるとおかしくなったので、元の状態からこつこつ手作業でヒートマップを塗る。

 http://nn-hokuson.hatenablog.com/entry/2017/08/30/195716

 http://nn-hokuson.hatenablog.com/entry/2017/10/03/205639

 

 関節を動かしながら、意図した通り体がついてくるように調整する。


・UPPER CHESTのエラー

 https://shinrinmusic.com/vroid-vrchat-avatar-upload/

 上記参考に、一つずらす。UPPER CHESTはNONEにする


・Tポーズのエラー

 Unityでアバター設定を開き「Enforce T-pose 」を選択する

 https://docs.unity3d.com/jp/460/Manual/ConfiguringtheAvatar.html


これでなんとかVRchatのアバターアップロードが上手くいった。







2020年1月19日日曜日

3DセンシングデータにBlenderで骨格をいれてUnityで動かした記録

先日の勉強会でStructure Sensorというipadにつけるだけで高精度な3Dモデルを作ることができるスキャナを使い、全身の3Dスキャンデータをもらいました。

Structure Sensor:


短時間で高精度なモデルができたことに驚きです。


これをUnityで動かすことができればVRChatやUnityのいろんなコンテンツで使えるので、骨格(ボーン)を入れることにしました。

ボーンを入れるツールはBlenderを使用します。

やり方は参考書として下記を購入して学びます。



ステップバイステップで大変わかりやすい本でしたが、関節を一つ一つ入れる手順になっているので、もっと簡単な方法を探します。

どうやら自動的に骨格を入れてくれるBlenderのプラグインがある模様。
今回使用したのはUnity公式の「Rigify」です。

Blender Rigifyでググるといろいろ手順が出てくるので手順は割愛しますが、全身だけでなく顔まで骨が入ります。

個別にやったのは、ボーンがもとのモデルからはみ出ないようにモデルの形とサイズ感の調整をしたくらいです。
ただし、撮影時に指を広げていれば指の骨もいい感じで分けれたことを悔やむ。




Blenderでいろいろな形式にエクスポートできますが、Unityで使いやすそうなfbx形式でエクスポート。

次にUnityにとりこみます。



fbsデータをUnity空間に配置し、Standard Assetsを参考に、Third Person Motion Controllerをつけます。

注意すべき点は、下記のパラメータ。これを調整しないと、膝を曲げて中に浮いたままになります。

私の場合は下記値でした。

・Capsule ColliderのCenterのYと、Heightの値

 Center:0 -> 1

    Height:1 -> 2

・Third Person CharacterのGround Check Distance

 0.1 -> 0,2



・Unity Japan Officeに配置して走り回る姿


 

受付する姿

無事動きました。