概要
本記事では、SideFXが公開している GAME JAM STARTER KIT から PLACEMENT(配置)を Unreal Engine を使って解説します。
GAME JAM STARTER KIT のダウンロードはこちらから:
https://www.sidefx.com/ja/tutorials/game-jam-starter-kit/
このツールを使用すると、複数のオブジェクトをカーブに沿って配置したり、オブジェクトに散布したりできます。 オブジェクトの方向とスケーリングを制御して、デザインにランダム性を追加できます。
ツールの使い方
このツールには、カーブに沿ってオブジェクトを配置する Curve 機能と、入力オブジェクト上にランダムに配置する Scatter on Object 機能があります。また、Instance の設定から自分で用意したアセットを配置することもできます。
このツールはプロシージャルかつインタラクティブであるため、カーブや入力オブジェクトを変化させると、生成されるモデルもそれに従って変化します。
本記事では、配置されるものをオブジェクト、その結果できるものをモデルとして解説します。
パラメータの変更
Curve
Spacing を変更すると、配置されるオブジェクト同士の間隔を調整することができます。
Rotations ではオブジェクトの回転について制御できます。
Target の変更でオブジェクトの配置軸を変えます。
デフォルトでは Y 軸(Houdini での上方向)に設定されていますが、
上は Target を X 軸(手前方向)にしたもので、オブジェクトそれぞれの傾きが変わっているのが確認できます。
Roll では、方向性にかかわらず傾斜を加えることができます。
Roll は X 軸で回転させ、Yaw と Pitch もそれぞれ YZ 軸で回転させます。
同様に、Full Twists と Partial Twist でランダムさを加えながら回転させることができます。
Scale オプションでは、配置される各オブジェクトのサイズを変更します。
Scale Minimum と Scale Maximum で各オブジェクトの大きさの最大値と最小値を制御できます。
上の二枚のうち、左は最大値と最小値が共に 1.0 のため、すべてのオブジェクトは同じ大きさになっています。
右は最小値を 0.4 にしたもので、一部のオブジェクトが他よりも小さくなっているのが確認できます。
Scale along curve をチェックすると、カーブに沿ってオブジェクトをスケーリングさせることができます。
スケールランプでさらに細かい制御ができます。
上の場合、ランプが一次関数になっているため始点から終点にかけて滑らかにスケールしています。
Instance
Instance タブの設定から、ゲームエンジンに用意したアセットを配置することができます。
Method から Unreal を選択します。Unity での開発の場合は Unity にします。
Asset が空欄になっているのが確認できます。
配置したいアセットの上で右クリックし、 Copy Reference を選択してパスをコピーし、
Asset にそのままペーストします。
すると、選択したアセットがカーブ上に配置されているのが確認できます。
Curve の Rotations に戻り、これまでの解説で変更したパラメータを 0 に戻します。
Rotations の中に、Always look up というオプションがあります。
チェックを外すと、カーブを変更したとき、カーブに面するように向きが変わります。
チェックを入れると、カーブの変更にかかわらずオブジェクトは常に上を向きます。
Scatter on Object
Scatter on Object から、Plane の上にアセットの柱を立てる処理をします。
オプションから Scatter on Object を選択すると、上のようにパラメータが展開されます。
シーンの Curve モデルを選択した状態で、Method を Curve から Scatter on Object に変更します。
input オプションを選択し、Object をWorld Outliner Input に変更します。
シーンに Plane を配置し、
Start Selection を選択、
シーンの Plane を選択した状態で Use Current Selection を選択すると、
指定した Plane 上にオブジェクトを配置させることができました。
settings から、細かい設定を変更できます。
Direction はオブジェクトを配置する方向を指定できます。
アセットを配置するオブジェクトが平面ではなく球面だった場合、今の設定だと +Y となっているため、球面の Y 軸方向の正のみ、つまり球面の上半分にのみにアセットを配置させることができます。
Density Scale は配置するオブジェクトの密度を制御します。
値を少し上げるだけで十分な結果が得られるため、デフォルトでは 0.5 と低い値に設定されています。
Relax Points で各オブジェクト間の距離を制御できます。
上は値を 0 にしたもので、複数のオブジェクトが重ねっているのが確認できます。
Rotations で配置されたオブジェクトの回転を制御します。
rand rot XYZ(random rotation)で三次元ごとにランダムに回転させ、シード値でさらにランダム化させることができます。
Scale でオブジェクト単位でサイズを変更できます。
Overall scale でモデル全体を一様にスケールさせ、
Scale Minimum と Scale Mamimum でオブジェクト一つ一つの最大値と最小値を制御します。
Noise scale でさらにランダム化します。
このツールを使えばカーブに沿って任意のオブジェクトを自動で配置できるため、柵や線路など規則的に並ぶものに活用できます。
Scatter については極めてランダムな要素が強く、例えば芝生のように、一定方向を向き各サイズが違うものを散在させるのに使えます。