今日は3Dモデリングをしたよ。
vanilla-flavored-human-body.blend: Vanilla flavored human body (blender model)
「バニラ味の人体」をコンセプトに、男でも女でもなく、年齢もなく、服も髪も耳1もない、そんな人体をモデリングしてみました。野望としては、これをベースに複数のキャラクターが作れたらいいなと思ってます。
3Dモデリングめっちゃ大変なのじゃー!!
先日Appleも参加したblender、楽しいですよね(雑な導入)。2.8系になって操作体系がフレンドリーになってからというもの、小物や無機物などをちょくちょくモデリングして楽しんでおりました。
だけど、たまには生物もモデリングしてみたい…でも、出ているキャラクターモデリング本はどれも古く、Blender2.8系以前の本ばかり…そんなときに出合いました:
半年程度前に出た本。もちろん、Blenderは2.8系以降です。しかし…買ってみて驚いた。450ページ!?なんだこの鬼のような手間は!!!!心折れるわ。
「NEW GAME!」という3Dモデラーの仕事を描いた漫画2では一日一体作らせようとするシーンが出てくるのですが、…エーッ、そんなん、無理に決まってんだろ!
これはもう「才能」「努力」「慣れ」といったような言葉でなんとかなる範囲ではなく、キーボードやマウスを操作して作成する際の物理的限界として不可能だと思います。
ここで私は考えました。漫画の中では描かれていないだけで、実はベースとなるような3Dモデルが何体か会社で用意してあって、涼風青葉はそれをカスタマイズして作ったのでは、と…。
そんなわけで、今回はこんなことになったわけです。
本にはなかった苦労ポイント
トポロジーの細かい修正・変更をするときはサブディビジョンサーフェスを解除する
この本では常にサブディビジョン・サーフェスを掛けた上で編集画面上でも反映させる、という手順を踏んでいるのですが、この手順ですと細かい頂点の修正はかなり難しいです。サブディビジョン・サーフェスは頂点や辺の位置まで動かしてしまうので、ループカットの位置も表示上の位置と実際の位置はずれてしまいますし、サブディビジョン・サーフェスがきれいに頂点を並べ変えてしまうので、頂点が実際には変な位置にあったとしても気づきにくく、あとで「こんなはずでは…」が発生します。
そんなわけで、サブディビジョン・サーフェイスを解除した上でスムースシェード・フラットシェード両方で観察して、変なところが無いか洗い出す作業を定期的にするといいと思います。
細かいニュアンスの表現にはスカルプティングも併用する
胸の肋骨のふくらみなど、複数頂点にまたがるけど細かい起伏が存在する場合などは、スカルプティングを利用するのも1つの手です。この時はサブディビジョン・サーフェスを掛けておいたほうが陰影などが確認しやすくていいと思います。ただし、頂点の並び(3D業界用語としての「トポロジー」)はかなり汚くなってしまうので、上に書いたようにいったんサブディビジョン・サーフェスを解除して並び替えるとさらにきれいに仕上がります。
関節まわりは難しい!ウェイトペイントは難しい!
関節を仕込んだあと、その関節が曲がった際にどのようにメッシュを変形させるのかを指定する「ウェイトペイント」という工程が存在します。本だとかなりさらっと流されているのですが、かなり苦労しており、いまだに完全に満足する出来にはなってません。
ウェイトはポーズを付けた状態で編集する
本にはなかったのですが、ウェイトを意図通りに編集するには、実際に曲げた状態でウェイトを塗ると便利です。まげてしまった後も、アーマチュアを選択した状態でポーズモードに入り、Aボタンを押して全ボーンを選択して「ポーズ→トランスフォーム→すべてをクリア」を実行すればポーズは元に戻せるのでご心配なく。
関節の折り曲げ
この辺が詳しいのですが、例えば関節を普通に3つに割ってウェイトペイント50%にすると関節を折り曲げたときに関節が細くなってしまいます。
これはウェイトペイントが線形補完を使っていることに起因する問題で、うまいことウェイトペイントのパラメータを調整するだけでは原理的に対処できません。本ではこの問題に触れられていなくて、関節周りは単に3つにループカットで割った上で50%でウェイトを仕込んでいるように見えました。
この問題の解決には関節の割り方に工夫がいります。1つ目は、補完してきれいに曲げようとするのではなく、めり込ませてやることです。ゲームのCGを観察するとたまに見かけます。
もう1つは、折り曲がる部分が凹むのは頂点があるからだ!ということで、降り曲がる部分には頂点を置かないという方法です。
どちらの方法も一長一短なので、好みで決めればいいと思います。ただし、どちらの方法も、サブディビジョン・サーフェスが絡むとうまくいかないことがあります。後述。
手首のねじれ問題
今ためしに手首をねじってみてほしいのですが、手首だけがねじれるわけではなくて、腕全体がねじれているのがお分かりでしょうか。解剖学の細かいところはよくわかりませんが、実際そうなってます。
もちろんしかし、Blenderはそんなところは勝手に空気を読んでくれたりはしないので、そのままだとこうなります。
この辺も3Dモデリング界隈ではよく知られた問題で、手首のねじれに連動して動くような補助ボーンを設定すればうまくいきます。
しかし、この補助ボーンを動かすための設定はUnityなんかに持ってった時に消滅するっぽく、どうしようかな…と悩んでいるのが現状です。UnityのHumanoidはこの辺よしなに設定してくれるんだろうか?
いまのところ、前腕と上腕にだけ、手首に連動して回転するような設定(ボーン・コンストレイント)を仕込んでいます。
アーマチュア変形を掛けてからサブディビジョン・サーフェスを掛ける
Blenderのモディファイヤは上から順番に適用されるようで、普通に作っているとサブディビジョン・サーフェスを掛けてからアーマチュア変形が掛かります。
が、これを使うと上で述べた関節の割り方の工夫がうまくいきません。
実際の例で見てみましょう。
サブディビジョン・サーフェス→アーマチュア変形
おなかが割れてます。
アーマチュア変形→サブディビジョン・サーフェス
おなかが割れることなくお辞儀ができています。
腕の関節なども、サブディビジョン・サーフェスを掛けてからアーマチュア変形を掛けてしまうと、せっかく関節が細くならないように割ったのもむなしく、サブディビジョン・サーフェスで割られた中点のところが細くなってしまいます。おそらく「50%の罠」がサブディビジョン・サーフェスで発生してしまうせいだと思います。
が、これUnityやUnreal Engineに持ち込んだ時にはどうなってしまうのでしょう???いまのところまだめんどくさくてやってないのですが、今から頭痛が痛い問題です。
膝や肘が細くなってしまう
肘やひざの部分が細くなってしまうのもお悩みポイントです。これも、ウェイトペイントによるメッシュ変形が線形補完でしかないことに起因する問題です。
Blender内ではPreserve Volumeを使えばいいんですが、他のゲーム・エンジンでもこの変形機能が存在するかというと…?
メッシュは適宜修正しよう
本でもたまに書かれていることではあったのですが、ボーンの配置、ウェイトペイントなどの後工程になってからでもメッシュは適宜修正したほうがいいです。逆に言うと、どうせ修正するので100%完璧を目指してから後工程に進む意味はあんまりありません。
大きなゲーム会社では分業化が進んでいて、モデリングをする人とウェイトを調整する人は別らしいのですが、どうやって分業してるんでしょう??謎だ。
Bluetoothキーボードがあると便利
わたしは腱鞘炎対策としてKINESISというだいぶ変わったキーボードを使っているのですが、こういうキーボードは文章を打つにはいいんですが、ショートカットキーを打つのにはあんまり向いてません(例えばY軸にそって移動するGYというショートカットを打とうとすると、左側と右側に分かれているのですんごい打ちづらい)。
楽天でUS配列版のLogitech K380を買って導入してみたところ、かなり快適に作業できるようになりました。道具大事。
今後の見通し
もちろんですが、まだ3Dモデルとして必要な作業はまだまだ残っています。
- テクスチャ
- 表情や口パク(シェープ・キー)
- 服
- 髪
- 耳
この辺は個別のキャラクターの個性が出るところかなと思いますので、今回のリポジトリからForkしてから作りこむ事になるのかなと思います。
「バニラ味の人体」を作るまでに200コミット近くの手間がかかっており、まだまだこれからかと思うと気が遠くなりそうですが、がんばるぞい!
あと最終的に何につかうかも実はあんま考えてなかったりします。Blenderでレンダリングして遊ぶのも楽しそうですが、モーションキャプチャしてVTuberになったりVRChatしたりしてもいいですし、UnityやUnreal Engineのゲームで活用するのも面白そうです。live2dも実は検討してたのですが、マジでVTuberにしかなれなさそうなのでやめました。
Gitでblenderのモデルファイルは管理できる!
blenderのモデルファイルは圧縮が掛かってないようで、git gcすると想像以上に圧縮が効き、リポジトリサイズを現実的なサイズのままに維持できます。200回近くコミットして、body.blendファイルは現在1.4MBくらいありますが、それでもリポジトリのサイズは20MB以下に収まっています。バイナリ・ファイルなのでマージなどはできませんが、それでもこまめにコピーを取っておく代わりにGitで管理するというのは十分に現実的なソリューションだと思います。
実際に何度か git reset –hardのお世話になりましたし、git checkout (適当なコミットID)して昔のファイルを開いて編集前はどうなってたか確認したこともあり、gitの恩恵は十分に得られていると思っています。
gitで管理できるものはgitで管理しましょう。コミットメッセージとtagがつけられるだけでもめちゃくちゃ便利ですよ。
…本当はpsdや.clipもgitで管理したい。
お絵かきおじさんとしての感想
いつも絵を描くときは、いったん頭の中で3Dで思い浮かべてから傾けて描いているので、後工程を勝手にBlenderがやってくれるのは楽だったかも。ただ、結局モデリングも2Dで行うので、頂点・辺・面の選択にはすごい苦労しました。オブジェクトが複雑になってくると、手の頂点を選択したいのにその奥に透けて見える足の頂点を選択してしまったり。そのためには画面をいったん傾けて、奥側に意図しない頂点がまったくない状態に持っていくか、透けない設定にしてぐるぐる回転して選択したりしないといけません。これが結構大変。
あとは液晶を上から見下ろしたり下から見上げたり横から覗こうとしたりしてる自分に気づきました(笑)。水族館の水槽じゃあないんだから!ゲームしてる最中に体うごく人ってこういう感覚なのかな~とちょっと理解…。
きららおじさんとしての感想
NEW GAME!は3Dモデリングのことを何も描いていない。ということがよーーーーくわかった。
…気になって読み返してみたのですが、3Dモデリングソフトウェアの描写はかなりあっさりしてて、「あっ!Mayaだ!」みたいなシーンは殆どなかったです34。そもそも画面が真っ白だったり他のキャラの頭で隠されてたり…。
3Dモデリングの話ではなく、もっと抽象的な「仕事」の物語を作ったからこそ、多くの人に共感され、「がんばるぞい!」で終わることなく、8年間も連載して、アニメも2本も制作するぐらいの人気が出たんだろうなとは思います。
…思いますが、こうしてモデリングした後だと、少し物足りないです。現役時代、得能正太郎がどんなことで悩んでいたのか、あるいは「仕事として3Dモデリングする」とはどういう事なのか、読んでみたかった感じはあります。