最近は一人1アバター時代っぽいのでモデリングしてみた流れまとめ
バ美肉が流行っている今日このごろ,美少女になるかどうかはともかく仮想空間上で使うオリジナルアバターの一つくらい持っておいたほうがいいかな~~みたいな気分になったので,作ってみた.
特にこの数ヶ月で様々なサービスが登場していて,有名どころだとこんな感じのものがある
- Vカツ
- カスタムキャスト
- VRoid
- Make Avavter
- REALITY
結局美少女じゃん,というのはさておき,これらを組み合わせて模索するのは楽しい.楽しいが,まがりなりにもエンジニア的精神を持っているつもりなので,なるべく一度は自作していこうというのを目標とする.つまり,アバターを持つことだけじゃなく,モデリング作業をしていくことも目的としていく.
あれです,一度くらいはライブラリ使わずに生でAPI叩いてみたほうがいいよね,みたいなのと同じです.
動く人形モデルを作るまでの流れを整理する.
1. デザイン起こし
2. モデリング
3. UV展開,テクスチャ
4. リギング ボーンやウエイトなど
5. モーフィング 表情付け
6. VRChat用の調整
今回は一つの目標として VRChatで使える程度の作り込みを目指す.VRChatには三角ポリゴンで2万という制限がありあった(最近撤廃されたのでこの記事は2万以内という考えのときにやっている),例えばよく出来たMMDキャラクターは平然と数万程度あるので,どちらかと言うとローポリ寄りなんだと思われる.「めちゃくちゃリアルに作り込んで最後にポリゴン数を落とす」のと「最初からシンプルなポリゴンで作って,あとからディテールを加えていく」みたいな方法があるようだが,正直そんなことを考えながらやるのは初心者の自分には無理だと思ったので適宜2万くらいかなーって感じに調整した.
1. デザイン起こし
ログを見た感じ7月頭から作業を始めた.特にデザイン決めあたりは友人のuui氏(@trashbako)に手伝ってもらった.というか,きっかけは彼である.
こんな時代だし自作アバターの一つくらい持っていたいなあと最近思い始めた
— かでん (@2_sac) June 27, 2018
アバター欲しい
— かでん (@2_sac) June 29, 2018
かでん氏のアバター製作に協力したい…
— uui (@Trashbako) June 29, 2018
協力します、最高の存在になりましょう!!!!!!!!!!!
— uui (@Trashbako) June 29, 2018
このノリでslackを立ててもらい,設定画や参考資料はバンバンそこに投げていく感じになった.
- 属性 ロボ? メガネ?
- 世界観 ミリタリ? ファンタジー?
- 衣装 スカート?
正直どこに向かえばいいかわからない状態で色々デザイン案を出していった.
例: uui氏の絵
例: 僕の絵
加筆してみたり
色々迷走している最中にこういうデザインを頂いたので・・・
加筆してみたら行けそうな感じがしたのでこれをベースに進めることにした.この時点で9月末.
髪型とか詰められないか模索.(僕の絵)
服の様子とかも考えてみる.(僕の絵) 確かこのあたりでモデリングを並行作業で始めたので,この下の絵は時系列が少し前後する.
10/21のuui氏.これが結構効いてくる一枚.
これが11/11(uui氏の絵).このあたりで大体固まっており,後は細かい装飾や模様の話が多め.
現在でもデザインは細かく調整中です.
2. モデリング
デザイン決めと並行してモデリングをどうやってやるか?を調べていた.
今までやったことがないので,そもそもどうやってモデルを作成していいかがわからない.
例えば,まずはこういう感じの記事を探しまくった.
【 3D 】 作り方のポイントバッチリ! 可愛く作る為のコツはこれ!! 【 女の子 】 | 日刊! CGデザイナー情報
『NieR:Automata』キャラクターモデルメイキング | NieR:Automata 開発ブログ
ZBrushでゼロからつくる、フィギュアのCGモデル。全工程のメイキング動画3時間半! | CGトラッキング 世界のCGニュースを集めてみる
area.autodesk.jp
整理すると,
1. 下絵に沿ってポリゴンを一枚一枚貼っていく
2. スカルプティングなる粘土こねこねからの使いやすいようにポリゴンを整形(リトポロジー)
という2つの方針が立ちそうだという理解を得た.
ここで,「ポリゴン貼ってって立体作るのって絶対しんどい,多分粘土こねるほうが楽しい」という直感が走ったのでとりあえずスカルプトツールで人形をひねり出してみる練習をした.
ZBruchとか色々あるみたいだが,とりあえずフリーの Sculptris というのを触ってみる.
で,うなりながらひねり出したのがこれ.ちなみに26万ポリゴン.
今見るとバランスが悪いけど,まあ初めてやったにしてはいいほうじゃないかな.
フィギュアの写真などを参考にしながらやったので,ディテールはそこそこでも全体のバランスが取れていなかったんだと思われ.
ちなみに,Sculptrisに付属のデフォルトモデルはこんな感じ.
この時点(7月中旬)でSculptrisの限界を感じていて,例えば服と身体を分けて作るとかがめんどくさそうだったので,uui氏と一緒にこのモデルを少しこねくり回しつつそれぞれの用事が忙しく一旦作業停止.
その間,「リトポロジーってどうやるねん」とか「ポリ割ってなんやねん」といったことを調べていた.
例えばこういうの.
指のトポロジーを解説しているページを見つけた(英語)。https://t.co/PG6eLfXbbS pic.twitter.com/LDOEiM9aVt
— dskjal (@dskjal_) 2018年6月7日
#ローポリゴン古文書
— 心優しき坊主 [INFINITYBULLET ] (@KoKoRoBoUZu) 2018年7月12日
若「Polygon増やしすぎた…減らすのムリぽ
心「3DCoatとか無かったら徒手でのリトポロジーだ!
若「やや、リトポロジーってなんスか老師
心「Meshを再構成し減らす事だ、フォロー減らないで!
作業進めるとなんだかんだで増えるし割も汚くなる
そんな時はリトポロジー! pic.twitter.com/SylTGkNJtN
あとは,服とかやっていくにあたってのBlender基礎的な.ここまで来ると,MMD系の記事が役立つ.
blenderからMMDモデル作った流れ - riotoqll's diary
MMD、3D、blenderなど - ブロマガ
Blenderでモデリング(顔1):In MMD Life - ブロマガ
10月,僕のほうでも余裕が出てきたのでリトポとやらを試してみるかという気に.
ここで,Blenderを使うが初めてなので使い方を覚えるところから.このチートシートを印刷して見ながらやった.
rt3dcg.blogspot.com
Blenderの何がわかりにくいって,ショートカットキーを覚えないと何もできなことと,色々モードがある上にその時々でキーの意味する内容が違うことを把握していないといけないことだと感じた.で,強制的に頭をBlenderに慣らしつつリトポロジーをしていったわけです.
リトポには色々ツールがあるみたいだけど,とりあえず標準の「シュリンクラップ」を使って形作っていく.
あとは,「トランスフォーム時のスナップ」で簡易シュリンクラップ.
最初はこんな感じ.お気づきの方がいるかもしれないが,2万を目指すにはこれは細かすぎる.
顔とか手とか
だいぶBlenderにも慣れてきた気がしたので,そのまま↑の記事を参考にしながら服をガッと生やしてみる.
髪の毛は,単純なおかっぱから.
髪の毛のポリゴン的構造にはめちゃくちゃ悩んだ.
ロングならその厚みの髪の毛をまとめて生やせばいいのだろうだけど.
ボブだと髪の毛の隙間から頭皮付近見えるだろうけど,どう隠すのだろう・・・?という疑問は,MMDモデルを見てみた.C_mellレミリアとかONEとか.
2万というポリゴン数の制限があるなかでどう振り分けるのか,とか,色々考えた結果フリーズして「とりあえず厚みはなしで面をたくさん生やす」という方針にした.
まずは前髪.
構造的には,「前」「もみあげ周り」「後ろ」「後頭部」に分割することに落ち着いた.このあたりの分割法はVカツとかを意識してなくもない.
ループカットで立体的にしたり.
服の形を整えたりしつつ,このあたりで,ポリゴン数をへらすためにもう一度身体のポリゴンを削減した.
(これでも2万には多すぎる気配がしたのでその後も服とかを色々と苦労して削っている)
この時点(10月10日頃)で靴のデザインとかは未定だったので,まああとから足せばいいやくらいの気持ちで次の作業をやってみることにした.以下は時系列があとになる.
靴はどうだろうという話.
最終的には上にもあった氏の案.
uui氏にバランスを見てもらうなど.
3. UV展開&テクスチャ
UVとかテクスチャの概念は知っていたが,モデルを展開するのはこれまた初めて.
基本的によく見かける記事通りにやった.
3d-memo.blog.jp
- つなぎ目が見えたら気になりやすいところでは切らない
- テクスチャを歪ませたくない部分はUV展開の形状を工夫する
- テクスチャで分けるのかマテリアルで分けるのかを考える
あたりがあると思うけど,結局よくわからない.まだテクスチャを描き込むような段階ではないので,ガンガン修正する前提でとりあえず展開するという方針にした.
そんなこんなで初UV展開(10/13).
さて,多少なりとも絵を描く趣味もあるので,皮膚の表現にはSSS(表面下散乱光),立体の表現にはAOが有効であるということを知っていた.
SSSは「真っ赤に流れる僕の血潮」という歌詞にあるような,つまり皮膚を通った光の色・明るさについての話.
AOは,物に囲まれると環境光(いろんな方向からの反射光)が遮られて暗くなるよね,暗くなってるってことは凹んでいる=立体感の表現だよね,という話.
で,SSSは実のところテクスチャでは表現できないのだ.カメラと光源によって見え方が大きく変わるから.でも,単純に皮膚上にできている陰の境目付近は赤色が強く出る という程度でも良さそうだ.
AOは,Blenderにあるベイク機能を使った.これは,モデルからAOの具合を計算した結果をテクスチャに焼き込んでくれるもので,自分でテクスチャに対して「ここは隠れているから色が暗くて・・・」とやらなくても良い.
www.blender-ikkinomi.com
area.autodesk.jp
このデータを使うことで,立体感がお手軽に出せる.
例えば,これは大本のテクスチャ.
これがAOのデータ.顔は髪の毛とかが移動しても違和感ないように吐かれた陰影の画像を編集したりする.
重ねるとこんな感じ.
今やるならこれかな.
アバターの色がシンプルだなと感じたら、
— 36@VRChat (@saburokusa40) December 15, 2018
カラーピッカーに、H(色相)、 S(彩度) B(明度)という項目があるので、
三つの項目全ての変化を加えてあげると、情報量がかなり増えます。
オクルージョン焼いて、それどうするのって思うかもしれませんが、
これは上記の明度情報を追加するためです。 pic.twitter.com/q5fM5cTNWx
(グラデーションマップあったなぁ~...という気持ち)
髪の毛とか目はそうなんどもUV展開し直すものではないだろうし,こうやって「大本の一色」+「AO」だけで作業を進めるフローを立てたおかげで服とかのUV展開何度かやってもそんなにくじけませんでした.見た目って大事.
髪と目はそれなりにやって,他の部分はとりあえず色置いてAO焼いて,というのができたのが10/13.
見た目ができてくると嬉しい.そのあとの苦労もまだ知らないし.
作業的にはここまでで30%くらいなんですよね,悲しいことに.
デザインがまだ決まってない靴どうしようかな,みたいな.
4. リギング ボーンやウエイトなど
Mixamo これを使おう.素晴らしい.
手の位置とかを指定して数分待つだけで自動でキャラクターを動くようにしてくれる,神ツール.
実はモデリングのさなかに時々これを使って動かしてモチベを保ってた.
あとは,破綻しないようにウエイトを塗り直していったり,場合によってはちょっとメッシュの配置を変えたりというのを地道に繰り返すだけ.
現段階ではノウハウと言うよりは試行錯誤の結果しかないので,あまり語ることがない・・・.
この作業を経て,世の中の3Dキャラクターのデザインに関する様々な事情が見えてくる(気がする)
閑話休題
ここまでの作業でモデルを動かして遊べるようになるので,無表情でよければVRChatに持っていくことができる.
10/22,VRChatのステータスが上がったので,一旦uui氏とVRChat上でモデルを見てみて,デザインこうしたほうがいいよね~~などの話をした.ウエイトがほぼ未調整なのでひどい.
これは実感ですが,いままで借り物のアバターだったのをオリジナルのものにすることで,自分のアイデンティティが確立されたような安心感を得ました.すごく大事.
あと,モデリング時はあまり気にしていなかった体のバランスが,中から操作してみると案外気になるもので,手が短い・小さい・顔がちょっと大きい気がする みたいなフィードバックが体感として得られた.この現象なかなかおもしろいと思いません?
ついでにVRMにしてcluster.上でも動作確認.cluterはまばだきくらいだから表情を作らなくても良さそう.
VRMなのでバーチャルキャストでも.
シェーダーは,この時点ではVRM作成で使ったMToonをVRChatでも使っていた.まぶしいみたいなトゥーン系あるあるネタも経験.
最近VRoid Hubが公開されたのでそちらにも.
hub.vroid.com
5. モーフィング 表情付け
1. Blenderなどで変形後の顔(笑顔とか)を作って保存する
2. 使う時(VRChatとか)に,無表情から特定の表情へ変化するアニメーションを設定する
というもの. 1 はBlenderではシェイプキーと呼ばれているらしい.
最低限設定したいのは,「まばたき」「リップシンク(喋っている時用の口)」.表情はあるほうがもちろん良い.
相変わらず2万に対してギリギリなので裏ではポリゴン数を頑張って減らしつつ(例えば見えない服の裏地はポリゴンはらないとか),表情をつけていく.これもMMDモデル作成記事が参考になるので,ほぼそのまま.やってみてわかったのは.普段無表情系の絵しか描けないもとい描けない自分にとって,表情付けの作業は非常に難しいということ.
しょうがないので,イラスト本をちら見したりMMDモデルの表情の作り方を見てみたり...正直まだまだ未完成です.
ところで,VRChatでは自動瞬きとアイトラッキングの両方が自動でついてくれるのだけど,まばたきと手で表情作るのは干渉してしまうという問題がある(修正されるのだろうか).
つまり,定期的に瞬きが走るアニメーションに加えて表情がつくので,目をつぶる表情は一瞬ひどいことになる.
いらないじゃん!と思うのはそうだけど,まばたき機能には実は顔を上や下に向けたときに視線方向に従って若干目をすぼめるような動作をしてくれる.
大抵の人は表情をくずれるまばたきを無効化するようにしているようだけど,この繊細な変化が結構好きなのでいまのところ「目をしっかりつぶる表情は使わない」という方針にしている.
(でもしっかり目をぶつった表情もほしいっちゃ欲しいなーと思う)
6. VRChatやUnity用の調整
VRChatでの運用にあたっては,この表情の設定が決まっているので従わなければならない.
流行りなのでたくさん記事があるが正直玉石混交で,特に参考になったのはこのあたり.
VRChatで自動的に瞬きをする方法〜BlendShape〜 – ニムサイト
jellyfish-qrage.hatenablog.com
シェーダー大事ですねシェーダー.
最初の頃はVRMにも出力してclusterとかでチェックしていたので,その名残でMToonを使っていた.けどそのままだとなんか使いにくいなーという印象を持っていて,でもUTS2はいまいち使いこなせる感触がなくて...という中で見つけたのがReflexShader2.
booth.pm
そんなに多くのシェーダーを試したわけじゃないけど,なんかサクッといい感じに見栄えがしたので気に入って使ってます.
シェーダーの設定で気にしているのは以下の点.
- 肌部分のリムライトは血の色が出るので(SSS),赤っぽくなるはず
- 肌部分の陰はホントは青っぽくていいんだろうけど,なんとなくピンク目が好きな気がする
- 髪の毛のリムライトは黄色っぽい感じがいい気がする(銀髪だけど)
- 肌以外の服のリムライトと陰は青め
あと,今までMeshRendererの数を気にしていなかったけど,VRCにアバター評価システムが追加されてしまったので最適化もちゃんと考える.blenderならCATS pluginといvrc公認のツール?でテクスチャとマテリアルをまとめることができる.
github.com
7. その後,その他
まだ形状やポリゴンがしっかりしていないので,覚悟を持って丁寧にUV展開する一歩が踏み出せない.もう追加変更無いかなーと思ったら丁寧にUV展開しなおして,テクスチャ描き込んだりノーマルマップ用意したりしたい.いつになるのやら.
見てわかる(わからない)けど,髪やまつげ,眼はテクスチャ描いたけどあとは基本色にAO載せているだけ.まだまだやりようがある.
「パッと見は大体できてる」の状態が続いているので自己紹介.
今更ですが最近はこんな姿でVRChatうろついてます
— かでん (@2_sac) December 16, 2018
服装デザインやバランス調整等々は全体的にuui君( @Trashbako )に協力してもらいました 彼には圧倒的感謝🙏 pic.twitter.com/72yfLwaqXM
最初よりだいぶ良くなった.
ちょっとRTされたツイート.
今使ってるVRChatアバターで,個人的に気に入ってる眼球の実装です pic.twitter.com/wWNBiXsXgw
— かでん (@2_sac) November 24, 2018
実装は割と楽で,単純に凹凸のメッシュわけて,ハイライトのウエイトを虹彩の半分程度にするだけですhttps://t.co/uh2rSYvKIz pic.twitter.com/j8pMfinlh3
— かでん (@2_sac) November 24, 2018
・虹彩と角膜反射は形状が違う
— かでん (@2_sac) November 24, 2018
・眼球は真球じゃないので反射像(プルキニエ像)は虹彩よりちょっと遅れて動いているように見える
これの元ネタは「角膜反射法によるアイトラッキング技術」だったりするんだけど,まあそこまで気にする人はいない.単純にパララックス効果がいい感じというだけ(でもそれだけでいい感じになると思う)
あと,↑の形状特有な話で,眼にリムライト入れると斜めから見たときにいい感じに光る.これも結構お気に入り.
これは11/19の投稿.自分の作品の不出来を自覚するのには時間がかかる.悲しい.
反省点や最近思っていること
全体的に,ポリゴンが7割できるまで1ヶ月,バランス調整やデザインへのフィードバックに2周間,再度バランス調整やその他微調整にまた1ヶ月といった感じ.
- blenderわからんマンから始めたので,ファイル構造がレガシーを引きずっている感じがする.結局最後に最適化してシェーダー+テクスチャ側で色味調整するのだから,作業中は単一マテリアル少数mesh objectにしておくべきだった.
- VRoidっぽくまつげや眉毛はテクスチャのアルファで抜くタイプにしたけど,難しい(技量と調整不足も大きい).デフォルメを優先したほうが可愛い映えは楽にする気がする.
- 可愛い顔は平面的な造形が多い気がする.自分のは好みというか癖というかで結構鼻がでてるなー (と思ったので最近微修正した)
- 調整がめちゃくちゃ時間かかる しかもあんまり全体の印象は変わらない 悲しことだ
- 表情はやっぱり苦手
- 絵の癖がモデルにすごい出る
- 回路のアートワークと同じで意図あるトポロジーは美しいと思える いいことだと思う
記事書くのに疲れた(下書きは10/17からある)下書きレベルだけど公開しておこう,そうしよう
VRChatうろつくと結構頻繁にデザイン褒められるのでやってくれた @Trashbako 氏は神デザイナー
— かでん (@2_sac) December 23, 2018
デザインのアイディアやバランス感など僕に足りてないものを持っていながら手伝ってくれたuui氏には非常に感謝.冒頭にあったようにきっかけも彼である.
めちゃくちゃとっ散らかった記事になってしまった.メリークリスマス🎄