2023年8月4日(金)、CGWORLDとオートデスクのオンラインフェス「Autodesk Day 2023」が開催された。全11のセッションでは、Maya、3ds Maxをはじめとするオートデスク製品の深掘りや、クリエイターによる制作事例のメイキング、学生CGトライアルの受賞者座談会など、幅広い内容をラインナップ。3DCG制作に役立つノウハウやアイデアを伝える1日となった。
本記事では「MayaのXGenで毛を楽しもう!」の模様をレポートする。
伊藤 忍氏
株式会社うなぎテック|代表取締役 兼 3DCGアーティスト
ブラジル出身の3Dゼネラリスト。これまで映画、TVCM、ゲームなどキャラクターやプロップ制作全般を主に担当。チョコレートが大好き。
X(Twitter):@sino_3d
イベント概要
Autodesk Day 2023
日時:2023年8月4日(金)
時間:11:00〜19:00
参加対象:3DCG制作に携わる方、これから目指す方など
参加費:無料 ※事前登録制
会場:オンライン配信
cgworld.jp/special/autodeskday2023/
XGenで動物キャラクターの毛をつくる
本セッションでは伊藤氏が、Mayaに標準搭載されているHair・Fur生成プラグイン「XGen」の初歩的な使い方からエクスプレッションによる制御までをハンズオンで解説。2023年6月に配布したCGWORLD Entry vol.28の表紙に採用された動物キャラクターモデルにFurを生成していった。
XGenによるHair・Furの作成では、「インタラクティブXGenグルーミング」と「XGenディスクリプション」という2種類の独立した方法のどちらかを選ぶ必要がある。セッションでは後者の「XGenディスクリプション」を使用しているが、「後からインタラクティブにも変換可能なので安心してください」(伊藤氏)とのこと。
伊藤氏はまず、「Mayaのプロジェクト設定を確実にしてください」と話した。理由は、XGenはMayaプロジェクトフォルダの中にXGenのサブフォルダを構築し、そこにデータを蓄積していくためだ。
また、XGenに使用する名称は固有のものにすることを心がけること、モデリングやUV作業が終わったデータに対してXGenを使うことが望ましいと話す。「XGenの作業後にエッジの追加や押し出しをするとバグが発生しやすいためです」(伊藤氏)。
セッションは具体的な初期作業の解説に進む。まずはシェルフでXGenタブに切り替え、左端のXGenウインドウアイコンをクリックして、右ペインにXGenスタートアップガイドを表示する。
ビューポートでXGenを適用するオブジェクトを選択してから[新しいディスクリプションを作成]ボタンを押すと、「XGenディスクリプションを作成」ウインドウが表示される。今回は下図の設定で[作成]する。
すると画面右ペインにXGenウインドウが表示され、ファー生成のための「ガイド」をオブジェクトに追加できるようになる。XGenウインドウのツールバー、左から5番目の[ガイドを追加または移動ツール](ガイド1本に+字の付いたアイコン)を選び、ビューポート上で配置していく。
今回は左右対称のキャラクターということもあり、まずは左半面のみつくって後からシンメトリーにする。
ガイドを追加して毛の流れをつくる
まずは3本で1列つくる。「今回は眉間からガイドを追加していきますが、ここからつくり始めると決めたら散り散りの場所にガイドをつくるのではなく、なるべく最初のガイドから周りに拡げていくように配置していくのがポイントです」(伊藤氏)。
つくったガイドはXGenシェルフのスカルプトガイドツール(左から14番目、ガイド2本に白のX字が付いたアイコン)でガイドを曲げて形を整え、毛の流れをつくる。「よくあるのが、毛がモデルの内側に入ってしまうこと。角度を変えながら、スカルプトガイドツールで丁寧に曲げていきましょう」(伊藤氏)。
続いて、最初につくった3本のすき間を埋めるように、やや上に2本のガイドを置く。同様にスカルプトガイドツールを使ってふんわりと柔らかい流れになるよう、様々な角度から調整する。
「先ほど『ガイドは最初のガイドから周りに拡げるように』と言ったのは、ある程度近い場所にガイドを追加すると、XGenがその周りのガイドの影響を反映して自動的に形を変更してくれるからです。逆に、例えばすごく離れたところに新規でつくってしまうと、いきなり直毛のガイドができてしまいます」(伊藤氏)。
そのようにして眉間からおでこにかけてガイドを追加。
このガイドを基にどのようにFurが生成されるかは、XGenウインドウのツールバーの左端にあるプレビューアイコンをクリックして確認する。初期設定では自動プレビューだが作業効率が下がるため、伊藤氏は必要に応じて手動でプレビューする。プレビューが終わったら、プレビューアイコンの隣にあるプレビューをクリアアイコンで消去する。
モディファイアで毛束を追加
ガイドで大まかな毛の流れをつくったら、次にモディファイアで「毛束」を追加する。XGenウインドウのモディファイアタブに切り替え、束モディファイアを追加する。
ウインドウ下部にある[マップをセットアップ]ボタンを押して「束マップを生成」ウインドウを出したら、[ガイド]ボタンを押して、束をガイドに沿って生成するよう設定する。
「ここで、このモディファイアがガイドのどこから束をつくるのかが、ビューポート上で黄色いポイントで示されているんですが、ウインドウの[ポイント表示長]値を上げると、この黄色いポイントがラインになって見やすくなります」(伊藤氏)。
また伊藤氏は、「このウインドウではもう1点、[単位ごとのテクセル]値について。この値を上げたほうが綺麗に見えますが重くなります。なので、右の容量表示が1MB以下になる程度に設定するのが軽いデータで作業する目安です」と話した。
いったんこの状態でプレビューすると、全体的に束が細い印象なので、束モディファイアの[束のスケール]のT値(Top、毛先)を上げて、全体を太くする。
次に、同じ束モディファイアをもうひとつ追加。今度は「束マップの生成」ウインドウで[ガイド]ではなく[生成]を指定。[密度]を0.1にしてプレビューすると、束の中に束ができる。
ノイズモディファイアとマスクでさらにつくり込む
さらに、ノイズモディファイアを追加。初期設定のままではノイズが細かすぎたので、今回は周波数をやや低めにして、マグニチュードをやや高めに設定した。
続いて、おでこから鼻先までガイドを延長する。「後から追加したガイドは束モディファイアの[ガイド]や[生成]マップに含まれていないので、追加したらモディファイアの[ガイド]や[生成]を更新することを忘れずに」(伊藤氏)。
「ここで、束モディファイアのマスクを使ってみましょう」と伊藤氏。今回、束モディファイアは[ガイド]に沿った束感と全体的に[生成]する束感の2つの束を使っているが、鼻周りや短い毛の部分は[生成]だけでも良い。そこで束モディファイアのマスクを使って部分的に束を生成するようにする。
まずは最初に作成した[ガイド]の束モディファイアを選択して、[マスク]値の右端にある下三角から[マップを作成]を実行。
次に、モデルのマテリアルがランバート(Lambert)かどうかを確認する。ランバートでない場合は3Dペイントツールでマスクマップにペイントできないためだ。準備ができたら3Dペイントツールを使い、Furを生成しない箇所を黒く塗りつぶす。
続いて3Dペイントツールの[ツール設定→ペイント操作→ペイントエフェクト]からブラーを選び、境界線をぼかしてテクスチャを保存する。
束モディファイアの[マスク]値の[テクスチャの適用]ボタンを押して、プレビューを更新してみると、鼻からおでこの間だけ、束マップの生成で毛束がつくられるようになった。
セッションではさらにノイズモディファイアと束モディファイアを追加して、モディファイアの重ねがけによってリアルなFurに調整していた。
長毛の表現に欠かせないガイドCVカーブの調整
長いガイドを滑らかにするには、XGenウインドウのプリミティブタブ内にある[プリミティブアトリビュート→ガイドツール→リビルド]でCV数を増やす。
「例えばすごく長い毛を表現する場合、ガイドのCVは初期設定で3つと少ないので、大きく曲げるとガタガタに見える部分が出てきてしまいます。そのときに活用するのが[リビルド]です」と伊藤氏。
また、このようにガイドのCV数を増やしても、生成されたFurがガイドに対して綺麗に沿わない場合がある。この現象を回避するには、XGenウインドウのプリミティブタブ内にある[プリミティブアトリビュート→モディファイアのCV数]を増やす。
「今説明したふたつ、リビルドとモディファイアのCV数を知らないと、どんなにがんばっても綺麗な毛にはならないので覚えておきましょう」(伊藤氏)。
上級への架け橋となる3つのエクスプレッション
セッションは終盤にさしかかり、上級編としてエクスプレッションの解説に及んだ。シンプルなエクスプレッションを3つ紹介し、Furの生成にランダムさを加えて一歩進んだリアルな表現に挑戦した。
ガイドの配置箇所に応じて自動で色を変更するエクスプレッション
伊藤氏がまず最初に紹介したのは、ガイドカラーの自動着色エクスプレッション。
「制作が進んでガイドが増えると、どの部分のガイドなのかわかりにくくなります。このエクスプレッションを使えば、ガイドの場所に応じて自動でガイドカラーが変わってくれるので便利です。例えば、髪の毛をつくるときにサイドとかトップとか場所がわかりやすくなるので、部分的にガイドを選んでスカルプトする作業がやりやすくなります」(伊藤氏)。
◎使用するエクスプレッション
$b=norm($n)*.4+.3
$b
適用場所は、XGenウインドウの[プレビュー/出力]タブの、[プレビュー設定→ガイドのカラー]欄。右端のエクスプレッションボタンを押してXGenエクスプレッションエディタウインドウを出したら、上記エクスプレッションで元の入力文を上書きする。
「色を濃くする場合は、.4と.3の数値を、例えば.10のように大きくします」(伊藤氏)。
値に最大・最小値のスライダを付けてその範囲内でランダム値を適用
続いては、ひとつひとつのFurの幅や長さをランダムにしたいときに使えるエクスプレッション。「どんな動物でも、全ての毛が同じ長さで生えていることはまずないので、このエクスプレッションでリアリティを高められます」と伊藤氏。
◎使用するエクスプレッション
$a=0.0100;#0.005,1
$b=0.1000;#0.005,15
$c=rand($a,$b);
$c
適用場所は、XGenウインドウのプリミティブタブ、[プリミティブアトリビュート→長さ]と[幅]。エクスプレッションを適用すると、変数AとBがスライダとして出現し、最小値と最大値を設定できるようになる。
ノイズモディファイアの適用率をパーセンテージで指定するエクスプレッション
最後はノイズモディファイアの適用率をパーセンテージで指定して、ランダム要素の微調整をしやすくするエクスプレッション。「ノイズモディファイアの[マグニチュード]値を利用して、少し束からはみ出す毛や大きく暴れる毛を自在に追加できるようになります」(伊藤氏)。
◎使用するエクスプレッション
$A=10;#0.00,100
rand()<$A/100.0?1:0
適用場所はノイズモディファイアの[マスク]値。適用後は値を10にすると10%ということになる。この状態で[マグニチュード]を10に上げることで、全体の10%が毛束からはみ出す。セッションではさらにノイズモディファイアをもうひとつ追加し、[マスク]を1%、[マグニチュード]を20に設定。大きく暴れる毛がわずかに出現し、獣らしい見た目になっていた。
セッションでは伊藤氏がこのエクスプレッションが行なっていることを解説した。
「まず変数$Aを値10で初期化し、「#」の後ろで変数Aという定数の浮動小数点値の範囲を指定します。ここでは0.00から100までです。2行目は『ランダム値が変数Aを100で割った値よりも小さいかどうか、小さいなら1を、大きいなら0を返す』という内容です。この結果がノイズのマスクの白黒2値を決めます」。
XGenを使いこなすために必要なこと
伊藤氏は本セッションの締めくくりとして、XGen上達のコツについて語った。
「XGenに限らずですが、成長するためにはまず数をこなすことです。自分で興味を持って制作できそうなリファレンスを見つけて、それを真似て、同じものができるようにつくってみる。それが良いでしょう。最初は身近にあるちょっとしたもの、ニット帽にちょっと付いた毛玉とか、シンプルな草とか、毛皮の一部分とか。小さい部分から練習しはじめて、成功体験を積み重ねてください」。
◎ XGen の学習パス(Mayaヘルプ)
https://help.autodesk.com/view/MAYAUL/2024/JPN/?guid=GUID-C0470142-600B-4615-8110-EC779934DF5F
TEXT__kagaya(ハリんち)
EDIT_武田かおり/ Kaori Takeda