Blenderで自作アバターを作ってVRChatに連れて行った (2. Blender)

## 概要
自作アバター作成にあたって、Blenderで行う作業をまとめました。
今回使用しているBlenderのバージョンは 3.3.1 です。（バージョンの指定は特にありません。）

## 目次
1. [アバターのデザインを決める](#1-アバターのデザインを決める)
2. [モデリング](#2-モデリング)
3. [リギング・スキニング](#3-リギングスキニング)
4. [UV展開・テクスチャ作成](#4-uv展開テクスチャ作成)
5. [シェイプキー作成](#5-シェイプキー作成)
6. [エクスポート](#6-エクスポート)

## 1. アバターのデザインを決める
事前にアバターのおおまかなデザインについて決めておきます。アバターの正面図や側面図を描いておくと、モデリングの作業が楽になります。

![image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457210/8801fd5d-0e1c-8d65-08a0-91049ae5e29b.jpeg)
↑ 今回作成したアバターのデザインです

## 2. モデリング
実際に3Dモデルを作成します。モデル作成にあたって、次の動画シリーズを参考にさせて頂きました。

> * [【モデリング編】初級から中級者向けキャラクターモデリングチュートリアル](https://www.youtube.com/playlist?list=PL7AyBndD_6pWbIRIb0KoO8ZnvsVQhLNLD)
人型アバターのモデリングの手順が細かく解説されています。

顔や体のモデリングは動画を参考にしつつ、髪の毛や服は調べながら作っていくのが良さそうです。
特に髪の毛は様々な作り方があるので、調べてみて自分に合った方法を模索していくのが良いと思います。

### 注意点
* **サブディビジョンサーフェスのレベル数（画像の赤い部分）を上げ過ぎないこと**

    ![ss1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457210/3f4a20a5-c793-fb42-c1fb-f0026f2f3edd.png)
    
    VRCには「パフォーマンスランク」と呼ばれる、ユーザーのパフォーマンスに与える影響に関する指標が定義されています。
    > [Performance Ranks - VRChat Creation](https://creators.vrchat.com/avatars/avatar-performance-ranking-system/#section-avatar-performance-ranks-value-maximums-per-rank)
    
    サブディビジョンサーフェスのレベル数が高いと、モディファイアー適用時のポリゴン数が増加します。
    これによって、VRCプレイ時のパフォーマンスに影響を及ぼす可能性があるため、サブディビジョンサーフェスのレベル数が低い状態でも綺麗に見えるようなモデルを作成すべきだと考えます。
<br/>

* **多角形のポリゴンを極力作らないこと**
    
    ![ss2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457210/4666e22d-0ff3-43ce-21c7-89e65ab7233a.png)

    5角形以上のポリゴンが存在すると陰影付けの処理が上手く行われない可能性があるため、出来るだけ 3角形 または 4角形 のポリゴンに分割した方が良いようです。

> [【Blender 3.4】Nゴンをチェック・分割・利用する方法まとめ](https://cgbox.jp/2023/01/21/blender-ngon-check/)

* **サブディビジョンサーフェスを適用しないこと**

    サブディビジョンサーフェスを適用してしまうと頂点数が増え、後の作業が面倒なことになってしまうので、サブディビジョンサーフェスの適用はUV展開の直前 もしくは Blenderでの作業が終わった後に行うのが良いと思います。

<br/>

![ss3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457210/498b59ef-4d56-d94c-7265-61506671a061.png)
↑ 実際に作成したモデルです

## 3. リギング・スキニング

ボーンを作成し、アバターがボーンに従って動くように設定します。

* **リギング** : 3Dモデルのリグ（ボーン）を作成すること
* **スキニング** : 各頂点とボーンを関連付け、ボーンの動きに従ってメッシュが動くようにすること
<br/>
リギング・スキニングについて理解するうえで、次の動画がおすすめです。

> [【第４回】ワニでもできる！モデリングforVRChat - スキニング](https://www.youtube.com/watch?v=APchelX1dSU)
動画の序盤の方で、スキニングについての解説が行われています。短くまとまっていて分かりやすいです。

<br/>
実際のリギング・スキニングの手順は、次の動画シリーズを参考にさせて頂きました。<br/>

> [【リギング/スキニング編】初級から中級者向けキャラクターモデリングチュートリアル](https://www.youtube.com/playlist?list=PL7AyBndD_6pUa3XlzQpXG63BK63T_dhGt)

### 注意点
* **目のボーン調整をきちんと行うこと**

    VRCでは目線を設定することが出来ます。（他のアバターを目で追いかけることが出来る）
    このとき、目のボーンがきちんと調整出来ていないと、瞳が眼球から飛び出したり白目をむいたりします。この段階でボーンを動かしてみて、目が思い通りに動くかどうか確認しておいた方が良いと思います。
    
    ![ss4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457210/32bf1b27-2e7f-639c-4c6a-06b629dedbf6.png)

    （個人的には、目のボーンは回転させずに真正面を向くように配置しておくと、Unityでのセットアップが楽に行えました。）

## 4. UV展開・テクスチャ作成

UV展開後、テクスチャを作成してマテリアルへの割り当てを行うことで、モデルに色や模様を付けます。

* **UV展開** : モデルのメッシュにシーム（切り込み）を入れて、平面図に展開します。テクスチャを割り当てる前に行う必要があります。
* **テクスチャ** : モデルの見た目を設定するためのものです。今回はpng画像のテクスチャを作成して、作成したモデルのマテリアルに割り当てることで、見た目の調整を行います。

<br/>
UV展開とテクスチャ作成の流れを把握するうえで、次の動画がおすすめです。

> [【第３回】ワニでもできる！モデリングforVRChat - テクスチャ](https://www.youtube.com/watch?v=r6vcjqzCdnI)
UV展開やテクスチャについて、初心者向けに分かりやすく解説されています。

この動画だけ見てUV展開とテクスチャ作成を行うことも可能だと思いますが、複雑なモデルになるとUV展開を行うのも難しくなるので、
人型アバターのメッシュのUV展開の流れを解説している動画シリーズを紹介します。

> [【UV展開編】初級から中級者向けキャラクターモデリングチュートリアル](https://www.youtube.com/playlist?list=PL7AyBndD_6pVmUU3Up7WAZ0ndRUG8Z1i3)
人型アバターのUV展開の方法が丁寧に解説されています。

また、UV展開の基礎やコツを学ぶうえで、次の動画もおすすめです。

> [【完全版】blender初心者はコレさえ見ればUV展開できます【お題：フグ】](https://www.youtube.com/watch?v=mFJNdIKApPc)

UV展開は経験や慣れの部分が大きいようなので、最初は上手く出来なくても、今後自分に合ったやり方を見つけていけば良いかなと思います。

<br/>

![ss5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457210/d07f2742-f265-c566-f143-74429655e207.png)
↑ テクスチャを割り当てたモデルです

## 5. シェイプキー作成

シェイプキーを使って、様々な表情を作成します。ここで作成したシェイプキーを使って、キャラクターの表情変化やまばたき、発声時の口の動きを作ることが出来ます。

* **シェイプキー** : 頂点などの位置情報を記憶させておく機能

<br/>
シェイプキーを一通り作るうえで、おすすめの動画シリーズを紹介します。

> [【シェイプキー編】初級から中級者向けキャラクターモデリングチュートリアル](https://www.youtube.com/playlist?list=PL7AyBndD_6pUrpesitigSX-FbI31CSIWs)

### 注意点

* **目・口・眉などでシェイプキーを分ける**

    シェイプキーを細分化しておくと、後から組み合わせて色々な表情を作ることが出来ます。
    動画では、笑い顔や怒り顔などをBlender上で作成していますが、後からUnity上でシェイプキーを組み合わせて表情を作ることも出来ます。

<br/>

![ss6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457210/8fc5cbef-d554-3462-dd1c-725934663627.png)
↑ シェイプキー作成後のモデルです

## 6. エクスポート
以上で、Blenderでの作業はすべて終了です。
最後に、モディファイアーを全て適用した後に、作成したモデルをFBX形式のファイルとしてエクスポートします。
エクスポートの手順は、次の動画の序盤で紹介されています。

> [【第５回】ワニでもできる！モデリングforVRChat - Unityセットアップ](https://www.youtube.com/watch?v=Vy8mNBN3DBU)

使用している全てのテクスチャ画像とエクスポートしたFBXファイルを、一つのフォルダにまとめておきます。

![ss7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457210/85cb10d2-e28e-31e2-db8d-09ed465be473.png)


## 終わりに

今回作業するにあたって参考にさせて頂いた動画の作成者の方を紹介します。

> * [禅zen](https://www.youtube.com/@zen02)
> * [ふさこ / 3D自習室](https://www.youtube.com/@fusako3d)

上記のお二人の動画は解説が非常に丁寧で分かりやすいので、アバター制作に関して色々学べると思います。

今回で、Blenderの作業を終え、以降はUnityでの作業になります。
Unityでの作業は次のリンク先で紹介しています。


[Blenderで自作アバターを作ってVRChatに連れて行った (3. Unity)](https://qiita.com/ksr03/items/5397226a95d9dc215364)
<br/>

↓前の記事です
[Blenderで自作アバターを作ってVRChatに連れて行った (1. 概要)](https://qiita.com/ksr03/items/fe4302017fabfe02ad17)