チュートリアル / Mayaプロフェッショナルモデリング
第4回:ハイモデルの制作

  • Maya
  • ゲーム
  • コラム
  • チュートリアル
  • モデリング
  • 学生・初心者
  • 映画・TV
ハイモデルの制作

皆さんお久しぶりです。SAFEHOUSEの坂田です。
今回で第4回となります。大変お待たせいたしました。

前回は【Mayaでモデル制作 後編】の記事でミッドモデルの制作ワークフローと解説をさせて頂きました。読んで頂いた皆様ありがとうございます。
今回のコラムではMayaと ZBrushを使ったミッドモデルのポリッシュとハイモデルを制作を解説していきます。

今回もよろしくお願いします!

ハイモデルを作る前に

ワルサーP38のミッドモデル

前回の記事ではMayaを使用してワルサーP38のミッドモデルを制作しました。
基本的にこのモデルはシルエットは綺麗に取れていますし、ディテールの作り込みも十分だと思います。
ですが、このモデルはハードエッジを多用しておりフェースノーマルにも歪みがあります。また部分的にはポリゴンの角つきが目立つ所もあります。

このモデルはハードエッジを多用しておりフェースノーマルにも歪みがあります

基本的にハードエッジによる鋭いフチの表現は現実には存在しないものです。現実の世界ではどれだけ鋭角なエッジであっても多少のベベルがあり、エッジにはハイライトが入っています。
モデリングにおいてそのような詳細なベベルの処理は、3DモデルのあからさまなCG感を解消する為にかなり重要になってきます。

ハイモデルではそういったノーマルの歪みの解消やベベル処理といった、ミッドモデルでは再現しきれなかった細かいディテールの表現を行っていきます。

今回それらの表現はZBrushを使って制作していきますが、前回のミッドモデルをその状態のままZBrushに持って行っても上手く処理できません。
そこで、まずはMayaを使ってちょっとしたミッドモデルの修正とハイモデルの準備を行なっていきます。

ハイモデルの準備

前回ミッドモデルを制作したときに、ブーリアンを多用したままでトポロジーの修正を行っていない部分が多いので、まずはそういった部分をMayaで修正していきます。

例えば曲面をブーリアンでモデリングすると、画像のようなエッジ同士が繋がっていない、ガタガタしたエッジのラインが発生します。このような場合は余計なエッジを削除するか結合することでスムーズなエッジの流れにしていきます。

ブーリアンでがたついたエッジ

ただし、無理に繋げようとするとシルエットに影響が出てしまったり、ポリゴンが減って角つきが出てしまったりするので、あくまでシルエットを優先しつつ修正していきます。
この際に三角形ポリゴンや多角形は使ってもかまいませんが、一つの頂点から複数本のエッジを生やす場合はエラーが出やすいので要注意です。

メッシュのトポロジーの修正

一通りメッシュのトポロジーの修正が終わりました。次はZBrushでポリッシュ作業を行うために、UVの処理をMayaで行なっていきます。

今回ポリゴンの角つきを解消する為にはZBrushの機能を使っていくのですが、ZBrush側ではUVのシームがあるエッジを保持して他のポリゴンをスムーズにポリッシュする、という機能を使っていくので事前にUVのシェルを分ける必要があります。

なのでミッドモデルのUVを簡単に展開していく必要があります。展開といってもテクスチャー用にUVをアンラップするわけではないので、平面投影などで適当にUVシェルをまとめた後に、シームを入れて自動UVレイアウトを適用するだけでOKです。

ハードエッジにシームを入れてUVシェルを分離

ちなみに保持したいエッジにシームが入っていても、UVシェル同士が完全に分離していないとZBrushの処理が機能しないので要注意です。

UVシェルの分離

このエッジを指定してその他の部分をスムーズにする機能は、Mayaのクリース機能をイメージすると分かりやすいかもしれません。
Mayaのクリース機能を使うには事前にトポロジーが整理された、サブディビジョン対応のモデルを準備する必要がありますが、ZBrushの機能を使うことでそれらの処理を飛ばして、より素早くハイモデルの準備ができるようになります。

UVシェルの分離

全てUVシェルの分離ができました。これでMayaでの準備は完了です。

ZBrushを併用するメリット

今回ZBrushでベベルやポリッシュ処理を行う理由ですが、Maya側で同様の処理を行う場合と比較して、いくつかメリットがあります。
例えばMayaでは複雑な形状のモデルになるほどベベルを入れたり、歪みなくサブディビジョンモデルを作るのが難しくなっていきます。

フェースの歪み、しわ
ノーマルの歪み
画像のような歪みは頂点を調整したりエッジを追加することで解消することもできますが、思ったより処理に時間を取られることがあります。

しかしZBrushでは複雑な形状のモデルでも、比較的シンプルで簡単にベベルやポリッシュが行えます。
またZBrushを使ったスカルプトを行いたい場合でも、従来の方法では事前にMaya側でサブディビジョン対応のモデルを用意するなどしてポリゴンの角つきを解消する手間が発生していましたが、今回の方法ではUVを分割する処理のみでサブディビジョン対応のモデルを用意する手間を省く事ができます。

ワークフロー

長細いモデルには対応し辛いなどいくつか明確なデメリットもありますが、ZBrushへ持っていくための準備を減らす事ができるのでクオリティーを落とす事なく時間短縮へ繋がります。

それではZBrushへ持っていくモデルの確認をしておきます。ZBrushは多角形を正確に読み込むことが出来ないので、多角形を一括選択して三角形化しておきます。
今回はFBXで書き出すので、書き出しのオプションの項目で三角形化にチェックを入れておくと別途で三角形モデルを用意する必要がなく便利です。

Triangulate(三角化)にチェックを入れて書き出し

これでハイモデルの準備ができました。次はZBrushにモデルを読み込んでいきます。

ZBrushでポリッシュ作業

先ほどMayaで用意したモデルをZBrushに読み込みました。

Mayaで用意したモデルをZBrushに読み込み
なんかUIの色や配置が変わっているのは気にしないで大丈夫です。

今回僕が使っているZBrushのバージョンは2021.5.1ですが、ZBrushはバージョン2019からFBXに対応して、オブジェクト毎にサブツールを分けて読み込めるようになっています。

まずはサブツール(SubTool)のタブを開きます。

サブツール(SubTool)のタブを開く

ここには先ほど読み込んだモデルがレイヤー形式で表示されています。
今回ZBrushではオブジェクト毎に個別で作業する事になるので、サブツールから作業を行いたいオブジェクトを選択していきます。

次にポリグループ(PolyGroup)のタブを開きます。

ポリグループ(PolyGroup)のタブを開く

ポリグループは名前の通りポリゴン毎にグループ分けを行なう機能です。今回はこのポリグループを活用しながらモデルのポリッシュを行なっていきます。

まずはポリグループの自動UVグループ(Auto Groups With UV)をクリックして実行すると先程Mayaで分割したUVシェルに対応したポリグループが作成されます。

自動UVグループ(Auto Groups With UV)をクリック
UVシェルにポリグループが設定された状態

次に現状のポリゴン数ではZBrush側で作業出来ないので、ダイナメッシュ(DynaMesh)を使ってポリゴンを増やしていきます。ダイナメッシュはジオメトリ(Geometry)タブの中にあります。
ダイナメッシュを行うとポリグループは残りますが、UV情報は消えてしまうので必ずダイナメッシュを行う前に自動UVグループを実行しておきましょう。

ダイナメッシュ(DynaMesh)

ダイナメッシュの解像度は高いほど良いですが、PCの処理能力の問題やミッドモデルのポリゴンの角つき具合にも左右されるので、何度か試してみてベストなポリ数を探すのが良いと思います。

ちなみに標準のダイナメッシュはワールドスペースの解像度でポリゴン数を決めるので、一定以上のポリゴン数に到達しないことがよくあります。
そこで公式プラグインのDynamesh UtilityやDynamesh Masterを使う事で、直接目標のポリゴン数を入力してダイナメッシュを行う事が出来るようになるのでオススメです。

今回僕は基本的に大きなパーツを解像度4096で進め、ポリゴン数が確保し辛い細かなパーツにはDynamesh Utilityを使って100万ポリ以下で進めてみます。

ダイナメッシュでポリゴンを分割した状態

ダイナメッシュでポリゴン数を増やしました。この辺から少し処理が重くなってくるので、作業中は必要なモデルだけ表示しておきます。

ここからは変形(Deformation)タブの機能を使ってモデルのポリッシュを行なっていきます。

モデルのポリッシュ

これでミッドモデルからポリゴンの角つきが解消された状態になりました。

ポリグループ境界のエッジはまだシャープな状態

しかし現状では先程作ったポリグループ毎にスムーズしただけなので、ポリグループの境界部分はシャープなエッジのままです。
次はそういったまだシャープなエッジのベベル表現を行なっていきます。

その前にこの段階で一度モーフターゲット(Morph Target)のタブでモーフターゲットを格納(StoreMT)しておきます。
モーフターゲットは現状のオブジェクトの形状を一度ZBrushに保存させる機能です。
形状を保存することで、モーフブラシを使うと一度何らかの処理で変形してしまった部分を保存した形状に戻すことが出来るようになります。

モーフターゲット(Morph Target)

形状を保存したところで、モデルにベベルを入れていきます。

モデルのベベル処理

このベベル制作を行うにあたって、単体表示のみで作業を進めてしまうとアセット全体の統一感や異なる素材 毎にベベル幅を変えて素材感を出すのが難しくなるので、定期的に他のオブジェクトを表示して確認しながら作業を進めるのがいいと思います。

モデルのベベル処理

これでベベルの処理は完了です。このポリッシュからベベルの流れを他の全てのオブジェクトでも行なっていくのですが、先述のようにこの方法は長細いオブジェクトには適用し辛いので、マガジンスプリング(バネ)のような長細いオブジェクト以外に適用していきます。

ちなみにこのZBrushを使った方法でモデルのポリッシュを行なうと、ダイナメッシュの分割具合によっては直線部分に歪みが発生する場合があります。

エッジが少し波打って歪んでいる

本来ならば避けるべき状態かもしれませんが、現実の銃器もそういった部分がキレイな直線ばかりか、と言われるとそうでもなく、大体の場合少し歪んでいたりします。
それが製造段階のものなのかはともかく、このようなちょっとした歪みはモデルのCG感の解消に繋がります。
この手の歪みは手動でモデリングしようとするとそこそこ手間なので、僕はこの方法で出来たちょっとした歪みは敢えてそのままにしておくことが多いです。

一通りポリッシュとベベル処理が終わった状態

一通りポリッシュとベベル処理が終わりました。これでハイモデルのベースは完成です。
次はスカルプトでディテールを追加していきます。

スカルプトでディテール制作

さっそくスカルプトでディテールを追加していく前に、この段階で再度モーフターゲットを格納して形状を保存しておきます。
これで余計なディテールや間違った操作で形状を追加してしまっても、モーフブラシですぐ元に戻すことができます。

形状を保存したところで、まずは傷などの後から追加されたディテールの前に、製造段階で出来たようなベースの部分のディテールをスカルプトで制作していきます。

例えば、マガジンには金属板を溶接する際にできた溶接痕がありますし、セーフティーレバーの窪みにはボール盤で削ったような強めの切削痕があります。

マガジンの溶接痕とセーフティーの窪みの切削痕

こういったディテールはテクスチャーでも表現できますが、ハイモデルの段階で制作することでよりリアルで実際に造形されているかのようなノーマルマップがベイクできるようになります。
ただし、細かい研磨痕のような較的凹凸が小さなディテールはテクスチャーで表現した方が簡単に表現出来るので、ある程度大きな凹凸のあるディテールを優先してスカルプトしていきます。

ここで一つ注意点ですが、ベイク用のハイモデルをスカルプトするにあたって、あくまでベイク用のハイモデルはシルエットでは無くディテールの制作になります。
あまりにも元の形状から逸脱した形状はベイク時のエラーになってしまうので、基本的にスカルプトする時は少し歪んでいる、気持ち凹凸がある、程度のディテールに抑えた方が良いでしょう。
もしそういった形状がスカルプトしたい場合はミッドモデルの段階でベースを用意するか、スカルプト後にミッドモデルを調整する必要があります。

今回はまず前述したセーフティー周りの切削痕とマガジンの溶接痕を制作してみます。

ディテールをスカルプト #1

溶接痕と切削痕がスカルプトできました。

溶接痕と切削痕がスカルプトできました。

今回は単純なアルファを使った比較的シンプルなものでしたが、物によってはPhotoshopなどを使って自分でアルファを制作したり、ZBrush用のブラシを追加して制作した方がよりクオリティが上がるものが多いです。
例えば先程スカルプトしたディテール以外にも、刻印などはPhotoshopでアルファを制作して実際にスカルプトした方がより立体感のあるノーマルマップが作れると思います。

シリアルナンバーやモデルスタンプなどの刻印
刻印類はテクスチャーで制作した方が修正が効きやすく、制作も手軽である場合が多いです。

次は傷や歪みなどのディテールをスカルプトしていきます。例によってここでも一度モーフターゲットを格納しておきます。

銃における凹凸の大きな傷というのは、大体が何かにぶつけたりするなどして欠けたり凹んだりしたものです。
基本的に銃の大部分は金属製なので擦り傷などではそこまで大きな凹凸は発生しません。
他には、厚みのない金属板などのパーツであればぶつけたり劣化によって少し歪んでいる場合があります。

しかし、そのような傷や歪みは全ての箇所に出来るわけではありません。

基本的には銃の先端や出っ張っている部分に傷がつき、射手が右利きなら銃の右側がよりぶつけやすく傷付きます。そしてエッジの立ったパーツであっても内部寄りにあるパーツの場合はあまり傷は付きません。
また内部寄りにあるパーツでも可動するパーツであれば可動部分が欠けたり、分解した際に傷ができることがあります。

傷がつきやすい部分

そのように、どの場所になぜそのようなダメージが発生しているかを考えながらスカルプトしていく必要があります。

これは実際に傷ついた実銃をよく観察すれば分かりやすいのですが、実際のところそこまで分かりやすく傷ついた銃というのはネット検索などではあまり見かけない印象です。
なので実銃の少ないディテールを誇張して表現したり、銃とは全く無関係の機械類のディテールを応用して表現したりすることが多いです。

そういったことを踏まえて傷などのディテールをスカルプトしていきます。

ディテールをスカルプト #2

傷などのディテールが完成

そんな感じで傷などのディテールが完成しました。ハイモデルはひとまずこれで完成です。

本来はグリップの滑り止めのミゾもハイモデル編でモデリングしようと思ったのですが、テクスチャーで表現したほうがシンプルで簡単なので今回はこれで完成とします。

Mayaにエクスポート

このままではポリゴン数が多すぎて他のツールに持っていくのが少し辛いので、デシメーションマスター(Decimation Master)を使ってオブジェクトを減ポリしていきます。
デシメートでポリゴン数を減らすと再編集が難しくなるので、一旦ここで別名保存しておきましょう。

デシメーションマスター(Decimation Master)
今回はオプション欄には触れません。

まず、デシメートを行うにはオブジェクトのプリプロセスを行い、オブジェクトの形状を保存する必要があります。
全てプリプロセス(Preprocess all)でサブツールで表示しているオブジェクトを一括で処理できますが、オブジェクト数が多いとかなり時間がかかるので注意です。

プリプロセスが完了したら、次はポリゴン数を指定してデシメーション後のクオリティを設定していきます。
今回は今のポリゴン数の5%のポリゴン数になるように調整してみました。

デシメート欄のスライダーで目標のポリ数を指定
画像ではデシメート率が10%になっていますが、10%ではまだ重かったので今回は5%に変更しました。

ここで減ポリし過ぎてポリゴンの角つきがモデルに出てしまうと、ハイモデルを作った意味が無くなってしまうので、ある程度多めのポリゴン数に調整していきます。
どの程度のポリゴン数が良いか分からなければ、デシメーションマスターのタブにあるプリセットから何パターンか試してみても良いと思います。

最後に全てデシメート(Decimate all)をクリックすると、表示されているオブジェクトが全てデシメートされます。

全てのオブジェクトがデシメートされた状態

最後にデシメーションマスターで全てのパーツをデシメートできたら、FBXで書き出し、Mayaに読み込んでいきます。
ただし、ここでミッドモデルと同じシーンにFBXを読み込むとオブジェクトのネームが被って正常に読み込めなかったりするので、一旦Mayaで別のシーンを立ち上げてからそっちで読み込むのをオススメします。
その後、maデータでモデルを書き出して元のシーンに読み込み、ネームスペースを編集すればキレイに読み込めると思います。

ミッドモデルとハイモデルの比較

これでハイモデルは完成です。
ミッドモデルと見比べてみると、ベベルやディテールが追加されたことで形状の解像度がより上がっているのが分かると思います。

モデリングに関してはまだ若干作業が残ってますが、次回の内容も絡んでくるので今回はここまでにしておきます。

3Dモデルの現実感について

今回のようにハイモデルやテクスチャーを作りこんでいくにあたって、スカルプトのときに話したような誇張表現や、他から応用したディテール表現をしていると、場合によっては現実では有り得ない、でもまるで存在するかのような現実感のある表現が出来る場合があります。

セレクターレバーは実際には少し本体から浮いた位置にあるため、本来は擦り傷は発生しない

その道に詳しい人が見れば、それが有り得ない表現であることは分かると思いますが、正直ほとんどの人には分からないと思います。
むしろよくできた表現であればそれがリアルだと感じるでしょう。

これをアリとするかナシとするかはよく議論になることですが、僕は個人的にはアリだと思っています。

例えば実物を完全再現した表現だとしても、見る人がそれを不自然だと感じるのであれば、それはあまり良くない表現だと言えると思います。
それに対して、誇張表現や他から応用した現実では有り得ない表現を行うことで、不自然さを解消できるのであれば、それは良い表現だと言えるでしょう。

特にゲームなどではリアルタイムエンジンの性能的に目的の表現が行い辛かったりするので、ハイライトが入りやすいようにベベルを実際より大きめに処理したり、立体感を出すために凹凸を誇張するなどの現実感を上げるための様々な工夫がされています。

ベベルが細かいため、カメラが離れるとハードエッジのように見えてしまう。カメラからの距離を想定した誇張したベベルや凹凸の表現

そのように、現実(リアル)ではなく、現実感(リアリティ)のある表現がCGにおいて求められる物の一つだと最近は感じています。
これはモデリングに限らず、テクスチャやレイアウト、ライティングなど様々なことに言えることだと思います。そして、その表現が実際に行えるのがCGの強みだと僕は思っています。

正直個人の感性に大きく左右される部分なので、いい塩梅が難しいところではありますし、僕自身そういった表現を使いこなせているとは感じてないので、ハッキリ言い切れるわけではありませんが、あまり現実(リアル)の表現に固執しすぎるのも良くないのかもしれません。

次回の内容

次回はMayaでUV展開を行った後、Substance 3D Painterを用いたベイクとテクスチャー制作、最後にはArnoldを使ったレンダリングまでを解説していきたいと思います。
恐らく次回でこのシリーズ最後のコラムになると思いますが、引き続きよろしくお願いします!

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。