とぐちブログ

VRの研究,作品制作をしています.

UnityのHDRP(High Definition Render Pipeline)を使ったいい感じのキャラクターの表現

f:id:toguchi_dev:20181213224720p:plain

この記事は,VTuber Tech Advent Calendarの16日目の記事です.

qiita.com

昨日の記事 :

qiita.com

自己紹介

とぐちです.

twitter.com

学生で,Unityインターハイ2017本戦出場,最近ではVTuberハッカソン石川・福井会場で最優秀賞を頂きました.

概要

綺麗なVTuberがつくりたーーーい!!!

最近UnityのHDRPを試していて,ある程度キャラの見た目をいい感じにできるようになったので知見を共有します.

実行環境

  • Windows10 64bit
  • Unity 2018.3.0b7

プロジェクトの作成

f:id:toguchi_dev:20181213215825p:plain

プロジェクト作成時,Templeteから「High-Definition RP(Preview)」を選択します.

f:id:toguchi_dev:20181213220051p:plain

プロジェクトを作成すると,デモのシーンが表示されています.

ここから,HDRPを使えるように設定していきます.

f:id:toguchi_dev:20181213220227p:plain

High Definition Render Pipeline Asset を作成します.HDRPを使うときの設定がこれに含まれています.

f:id:toguchi_dev:20181213220330p:plain

このAssetをGraphics SettingsのScriptable Render Pipeline Settingsにセットします.これで,このHDRP Assetがこのプロジェクトに適用されます.

シーンの設定

シーンの設定は他にも書いてくださっている方がいるのでざっくりと説明します.

nopitech.com

f:id:toguchi_dev:20181213220805p:plain

シーンを作成するとなにもない灰色のシーンになっているので,HierarchyからScene Settings, Density Volumeを作成.

f:id:toguchi_dev:20181213220908p:plain

f:id:toguchi_dev:20181213220952p:plain

Scene Settings の Visual EnvironmentのFog TypeをVolumetricに変更.

f:id:toguchi_dev:20181213221047p:plain

これで,Volumetric Fogが適用された状態のシーンが出来上がりました.(モデルはデモシーンから拝借)

Spot Lightの軌跡が表示されています.

CameraのPost Processing Stackの設定も通常通り行います.

これで下準備は終了です.

キャラクターのMaterial設定

ここから本題に入ります.

サンプルのモデルは,「Tda初音ミク・アペンド Ver1.10」を利用させていただきます.

通常の手順でインポートし,Prefabをシーンに配置します.

f:id:toguchi_dev:20181213221549p:plain

お馴染みのマゼンタでミクさんが召喚されます.

これはHDRPを設定しているプロジェクトでは通常のShaderが利用できないことが原因です.

そこで,HDRPのために用意されているShaderへの差し替えを行います.

f:id:toguchi_dev:20181213221800p:plain

ミクさんのすべてのMaterialをHDRenderPipeline/Litに変更します.

f:id:toguchi_dev:20181213221859p:plain

この状態だとテクスチャがアタッチされていないので,InspectorからBase Colorにテクスチャをアタッチしていきます.

f:id:toguchi_dev:20181213221955p:plain

適宜,Alpha Cutoffの設定も行っていきます.(目のハイライトなど,Alphaで切り抜くものに適用する)

質感を見ながらMetallic, Smoothnessの設定なども行っていきます.

f:id:toguchi_dev:20181213222135p:plain

テクスチャの設定が終わりましたが,この状態だと印影が強く,見栄えがよくありません...

SSS(Subsurface Scattering)の適用

ここがキャラクターをいい感じにする肝です.

Subsurface Scatteringという技術を利用します.これは,半透明な物体の内部の光の散乱をシミュレーションするものです.

サブサーフェイス・スキャタリング - Wikipedia

f:id:toguchi_dev:20181213222706p:plain

SSSを利用するために,Diffusion profile settingsというものを作成します.

f:id:toguchi_dev:20181213222743p:plain

今回はサンプルで用意されているものをベースに使います.

f:id:toguchi_dev:20181213222857p:plain

このSSSSettingsを先程作成したHDRP AssetのDiffusion Profile Settingsにアタッチします.

これでSSS Settingsに含まれているProfileが利用できるようになります.

f:id:toguchi_dev:20181213223143p:plain

SSSを適用したいMaterialのMaterial TypeをSubsurface Scatteringに変更します.

また,Diffusion Profileに利用したいProfileを設定します.

これだけだと物足りないので,SSSSettingsのProfileをカスタマイズしていきます.

f:id:toguchi_dev:20181213223440p:plain

こんな具合に,SSSSettingsに含まれているProfileを調節します.

具体的には,Scattering Distance, Transmission tintのColorを調節,Intensityを上げています.

その他のProfileもルックを確認しながら調節し,適用したいMaterialにセットしていきます.

f:id:toguchi_dev:20181213223656p:plain

ちょっと調整不足ですが,最終的にはこういったルックに仕上がりました.

SSS適用前と比べるとかなり見れるようになっていると思います.

このモデルは,肌・髪・その他で3つのProfileを分けて設定しています.

f:id:toguchi_dev:20181213223954p:plain

ひとまず完成です!!!

最後に

HDRPを使うと簡単に(Unityっぽくない)いい感じの絵を作れるので,背景含めHDRPでVTuber作ると綺麗なVTuber作れるんじゃないかなーと思います.

ただし,現在HDRPはVRに対応していない(今後対応予定)ようなので,Vive+Final IKとかでやる場合はちょっと工夫が必要かもしれません(いろいろやりようはある).

明日は,@matsu_vrさんのVtuberの方の遠隔登壇かトークショーをやる時の話です.

最後に,公式のHDRPのクイックスタートがとても参考になったので貼っておきます.

blogs.unity3d.com