はじめに

こんにちは。KLab株式会社クリエイティブR&Dグループ所属のkenと申します。

R&Dグループでは3Dキャラクターアーティストを担当しています。

キャラクターの衣装制作において高品質かつ、より効率的なワークフローを検証・研究するという目的を兼ねて現在Houdiniを勉強しています。

衣装制作はポリゴンによるモデリング、Zbrushによるスカルプト、MarvelousDesignerまたMayaのnClothによるシミュレーションなど様々なアプローチがあると思いますがリアルな自然なシワを作りたい場合はシミュレーション機能を用いたほうが品質という点ではより良い物に近づける事が出来るかと思われます。

会社で導入を進めているHoudiniはシミュレーション+プロシージャルにモデリングする事が可能なので高品質+修正対応やパターン出しなどの効率化が期待出来るのではという事で、今回Houdini17.0から搭載されたシミュレーション機能であるVellumを使用した衣装制作を紹介したいと思います。

私自身、Houdini初心者という事もありソフト自体の概念等をまず理解する為にも同グループ所属のsasaさんによるCreativeBlogの【 R&DG report:2 】ツール紹介 : Houdini編_02 脱初心者編で、ご紹介されている各サイトは大変参考になりますのでHoudiniを勉強されようと考えている方は是非ご覧になる事をお勧めします。

R&Dグループの概要につきましてはこちらをご参照ください。

衣装制作~初心者編~について

今回の衣装制作はBornDigitalサポートの「Houdini17でTシャツを作成する」という記事を大いに参考にしており、それに加えて同じくBornDigitalサポートの「Vellumで作成した洋服に厚みを付ける」「VELLUMクロスルックデブ」という二つの記事の内容も交えつつ作成したものになります。

また、制作の中で初心者目線だと難しいと感じた点なども部分的に補足しています。

その他参考にしたサイト

Houdiniのシミュレーション機能であるVellumの詳細などが、記載されたサイトになります。

SideFX公式チュートリアルのサイトではシーンファイルがダウンロード出来ます。初心者にはやや難解かと思いますが、こちらも大変参考になるかと思います。また二つ目の動画ではSIGGRAPHでのセッションの内容が逐次日本語訳されているので英語が苦手だなという方はこちらも参考になさってください。

Tシャツ制作手順

  1. DrawCurveでカーブを作成する方法もありますが、今回はCurveを使用しました。
    まず正面(T_shirt_front)のパターンを作成していきます。
    カーブを作成する際は後々のグループでの制御を考慮し縫い目となる部分ごとにカーブを分けて作成します。image21

  1. ResampleをしてLengthでポイント数を調節します。image27

  1. Mirrorで反転コピーします。image17


  1. Fuseで離れている各ポイントをSnapDistnceを調整する事でくっつける事が出来ます。今回は最初のcurve作成時に各接合部分を※スナップで合わしているのでノード的には必要はなかったのですが念の為に適用しています。image28
    image8


  1. 基本的な構成は正面(T_shirt_front)のパターンと同様の方法で、エッジを足したい部分(Insert_Seams_Inside)を作成します。
    ※Z軸方向にばらけているポイントをTransformノード(flatten)のScaleZの値を1から0にし平にしています。image22
    image7


  1. 正面(T_shirt_front)のFuseの下でMergeします。image25


  1. Planar Patch from Curvesでカーブを元にプリミティブを作成し、名前をfrontにします。
    ResampleCurvesを有効にしSmoothingをSubdivisionCurvesにします。
    InteriorEdgeLengthでエッジ調整し、SeamGroupとInteriorPointsも有効にします。
    ※SeamGroupとInteriorPointsを有効にした結果はノード情報で確認する事ができます。image23
    image4


  1. Transformで体の前に移動させます。image30


  1. 正面(T_shirt_front)のネットワークボックスを選択した状態でコピー&貼り付け(ペースト)し複製、背面(T_shirt_back)とします。Reverseでノーマルを反転させ、正面と背面をMergeします。image29


  1. 袖(T_shirt_sleeve)を作成します、基本的な構成は正面などとほぼ同じになっています。reverseとmergeの間にgroup renameノードを追加しsleeve_front部分を全てsleeve_backに変更し、こちらも袖の正面と背面をMergeします。
    ※名前をまとめて変更するために最後に*をいれます。image20

    image2
    ネットワークボックスでまとめてある「T_shirt_front + T_shirt_back」と
    「T_shirt_sleeve」をそれぞれクリーンアップのためCleanしておきます。image15


  1. Vellum Configure Clothを作成し、1番目のインプットに布(Tシャツ)のジオメトリ、3番目のインプットに※ObjectMmergeで参照している体のジオメトリを接続します。image24
    image18


  1. VellumDrapeを作成し、SolverとWeldPropertiesの値を調整します。それ以外はデフォルトの設定となっています。image14image12
    ①縫い合わせるグループ同士を設定するためにWeld Additional Seamsを有効にします。Planar PatchFrom CurvesオプションのSeamGroupを有効にし作成したGroupを使用し縫い付けていきます。
    ②正面と背面で同じSeam番号を指定します。Groupにback_seam1とTargetGroupにfront_seam1とすると縫い目が追加されますimage31
    Groupが多い場合、中ボタンを押しながらマウスを動かすと選択しやすいと思います。image11
    各縫い目のGroupを指定すると以下のようになります。image16


  1. アニメーションを再生し、指定したSeamを結合させます。image6
    VellumDrapeのFreeze at Frameを有効にすると固定したいフレームを指定できます。今回は10Fで固定しました。image1

  1. 最初に作成したVellum Configure ClothとVellumDrapeを複製し下記のようにつなぎ、10Fで固定した物に対し袖を縫い付けるGroupの指定をします。image32
    アニメーションを再生し結合させます。こちらは25Fで固定しましたimage5

  1. Vellum Post Processを作成し、メッシュのスムース化・細分化・厚み調整などを行います。image10
    Spatial Blurで滑らかさを調整、SubdivisionをLoopに変更しスムース化、Subdivision Dephで細分化調整します。image9
    Extrude by Thicknessを有効にし、Thickness Scaleで厚みを調整します。image3


  1. 最後にColorノードを追加し色をつけて、ひとまずは完成とします。
    今回のワークフローでは、Houdiniでディテールを持ったハイモデルのみ作成し、Zbrushにてディテールを転写した後にノーマルマップを作成するフローを想定していたのでUV周りに関しては特に触れていません。image26


おわりに

今回は衣装制作∼初心者編∼ということでシンプルなTシャツの作り方のご紹介でしたが

Vellum自体が機能としてまだ新しく衣装制作に特化したという点では情報自体が少ないのでR&Dという観点からしても今後引き続き検証していく価値は充分にあると思われます。

また一通りの工程を終えてみた上で感じた事は、縫い合わせる箇所の選択がGroupまたはPoint選択になっているので縫い目が増えれば増える程、選択箇所が増えコントロールが難しくなってしまうのが効率化という点において一番の難点だと感じました。

この点に限らず自分でノードをカスタムすれば解決出来る部分は多々あるとは思いますが学習コストを考えるとHoudini初心者にはハードルがやや高いと思いました。

ケースによりますが、総括すると現時点では衣装制作のワークフローにHoudiniを取り込むというのは他の3Dソフトと比べた場合はあまり現実的ではないのかなといった印象です。

上記のような問題がバージョンアップなどで機能が改良され改善された際に応じて、より複雑な衣装の制作の仕方についてもご紹介出来ればと考えています。

以上となります、Houdiniを用いた衣装制作の際などに少しでも今回の記事が参考になれば幸いです。

最後まで読んでいただき、有難うございました。