Unityでのトゥーンセットアップ



今回はUnity用のオリキャラ「カレン」をUnityのトゥーンシェーダーを使ってセットアップしてみたいと思います。




今回使用するこのキャラのFBXはShade 3Dから直接エクスポートしたものです。




まず、メニューバーの[Assets >> Import Package >> Effects]にある「ToonShading」をインポートしておきます。これでシェーダーに「Toon」が追加されます。




トゥーン調にしたいマテリアルに「ToonBasicOutline」を割り当てます。目の影は半透明で表現していますが「ToonBasicOutline」では透明度が反映されないので「Standard」のままです。このトゥーンシェーダーだと法線マップも反映されないのでテクスチャーは描き直しました。




Unityでは共通なプロパティーであれば複数選択しておくことで一括で変更できるので便利ですね。




う~ん、何か残念な感じです。このままではちょっと使えませんね。少しスクリプトを弄る必要があるようです。近づけば輪郭線の太さも良さ気に思える時もありますが、離れると線が太くなっていくように見えてしまいます。キャラクターに近づけば太くなり、遠ざかれば細くなるようにしたいです。

そこで、まず「ToonBasicOutline.shader」をエディタで開いてみると、38行目にある
o.pos.xy += offset * o.pos.z * _Outline;
のo.pos.zがカメラからの距離によらず輪郭線の太さを一定にしているところなので、それを消して
o.pos.xy += offset * _Outline;
と書き換えます。

これで、カメラからの距離(Z値)によって輪郭線の太さが変わるようになります。




輪郭線の色と太さはインスペクター上でマテリアルごとに変更ができます。しかし、輪郭線の太さを一番細くしてもまだ太く見えます。これは、スクリプトで最小値が0.002より小さく出来ないように制限されているからのようです。

5行目にある、
_Outline ("Outline width", Range (.002, 0.03)) = .005
という部分がその制限範囲のようです。ですので、Range (.002, 0.03)はRange (0.0, 0.03)と書き直して最小値を0にしてみます。




これで輪郭線の太さをちょうどいい具合の0.0015まで値を小さく出来ました。しかし、輪郭線がギザギザしていて綺麗に見えないのが気になります。

これはアンチエイリアスをもっと強めにかければ解決しそうです。メニューバーから[Edit >> Project Settings >> Quality]と辿って行くと「Anti Aliasing」の設定項目があります。



ここを「4x Multi Sampling」以上にすると綺麗な感じになります。







これは、「Anti Aliasing」を「8x Multi Sampling」にした図です。これで、自然なトゥーン調になりました。あと、白目と口内の輪郭線は無い方が良いので太さを0にしてあります。

MMD用モデルを編集するときに使うPMXEでは輪郭線の設定等はサーフェスグループごとに細かく設定できるのですが、Unityの場合はマスターサーフェスごととなるようです。

白目と口内は当初は顔のパーツのマスターサーフェス(同一テクスチャー)に入れていたので、そのままでは輪郭線を消せませんでした。なので白目と口内は独立したマテリアルにして個々に輪郭線の設定が出来るようにしました。(ちなみに、目の影部もそういう理由で独立してあります)

Unityの標準シェーダーのカリング設定では片面ポリゴンの場合裏面が表示されません、両面表示にしたいときはスクリプトを書き直す必要があります。このキャラの腰巻きなどは片面ポリゴンなのでその作業をする必要があるのかと思ったら、トゥーンシェーダーでは両面表示が標準のようですね。

このキャラクターのボーンとスキンの設定はすでに終えていて、記念にUnity上でアニメーションでもと思っていたのですが、さらに長くなりそうなので、ここで区切りとして次回に持ち越したいと思います。


スポンサーサイト
テーマ: CG ジャンル: 日記
「カレン」のテクスチャー完成



オリキャラ「カレン」をポリゴン化して細部を作りこみ色々調整してからテクスチャーを付けてみました。ゲームエンジン用なのでサブディビジョンサーフェス無しのローポリ仕様です。ポリゴン頂点数は剣を含めて今のところ14,395です。




このキャラクターはUnityでのトゥーンシェーダーを前提で作りましたが、今回のレンダリングは敢えてShade 3Dのパストレーシングです。




自由曲面でモデリングすると最小限のポリゴンで綺麗な形状が作りやすいです。これは、ローポリモデル作りにかなり有利かもしれませんね。




以前はUVの展開にはだいぶ苦労しましたが、今では自分なりに色を塗るのに適したように展開できるようになりました。UVの展開次第でその後の色塗りの作業がスムーズになるかどうかが掛かってきます。






これは髪のUV展開したマップですが塗りやすいようになるべく高さなど揃えています。あと、左右対称なところはピッタリ重ねています。こうすることで色塗りの作業が半分で済むことになります。特に顔とかこの方法だと簡単に綺麗に左右対称に描けますね。

今まで参考のため色んなMMDモデルを拝見させてもらっていたのですが、中にはテクスチャーが半分しか描かれていないのにちゃんと左右描写されているモデルも結構ありました。始めは不思議だったんですが、自分もやってみたらこれは便利と大変関心しましたね。




鎧(?)の部分は法線マップで凹凸を付けてみました。この鎧に関しては左右対称にすると紐の部分がおかしくなるのでアジの開きです。




上が拡散反射用、下が凹凸付けのための法線マップです。この法線マップはGIMPのプラグイン「GIMP normalmap plugin」で作ってあります。

Shadeにもテクスチャーから法線マップを生成する機能はあるのですが、どちらも出っ張らせたいのに片方が凹んでしまうということがあります(Shadeの不具合ではありません)。今回は鎧の縁は出っ張るのに紐の部分が減っこんでしまって不自然になってしまいました。

GIMPではレイヤー毎や選択範囲で細かく指定できます。上のマップでは紐部だけ裏にして法線マップ化しています。剣の鞘もテクスチャーで描いて法線マップで立体的にしています。

ベルトのバックルは平面上にテクスチャーでトリックアート的に陰影を付けて立体的に見せています。



ブーツの凹凸はメッシュです。テクスチャーでアンビエントオクルージョン風に陰影を付けてあります。

今回はテクスチャーを拘ってみたかったので3Dモデリング以上にテクスチャーを描く方が時間が掛かったかもしれません(汗)。やはり、3Dフィギュア作りとはいえ絵を描くことは避けられませんねぇ。

今回のテクスチャーは、鎧部はGIMP、それ以外の殆どはCLIP STUDIO PAINTで描きました。どちらか一つだけで済めばいいとは思うのですがGIMPもSTUDIO PAINTもそれぞれ違ったメリットと使いやすさがあり、やっぱりお絵かきソフトの一本化は出来ないですね。(ArtRageも含めて)




せっかくなので、360度回転する「うごイラ」にしてみました。


テーマ: CG ジャンル: 日記
カテゴリ
ini-T MUSIC SKY
プロフィール