LightWaveで二次元キャラ系人物モデリング奮闘記 ―服装編1―

最終更新:2016/09/27

前にも少し書いたけど、服は体のラインから作っていく。現在の体は次の画像のようになっている。多少いじってはいるけど、ほとんど変わっていない。

Clothes000

インナーを作る

内側の服から順に作っていく。インナーも本来は長袖という設定だけど、上着を着せる予定なので袖が二重になっていると肘を曲げた時に内側の服が外側の服を突き破ってしまうことがあるため、袖は作らない。また、後でスケルゴンを組み込んだりウェイト・マップを設定する時にも邪魔になるため必要最小限の範囲に留める。次の画像のようにウェストから肩口までのポリゴンを選択して別のレイヤーにコピーしておく。

Clothes001

コピーした服のベースは次の画像のようになっている。デフォルトの設定で「Inner」というサーフェースを仮に割り当ててある。

Clothes002

「ユーティリティ」メニューグループにある追加プラグインからThickenを選択する。服の表面は体の表面よりは外側にあるので、「Direction」は「Outside」を選択する。「Change Sides Surface」と「Change Outside Surface」にチェックすることでThickenで追加されるポリゴンのうち側面に相当する部分と外側に相当する部分のサーフェースを別に割り当てることができる。ベースになるポリゴンのサーフェース名が「Inner」なので、それぞれ「Inner_sides」と「Inner_outside」というサーフェースが追加される。「Smooth Scale」はどのくらい押し出すかの指定で、布の厚さに相当するんだけど、あまりに近すぎると後が大変なので、作業しやすいくらいの値にしておく。

Clothes003

3Dプリンターでの出力を考えているなどフィギュアの原型を作っている場合はどんなに薄くても厚さが必要になるので1枚ポリゴンでは不都合が生じるけど、3DCGの範囲に留める場合には最終的に側面と内側のポリゴンは不要になることが多いので、後で選択しやすくするためにもサーフェースはわけておいたほうが無難だと思う。

ただ、Thickenで追加されたサーフェースは不安定で、Thicken実行後に作業を続けていたらいつの間にかベースのサーフェースに統合されてしまっていることがある。このインナーを作っている時もそういった症状が起きた。念のため、サーフェースが追加されたのを確認したら一度保存しておくのをおすすめする。

「OK」をクリックすると、次の画像のようにノースリーブの服のようなものができあがる。

Clothes004

襟をタートルネックにしたいので、首のポリゴンを選択してバンドソープロで次の画像のように横に分割する。

Clothes005

内側のポリゴンも同様にバンドソープロで分割する。

Clothes006

分割した内側のポリゴンの上半分を選択し、更にバンドソープロで分割する。本物の服と同じように、襟を折り返してタートルネックにしたいので、折り返し部分のポリゴンが必要になるためだ。

Clothes007

折り返した後の部分は、元は内側だったポリゴンが外側に、外側だったポリゴンが内側になるので、ちょっとややこしいけど、よく考えながら変形させていけばポリゴンを裏返したりすることなく襟を折り返すことができる。サブパッチがかかっているとポリゴンの裏表がはっきりしなくて余計にわかりにくいこともあるので、サブパッチを解除して形を整えてからサブパッチをかけてもいい。

Clothes008

どうしてもわからなくなってしまった場合は、襟を別に円筒などからモデリングして接続するという方法もあるけど、かえって手間がかかるかもしれない。サブパッチ・モデリングの練習のためにも、できるだけ連続したポリゴンを加工するほうをおすすめしたい。ちょっとしたパズルのような楽しみもある。

上の状態だと首にピッタリすぎるので、次の画像のように少し前に変形させてたるませる。インナーはこれで完成。上でも書いたようにサーフェースがうまく振り分けられてくれなかったので、内側のポリゴンで不要なものは後で削除することにする。

Clothes009

ジャケットを作る

裾から頭を通して襟から出して着るタイプのシャツやセーターといった服や、羽織って着る服であっても生地が薄くて合わせが浅いワイシャツのような服であれば上で書いたインナーの方法で作ればいいけど、ジャケットやコートといったような生地が厚くて合わせが深い服で、前を開けたり閉めたりできて着こなしに変化がある服の場合は少し工夫がいる。

体のラインからおおまかな形を切り取るのはインナーと同じ。ジャケットは長袖にするので、次の画像のように上腕の根元あたりくらいまで切り取る。

Clothes010

インナーと同様にThickenツールで生地の分だけ厚くする。

Clothes011

合わせになる部分の連続したエッジをいくつか選択し、ループ選択(Select Loop)で襟側と裾側、内側のエッジも選択する。

Clothes012

選択をポイントに(Sel Points)でエッジで選択した部分をポイント選択に切り替える。

Clothes013

合わせ部分を切り離すために「詳細」メニューグループにある統合解除(Unweld)ツール(Ctrl+U)でポイントの統合を解除する。次の画像のようにサブパッチが崩れるので、いったんサブパッチを解除する。

Clothes014

片方の合わせ部分のポリゴンを選択する。内側のポリゴンはもちろん、襟側と裾側のポリゴンも忘れずに選択しておく。三面図で上から見た図で選択するとやりやすい。

Clothes015

反対側の合わせと再統合されないようにするために、合わせ部分が離れるように移動(Move)ツール(Tキー)でX軸方向に少し動かす。要は結合ツールの自動モードで統合されない範囲まで離れていればいいので、ほんの少しでいい。

Clothes016

この状態で、一度ポリゴンの選択をすべて解除し、結合(Merge Points)ツール(Mキー)で解除していた統合を再統合させる。サブパッチを再適用すると、先ほどのサブパッチの崩れはひとまず解消している。ただ、合わせ部分にポリゴンがないため、空洞になっていて次の画像のように向こう側が見えている。

Clothes017

合わせ部分の生地の端にあたる外側と内側のエッジを次の画像のようにひとつずつ選択し、ブリッジ(Bridge)ツールで空洞になっている部分を埋めていく。エッジを選択してブリッジした場合は、選択したエッジを含むポリゴンをひとつ作成してくれる。ポイントを4つ選択してポリゴン作成でもいいけど、後で裏返さなければいけなくなったりしてやや手間がかかるので、ブリッジのほうが手軽で間違いも少なく能率も上がる。

Clothes018

片方の合わせ部分が完成したら、反対側の合わせは後で削除してしまうのでブリッジ作業はしないで、肩口のポリゴンを選択して拡張プラスと移動で次の画像のように袖を伸ばす。袖口はある程度ぱりっとしていて欲しいので、一段区切って更に拡張プラスで少しだけ伸ばしておく。肘関節で曲がる部分の細分化は袖の絞り具合を調整してからでも遅くない。

Clothes019

袖まで完成したら、次の画像のように袖を伸ばしていないほうのポリゴンをすべて選択し、削除する。

Clothes020

手間を半分に減らす目的もあるけど、Thickenツールは精度が悪く、ベースにしたポリゴンが完全に左右対称になっていたとしても左右対称かつ均等に厚みを増してくれるわけではないため、左右でバランスが崩れた精度を増す目的も同じくらい重要。インナーでは省略したけど、本当はやっておいたほうがいい。

機械ではないし、服なのだから精度なんてどうでもいいと思うかもしれないけど、左右対称になっていないと細部を作り込むときに対称モードでの選択がうまく働いてくれなくて無駄な神経をすり減らすことになる。経験してみればわかるけど、対称モードなのに反対側が選択されてくれないストレスは結構なものになる。

Thickenツールの影響で正中線がズレている可能性があるので、半分に切った部分の背中側のポイントを次の画像のように選択して整列させる。

Clothes021

「詳細」メニューグループにある整列(Set Value)ツール(Vキー)でX座標を0に統一する。翻訳の問題なんだけど、「変形」メニューグループにも「整列」というツールがあって紛らわしい。Alignツールと動作は似ているし代用もきくけど、表示されるダイアログが異なるので注意。

Clothes022

鏡面 X(mirrorX)ツールで袖まで作ったほうのジャケットを反対側に複製する。

Clothes023

鏡面 XはX座標が完全に一致するポイント同士(座標は0には限定されない)を見つけると自動的に統合してくれる。上でX軸を0に揃えたのはポイントの統合の手間を減らす目的もある。眉毛を作って反対側に複製した時には余計なお世話と思ったけど、こういった場合ではむしろ便利。

パースで回してみてサブパッチが崩れているところがなければ表地、裏地ともに綺麗に接合されているということなので、これでジャケットの基礎は完成。あとは襟などを作り込んでいく。学ランの詰め襟のように襟をかっちりと立たせたい場合は、エッジの丸め方と面取りサブパッチの簡単な応用でも書いたサブパッチの影響範囲の制限をうまく利用する。

途中経過

スカートは同じく体のラインをベースにして筒を伸ばしていくだけで簡単に作ってしまったので省略。プリーツスカートやフレアスカートなんかのモデリングはまた別の機会にやろうと思う。ジャケットはまだ完成ではないけど、大体こんな感じ。靴はまだ作ってない。

Clothes024

関連記事

Janetterのサムネイルの画像サイズを変更する

最終更新:2017/01/27

Janetter000
サムネイル画像サイズ変更前。CSSで最大120×80pxに設定されている。Twitterからはthumbサイズで呼び出されるため、実質80×80px。

Janetter(ジャネッター)は、国産Twitterクライアントのひとつ。公式のアプリケーションやウェブ・クライアントではやってくれない未読管理もできてとても便利なんだけど、右の画像のようにツイートに添付されたサムネイル画像が非常に小さくて見づらいのが難点だった。

調べてみると、Janetterはウェブ・ブラウザのようにHTMLとCSSで画面表示の内容やデザインを決定しているようなので、やりようによってはカスタマイズできそうだった。

サムネイル画像サイズの変更

ユーザースタイルシートを記述できる空のファイルが用意されているので、そこに任意のCSSを記述する。具体的には次の場所。ユーザーフォルダの下の階層にあるので注意。

C:\Users\[user_name]\AppData\Roaming\Jane\Janetter2\UserStyleSheets\Custom.css

Custom.cssには次のように記述する。

.tweet-thumb img,
.tweet-thumb canvas{
	float: left;
	margin: 5px 5px 3px 0;
	max-height: 150px;
	max-width: 150px;
	border-radius: 5px;
}

なお、Twitterサーバーに置かれている画像ファイルには、Janetterで動作しているJavaScriptによって一律に「:thumb」のサフィックスが追加されるようになっているので、縦横ともに最大でも150pxまでしか指定できない。

上のスタイルの元になっているCSSは、次のtweet.cssファイルに記述されている。

C:\Program Files (x86)\Janetter2\Theme\Common\template\tweet.css

Janetterデバッグモード

他の要素(クラス、セレクタ)に対するスタイルがどこのCSSファイルに記述されているか調べるには、Janetterのデバッグモードを使用する。

まず、Janetterをいったん終了する。Janetterへのショートカットを別に作成し、次のように「リンク先」に--debugを追加する。

"C:\Program Files (x86)\Janetter2\bin\Janetter.exe" --debug

編集したショートカットをダブルクリックするとデバッグモードで起動される。デバッグモードになっているか確認するには、左上の「Janetter」のロゴを左クリックして「Developer Tools」や「Test」といったメニューが追加されているかどうかで判断する。

「Developer Tools」を選択すると、Chromiumの要素解析画面が表示される。上から順に要素を選択していくと、対応するJanetterの画面の一部がブロック(コンテント、パディング、ボーダー、マージン)で色分けされて表示されるので、それを参考にCSSの構造を解析する。

「:thumb」サフィックスの解除

Twitter規定のサムネイルのサイズ(150px)が実質上の最大サイズになってしまう制限を解除するには、次の場所にあるthumbnail.jsファイルをカスタムテーマのフォルダに複製してからJavaScriptコードを書き換える。カスタムテーマの作り方についてはこちらの記事を参照のこと。

(以前の版ではコモン・コードを直接書き換えていたけど、全部のテーマに影響を与えてしまい、褒められた方法ではないので、カスタムテーマをちゃんと用意するほうが良い。また、元のコードがわからなくならないように複製してコメントアウトしておいてから改変するほうが無難)

C:\Program Files (x86)\Janetter2\Theme\Common\js\janet\thumbnail.js

thumbnail.jsの125行目あたり。

		//-------------------------------------------------------
		// Twitter
		//-------------------------------------------------------
		function twimg(permalink){
			var a = _content.find('div.tweet-body p a[expanded="' + permalink + '"]'),
				media_url = a.attr('media'),
				extended_media_url = a.data('extended'),
				type = a.attr('type');
			if(media_url && (type=='photo' || type=='video' || type=='animated_gif')){
				if(extended_media_url){
					$.each(extended_media_url, function(){
						_append(this + ':thumb', type=='photo'? this + ':orig': '', permalink);
					});
				}else{
					_append(media_url + ':thumb',  type=='photo'? media_url + ':orig': '', permalink);
				}
				return true;
			}
			return false;
		}

136行目と139行目を次のように書き換える。

		//-------------------------------------------------------
		// Twitter
		//-------------------------------------------------------
		function twimg(permalink){
			var a = _content.find('div.tweet-body p a[expanded="' + permalink + '"]'),
				media_url = a.attr('media'),
				extended_media_url = a.data('extended'),
				type = a.attr('type');
			if(media_url && (type=='photo' || type=='video' || type=='animated_gif')){
				if(extended_media_url){
					$.each(extended_media_url, function(){
						_append(this + '', type=='photo'? this + ':orig': '', permalink);
					});
				}else{
					_append(media_url + '',  type=='photo'? media_url + ':orig': '', permalink);
				}
				return true;
			}
			return false;
		}

大きな画像やTwitterサーバー以外に置かれているメディアのことは考えていないので、タイムラインの幅にフィットさせるには上のCustom.cssの最大サイズを適宜書き換える必要がある。タイムラインの最小幅が300pxくらいだとすると、サムネイルの幅は250pxくらいになる(Developer Toolsを使えば厳密に測定できる)。

Janetter001
サムネイル画像サイズ変更後。「:thumb」サフィックスを解除してあるため画像全体が表示される。CSSで最大サイズを255×1024pxに設定してあるためサムネイルは縦に並ぶ。

「:thumb」サフィックスを解除し、Custom.cssを調整すると右の画像のようになる。1件のツイートが縦長になってスクロールするのが大変になる傾向にあるけど、未読のツイートをあまり時間をかけずに一気に閲覧していきたい時にはクリックの回数を減らせて便利。

流し読みをすると当然細かい見落としは多くなるけど、Twitter公式のウェブ・クライアントでは「1000件の新着ツイート」と表示されていても取得できるツイート数に上限があり、1000件全部を読むことはできない。寝る前に最後に見た時点のタイムラインに遡行するのも難しい。Janetterではそういう心配がない。

その代わりに、大量の未読ツイートに埋もれることにもなるけど、とにかく寝ている間や他の作業に集中している間の時系列がちゃんとつながっているだけでも大事な告知などの決定的な見落としがなくなって気分的にはだいぶ違う。

ただ、Twitterの本家は「Twitterカード」や「アンケート(投票)」など新しい機能を次々に実装しつつあるため、Janetter(この記事を書いている時点でWindows版はVer. 4.3.1.0)が徐々に旧式化しているのは事実。奇特な方が新機能に対応するプラグインを作ってくれるか、Janetterのバージョンアップを気長に待つしかない。

関連記事

参考記事

LightWaveで二次元キャラ系人物モデリング奮闘記 ―髪の毛編―

最終更新:2016/09/06

本記事は初期段階での作成方法を記載したものです。新しい作り方については続・髪の毛 HairBlade編をご覧ください。


頭部最大の難所、髪の毛。実は他の部分のモデリングの記事を書きながら、ずっと髪の毛を作っていた。作っては壊し、作っては壊しの繰り返しで、これほど難航するとは正直思っていなかった。髪の毛は本当に難しい。フィギュアの原型師の方達はいつもこんなことをやっているのかと思うとまったく恐れ入る。

LightWaveで髪の毛と言えば、繊維状オブジェクトをシミュレートするFiberFXが定番で、「LightWaveを使っているのに便利なFiberFXを使わないなんてありえない」と言われそうなくらいメジャーな機能。

FiberFXも一応試してはみたんだけど、思ったような髪型にするにはガイドと呼ばれる無数のポイントを編集する必要があり、ポリゴンで髪の毛を作るのと大差がないくらいの時間と労力がかかる。顔を衝突オブジェクトに指定して重力や風などの物理演算を使用できるのは利点なんだけど、二次元キャラクターの髪型はなかば重力を無視したものも多いので魅力にはなりにくい。また、イメージ・プロセシング・プラグインとしてのFiberFX本体のパラメータ数も非常に多く、二次元キャラクター風の質感を出すのにも研究が必要で、まったく別のノウハウが必要になる。

何はともあれ、ここではFiberFXを使わずにポリゴンで髪の毛を作っていく。ポリゴンで髪の毛というと、バナナ型の髪の毛の房を作り、それを頭の周囲に並べていくという手法がよく採られるけど、それとそんなに変わらない方法に落ち着いた。

髪の毛の基礎を作る

ボックスツール(Shift+X)で髪の毛の房を作っていく。基本は眉を作った時と同じ方法。横幅200mm、奥行きを100mmで生成してある。特に決まっているわけではないけど、奥行きを横幅の半分くらいにするのを目安にしている。

Hair000

次の画像のように上下(Y軸)に6分割、左右(X軸)と前後(Z軸)に2分割する。よほどの長髪でもない限り、6セグメントくらいあれば、大抵の髪型は表現できるように思う。

Hair001

上端と下端のポリゴンを4つずつ選択し、それぞれのポリゴンを結合(Shift+Z)する。

Hair002

ポリゴンの結合で余剰になった2ポイントをDeleteキーで削除する。

Hair003

Y軸に一列に並んでいるポイントを選択し、断面が菱形になるように移動させる。前面と背面の幅が40mm、左右の面の幅が20mmになるように形成してある。菱形の角にあたる部分の幅によって髪の房を前後左右に分かつサブパッチの鋭さが決まる。もっと鋭くしたい場合は幅を狭く、丸くしたい場合は広くする。

髪の房の断面を菱形にするのは、フィギュアの原型を作っている方のブログで髪の毛の断面を半円や円形にすると1本の太い髪のように見えてしまうという記事があり、それを根拠にしている。無用にエッジを増やしたくはないんだけど、何度も試した結果、これで必要最小限という結論になった。

Hair004

先細り(Taper2)ツールで毛先に向かって細くなっていくように加工する。これも眉を作った時と同じ方法。前の記事では先細りの倍率に「0%」は指定できないって書いたんだけど、指定できた。どこで勘違いしてしまったんだろうか。

Hair005

次の画像のように、左右だけでなく、前後も先細りさせておく。

Hair006

ここまでできたところでサブパッチを適用すると次の画像のようになる。毛先の先端にある8つのポイントは統合しないでおく。何度も書いてるけど、統合してしまうと先端が丸くなってしまう。

Hair007

複製する前に、髪の房の前面、背面、両側面、毛先の部位にわけて「選択」メニューグループにあるポイントセットで次の4つの選択セットを登録する。複製後、ポイントの数が大量に増えることになるので、少しでも管理しやすいようにグループ化しておくのが目的。

  • Hair_Front
  • Hair_Back
  • Hair_Side
  • Hair_Top

Hair008

髪の房を必要数複製(Cキー)する。必要数によってヘディングの回転角度や中心位置は変わるけど、目安としては、隣の髪の房と左右が少し重なるくらいにする。今回は複製元も含めて全部で24個の髪の房を作っているけど、二次元キャラクター風をターゲットとしているものとしてはたぶん多いほう。

Hair009

複製し終わった状態が次の画像。ここから前髪や後ろ髪に必要な分を切り取って使うことになるんだけど、ツインテールやお下げ髪など特殊な髪型の場合を除き、髪の毛全体をひとつのオブジェクトとしてモデリングしていったほうが結果としてはやりやすい。

レイアウトで焦点距離の短い広角カメラで捉えた時にパースが強くかかり、モデラーのパースで見た時よりも髪の毛の量が格段に少なく見えることがよくある。髪の毛全体のボリュームのバランスを少なからず調整することになるんだけど、前髪と後ろ髪にパーツが分かれているとこのボリューム調整が非常にやりにくい。フィギュアの原型制作でも、量産や塗装する際のパーツ分割のことを考えなければ、同様のことが言えるそうだ。

Hair010

後ろ髪を作る

前髪を先に作ってしまったので、ここでは後ろ髪だけを選んでモデリングしていくけど、基本的な方法は前髪でも同じ。

まず、髪の房の根元を接続していく。サブパッチが適用されている時に込み入った箇所のポイントを選択するのはちょっと手間がかかるので、パースで表面に見えているポリゴンをクリックして選択をポイントに(Sel Points)ツールでポイント選択に切り替えながら「詳細」メニューグループにある平均統合(Weld Average)でポイントを接続していく。隣りの髪の房と向かい合わせになっているポリゴンは不要なので削除する。

余談だけど、私は平均統合をよく使うので、「Alt+W」をショートカットキーに割り当てている。Altキーを使うショートカットは基本的に空いているので、よく使うツールなのに初期設定でショートカットがないものを割り当てておくと少し省力化できる。

Hair011

次の画像がすべての髪の房を接続し終わった状態。髪の房の数だけ同じ作業を繰り返さなければならないので、先に土台を作ってから拡張プラスなどで押し出しながら髪の毛を作っていったほうが早いのではないかと思うかもしれない。もちろん、そういう方法もあるけど、頭を覆うものという性質がある以上、必ずしも髪の房が作業しやすい角度になっているとは限らないこともあり、毛先を均等に先細りさせたりする作業が難しくなる。大変な作業を後にやるか先にやるかの違いだけだったりする。

Hair012

土台と髪の毛の房を別に作って根元をブリッジで接続するという方法も書いてて思いついた。失敗した髪の毛の房を切り取って別の房をつなぎ直したい時には使える手段かもしれない。

髪の分け目を作るために、髪の房の裏面のポリゴンを次の画像のように選択する。

Hair013

「構造」メニューグループにあるブリッジ(Bridge)で接続すると次の画像のようになる。上端のポリゴンはすでに3つに分割されているけど、本来は分割されないまま残っている。

Hair014

上端のポリゴンを髪の流れと同じ方向になるように分割(Ctrl+L)したけど、必要なかったかもしれない。

Hair015

まだ上が解放している後ろ髪の上端のポリゴンを削除し、裏側のポイントをブリッジで生成された部分の下に接続し、表側のポイントを上に接続する。ちょうどヘルメットの内側と外側を作っていくような感じ。

Hair016

角の部分などいくつか必要ないポリゴンができたので、それらを削除しながら前方も後ろ髪との曲線に沿うように形成していく。髪の分け目を作るのには明らかにエッジが足りないことに気付いたので、頭頂部の3ポイントのポリゴン群をぐるっと選択してカットツール(Shift+U)でエッジを増やす。前側のほうはバンドソープロも使える(3ポイントのポリゴンにはバンドソープロは使えない)。

Hair017

これで後ろ髪の基礎は完成。あとは、目的の髪型になるように変形させていく。平面的に移動させるよりは、回転ツール(Yキー)や拡大縮小ツール(Shift+H)などを使って断面が太くなったり細くなったりといった変化が少ないようにしていくとうまくいきやすい。

上で登録した選択セットの前面や毛先のポイント(Hair_Front や Hair_Top)で髪の流れを作り、側面のポイント(Hair_Sides)で流れに沿った髪型を、背面のポイント(Hair_Back)でボリュームを調整する。前面側のポイントだけで髪型を作ろうとすると極端に前に張り出した髪の房になりやすいので、前後方向に拡張したら左右方向もバランスをとるようにする。隣りとぶつかってしまって左右方向を拡張できないようなら、モデルに無理がきていることも考えられるので髪の房を分割することも検討する。

髪の毛はとにかくポイント数が多いので、最初は対称モード(Shift+Y)で大体の形を作ってから細部を作り込むようにしていくといい。レイアウトに移して思ったような髪型になっていなかったことに気付いた時に戻り作業が発生すると、細部まで作り込んでしまった後だと苦労が無駄になってしてしまうので、とにかくボリューム調整を最優先でやっていくほうが効率は良い。

あと、この後ろ髪のオブジェクトひとつでは髪の房がまばらすぎて後頭部がスカスカになってしまうので、毛先のほうを切り取り、二重か必要なら三重以上にしておく必要が生じる。すると管理すべきポイントは更に増えるので、ポイントの選択に苦労しないように逐一整理していく。

前髪

前髪は後ろ髪とはまったく異なるアプローチで作っていて、あまり記録も残っていないので失敗作供養も兼ねてデータが残っていた主な失敗の紹介に留める。

次の画像は、髪の房の断面を半円形にしようとして失敗したもの。正中線で髪の毛の流れを制御しようとしたところまでは良かったものの、太い房がどうにも大根か何かの棒状のもののように見えてしまい、髪の毛にはとても見えなかった。

Hair018

次の画像は、上を改良したもの。分割数を多くして髪の房を細くすれば改善するのではないかと考えたけど、その目論見が見事に外れた失敗例。半円形の断面にこだわっていたため、やはり大根のように見える印象は変わらなかった。拡張プラスで無理矢理枝分かれさせて髪のボリューム不足を補おうとしたけど、エッジの管理が面倒になるだけで大した効果もなかった。房が分かれている分岐点も下のほうにあったため、角度の広い分け目を作ると谷間が鈍ってしまい、シャープさもなかった。

Hair019

次の画像が現在のものに最も近い状態。一度髪の毛の房ごとにパーツを分割して側面の穴を塞いだ上で、フォルムを優先して大幅に改変した。フィギュアの原型では髪の毛の断面を菱形にすることもあるという情報を仕入れたので、正中線に沿ってバンドソープロでエッジを追加し、大根に見えて仕方がなかった髪の房のシルエットを改善した。ボリューム不足は背面のポイントを中心に調整するようにしたところ、だいぶ改善した。

Hair020

前髪のモデルは以上のように新しい方法を思いつくたびにポリゴンの分割方法などが二転三転していったため、計画的にモデリングしたところがとても少なく、手順を説明しづらい。眉や後ろ髪のモデリング方法は断面を菱形にする手法を知った時に考えた。

途中経過

まだ直したいところもたくさんあるけど、ひとまず現時点の途中経過。

Hair021

髪の毛のマテリアルは仮に設定してあるものだけど、詳細はまた別の機会に書くことにする。テクスチャーを用意している時間がなかったので、画像マップは一切使っていない。

関連記事

参考記事

LightWaveで二次元キャラ系人物モデリング奮闘記 ―顔編2―

最終更新:2016/09/06

顔のモデリングの続き。目と耳と眉を作る。あと、まつ毛をモデリングで作る方法も少し考えてみた。髪の毛はまた次回。

目を作る

人物モデルに限らず、目には球体を入れるのが定石。理由はIK(インバース・キネマティクス)などを利用して視線をコントロールするのが容易になるからだけど、二次元キャラクター風の扁平な顔に眼球を入れると目が前に出っ張り、斜めや横からのアングルに極端に弱くなってしまう。

横から見て前に出ないように眼球を後ろに移動させると、今度は正面寄りのアングルで眼窩の奥が見えてしまったりする。眼窩をモデリングしていないと、後頭部の裏側が透けて見える。

そうかと言って、眼窩をぴったり塞ぐように曲率を下げると眼球が頭の中に入りきらないくらいの直径になってしまうジレンマに陥る。機械工学の問題で、与えられたモーメント(トルク)に耐えられるように設計すると、計算上は歯車の直径よりも回転軸のほうが太くなってしまうといった意地悪問題のようなものだ。

したがって、二次元キャラクター風の人物モデルに眼球を入れるためには、顔のほうを眼球に合わせて工夫しなければならなくなる。不可能ではないかもしれないけど、目を球体にするためだけにそこまでするのはあまりに労力がかかりすぎる。どうせなら、作業効率を考えると眼球を最初に作り、目の周囲から順に顔をモデリングしたほうがいい。

ここでは、あえてその定石を無視して眼窩の形から目を作る。二次元キャラクターを模ったフィギュアの目は扁平か、むしろへこんでいることが多いからだ。視線のコントロールのことは後で考える。目のテクスチャーにUVマップを使うなら視線のコントロールは至難の業だけど、通常の平面マッピングでローカル座標を与えておけば首を回しても瞳が置いて行かれることはないし、フレームの進行に従って瞳を移動させるくらいのことはできそうだ。

次の画像のように眼窩の周囲のポイントを選択し、ポリゴン作成(Make Poly)ツール(Pキー)でポリゴンを生成する。サブパッチ・モデリングでは3ポイント又は4ポイントのポリゴンを使うという定石はここでは考えず、ポリゴンの分割はしない。

Face010

切り取り(Ctrl+X)で顔のモデルからいったん切り離し、同じ位置に貼り付ける(Ctrl+V)。新しく作成したポリゴンだけを選択してTabキーを押してサブパッチを適用すると眼窩より少し小さいくらいの面ができる。

Face012

別のレイヤーにポリゴンを移し、押し出し(Extrude)ツール(Shift+E)でごく短く後ろに押し出す。元のポリゴンは眼窩の周囲を無理矢理つないで作ったものなので平面性が極めて低く、押し出した時に元のポリゴンと押し出したポリゴンの法線が逆転して裏返ってしまうことがあるけど、それ以外は正常なので、ふたつのポリゴンを選択して反転(Fキー)で向きを変えてしまえば問題ない。

Face013

押し出したポリゴンを選択して拡張プラス、移動で厚さを増す。必要に応じてストレッチ(Stretch)ツール(Hキー)で垂直、水平ともに10%増しくらいに拡大しておくと眼窩をぴったり塞ぐことができる。目の表面に見えているポリゴンは後ろに拡張したポリゴンに引っ張られ、中央方向にサブパッチが作用しているので前に膨らまず、むしろややへこむ。ちなみに、眼窩を塞ぐだけで良ければ、最初のポリゴンを作成したところでやめても特に問題ない。

耳を作る

耳の位置は、目の高さよりもやや下に作る。眼鏡をかけた時に、つる(テンプル)がちゃんと耳にかかるくらいの位置と考えると決めやすい。前後の位置は顎と頬をつなぐラインからの延長線上が大前提。人物デッサンで緻密に描いた場合でも、二次元の漫画・イラストなどでデフォルメして描いた場合でも同様のことが言え、3DCGモデルでも顎から耳への線がひと続きになっていないと不自然になる。髪で耳が隠れてしまうことがわかっていても、頬のラインを正しくモデリングできているかどうかを確認する意味でも耳を作っておくことは重要。

次の画像のように、4ポイントのポリゴンを4つ選択してそこを土台にして耳を作る。作り方によってはふたつやひとつのポリゴンからでも作れるけど、4ポイントのポリゴン4つなら周囲のポイントは8つになるので、他のモデルに移設して接続する場合にも容易になる。

Face009

拡張プラスでおおまかに耳の形を作る。二次元キャラクター風にする場合はあまりリアルにモデリングする必要はないけれど、耳輪は意外に複雑な形をしているので、拡大縮小しながら拡張プラスを5回繰り返した。4回でもできるかもしれないけど、耳をモデリング中に左右対称にならなくなった時に鏡面コピーができるように顔側の頂点を動かしたくなかったので、5回になった。

Face017

耳輪の内側にある対耳輪をモデリングする時にエッジが足りなくなったので、次の画像のようにエッジを選択し、エッジベベルツール(Ctrl+B)でエッジを増やす。

Face018

エッジベベルでエッジを追加した直後の状態が次の画像。どこまでの範囲をエッジベベルで開くかはどのくらいリアルなモデルにしたいかによる部分もあるけど、少しやりすぎなくらいモデリングしておいたほうが後々の応用はきく。ファンタジー用語で言うところの種族が「人間」なら、耳ほどキャラクターによる違いが少ない部分もないのでできれば使い回しをしたい。エルフや妖精のようなとがった耳の場合はそのキャラクターが何者であるかを雄弁に語る部分のひとつでもあるので、使い回しを考えずに最初から専用に作ったほうがいいと思う。

Face019

対耳輪がうまく盛り上がってくれなかったので、もう1回エッジベベルを使用し、横方向のエッジを追加した。本来は外耳道(耳の穴)がある耳の下の部分は顔となめらかにつながっていて欲しいので、ポイントが密になっていて影ができるほど段差ができているのは都合が悪い。そこで、ポリゴンをひとつ除去してポイントを統合(Ctrl+W)し、5ポイントになってしまったポリゴンを分割(Ctrl+L)してある。

Face020

顔の他の部分と比べても、耳は存外に緻密なモデリングが必要になることがわかると思う。耳の角度は好みの問題もあるけど、少し大袈裟なくらい開き気味りにする。顔と平行にしてしまうと、レイアウトのカメラで正面から捉えた時に耳がまったく見えないということになる。

眉毛を作る

ポーズや表情が固定されているフィギュアなんかでは額に眉を直接塗装(印刷)してしまうけど、3DCG人物モデルではモーフを使って表情をつけられることを見越し、顔とは別のパーツで作る。表情を変えるつもりがない場合はテクスチャーに直接描いてしまってもいいけど、レンダリングの結果が気に入らなかった時にテクスチャーを描き替える手間が逐一発生し、画像ファイルを介してソフトウェアを切り替えて行ったり来たりすることになり、作業効率が落ちるばかりか微調整に苦しむ原因にもなるので、最初は面倒でも眉毛をオブジェクトで作ってしまうのをおすすめしたい。

眉毛の作り方にも色々あって、裏側を見ることがないのを前提として1枚ポリゴンで作る方法もあるけど、ここでは例によってボックスから作ることにする。次の画像のように左右(X軸)に4分割、前後(Z軸)と上下(Y軸)に2分割のボックスを作る。Z軸とY軸の長さは同じにしておく。

Face022

X軸の分割数を多くしたほうが眉毛に様々な表情をつけやすくなるけど、増やすのは後でいくらでもできるので、今は必要最小限にしておく。いずれにしても、偶数にしておいたほうがモデリングはやりやすい。

次の画像のようにボックスの両端の4つのポリゴンを選択し、ポリゴンを統合(Shift+Z)する。8ポイントのポリゴンができることになるけど、ここではあえてそのようにしている。

Face023

統合したポリゴンの中央に次の画像のように浮いたポイントがひとつずつできるので、それらのポイントをDeleteキーで削除する。

Face024

わざわざ統合するくらいなら、分割していないボックスからカットツール(Shift+U)で両端のポリゴンのポイントを増やすだけにしておきたかったんだけど、カットはバンドソープロほど精度が良くなく、終端の処理が実行する度に変わったりすることがあるので、確実に分割できる方法を選んだ。

X軸方向に一列に並んでいるポイントを選択し、次の画像のように断面が菱形になるように移動させる。Z軸とY軸方向の大きさを100%とすると、断面の角になる部分は10%くらいの幅にする。ここではボックスを40mm角で作ったので、前後上下のポリゴンは4mm幅になっている。

Face025

次に、菱形の前後を最初の大体半分くらいの厚さになるまでつぶす。ストレッチツールを使うよりは、移動ツールを使って角の部分のポリゴンの大きさが変わらないようにする。

Face026

「変形」メニューグループにある先細り(Taper2tool)ツールを使って眉尻を細くする。適用範囲は「自動」ではなく「固定」を使用するため、右ドラッグで先細りの開始点と終了点を指定する。次の画像のように開始点は眉の中央あたり、終了点は眉尻あたりを狙う。

Face027

先細りのフォールオフを次の画像のように設定すると、眉の中央が一番太く、弧を描いて眉尻に向かって細くなっていくように変形できる。倍率は本当は0%にしたいんだけど、先細りツールでは0%を指定できないので、とりあえず「1%」にしてある(勘違いがあり、実際には0%を指定できる)。軸を切り替え、前後方向も先細りさせておく。

Face028

右ドラッグで終了点を眉頭に移し、次の画像のように同様に先細りさせる。これで眉毛の基礎ができた。

Face029

ここまでできたところでサブパッチを適用する。極太だけど、次の画像のような眉毛らしきものができている。両端のポリゴンを8ポイントにしたのは、眉頭と眉尻の先端の処理をサブパッチに任せるため。ポイントを多くしてまで断面を菱形にしたのは毛の束を意識した形状にしたいため。ボックスの角を1本のエッジにしてしまうと全体が丸まって棒状になってしまい、毛の束のように見えなくなってしまう恐れがある。

Face030

眉頭と眉尻のポイントをそれぞれ8つ選択し、アクションの中心モードを「選択範囲」に切り替えておく。ストレッチツール(Hキー)を選択し、左ドラッグで大体の中心位置を掴まえてからいったんアンドゥ(Ctrl+Z)し、次の画像のように水平・垂直ともに「0%」にしてポイントの位置を揃える。軸を切り替え、3軸とも完全にポイントの位置を揃える。

Face031

同じ座標のポイントがたくさんできることになるけど、ポイントの統合はしない。ポイントを統合してしまうと先端が丸まってしまい、眉全体も短くなってしまう。眉の先端を鋭くしたくない場合は、別のレイヤーで加工し、統合前の基礎はとっておく。一度丸めてしまった先端を再び鋭くするのは微細すぎて加工するのが難しく、最初から作り直したほうがむしろ早いから。

主に移動ツールを使って紡錘形のオブジェクトを眉毛らしい形に整えていく。上から見たとき前後も紡錘形になっているので、背面が平らになるように調節する。

Face032

大まかに形が整ったら、ストレッチツールなどで全体を細くしていく。上下の幅だけでなく、前後の幅とのバランスもとりながら調整していく。顔の形にフィットさせるのは後回しにし、この段階では目的の太さにすることを優先する。

Face033

眉が完成したら、「選択」メニューグループにあるポイントセット(Picksets)で眉毛のポイント全部をグループ化して「選択セット」として登録しておく。新しい選択セット名を入力し、「作成」ボタンをクリックすると、モデラーのウィンドウの右下にある頂点マップ選択ボタンが「S」に切り替わり、登録したセット名が表示される。

Face034

非常に細かい部分や立体的に入り組んだ部分になってしまい、ポインティング・デバイスで個別に選択するのが難しくなってしまった場合は、選択セットで一度にまとめて選択してから減らすようすると効率がいい。管理できる自信があれば、眉毛の前面、背面、上面、下面、眉頭、眉尻にわけて登録してもいい。

選択セットを活用して再度選択するには、「選択」メニューグループにあるマップで選択(Select by Map)を使うか、ポイント選択モードの時に「状態」(Wキー)を押し、「ポイント状態」ウィンドウの一番下の逆三角形がある欄をクリックして選択セット名を選択し、「+」をクリックする。前者はオブジェクトに登録されているすべての頂点マップの一覧が出てきてしまうので、モデリング目的で使うには後者のほうが実用的。

なお、すでに登録されている選択セット名を選び、別の新しいポイント群を選択した状態で「作成」ボタンをクリックすると既存の選択セットにそのポイント群が追加される。

顔のレイヤーを下地にして、次の画像のように眉毛を顔にフィットさせる。この時、回転ツールなどを使って眉毛の断面が極力変わらないように工夫すると綺麗な眉を作れる。

Face035

片方の眉が完成したら、反対側に複製する。鏡面Xツールを使いたいところなんだけど、鏡面Xを使うとなぜだか眉頭と眉尻のポイントが自動的に統合されて先端が丸まってしまうので、複製(MirrorTool)ツール(Cキー)を使う。複製の中心を原点にして、次の画像のように「スケール X」を「-100%」にするとポイントが統合されないままで鏡面複製したように複製される。

Face037

眉毛の完成。

Face036

まつ毛を作る(オプション)

すでにキャラクター・デザインが決まっていて明確なターゲットがある場合は、まつ毛はテクスチャーで描くのが基本だけど、オリジナル・キャラクターの場合はある程度融通がきくのでモデリングで作る方法もある。

眼窩の上半分のエッジを選択し、拡張プラスで前にごくわすがに押し出す。頭の大きさが1mくらいだとすると、10mmくらい(すごくおかしいことを書いているのはわかっている…)。拡張プラスはポリゴンだけではなく、エッジからポリゴンを拡張することができる。2回押し出した後、必要であればポリゴンを裏返し、前方に解放しているポイントを眼窩の周囲にあるポイントに統合(Ctrl+W)する。まつ毛のポリゴンにマテリアルを設定すると次の画像のようになる。

Face021

この方法の最大の利点はテクスチャーを描かなくてもまつ毛を作れることなので、二次元作画力に自信がない人に向いている。また、アニメのキャラクターのように色の境目がハッキリしていているデザインに適している。エッジを更に前に伸ばしていけば立体的なまつ毛を作れるのも長所と言える。

欠点は、眼窩周囲の適当な距離に接続できそうなポイントがないとまつ毛を作れないことと、まつ毛の量の調整のためにモデルを直接編集しなければならないこと。テクスチャーを編集するのとどっちが楽かと考えると微妙だけれども。当然ながらポリゴンの数も増える。漫画やイラストのキャラクターにあるようなグラデーションで肌色に溶け込むようなまつ毛を作るのが難しいのも弱点。

途中経過

細かいところばかりだったので、なんかいまひとつ進んだ気がしないけど、目と耳と眉を作った。

Face038

関連記事

MMDモデル「らぶ式ミク」をLightWaveで再現する

最終更新:2016/09/06

MMDモデル「らぶ式ミク」は、ボーカロイド「初音ミク」のMikuMikuDance用ユーザーモデルのひとつ。初音ミクのモデルは数多くあるけど、その中でも個人的にとても気に入っているばかりでなく、二次元キャラクター風の3DCG人物モデルとしての完成度も高いと思っていて、人物モデリングの参考にもさせてもらっている。

分析のために分解してみたりもするんだけど、綿密に計算して展開されたUVマップや精緻に描かれたテクスチャー画像、豊かな表情を可能にする100にものぼるモーフ・マップなど、どこをとっても感嘆するばかり。MikuMikuDanceで表示させた時に見栄えがするようにと考えられた工夫も随所に織り込まれていて、一言で言い表す賞賛の言葉も見当たらないくらい。

自社の製品開発の一環として研究のために購入してきた競合の自動車メーカーの高性能車両を分解してみたら、その設計や構造は言うに及ばず、普通に運転する分にはまず目に触れるはずもないエンジン内部の部品も綺麗に磨かれていたのを見て二度驚いたといった逸話を思い出してしまった。

そんな「らぶ式ミク」の制作に熱意を傾けた諸氏に尊敬を捧げ、敬意を払うとともに、参考にさせてもらっている恩返しという意味もこめてLightWaveでらぶ式ミクをMMD風に再現する方法を考えてみた。LightWaveでアニメ調のレンダリング出力をさせるためのマテリアル研究も兼ねている。

モデラーでサーフェースを設定する

PMD形式ファイル・ローダーを使って「らぶ式ミク」を読み込むと、最初は次の画像のような真っ白なモデルが出てくる。単純なモデルの場合はテクスチャーもUVマップと併せてロードされるのだけど、人物モデルのような複雑なモデルの場合はUVマップとテクスチャーの対応がちゃんととれていないことがある。

LoveMiku000

レイヤーが大量に読み込まれるけど、ほとんどがモーフ用で実際のモデルが保存されているのは2番レイヤーなので、フルキーの「2」キーを押してモデル本体を表示させる。

共通設定

「らぶ式ミク」は、surf000からsurf007までの8つの部分のサーフェースに色分けされている。まず、すべてのサーフェースに対して次のとおりに設定する。色はすべてテクスチャーで再現されるため、すべて初期値の白のままにしておく。

  • 「自己発光度」を「100%」
  • 「拡散レベル」を「0%」
  • 「透明度」を「0%」

なお、透明度が設定されているとポリゴンの表裏が反転しているように見えることがある。実は上の画像もインポート直後のものではなく、透明度を0%に設定してからスクリーン・ショットを撮ったもの。本当にインポート直後だと色々透けて見えてしまうので…。

自己発光度を100%、拡散レベルを0%にするのはエッジ・ラインの抽出でも使った手法なんだけど、モデル自身の陰影を打ち消すための設定であって、別に全身を発光させたいわけではない。MMD風にレンダリングさせるにはレイトレースがむしろ問題になる。陰影にあたる部分はテクスチャーに直接描かれているので、問題にならない。

テクスチャーを割り当てる

次に、サーフェースの「色」に割り当てるテクスチャーとUVマップを対応させる。簡単にまとめると次の表のとおり。

らぶ式ミクのサーフェースとテクスチャーの対応
サーフェース名 主な部位 テクスチャー画像
surf000 ヘッドセット Lm_jac.bmp
surf001 顔・体 Lm_body.bmp
surf002 目の周囲・口・眉毛など Lm_body.bmp
surf003 服・靴・袖 Lmtex.bmp
surf004 瞳(標準) Lm_eyes.bmp
surf005 瞳(表情用) Lm_star.tga
surf006 表情用 yyk_tpo.tga
surf007 Lmhair.tga

インポート直後はいずれのサーフェースにも定数(Value)のプロシージャル・マップのレイヤーが仮に割り当てられているので、それらを消去し、残ったひとつのレイヤーを「画像マップ」に切り替える。「投影」は「UV」、「UVマップ」は「Texture」をそれぞれ選択する。MMDモデルは仕様上UVマップをひとつしか持てないため、すべてのサーフェースのためのUVをひとつのUVマップに保持している。

具体的なテクスチャーの設定は次のとおり。

surf000

LoveMiku001

surf001

LoveMiku002

surf002

LoveMiku003

surf003

LoveMiku004

surf004

LoveMiku005

surf005

「らぶ式ミク」では目が手前と奥にひとつずつ、左右で合計4つあり、モーフによって入れ換えている。surf005は奥にある目のテクスチャーを設定するためのもの。

LoveMiku006

surf006

モーフによって目や口や眉に出ない様々な表情を実現するためのテクスチャーを設定する。モーフが適用されていない時は表面に出てこないようになっている。モデラーの右下にあるマップ選択で「M」ボタンをクリックし、モーフ・マップを選択すると効果を確認できる。

LoveMiku007

surf007

LoveMiku008

髪の毛のテクスチャーのTGA画像には毛先に向かってアルファ・チャンネルが設定されているのを確認してはいるんだけど、アルファ・チャンネルを透明度のマップに設定してもうまく透過されなかったので、ひとまずグラディエント・マップで代替する。「入力パラメータ」に「Slope」を選択し、パラメータ「0」を値「0%」に設定し、パラメータ「0.8」付近のところに値「0%」のキーを作り、更にパラメータ「1.0」で「20%」になるようにキーを設定する。これで前髪で目が隠れてしまっても瞳が透けて見えるようになる。

LoveMiku009

髪の毛にはお好みで「反射光」を「100%」、「光沢」を「40%」くらいに設定するとハイライトが綺麗に出るようになる。

保存

サーフェースの設定が完了すると次の画像のようになる。オブジェクトに名前をつけてLightWave形式で保存する。LightWaveでは日本語等のマルチバイト文字への対応がいまいちですぐに文字化けするので、できれば半角の英数字・記号でファイル名をつけるほうが無難。

LoveMiku010

レイアウトに読み込む

保存した「らぶ式ミク」のオブジェクトをレイアウトに読み込む。ひとまず2番レイヤーの「Model」を読み込む。オブジェクトの「アイテムプロパティ」を開き、「輪郭」タブでラインレンダーによって出力させるエッジを選択する。「シルエットエッジ」と「鋭角の折り目」だけにチェックする。

なお、モデルの作り方の都合上、顔や体の途中でパーツやサーフェースが区切られているため、「共有しないエッジ」や「サーフェイス境界」を選択してしまうと予期しないところに線が出力されてしまう。

LoveMiku011

モーフ・ミキサーで表情を制御

次に、オブジェクトの「アイテムプロパティ」の「変形」タブで変位プラグインの「Morph Mixer」を追加する。複数のモーフ・マップを文字通り混合してオブジェクトを任意に変形させることができる。MMDの表情選択や適用量のスライダーとほぼ同じ機能を持つもの。

LoveMiku012

「Morph Mixer」の「プロパティ」を選ぶと、モーフ・マップの一覧と変位量のスライダーが表示される。「1_」で始まるモーフ・マップ名が眉、「2_」で始まるモーフ名が目、「3_」で始まるモーフ名が口(及び舌や歯や顎)、「4_」で始まるモーフ名がその他の表情、髪の毛の量、袖の大きさなどに割り当てられている。

LoveMiku013

モーフ・ミキサーを閉じるとオブジェクトにモーフが適用され、表情などが変わっている。レンダリングすると次のような画像が出力される。MMDのレンダリング出力に比べると全体的にやや明るい感じになるけど、概ね再現できているように思う。

 

LoveMiku014

スケルゴン(ボーン)については今回まったく手をつけていないので、アニメーションまでは確認できていない。MMDでは、直接他のボーンに接続されていない宙に浮いたボーンを設定できるけど、すべてのボーンが直接接続されていて親子関係で連続している必要があるLightWaveのスケルゴンとは互換性がない。つながっていないボーンを適宜補間する必要があり、そのままでは動かすことはできない。

ウェイト・マップはインポートされているようなので、理論上はボーンの問題さえクリアできればLightWaveでも「らぶ式ミク」を動かせると思われるけど、ポリゴンの数が多くスケルゴンの動きをテストするにも時間がかかるため実際に動かそうとするにはかなりの労力が必要になる。

関連記事

LightWaveで二次元キャラ系人物モデリング奮闘記 ―顔編1―

最終更新:2016/09/06

次はいよいよ顔のモデリングに取りかかっていく。雛人形は顔が命っていうCMがあるように、フィギュアや3DCGの人物モデルの出来映えも顔次第と言えるくらい大事な場所だけど、それだけモデリングが楽しいところのひとつでもある。

頭を作る

ポリゴンがたくさん必要になるだろうと思い、深く考えずにボールから作成してしまったけど、24面12分割はさすがに多かった。やはり8面6分割くらいから始めてポリゴンとエッジを増やしながらモデリングしていくのが能率的だと思う。それからY軸中心で生成したのが良くなかった。頭頂と顎の部分で3ポイントのポリゴンが集中してしまい、制御に苦労する羽目になった。

Face000

次の画像のように首の高さあたりにボールを生成した。おおまかにでも大きさを把握しておきたかったというのもあるんだけど、最初から体とのバランスがピッタリってこともないから、モデリングのしやすさを考えたら原点に生成してもよかったと思う。

Face001

顔はシステマティックにモデリングできるところがほとんどなく、最初からポイントの位置を修正していく作業になる。対称モード(Shift+Y)にしておくのを忘れないように。

鼻は拡張プラス(Eキー)でひと段階前に押し出してエッジを増やし、鼻先のポリゴンを縮小して形を整えていく。ポリゴンのサイズがかなり小さくなってしまったとしてもポイントの統合はしないようにする。統合してしまうと鼻が低くなる上に制御できるポイントが減り、思い描いたような形への形成が難しくなる。

それから、サブパッチ・モデリングの初心者がやってしまいがちなんだけど、鼻を高くしようとして鼻先になる予定のポイントを顔から遠くしても、ピノキオの鼻のように前に伸びるばかりで思ったように小高くはなってくれない。むしろ遠くなるほど鼻が高くなっていく度合いは鈍くなっていく。サブパッチの特性でポイント間の距離が離れれば離れるほど曲面はなだらかになっていくためだ。

また、鼻の周囲に変なシワが寄ってしまった場合はどこかのポイントが鼻を構成するポイントを追い越してしまっていてポリゴンの形が破綻していることがある。サブパッチを一時解除して極端によじれてしまっているポリゴンがないか適宜確認するようにしよう。人間の顔、特に二次元キャラクターの顔は凹凸が少ないので、肌を綺麗にレンダリングさせるためにはポリゴンのよじれを許容できないことが多い。

目が入る眼窩の縁や唇には小さい半径で直角に近い急角度をつけておきたいので、次の画像のように拡張プラスをごく短距離で2~3回くらい使用してポイントの密度が濃い部分を作っておくと制御しやすくなる。特に、目を入れた時に眼窩の奥が見えてしまうのを避けたいので、鼻筋から目に至るラインがまっすぐに眼窩に落ち込んでいないように注意する。

ポリゴンを作りすぎてしまってポイントの制御が手に負えなくなってきた場合は、「構造」メニューグループにあるバンドグル(BandGlue)ツールやポリゴンの統合ツール(Shift+Z)を使ってポイントを減らす。特に、後頭部は髪の毛で隠れてしまうため精緻なモデリングを要求されないから、極力ポイントを減らしておくとモデリングの過程でボコボコになってしまった表面をならしやすくなる。

バンドグルはバンドソープロとは反対に、選択ポリゴンをループしてポリゴンを自動的に統合してくれるツール。似たような動作をしながら分割ほど簡単ではないようで、うまく統合されないことも頻繁にあるため、ほとんどの場合手動でポリゴンを統合していくことになる。ポリゴン統合後に浮いてしまったポイントは単純にDeleteキーで削除してしまっても構わない。もし、ポイントを削除することで近傍のポリゴンが消えたり形が変わってしまったりしたら統合の仕方に問題があるのでアンドゥして再検討する。

サブパッチを適用してみると次の画像のようになる。後でまつげや唇にしようと思っていた部分を拡張プラスで押し出しながら作ったけど、さすがにちょっとやりすぎだったようで、だいぶ前に突き出してしまっている。

Face003

次の画像のような、なんとなく顔らしきものにはなったけど、何かが違う。人間の顔というよりは某宇宙人か人面岩のように見える。何が変なのだろうか。目か、鼻か、口か、それとも顔の輪郭か。ちなみに、目と口の色が違うのは、ポリゴン選択を容易にして形成をやりやすくするために仮のサーフェースを割り当ててあるから。使いようによってはテクスチャーを描く時の目安にもなる。

Face004

自分ではどこが悪いのかわからなくなってきてしまったので、二次元キャラクターの顔やMMDモデルの顔などを注意深く観察してみると、すべての要素がまずいことがわかった。

顔の輪郭は正面から見たとき、額から逆三角形になるほどの結構な角度をつけ、鼻の高さを過ぎたあたりから徐々にアールをかけ始めていき、顎の頂点で緩く合流するようにする。目は鼻筋から少し離し気味にしておき、かつ斜めから見た時に目が出っ張って見えないように輪郭から一定の間隔を確保しておく。鼻は本当にちょこんと出っ張っている程度でよく、頬のラインの一部になるように調整する。

要するに、次の画像のように改善した。

Face005

figmaなどのフィギュアで表情を変えるための交換用の顔パーツが付属しているものがあるけど、それを見ると驚くほど扁平なのに気付く。それでどの方向から見ても二次元キャラクター風の顔に見えるのだから不思議としか言いようがない。長年のフィギュア原型制作で培われてきた技術なんだろうけど、最初にこの造形を考案した人がいたとしたら大発見だと思う。

3DCGの人物モデルでも考え方はほぼ同じで、顔の要素をとにかく前に寄せていって、平らに近い形に形成していく。鼻から頬を経由して耳につながっていく横のラインはかなり極端になってしまっていて、丸みはありながらもほぼ直角と言ってしまってもいいくらいになっている。

顎から耳に至るまでのシルエットをラインレンダーではっきり表示させたいので、パースに表示される影を頼りに、顎から頬の後ろを次の画像のようにかなり思い切って絞り込む。サブパッチを解除した時にガタガタになってしまうけど気にしない。そういう無茶ができるのもサブパッチのいいところ。うなじの部分は首を接続するために残してあるだけで、形はかなり適当。なお、選択してあるポリゴンは耳の予定地。

最初は正面から見た形を整えることから始め、次に横から見た形を調整した後、斜めから見た時にも不自然にならないように微調整していくのがいいように思う。

極端な煽りや俯瞰のアングルに弱くなってしまうのは二次元キャラクター風3DCGモデルの宿命のようなものなので、個人レベルではある程度は仕方がない。『蒼き鋼のアルペジオ』のような最先端クラスの商業3DCGアニメーションでは、煽り構図の時は顎を細く、俯瞰構図の時は下ぶくれになるようにモーフで変形させて顔が不自然にならないように調節しているそうだ。

参考にした資料にだいぶ引っ張られて下ぶくれ状態になってしまったので、ターゲットとするキャラクターのデザインに合わせて輪郭を調整する。しかし、ある程度モデルの形が決まってきてからの変更は勇気がいる。そこで、ポイントを直接移動させるのではなく、「変形」メニューグループにあるスプラインガイド(SplineGuide)ツールを使うと元の形を極力崩さずに修正できる。左クリックかNキーを押すとデフォルトでは次の画像のような8つの制御点を持つスプライン曲線と制御点のハンドルが表示されるので、パースを見ながら少しずつ調整する。

Face006

「Operation」は次の画像のようにデフォルトで「Scale」になっていて前後左右に均一に変形されるので、特定の軸方向にだけ変形させたい場合は「Stretch」に切り替える。

Face007

途中経過

輪郭の修正が終わってひとまず完成したのが次の画像。次はこれに目や耳や眉を追加していく。髪の毛という大物も待っている。

Face008

今回はY軸中心のボールから作ったけど、X軸中心でボールを生成して横に倒した状態でモデリングを始め、3ポイントのポリゴンが集中する部分を切り取って耳にするという方法を採ると、頭頂や顎にポイントが集中しないという利点がある。また、ボールを使わずに顔の要素に合わせて分割したボックスを用意し、眼窩、鼻や口を先に作ってしまってからポリゴンを細分化しながらモデリングしていく方法もある。3ポイントのポリゴンをできるだけ避けたいという意図があるのはどちらの方法も同じだけど、一長一短あって「この方法なら誰でも間違いがない」という方法はない。一度は失敗してみるつもりでどの方法が自分に合っているのか試していくのがいいだろう。

関連記事