Yetiを使ったグルーミングの"超"入門編

INDEX

はじめに

こんにちは。京都スタジオ 3DCGデザイナーの高橋です。
キャリア採用で入社し、主にハイエンドなキャラクターモデルの作成を担当しています。

毛が生えたキャラクターの場合、XGenを使用したグルーミング作業を行います。
XGenは大手ゲーム、VFX、アニメーションスタジオなど世界的に利用されているとても便利なツールなのですが、Mayaには他にファーを作成する方法があることをご存じでしょうか。
今回は「Yeti」というグルーミングツールを使った基本操作方法を紹介したいと思います。

Yetiってなに?

Peregrine Labs社が提供するMayaに対応したプラグインであり、ジオメトリインスタンサです。
髪の毛や動物の毛皮はもちろん、鳥の羽など複雑な毛の表現に向いています。
一番のメリットはノードベースでファーを生成するため、データの取り回しがとてもシンプルな点ではないでしょうか。
基本概念はXGenと似ていますので、多少なりともXGenの基礎知識や制作経験があれば理解度はより高まるはずです。

XGenは国内外で汎用性が高いためにチュートリアル動画や解説サイトが豊富ですので、行き詰ったとしても解決策の入手は比較的簡単でしょう。
ですが、Yetiについての書籍やチュートリアルサイトなどはまだまだ出回っておらず、我々日本人にとっても学習のハードルが高いのが実情だと感じています。
このページでは公式サイトに記載された内容をベースにした"超"がつくほどの基本操作を紹介していきます。
この記事がファー作成にご興味がある方の一助となれば幸いです。

XGenとYetiの違い

まず初めに、Yetiの性格を確認してみましょう。
今後、様々なセクションでファーの生えたキャラクターを運用していく場合、どちらが自身のプロジェクトに適しているのかを事前に把握しておくことはとても大事なことだと感じています。

内容 Yeti
データの扱いやすさ 〇 ノードベースならではの非破壊性
ノードベースのため、データ構造はとてもシンプルでデータの取り回しに苦労することはほぼないでしょう。
ジオメトリの修正 〇 ジオメトリの変更にも柔軟に対応
ジオメトリが変更されても問題なくファーを引き継ぐことができます。ファーを作成した後にモデルの修正が発生してもファー作成の手戻りがなくなる、ということなのでその点はとても嬉しい仕様ですね。
UV展開 UV map(UDIMサポート)を参照
情報収集や問題解決 △ 困難でしょう
世の中にリソース(日本語対応のもの)がほとんどありません。問題に当たったらその解決方法を探すのに一苦労しますし、ある程度のノードに対する基本知識が必要になります。

Yetiノードでファーを作成してみましょう

※プラグインマネージャーで「pgYetiMaya.mll」がロードされているか確認しましょう。

それでは早速Mayaを開いて、実際にファーを生やしてみましょう。
Mayaシーンを開いたら上部メニューのYetiからOpen Graph Editorを選び、Yeti-Graph Editorを開きましょう。
これからたくさんのノードを繋いでファーを作成していくことになりますが作業はすべてこのパネル上で行います。
今回は練習用のメッシュとして、球体「pSphere1」を用意しました。
最終目標として毛が覆われたグルーミングボールを作成していきます。

tech_26_02.png tech_26_03.png

「Yetiノード」を作成

メッシュを選択した状態で、Yeti > Create Yeti Node On Mesh を選択してください。

tech_26_04.png

するとアウトライナ内に「pgYetiMaya1」ノードが作成されて、
Attribute > pgYetiMaya1Shape > Graph > Input Object(s) にシェイプノードが入ります。

tech_26_05.png tech_26_06.png

ここで注意したい点があります。ややこしいのですが同じタブ内に「Create Yeti Node」という別のボタンがあります。
こちらでも問題なく「pgYetiMaya1」ノードが作成されるのですが、Add Object(s)内にシェイプノードが自動で入ってくれません。
Create Yeti Node」ボタンを使った場合は手動で追加しましょう。
まだファーは生えませんが、Yetiノードはファーを生やすための「中核となるノード」であることを覚えておいてください。

続いてアウトライナー上で「pgYetiMaya1」 を選択して下の画像のようにノードを繋げてみましょう。
ファーを生やすには、Import、Scatter、Grow の3つのノードが最低限必要になります。
繋げる順番がとても重要です。シェルフのアイコンを左から順番に押していくと自動で接続できます。

tech_26_07.png tech_26_08.png

これで、うぶ毛のような毛足の短いゴールドの毛が生えてくれました。
この毛はYetiの仕様上「ファイバー」と呼ばれ、レンダリング対象となるものです。

Import / Scatter / Grow について

それではこの3つのノードの役割と扱い方してみましょう。

Importとは?

  • Importノードは、Mayaシーンからデータを取得するために使用されるため、何を処理するかを認識します。
    TypeはGeometry、Groom、またはGuidesのいずれかを選択すれば良いです。
    現状では、ワイルドカード(*)に何も読み込まれていませんので、隣のボタンを押してタブを出しましょう。
    今回は球体のシェイプノードを読み込むためGeometryを選択してください。
  • 複数のオブジェクトを同時にインポートすることもできます。

tech_26_09.png

Scatterとは?

  • Scatterノードは、ファイバーが生えるポイントをランダム散布してくれるノードです。
    ファイバーを生やすためにはシェイプにソースポイントを分散させる必要があります。
  • ノードをダブルクリックすると「属性インスペクター」を表示できます。
    散布点の位置や密度、および粒子の配置間隔を制限できます。今回は下の画像のようにパラメータを調整してみました。

密度のロック

レンダリング密度の乗算を無効にするオプションです。
これは、レンダリング密度(Render Density)に設定された値に関係なく、
ビューポートに表示される同じ量のパーティクルが最終レンダリングに表示されることを意味します。
学び初めなので分かりやすくチェックを入れておきましょう。

tech_26_10.png

Growとは?

  • Growノードは、Scatterポイントから実際にファイバーを生成するノードです。
    パラメータでセグメントの長さを制御して、散在するポイントからファイバーを成長(Grow)させるために使用されます。
    上記を畑で例えると、Yetiノードでまず作物を育てる土壌を整えましょう。
    Scatterでどこに苗を生やしたいかを決めたら種まきをして、Growで作物の成長度合いを調整するといったイメージです。
    今回は下の画像のようにパラメータを調整してみました。

tech_26_11.png

ビューポートではこのようにファイバーの密度感が高くなり、毛足も少しだけ長くなりました。
ライトを配置ればレンダリングも可能な状態です。

tech_26_12.png

パラメータの調整など少しアレンジしてレンダリングしてみました。

tech_26_13.png

まとめ

今回はYetiノードを使用してベースとなる毛の作成まで進めることができましたが、まだまだ物足りないビジュアルです。
機会があれば「Groom」というファイバーの性質を決めるノード使ったり、色を付けたりしてよりリアルな毛に落とし込む方法を紹介したいと思います。
この"超"入門編のまとめとしては下記の通りです。

  • Yetiノードはファイバーを生やすための中核となるノードであること
  • ファイバーを生やすにはImport、Scatter、Growの3つのノードが最低限必要であること

Yetiは基礎知識がないと手が進まず、希望通りのイメージを再現することが難しいかもしれません。
覚えることは多いですが徐々に各ノードの性格が分かってきます。
ファーがあるだけで生命力のあるキャラクターに仕上がるはずなので、是非楽しみながらで学んでいただけたら嬉しいです。

参考

Yeti - Peregrine Labs
https://peregrinelabs.com/products/yeti

執筆者:高橋

広告系グラフィックデザイナーを経てモノリスソフトへ入社。 以来、3DCGデザイナーとして主にキャラクター関連のハイエンドモデル作成業務を担当。 好きな場所は美術館。

ABOUT

モノリスソフト開発スタッフが日々取り組んでいる技術研究やノウハウをご紹介

RECRUIT採用情報