3Dキャラクター製造の流れ

こんばんは。
Appleの[Developer Transition Kit](https://developer.apple.com/programs/universal/)でデバッグする頻度が個人的には多めの@hiroakitです。
[NEXTSCAPE Advent Calendar 2020](https://qiita.com/advent-calendar/2020/nextscape)の17日目の記事をお送りします。

テーマは表題の通り、3Dキャラクター製造の流れで、製造工程をざっくりとご紹介します。
ソースコードは一切出てきませんが図解に努めました。

# 始めに

キャラクターを作る場合、プランナーもしくはデザイナーからキャラクターのデザインがあがってきて、はたまたこんな感じで〜と例が示され、そこから意思疎通をかけて完成像を共有して
キャラクターをモデリングしていくのですが.......

さて、このモデリングですが3DCGの作業で私が一番苦手な分野です。
できないわけではないですが、最も苦手な領域なのです・・・。

モデリング以外の作業って何があるの？という方もいらっしゃるでしょう。
ざっくりですが3Dキャラクターを例にCG周りの工程を下図に示しました。(ゲームを除く)
矢印の向きに従って成果物が流れていきます。(中には反復するケースもあるので行き来している矢印があります)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/3205d400-8d66-ab13-b9c3-2ec2c9bb80e5.png)

それで私が得意な分野がオレンジのところです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/58852abe-9905-bd75-cb3f-2be1f7f3cb02.png)

例えば、キャラクターの動きをつけるアニメーションや
キャラクターに照明を当てるライティングの工程は
上図にあるように、モデリングの工程から3Dキャラクターが流れてこないと作業できません。
当然と言えば当然のような気もしますが、もう少し手広くやれたら面白そうですよね。

そこで、3Dキャラクターのモデリングができる(macOSでも動く!)Autodesk Mayaを例に
3Dキャラクター製造の流れ(特にモデリング、テクスチャリング・シェーディング、リギング)を図を交えてご紹介します。

# モデリング

モデリングの工程では `メッシュ` を作ることがゴールです。
下図に写っている足はその `メッシュ` の例です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/94fc21f3-591d-fefa-d926-096bd338cd8a.png)

この足のモデリングを始めた時は下図の状態でした。
私の好きなタイプは正方形なので、いつもここから作っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/47af687c-2a90-124f-e81a-4b129c15595b.png)

モデリング作業時の様子をGIFアニメーションにしたものがあるので載せておきます。
(すごいがんばったけどここまでしかいけなかった時の様子とも言えます)

![output-note2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/adf0edfd-4ec6-68de-47fe-a0a99af853e6.gif)

## 重心の決定

経験が浅いながらも、3Dキャラクターをモデリングする際に個人的に心がけている点があります。
キャラクターに良い味を出してもらうためのパラメーターと考えています。

重心です。

要件次第ですが、一般人として登場させる3Dキャラクターとセリフが多い3Dキャラクターでは当然デザインが異なります。それはキャラクターの容姿だったり動きや仕草で表されますが、立位姿勢や座位姿勢を決める重心も大事なポイントです。

そして、どんなキャラクターでも「重心はどこですか？」の疑問は遅くともモデリング時点で解決しなければなりません。(重心の考慮がない場合、あとになって重心を変えたいというリクエストがやってきます......。いや、重心を変えたいとリクエストが明示的ならまだ良いほうでしょう......。)

例えば、一般人の場合は下図のモデルAのように重心を前にして前傾姿勢にわざとしたり
はたまたキャラクターの設定がバレリーナを目指す候補生のような場合には
下図のモデルBのように重心を脛骨直下気味にしたりなどの工夫を施します。

![diff.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/b3c1d29c-2f5d-9fce-d808-3665b55338c3.png)

もし、重心や姿勢について掘り下げたい場合は[姿勢と歩行-協調からひも解く](https://www.amazon.co.jp/dp/4895905179)がおすすめです。
人の構造的にどの部位と協調して重心を取ろうとしているのか触れています。

# テクスチャリング・シェーディング

ここまでの作業でメッシュを用意できましたが、まだ色や質感がありません。
色や質感を付ける工程がテクスチャリング・シェーディングです。(呼び方は他にもあります)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/9e7da5b1-cc23-0eb6-3cce-9a3b8083fd20.png)

例えば、上図は前述の足に皮膚の画像ファイル (広義でテクスチャと呼ぶ) を付けたものです。
メッシュに画像ファイルをつけただけなのに、なんとなく人間っぽい足になった気がしませんか？

ちなみにこのテクスチャは私の皮膚をNikonのカメラで撮り、
RAW現像とレタッチ、他の素材と合成したものです。

また、照明があたったときの皮膚の透け感だったり、
肌での影の残り具合など色々と考慮が必要だったりするのですが、
これはこれで話が長くなりますので別途ご紹介しましょう。

# リギング

ここまでの作業で人間っぽい足のメッシュが手に入りました。
ただ、これだけでは足を動かすことはできません。

メッシュはあくまでも形状だけなので、極端に言えば目の前に石像があるだけです。
石像は動きません (石像が動く？それはきっとフランスの美女と野獣の見過ぎです...)

そこで、`ジョイント` と呼ばれる部品を使って骨格を作り、
メッシュを動かすための基礎を作ります。下図がその一例で、オレンジの部分がジョイント。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/77d833b2-6e03-bed6-92f6-7043e709b6cd.png)

`ジョイント`で骨格を作った後、リグと呼ばれる部位を操作するためのインターフェースを作ります。例えば下のGIFアニメーションで足のジョイントが写っていますが、マウスカーソル付近に緑の箱がありますよね。これがリグです。このリグをつけることを `リギング` と言います。

![output2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/45232819-a731-c146-f010-d0e03bfdd36f.gif)

このリグは後ろに控えているアニメーション工程で多用します。
アニメーション付けやすいリグを作る人物やソリューションは愛されます。
プログラムもいいインターフェースを用意してくれると喜ばれますよね。それと同じです。

書籍でいいリグの作り方を解説しているのが下記です。

- [Rig it Right! Maya Animation Rigging Concepts, 2nd edition](https://www.amazon.co.jp/dp/B07G19VKL5)

なお、メッシュとジョイントを関連づけるスキニングという作業があります。
この作業をすると3Dキャラクターが動かせるようになります。
下図はその関連付け作業を始めた時の様子です。

![output-123.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105984/a3ecae86-1658-e691-a53e-a86be5633117.gif)

スキニング作業を始めたばかりということもあり、足をあげると肌が変な方向に動きますよね。
これはジョイントによって曲げられるメッシュの頂点がどこまで動くよという重み付けの設定(0.0 ~ 1.0での正規化された中での設定)が適切ではない場合になります。他のジョイントとの依存関係を考慮して値を再設定する必要があります。この調整がスキニング作業の面倒なところです。

# 結びに

以上、ざっくりとでしたが3Dキャラクター製造の流れをご紹介しました。
実際作ってみると大変ですね。

年末は[サイバーパンク 2077](https://www.spike-chunsoft.co.jp/cyberpunk2077/)を楽しいみたいところですが、
例で出したキャラクターのヘアスタイルのデザインも決めたいところ・・・。

# 参考資料

1. [Rig it Right! Maya Animation Rigging Concepts, 2nd edition](https://www.amazon.co.jp/dp/B07G19VKL5) by Tina O'Hailey, 2018
2. [姿勢と歩行-協調からひも解く](https://www.amazon.co.jp/dp/4895905179) by 樋口、貴広, 2015