めんどくさいモデリング作業を時短化!Houdini ChainSOPを使う

INDEX

はじめに

こんにちは。モノリスソフト テクニカルアーティストの森田です。
今回は、大量のアセットを任意の形状に並べる作業を、Houdini上で簡単に行う方法を解説したいと思います。

きれいに仕上げるには一つひとつデフォームを掛けながら頂点をマージしつつ配置する必要があり、手作業で行うと非常に手間がかかる上、やり直しや修正も相当大変な作業となります。

この手法は線路やジェットコースターのレール、ガードレール、チェーン、履帯など似たようなアセットがずらりと並ぶ手間のかかるモデリングに広く応用することができると思います。

※本記事は10分程度で読むことができます。

ChainSOPの基本的な使い方

サンプルファイル(monolithtech_chainsop.zip 52.0 KB)はこちらです。

DOWNLOAD

(※まず"Curve_Simple"ノードをご覧ください)

Houdiniにはこれを実現するノードが最初から用意されています。
その名もChainSOPです。

tech_24_01.png

【画像1】ChainSOP

ChainSOPには【画像1】のように2つ入力があり、
左側、第一入力が「並べたいアセット(複数可)」
右側、第二入力が並べる場所を表す「カーブ」
となっています。

このサンプルでは「並べたいアセット」を【画像2】の三種類にしています。

tech_24_02.pngのサムネイル画像

【画像2】「並べたいアセット」黄色、赤、緑のボックス

第二入力の「カーブ」は【画像3】のようになっています。

tech_24_03.pngのサムネイル画像

【画像3】「カーブ」

これらをChainSOPに入力するだけで【画像4】の結果が得られます。(サンプルデータでは"Curve_Simple"ノードをご覧ください)

tech_24_04.pngのサムネイル画像

【画像4】

カーブに沿ってデフォームされつつ、頂点カラーを見ていただくとわかるように、きちんと頂点がマージされていることがわかります。

ねじれを補正 上方向に向ける

(※サンプルデータでは"Curve_Up_Simple"ノードをご覧ください)

出来上がったモデルをよく見るときちんと上に向いておらず若干ねじれていると思います。これを修正するためには、第二入力「カーブ」に対してどちらに向けるかを指定する情報を与えます。

set_up_vectorというノード【画像5】で「カーブ」を構成する各ポイントに対してワールドの真上(0,1,0)を指定しています。(ここはスクリプトですが、そんなものだと思って丸ごとコピペ利用してください。)

tech_24_05.png

【画像5】

結果は【画像6】です。

tech_24_06.pngのサムネイル画像

【画像6】

ランダム

(※サンプルデータでは"Curve_random"ノードをご覧ください)

出来上がったモデルを見ると「並べたいアセット」が均等の繰り返しパターンで並んでいると思います。モデリングにおいてこれでは使えないので、ChainSOPのPatternタブにあるRepeat PatternをRandomに切り替えます。【画像7】

tech_24_07.png

【画像7】

これにより「並べたいアセット」をランダムに配置することができます。

重み付きランダム

(※サンプルデータでは"Curve_weighted_random"ノードをご覧ください)

上記のランダムでは全ての「並べたいアセット」が均等に出現します。このアセットはあまり出現したくない、このアセットの出現率を上げたい...といった調整がしたくなります。(これを重み(weight)と呼びます)

これをするためには、ChainSOPのPatternタブにあるRepeat PatternをWeighted Random from Attributeに切り替えます。【画像8】

tech_24_08.png

【画像8】

そして、第一入力「並べたいアセット」にはあらかじめ重みを設定しておきます。【画像9】【画像10】

tech_24_09.png

【画像9】

tech_24_10.png

【画像10】

多く出現させたいものは他のアセットよりも大きい数値を与えます。
結果は【画像11】です。(今回は黄色を多く出現するようにし、豚が少な目になるようにしました)

tech_24_11.pngのサムネイル画像

【画像11】

端をキャップする

端をキャップする(※サンプルデータでは"Curve_EndCap"ノードをご覧ください)

こういったものの端のアセットは固有のものを指定したいことが多いです。
これを実現するのがPatternのStart Cap PieceとEnd Cap Pieceです。【画像12】

tech_24_12.png

【画像12】

その名の通り、Startが「カーブ」の始点、End側が「カーブ」の終点側のアセットを指定します。「並べたいアセット」の番号(入力されてきた順での番号です)を指定します。この場合、豚が0番目にあるので0を入力すると豚が始点と終点に配置されます。

結果は【画像13】です。

tech_24_13.pngのサムネイル画像

【画像13】

始点と終点に豚が配置されました。(始点と終点に配置されたアセットは、その箇所以外には配置されないようになっています。

まとめ

ChainSOPを使えばデフォームとマージを伴うめんどくさいモデリングを簡単に行えます。

ここでご紹介した機能以外にも使える機能がそろっているので、詳しくは公式ドキュメントなどをぜひご覧ください。

TIPS:

デフォームをさせない、マージをさせないなどのコントロールもできます。

参考

Houdiniヘルプ、Chain geometry node
https://www.sidefx.com/ja/docs/houdini/nodes/sop/chain.html

執筆者:森田

映像業界を経てモノリスソフトへ入社。 以来、テクニカルアーティストとして主にHoudini関連の業務を担当。 好きなお寿司は鉄火巻き。

ABOUT

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

RECRUIT採用情報