Cobweb of にーしか

モデリング、海外ドラマ感想、洋ゲーRPG

VRoidのスカート

VRoidさん達は膝丈くらいのスカートを、一体どうやって実現しているのだろうかと、何人かに見せてもらった。

「グヘヘ、お嬢ちゃん、ちょっとスカートを見せてもらうよ」

ではなくて…… 

あぁ、なんだ、激しく失望。腿と連動するズボン式で、縁のひらひらだけ、お世辞程度にSpring Bone。

MMDみたいにヒラヒラ揺れるスカートなんて夢のまた夢だったのだ。

ものすごく実現レベルが低い。モバイルでも動くっていうのは、こういうことを言っているわけなのか。今の時代に、プレイステーション2と競ってるみたいだ。

こんなアレでは、貫通するスカートしかできなくて当たり前。いくら剛体を密にしたところで無理ぽ。

VRMで揺れるスカートはご禁制、御法度だわ、こりゃ。お上に背いた廉で打ち首にされるレベル。

VRMにはこれ以上深入りしないでおこう。MMDの方が、よほど高いものを作れる。

VRchatにはトライするかもしれないから、スプリングSALEの今のうちにAsset StoreでDynamic Bone買うとこ。
スポンサーサイト



[ 2021/04/29 12:30 ] カスタムモデル | TB(-) | CM(0)

現在の問題

この出っ張り(矢印)が気になっちゃう。
sadoka_armpit.jpg

あとはだいたい出来上がった。ただし、依然として解決できていないのが……
  • Scaleの問題(カスタムボーンの末端ボーン長が縮小できない件)
  • スカートの突き抜け(Spring Bone Collider)
突き抜け問題もやっかいで、剛体が暖簾のように脚をすり抜けてしまう。


[ 2021/04/29 00:46 ] カスタムモデル | TB(-) | CM(0)

解決策を試す

問題となっているのは、末端ボーンの長さ(テールの位置座標)。縮小をするとこの“長さ”も縮小されるべきだが、変化せず参っている。

ARPによって、FBXとしては一応出力されてるのだから、それをもう一度blenderで読み込んで、おかしいところを直に修正してしまえばいいのではないか?

この作戦でいってみよう。
FBXを編集してから、blender2.83 標準のExporterで、再びFBXとしてExportする。その際のオプションは:

オペレータープリセット
 パスモード  自動
 バッチモード オフ

オブジェクトタイプ
 アーマチュア
 メッシュ

トランスフォーム

 拡大縮小1.00
 全ローカル
 -Zが前方
 Yが上
  単位を適用☑

ジオメトリ
 スムージング 法線のみ
  モディファイアーを適用☑

アーマチュア
 プライマリボーン軸 Y軸
 セカンダリボーン軸 X軸
 アーマチュアタイプ Null
 デフォームボーンのみ☑ ←
 リーフボーン追加(をアンチェック)←

※ほとんどデフォルトのまま

リーフボーンとは、末端についたボーンの長さが分かるように付ける参照用のボーンだそうである。FBXをUnity Editorに読み込むと確かに末端のボーンの長さは見えない。

出力した結果……

編集結果が反故になってる…… ダメ元で拡縮を適用しても変わらなかった。
ARPのFBX Exportで縮小を指定した場合、末端ボーンの長さ(テールの位置)がおかしい、という事実が変わることがない……

リーフボーンを追加(上述の矢印)してExportすると、編集結果は生きる(末端ボーンの長さは意図通りである)が、当然、リーフボーンが付く(※2)。ボーン二本でいいところが三本になってしまい、VRMにすると三本目の先にも剛体がつく。
※2 VRMファイルにする過程で確認。以下同。

さらにblenderで読み込んでリーフボーンを削除して(削除すると意図通りになるので)、今度はリーフボーンを付けないオプションでExportしても、やはり変な案配にリーフボーンが付く(※2)。編集して短くなったボーン長を埋めるようにリーフボーンが今度は二本(二段)も付いた(※2)――クローンされたボーンひと組がさらに繋がったような具合。変な挙動である。

どうしても思う通りになってくれない。

別の方法:

等倍でExportしたFBXから作成したVRMをUnity Editorで読み込み、Prefabを開いてScaleを0.42にする。HierarchyにVRMを放り込み、プレイモードにしてSecondaryのルートボーンを確認する。VRM Spring Bone(揺れ物)を設定済みのルートボーンである。

なぜか末端ボーンの長さだけが縮小すらもされずに変わらない。揺れはするものの、この末端ボーンの先端に剛体が付くので意図通りにならない(下図|剛体の大きさは10分の一にしてある)。
autorig21_thumb.jpg
註:コマ送りの画面。灰色は直前の剛体の位置を表す。

お手上げである。VRMの身長を変更するにはどうすればいいのか? ――身長は変更できるけれども、ルートボーンを損なわずに行う方法がない。

下図:等倍でExportした時の正常な長さの末端ボーン。身長が高いため、太陽アイコンの高さに届いている。
autorig22.jpg
[ 2021/04/24 01:55 ] カスタムモデル | TB(-) | CM(0)

縮小するとおかしい件

カスタムボーンを編集モードで作り直した。
にもかかわらず、FBX Export時にGloval Scaleで縮小した場合、補助制御ボーンとカスタムボーンのテールの座標が正しく縮小されない。長いままだ。
なお、Gloval Scaleを利用せず、マニュアルでオブジェクト全体にScaleをかけた上(メッシュは念のため、拡大縮小を[適用]させた)で等倍でFBX Exportしても同じ結果である。
胸の補助制御ボーンは縮小がかからなかっただけではなく、どうも巨大化している。眼周囲の補助制御ボーンも単に縮小されないだけではないようだ。
icon

リグは縮小しても問題ない。補助制御ボーン(胸、facialなど)の末端ボーンのテールの長さだけが縮小されない。カスタムボーンも同じ症状。

それ以前の問題の整理:
カスタムボーンの長さを編集モードではなく、誤ってポーズモードにおいて変更してしまったと思われる。この凡ミスが混じることで切り分けがややこしくなった。ともかく、Cats Blender Pluginが、そうした間違いを是正できる。利用してみたところ、やはりテールの長さだけがおかしいままのFBXをExportする結果となった。この結果を踏まえると、Cats Blender Pluginの訂正機能は上手く働いたように見える。

意図通りに動作して欲しいところ
こちらの要求は、0.42倍の縮小ということ。これはFBXの時に処理されてもいいし、Unity Editor上で――Scaleに値を入力することで――処理してもいい。どちらでもいいのだが、結果の詳細は違えども、どちらも、カスタムボーンに関して正常に縮小できない。
 ――Unity Editorはカスタムボーンを縮小できず、ARPのExporterはカスタムボーンのテールを正しく縮小できない。

このカスタムボーンが揺れを司る前髪のボーンである。正常な(意図した)長さのルートボーンとして認識されないため、揺れが意図通りに作れないでいる。詰み。

縮小さえしなければ、問題ない。巨大な佐渡渡さんを見上げることになるが。

※使い方が特殊なので、それもあるかもしれないので付記:
blender 2.79bとAuto-Rig Pro 3.40.18で作ったblendファイルを、blender 2.83で開いて、Auto-Rig Pro 3.60.30へUpdate(ボタン)させた上でMatch to Rig(ボタン)させた。

FBX Exportの設定は:
Unity - Humanoid
 ☑ Check Rig
 Fix Rigボタン押した

Rig
 いずれも☑しない
 Units:
  ☑Units x100

アニメーション
 いずれも☑しない

その他
 Global Scale 0.42(※)
 Smoothing:
  ☑Fix Matrices
 Bones Axes:
  プライマリ Y軸
  セカンダリ X軸

※1.00のままであれば、何も問題は生じなかった。
[ 2021/04/23 18:32 ] カスタムモデル | TB(-) | CM(0)

前髪のリベンジ

VRMサンプルのアリシアさんモデルの前髪
autorig15.jpg
これを参考にして、佐渡渡さんの髪の毛とボーンを修正してみようと思う。

ぱっと見わかるのは、骨が二段構成。さらに、前髪に沿わせていない。前髪のウェイトはかなり強く付いている。ひさし状のボーンの突き出しを、前の記事でみたように内側にたわませるバネの力で制御するのだろう。

MMDでは二段にすると全体が動いた時に、それぞれが揺れるために相互影響で無残にひずんでしまうことがあった。だから、ただブラブラさせるだけなら一段で処理した方が結果が良好であった。また、重力で下向くため、100%のウェイトは必要なかった。

ちなみに、アリシアさんは胸ボーンをお持ちだったが、揺れは付いていなかった。胸の揺れも課題なんだが……

また、肩から上腕へのポリゴンは水平ではなく(ボーンは水平だが)、既にY字に近くなっていた。なるほど、初期状態で腕が必要以上に上がった状態というのもいいのかもしれない。

アリシアさんのスカート丈は短いので突き抜け防止の参考にはならない。さらにまた、背骨は4本だった。やっぱり4本が安定なのだな――今の佐渡渡さんは4本にして上手くいった。

blenderからFBXで出力する時には、髪のウェイトをロックしておき、Auto-Rig Proに属する制御用ボーンのウェイトで上書きされないようにした。

アリシアさんを参考に、今度は髪の毛ボーンを二段にした。
autorig17.jpg

余談ながら、T-Poseで「親指が駄目」と注意される時とされない時がある。
autorig16.jpg

剛体がアンテナの先に付いた状態になる理由が判明。VRMの身長が大きいのでScaleを0.42にしていたことが原因。Spring Boneは縮まらないので、アンテナのように伸びていたのだった。そのために、バネとして動きが伝わらなくなっていたらしい。

紆余曲折を経て、Secondaryを開いてギズモを表示してみた。意図通りの位置に二段ボーンが鎮座している!
autorig18.jpg

モーションのRunをさせると、確かに揺れてる!
autorig19.jpg
アリシアさんを参考にして、綺麗に曲がる角度に配置し直した甲斐があったというものだ。

今度はScale 1.0のままVRMに出力することにした。身長が大きくなってしまうが仕方がない。

出来たVRMをビューワーで閲覧してみると、なぜだか、前髪がピクリとも揺れない。どうしてなのだろう? 身長が大きすぎると、物理の力が小さくなってしまうのだろうか?

あぁ、わかった。Prefabを開いたつもりがSceneを弄っているだけだった。今度はちゃんと変更をVRMとして出力した。ようやっと前髪を揺らすことに成功できた! 

次の課題は、Scaleの問題をクリアする方法だ。FBX出力の時にサイズを調整しておくしかないのだろうか。

試してみたものの……FBX出力前に縮小をかけているはずなのに、VRMになってみると、Spring Boneを付けたいルートボーンだけ大きさがおかしい。FBXのボーンは確かに小さくなっているのに。ボーンに適用が利いているかどうか、という感じか?

徹夜でやるもんじゃないわ。ミスなのかどうかすら疑わしくなってくる。

FBX出力時に[その他]という欄があって、ここでGloval Scaleを設定できる。0.42を入れて出力すると、たしかに縮小されて出ている。にもかかわらず、VRMでルートボーンに指定すると、大きさと位置がおかしい。ボーン自体は見えないけれど、ベース座標の表示は正しい位置にあるようだ。

もう、お手上げ!! わけがわからない。

ルートボーンの情報として使う“何か”――“ダークマター”とでも呼んでおこう――が縮小を経ると、元のボーンの長さ・位置と等しくならないらしい。このダークマターが何であるのか。

縮小を経ると駄目なのだから、縮小したリグに改めてボーンを新規に作り直せば、なんとかなるかもしれない。

あぁ、だんだん分かってきた。これは「問題の骨」を編集した時に、誤ってポーズモードで骨の長さを変えたことがあったに違いない。それでも、なぜだか、現在の見掛けはオブジェクトモードでもポーズモードでも同じになっている。しかし、実際にはオブジェクトモードの結果でExportされており、それはポーズモードの見掛けと異なっている。……きっと、これだ。
[ 2021/04/22 20:08 ] カスタムモデル | TB(-) | CM(0)

揺れ物設定(Unity Editor)

VRMのセットアップはUniVRMの公式ページでおおよそわかる。個人が(俺も含め)日記帳風に書いているものの大元の正体はコレだろう。

何らかの動きを再現して具合を確かめるには

作成中のVRM Prefavを開いたら一旦ロックして、任意のAnimationControllers(※)を、VRMのAnimatorのController欄に(ドラッグ&ドロップして)アタッチする。
※Assets StoreのFreeモーションなど。例えば、BasicMotions@Run

プレイボタンを押し、自動的にGameタブに切り替わると動作を確認できる。

ところが、カメラの初期位置が被写体の背後になっている。したがって、これを直さないといけない。それには、カメラを選択してtransformのRotation欄Yに180を入れ(※)、ギズモで(被写体の正面まで)引っ張ってくる必要がある。ズームはカメラのField of View値を小さくすることで実現できる。
※ギズモの[移動/回転]切り替えは、Editorウィンドウのメニューバーの一段下にあるので、それで切り替えてもいい。

さらに、Scene画面には妙な遅延が発生することがあって、プレイと一時停止を繰り返していると、いきなり初期化されて(巻き戻って)しまうことがあった。プレイモードをExitしないと保存できないとダイアログがでるし、Exitすると弄っていた値が初期化されてしまう?――パラメータをFIXしてからExitできないのだろうか? Unity Editorはblenderよりもとっつきにくい。

VRM Spring Boneの設定方法は公式ページのこの辺に書かれている。パラメータの詳細説明がないけれど。

ウェイトをかなりきつめにつけないと揺れないのかな?……と見えたが、値を煮詰めていくと、ちょっとずつ揺れるようになってきた。

VRM Spring Boneのギズモを表示させると、ルートボーンから伸びてる「アンテナ」状の先に剛体があることが(Sceneタブで)分かる。なお、プレイモードを一旦有効にしてある最中か、さもなければ一時停止中でないとギズモを見ることが出来ない。それもGameタブではなく、Sceneタブで、である。

VRM Spring Boneは、Sceneに放り込んだVRMのSecondary階層を見る必要がある。ギズモ表示は、プレイモードにしてからのSceneに限られる。VRMのAnimatorにアタッチするには、一旦VRMの親階層を選ぶ必要がある。rootの座標はまた別でVRMの足下がそれになる。Secondaryを選んでも、座標としては足下がアクティブとして表示される。この辺り、慣れないとけっこう紛らわしい。

異星人少女のカチューシャみたいなコレ(下図)はなんだろう? MMDでお馴染みのPMX Editorでの剛体表示とも異なる。
autorig13.jpg

剛性、重力、空気抵抗の値を極端にしてみると、上方に跳ね上がっていたアンテナが下方にぶら下がるような案配になることが分かった――プレイモード中で、なおかつ一時停止していない状態で、Sceneタブ内であれば、リアルタイムで変化を見ることができる。どうやら、このアンテナはバネ作用の向きを表しているらしい。

Gravity Dir(重力の向き)のY方向にプラスを入れるかマイナスを入れるかで反り方(バネの力の向き)が正反対になるようだ。

マイナスは内向きに反る=内向きの力が強いとアンテナが垂れ下がる
プラスは外向きに反る=外向きの力が強いとアンテナが跳ね上がる

髪の毛にVRM Spring Boneを設定している場合、この外向きか内向きかで髪の毛が広がる向きが変わる。頭部に密着している髪の毛であれば、外向きに広がって欲しいし、逆に、もともとふわっと広がりのある髪型であるなら、内向きに狭まっても問題ない。

autorig14.jpg
上図:内向きに作用させ過ぎるとワカメちゃんになってしまった。

試しに水平の拮抗状態ができるものか少し頑張ってみたが、アンテナを水平にすることはできても、作用が拮抗とはならなかった。水平が均衡状態ではないようだ。どちらかの向きに作用していないと揺れない、ってことだろう。

極端な反り方では、内向きの「巻いた板バネ」か、はたまた外向きの「広がったホウキ」みたいな感じになる。

Runのモーションである程度揺れる(コマ送り|Stepで違いが出ている)ことを確認してVRMに出力しなおして確かめてみると、ビューワーではさほど揺れなかった。微妙に、動いていることは動いている、ことが分かる程度。動きが「揺れ」と認識できるほどの細かな振幅と回数を持っていないらしい。

当初は、初期値のままで十分揺れていたような気がしたのだが、出力し直しているせいだろうか、何かをきっかけに、そんなに揺れてないな、という状態になってしまった。

大げさに突き出た竿状のもの――ルートボーンからの水平の長さがある揺れ物――であれば、効果を如実に感じることが出来そうに思う。垂れ下がっている前髪を繊細に揺らすコツの方は生憎とわからない。

MMDでの物理制御ほど巧みに揺れないようだ。けっこう難しい。

また、当たり判定のVRMSpringBoneColliderGroupは、ScriptをAdd Componentして自分でアタッチしないといけない。アタッチのターゲットは髪が揺れているのなら、頭(のボーン)になる。髪のVRMSpringBoneからは、ColliderGroupsのElementに“それ”を指定する。

ここまでの体験からVRM形式というものへの全体の感想を述べてみたい。

VRMは、まだ発展途上の段階にある。黎明期のMMDみたいなものに違いない。VRMは既に様々な場面で活用されているように見えるが、その実体はまだ仕様策定中に近い。スカートが貫通してしまう、という内容も散見するし、今書いたように髪の揺れ一つ見ても、いい感じに仕上げるのは難しい――少なくともMMDそのままでは通用しない。

ポリティカルには、VRMで覇権を取りたい思惑のドワンゴ=角川の見切り発車に感じなくもない。

VRM形式への変換はさほど難しくはなかったが、クオリティーを求めていくと、既に醸成が完了したMMDに軍配が上がるだろう。ようするに、VRMはまだまだこれからなのだった。とはいえ、この体験は無駄ではない。FBX形式によるUnityへのImportはVRChatでも体験するであろうし、FBX形式はゲームエンジンへのImportの基礎である。

良いリグでよく動くモデルを作っておけば、それは後々の転用に先んじた先行投資、ひいては財産になるのだ。MMDではちと出遅れた俺でも、VRMでなら、その発展を見守ることができる。
[ 2021/04/22 14:50 ] カスタムモデル | TB(-) | CM(0)

FBX Import

Optimiseを選び、facialの不要なボーンを読まなければいいわけだ。
autorig11.jpg

でも、これを行うとデフォルトでアタッチするはずのVRMBlendShapeProxy以下が全部なくなってしまう。特に、BlendShapeAvatarがNoneになって、どうやって追加したらいいのか、分からない。Unity Editorに明るくなるまで、すべきではないようだ。
[ 2021/04/21 04:49 ] カスタムモデル | TB(-) | CM(0)

ウェイトの再計算

VHDSがバグ修正したというので、プラグインを更新してウェイト計算を再実行させてみた。また、ARPのプラグイン導入を誤っていた(ARP toolsと併用していた)ので、こちらもやり直してみた。
以下は、あくまで、俺のキャラクターモデル「佐渡渡さん」の場合。

ウェイト付けが上手くいくところ(blender 2.49b):

Voxel Heat Diffuse Skinning 3.2.3
 首、胸、尻
 保護:手首、手指、太もも内股(一部)、facial顔面

Auto-Rig Pro 3.40.18
 肘、膝、手首、手指
 Use Chin ON
 Split Parts ON
 Breastあり(他はなし)、指は全指

ウェイト要修正箇所
 脇の下、脇腹

「脇の下」はどちらでも長短ありで、どっちを採用しても完璧にはならない。
「尻」はVHDSに軍配が上がるものの、もも上げ時の「脇腹」はどちらも手直しが必要。

VHDS.gif
上図:付いたウェイトの違い

だから、作業フローとしては――
まずARPでバインドして、保護(手首、手指、太もも内股一部、顔面、肘、膝)した上でVHDSをかける……という感じか。

autorig10.jpg
上図:VHDSをかけるために、保護しているところ。

他に、視線(瞳)ボーンだけ必要となるので、現状、ARPのfacialを有効にしてExportしている。もちろん、これでは、眼以外のfacialは無駄になる(残骸がFBX内に残る)。

視線ボーンをカスタムボーンにする手もある。その際、ネーミングはどうするのが好ましいのか。ARPと同一にしては問題が生じると予想される。UnityのHumanoidが認識可能であればいいわけだから、独自ネームでも大丈夫だろうとは想像できる。

そもそも、カスタムボーンというものは、ARPの骨位置やウェイトが確定してから追加することが推奨されているようだ。しかし、作業工程上、そうもいかない。カスタムボーンを付けてしまってから、ARPの骨位置を直したいってことはよく起きる。

そんな時は、バインド時に認識して欲しくない骨をHideしておくといいらしい。とはいえ、どうやら完全ではなくて、カスタムボーンの骨位置か親設定か、何かの要因で、ウェイト決定に影響を与えてしまっている場合もあるように思える。Use Chin、Split Partsのチェックの有無でも変化するだろう。

完成に近づくにつれて、モデルの状態が初期とは異なってくる。カスタムボーンが接続・配置され、不要なボーンはHideされるからだ。例えば、ARPでは、一旦OFFにした耳のガイド用ボーンは初期化されてしまうようだ。にもかかわらず、ウェイト計算時には頭部のウェイトに影響を及ぼしているように見える。さもなくば、それは耳近くに配置したカスタムボーンのせいだったりするのかもしれない。

ともかく、ウェイトの再計算を行わせると、以前と異なる結果が出る可能性が増していく。実際に、「アレ? 以前と違うなぁ」という経験をするようになった。
[ 2021/04/21 02:55 ] カスタムモデル | TB(-) | CM(0)

カスタムボーン(Auto-Rig Pro)

とりあえず、c_skull_03.x から頭髪ボーンを生やしてみた。

方式は一番目の「カスタムボーンを一つ以上選択してから、[Auto-Rig Pro: Export]パネルから[Set Custom Bones]ボタンを押す」でやってみた。この方式なら、頂点グループの名称をいちいち変更しないで済む。

コントローラーを親としたので、Export時には自動的にhead.xが親となった。

Unityのアセット上でFBXにカスタムボーンが含まれることを確認。
autorig09.jpg

余談ながら、Inspectorが勝手にロックされて、マテリアル画面が開かなくて焦ったりした。
[ 2021/04/20 06:54 ] カスタムモデル | TB(-) | CM(0)

ARPへの新規追加ボーン

マニュアルの要約:

http://lucky3d.fr/auto-rig-pro/doc/auto_rig.html#adding-custom-bones
カスタムボーンを追加する場合、deforming bones(変形用ボーン)か controller bones(制御用ボーン)と接続させることが条件となる。reference bones(ガイド用ボーン)と接続させてはいけない。つまり、接続させるべきボーンとは、レイヤー番号31で表示されるものか、Match to Rig後に可視化されるものということだ。

「アーマチュア」レイヤーの補足:
    Layer 0: Main controllers(主制御用ボーン)
    Layer 1: Secondary controllers(補助制御用ボーン)
    Layer 16: Other picker bones
    Layer 17: Reference bones(ガイド用ボーン)
    Layer 31: Deforming bones(変形用ボーン)
    Others: For internal use only

新たにボーンを追加するには、Match to Rigをクリックした後、編集モードに入ってからボーンを追加する。

例えば、帽子のカスタムボーンを新設するならば、親ボーンは

c_head.x = head controller(頭部制御用)
head.x = deforming bone(変形用ボーン)

のどちらかとなる。なお、新規カスタムボーンの名称が既存のボーン名と同一であってはならない。スクリプトによる自動化を妨げてしまうからだ。

新規ボーンは、同一四肢におけるボーンの合間に挿入されてはならない。例えば、背骨1と背骨2の間にカスタムボーンが挿入されると、階層構造の順序が乱されて、リグを壊してしまう。

首―頭部―帽子、のようであれば問題ない。

http://lucky3d.fr/auto-rig-pro/doc/ge_export_doc.html#custom-bones
FBX Export時、新設されたボーンはデフォルトでは出力されない。したがって、カスタムボーンとしてリグに含まれるように、明示しておく必要がある。

方法は三種類ある。
  • カスタムボーンを一つ以上選択してから、[Auto-Rig Pro: Export]パネルから[Set Custom Bones]ボタンを押す。
    ※これは実質的に三番目を自動化させているに過ぎない
  • カスタムボーンの名称の冒頭に「cc_」を付ける(custom controllerの略称)。例:cc_sword
  • カスタムボーン毎にCustom Propertiesを追加して「cc」か「custom_bone」というタグを付ける。

カスタムボーンがFKボーンを親としていた場合、Export時にはdeforming bone(変形用ボーン)が自動的に親となる。

例えば、cc_watchがc_forearm_fkを親としている場合、Exportされたアーマチュアの末端である変形用ボーンのforearm_stretchが親になる。同様に、cc_hatが c_head.xを親としている場合、head.xが親になる。

直接のコントローラーを持たないIKチェインを用いる場合、forearm_stretchのような「_stretch」の付くボーンを直に親とすること。
[ 2021/04/20 05:26 ] カスタムモデル | TB(-) | CM(0)

ウェイトの塗り方

ウェイト調整で困る状況の例:
  • ボーンが複雑すぎて、どれを塗ればいいか分からない
  • 関節が三つ以上のボーンで分担されているとお手上げ
Auto-Rig Proの場合、レイヤー番号31をクリックすると、実体のボーンが色つき表示される(レントゲン、または前面表示ON)ので、その名前を表示させて覚えておく。このレイヤーがどれであるかは、ARPのマニュアルを参照のこと。矢印付きで図示されている。

ARPで対になるボーン(末尾.lは左半身の意味。右は.r)

肘曲げ内側のえぐれ
上腕  arm_stretch.l
前腕  forearm_stretch.l

肩と上腕のせめぎ合い
上腕・脇の下  c_arm_twist_offset.l
肩       shoulder.l

もも上げのお尻の下がり具合
尻  thigh_twist.l

膝曲げ裏側のえぐれ
太もも  thigh_stretch.l
スネ   leg_stretch.l

頭部を上下に向けた際の顎の伸び縮み
頭部・顎/頭髪  neck.x

ウェイトの塗り方(例は blender 2.79b)
※自己流のやり方であって、教科書で教えるような理路整然とした方法であることは保証しない。しかし、簡単なやり方だ。
  1. アーマチュアのボーンを動かして問題のポーズを取らせる。
  2. 編集したいメッシュを選んだら、[ウェイトペイント]モードにはいる。
  3. ツールシェルフ(左):[オプション]タブ>▼オプション>XミラーをON
  4. 変形を受けている頂点を見極める。
  5. 変形を修正したい頂点を選択する。
Tabキーを押すと[編集]モードになるので、頂点が選びやすい。不要なメッシュはHキーで隠しておくと見やすくなる。もう一度Tabキーを押すと[ウェイトペイント]モードに戻る。

Zキーを押すと別オブジェクトが消えて透視図風になり、ハッキリとわかりやすい。

下端の[頂点マスク]ボタンを押す。※[ペイントのマスク用の頂点選択モード(ウェイトペイントのみ)]のこと。
こうしておけば、選択済みの頂点にしか塗れない。

マスク状態でさらに頂点を選択/解除するには、Shiftを押しながら頂点をクリックする。

塗るのはマウスでよい。筆圧に感応するペンタブレットでない方がむしろ簡単。

ツールシェルフ(左):[ツール]タブ>▼ブラシ を参照
ウェイト:1.000 のまま
ブレンド:[減算]と[追加]しか使わない。さらに――適宜、変更するのは以下の二つだけ。
 半径=ブラシの大きさ(面積)
 強さ=塗るウェイト値への影響そのもの

塗りながら変形の具合が変化するのを見守る。
マウスで一回ずつクリックする。ちょっとずつ塗って、いい具合になったら塗るのを止める。影響が大きすぎるのならば、アンドゥして上述の[強さ]を低く設定しなおす。0.009くらいが最小の目安。
塗りすぎたと感じたら、ブレンドを正反対に切り替える。つまり、[減算]していたのなら、[追加]に。[追加]していたのなら、[減算]に。

便利機能
前述のように、Tabキーを押すと[編集]モードになることを活用する。それ以外にも:
プロパティ(右中央)から[モディファイヤー](スパナ印)を参照し、▽rig の横にある[眼]アイコンのON/OFFを切り替える。
これによって、レストポーズと現在のポーズとを瞬時に切り替えることができる。

段差がキツくなったら
なお、塗ったウェイトと既存のウェイトの境でポリゴンサーフェスにシワが寄ったり亀裂が入ったりすることがよくある。そんな場合は、そうした頂点を選び、

 ツールシェルフ(左):[ツール]タブ>▼ウェイトツール>[スムーズ]ボタン

を一、二回~数回押すと、くっきりした境目が幾分和らぐ。それでもなお目立つ場合は、再び塗り直す。
[ 2021/04/19 22:16 ] カスタムモデル | TB(-) | CM(0)

AスタンスをTスタンスにする

補足
アーマチュア任せで済むほど、モデルの完成度が高かったならばいいのだが、俺の場合はそうではなかった。したがって、肩の上面ポリゴンを整形してTポーズとした。

骨入れ――肩関節の位置決めでは、上腕が下ろされた状態で、もっとも見栄えがするように見当をつけた。

後ほど、ポーズをさせた際に直面する問題で、腕を万歳のように頭上に上げた状態での見栄えの悪さというものがある。

この場合、ポーズそのものにおいて、鎖骨から肩までを担当するボーン(c_shoulder)に角度が付かないと、肩幅のままバンザイする羽目となるので、妙な見掛けになる。

これを、首の付け根からY字のようにバンザイしてくれれば――つまり、肩幅が適正に縮まってくれたなら――比較的マシな見掛けとなるものなのだ。

ポーズで動くべき骨の問題があるので、一概にモデルのせいにはできないところが存在する。
[ 2021/04/19 20:58 ] カスタムモデル | TB(-) | CM(0)

UnityとUniVRMのインストール

Windows10を20H2にした時に環境をすべて失ったため、Unityをまた一からインストールしなくてはいけなかった。
  • 2021年4月現在、UniVRMの安定版はv0.66.0である。
  • UniVRMを使う際の、Unityの推奨バージョンはUnity-2019.4 LTSと書かれている。したがって、Unity LT版 2019.4.24f1 (64-bit)をインストールした。
UniVRMのページにある説明で、微に入り細に入りではないけれど、おおまかに分かる。
  1. FBXをドラッグ&ドロップしてImport。繰り返す内に、Inspectorの認識と挙動が怪しい時がある。
  2. 骨が自動認識されるので確認。spine_02.xだけ認識されなかったので指定し直す。
  3. マテリアルのシェーダ指定。既に行った指定をソースとして選ぶことができたりするけれども、推奨されないだろう。blender上でのマテリアル色が反映されているので、RGBとも1.0にしておくと省力できるが、複数選択が利くので、それほど面倒でもない。
  4. テクスチャ指定。◎みたいなボタン押すのね(ドラッグ&ドロップでもいいそうだ)。FBXの場所に、テクスチャをあらかじめ、コピーしておいた方がいい。
まごついた箇所:
  • ApplyしてもConfigureボタンを押せない時がある。
  • モデルの書き出し。prefabをシーンに展開しなくてもいいみたい。Configureの状態から書き出せる。
Configureを押した状態で、モデルの書き出しができる。
逆にシーンに配置した状態で書き出したモデルはビューワーで閲覧できないものとなった。

修正要件:
  • 親指の位置
    Configure時、Enforce T-Poseを行うと適正に調整される模様――親指以外は。わざわざ掌を真っ平らにしたが、これが仇となる。Rigifyの経験では五指でコントローラーが作られるようであり、ARPでも同様かと思ったが、さにあらず。親指は以前の状態のままでいけるようだが、「まだ駄目」と言われる。
  • サイズ(スケール)
    現在の状態では大き過ぎだと思われる。Apply時にScaleを0.5にすると想定内に思われる。適正な大きさの基準は何だろうか。仮想の単位とcmとが対応するようだが、指定場所と定義がわからない。blenderのユニットはスケール1とARPから決められている。単位指定はメーターにしておくべきか?
  • spine_02で回転する際、胸の変形が酷い。
    ボーンの位置かupper_chestを考えた方がいいのかもしれない。
[ 2021/04/19 20:16 ] カスタムモデル | TB(-) | CM(0)

FBX Exportすると、メッシュの左膝の座標がおかしい?

前段:
c_leg_pole.l(r)の角度が左右で異なることに気が付いた。ここを弄った覚えはない気もするが……どうだったろうか?

別に値がどうであろうとも、ポーズに影響は出ていないし、コントローラー自体の位置もおかしくはない。コントローラーの球体の向きが左右で等しくない、というだけの話だ。

この角度、Alt+RやAlt+Gでは戻らない。理由はトランスフォームの[回転]がロックされているためだ。このロックを解除して、Alt+Rしてやるとコントローラーの球体がきちんと正対する。

問題発生
FBX Exportしたものを、試しにblenderでImportしてみると、メッシュの膝の位置が左右で異なる(左側が内股っぽく見える)
autorig06.jpg

平行投影の側面を見ると気が付くのだが、問題の頂点ではY,Z座標は正しくミラーされているのだ。正面から見た図、つまりX座標だけズレているのである。

Export前の状態をリグ、メッシュとも確認したが、おかしくなりそうな要因を発見できなかった。生成されたc_leg_pole.lのデフォルトの角度が0でないことと関係があるのだろうか?

バグっぽい挙動なので、blender v2.83で同じファイルを開き、ARPの指示通りにUpdateした上で、FBX Exportしてみることにした。
→結果、正常に出力される。

ちなみに、生成されたc_leg_pole.lのデフォルトの角度もきちんと0になっていた!
autorig07.jpg
今回の件と関係あるかどうかはともかく。

余談:
2.83だとポージングで重いと前のエントリーで書いた。細分割曲面モディファイヤーを適用後の状態でポージングしてみたところ、まるで重くなかった。

legacyオプションに気になる文言を見つけた。もしかすると、旧Verでシンメトリーで出ないことがあってもフツーなのかも?
autorig08.jpg
[ 2021/04/19 00:48 ] カスタムモデル | TB(-) | CM(0)

Auto-Rig ProでのFBX出力

●パーツの分け方(参考程度に)

hair 頭髪のメッシュ
teeth 歯のみ
tong 舌のみ
eyes 瞳のみ(板ポリ)
body(facialなしの顔面+体)
予備(facialのみの顔面、体なし)

頂点グループ
例えば、歯ならteethという名前で分類できるので、そのオブジェクトがteethのメッシュだけなのであれば、それ以外の関係ない頂点グループは削除してもいいと思われる。舌、瞳、頭髪も同様。ただし、例外として、epaules_bend.x は残しておく(頭部には1.0のウェイトが付いている)。

facialを付けた顔面には、teethやtongのウェイトが歯や舌以外にまで及んでしまったりするので、不要な頂点グループは意図的に削除してかまわないと思われる。

結合するか否か
複数のオブジェクトにまたがっている場合、Exportに当たって結合してもかまわないと思われる。Import先の都合による。

●FBX Export

細分割曲面モディファイヤー
適用前の細分割曲面が混在している場合、出力後では多重にかかる(※)ようなので、Export前に適用するのがよい。※最も細かい網目になるように自動調整されるようだ。

結果として出力されるウェイト
肘関節や肩関節などデリケートな部分は、細分割曲面の適用によって、ウェイトのかかり具合が調整時(適用前)と異なってしまう場合もある。適用後に点検して再調整するしかないようだ。

 肘関節内側 forearm_stretch.l [追加|減算]ペイント
 肘関節内側 arm_stretch.l [追加|減算]ペイント
 上腕 c_arm_twist_offset.l [追加|減算]ペイント
 肩 shoulder.l [スムーズ]など

マテリアル色
マテリアルの色味がデータとしては保存される。テクスチャの色味に影響させたくない場合、白(RGBとも1)にしておく。

重い?
ちなみに俺はblender 2.79bでAuto-Rig Proを動かしている。2.83上ではポージングの描画が遅すぎて編集には向かない。Ryzen 5900Xでも入手できたら、2.83で試す価値はありそうだ。
[ 2021/04/18 20:12 ] カスタムモデル | TB(-) | CM(0)

Auto-Rig Proでの眼

俺が、佐渡渡さん他で採用している方法は:

 くぼみの白目を作り、瞳の板ポリを浮かす……というもの。

Auto-Rig Proが想定しているのは眼球――文字通りの球である。

ここに無理矢理、二次元方式をねじ込むわけだが、MMDで実現しているのと同じものが再現できればいい。要するに、瞳を動かすためのボーンだけあればOK。

Reference Bonesのfacialに☑を入れ、出てきたガイドで位置決め。
眼だけのメッシュ(瞳の板ポリ)にバインド。
頂点グループにfacial関連が追加される。

 左目は c_eye.l
 右目は c_eye.r
にそれぞれウェイト1.0で割り付け。とりあえず、これだけで眼が動くようになる。

眼の回転軸は、eye_offset_ref.l(または.r)のヘッドとテールの位置で決まる。
眼を上下左右に回転させた時に、顔面にめり込む場合は、回転軸の位置を工夫する。テールを固定したまま、ヘッド(くさび形の尖っていない方)を短くすると、軸が浅くなるため、めり込みにくくなる。さもなくば、瞳の板ポリをやや奥まった位置へ移動させて対処する。
[ 2021/04/18 02:51 ] カスタムモデル | TB(-) | CM(0)

Voxel Heat Diffuse Skinningで生まれ変わった佐渡渡さん

voxelskinning01.jpg

Voxel Heat Diffuse方式で、かなりいいところまでウェイトがつくので、あとの調整がめっちゃラク。はやく試せば良かった。Blender FoundationはAuto-Rig Proと共に、ライセンスを買い取って実装すべき。
[ 2021/04/17 19:30 ] カスタムモデル | TB(-) | CM(0)

MMDからVRMへ(blender)

【概要】
MMD用として作成済み(もしくはフィニッシュ前)のモデルをVRMへ転用できる体裁に整える。
※VRMへ転用=FBXフォーマットでExport後Unityで加工

前提:
  • MMD用としてExportできる直前まで完成している。
  • MMD用のリグは捨て去り、Auto-Rig Proで新設する。
  • ウェイト付けはVoxel Heat Diffuse Skinningで行う。
    ※Auto-Rig Proは有償のリグ(40ドル)
    Voxel Heat Diffuse Skinningも有償(30ドル)
    これらを使うと骨入れ及びスキニングを大幅に省力化できる。
手順:
  1. AスタンスをTスタンスにする
    autorig01.jpg
    MMD用のアーマチュアを使って腕ボーンを水平まで回転する。

    掌を平ら(※)にして、親指の開き具合を(上から見て)45度に。
    ※つまり、机に掌をピタッと押しつけた時のような状態にする。
    autorig02.jpg

    ボディメッシュにアーマチュアモディファイヤーを適用した上で、
    ポーズモード:ポーズ>適用>デフォルトのポーズに適用

    ボディメッシュの頂点グループをすべて削除。
    アーマチュアとの親子関係を解除したボディメッシュをAuto-Rig Proへ。

    【ポイント】
    同じリグで作成されているコスチューム複数を一括してポーズ変換するべし。

  2. Auto-Rig Proのリグを仕込む
    割愛(マニュアル参照のこと)
    肘と膝は完璧に伸びきった状態(直線)ではなく、関節をごく浅く曲げた状態で再現する(曲がる側を明示するため)。
  3. autorig03.jpg

    autorig05.jpg

  4. Voxel Heat Diffuse Skinningを利用する
    両手指~両手首のウェイトを保護するために、編集モードであらかじめ頂点を選択しておく。
    太ももの付け根付近で、内股の箇所もまた正反対のウェイトが付きやすい(※)ため、ここも保護。
    ※左太ももの場合なら、右太ももの影響を受けてしまう。

    専用パネルを出すには、[オブジェクト]モード(※)で、ボディメッシュとアーマチュアを(可視状態にした上で)一度に選択する。
    3Dビュー>ツールシェルフ>[アニメーション]タブ内にパネルが現れる。
    ※バインド後のアーマチュアは[ポーズ]モードになっているので、オブジェクトモードに直さないとパネルが表示されない。
    Voxel Resolutionはデフォルト値よりも高め(160~256)にすると分解能が増してよさげ。
ウェイト調整

主に、脇の下、股の付け根、尻を修正する。本体が四肢による変形を受けにくくなるようにウェイト値を調整する。
autorig04.jpg

具体的には、変形を受けている頂点を複数選択し、選択済み頂点のみにペイントがかかるようにマスクする。この状態で、影響を及ぼしている[頂点グループ]を選択し、ペイントしていく。

オプション:XミラーをON
脇の下の頂点グループ c_arm_twist_offset.l を[減算]でペイント(やり過ぎた場合は、[追加]でペイントして戻す)
尻の頂点グループ thigh_twist.l を[減算]でペイント(同上)

頭部を上下に向けた時に顎が伸びるのを防ぐ:
頭部・顎/頭髪 neck.x [減算]ペイント

肘を曲げた時にえぐれ過ぎないようにする:
肘関節内側 forearm_stretch.l [追加]ペイント
肘関節内側 arm_stretch.l [追加]ペイント

脇の下と上腕の変形は上腕がめり込み過ぎるようだ。腕の付け根側の変形がもっと欲しい。
変形させたい頂点を複数選択しておき、頂点グループ c_arm_twist_offset.l を選んでから、ツールシェルフ>[ツール]タブの[スムーズ]を実行。複数選択した頂点はそのままで、頂点グループ shoulder.l に選び直してから、[追加]でペイント。強さは0.009くらいで、頂点一つに対してマウスでじわじわと塗りつつ、変形の具合を確かめながら行う。

【ポイント】
基本となるボディにウェイトを付けて完成させる。
ボディのウェイトを流用可能とし、後にコスチュームへ転送させる。もしくは、Voxel Heat Diffuse Skinningをコスチュームのメッシュに対しても実行する。
[ 2021/04/17 16:27 ] カスタムモデル | TB(-) | CM(0)

最近の成果

脇の下ができました。
なんてことないように見えますが、細分割曲面モディファイヤーで作るとけっこう苦労します。自動的に中間で割られたエッジのウェイトを制御する術がないので。
Kahorun脇2

[ 2021/04/12 13:26 ] カスタムモデル | TB(-) | CM(0)

新キャラ

Shihotan01.jpg
[ 2021/04/10 19:49 ] カスタムモデル | TB(-) | CM(-)
カレンダー
03 | 2021/04 | 05
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
月別アーカイブ
全記事表示リンク