3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloud Shape Generate [Mardini2024]

Last updated at Posted at 2024-05-01

これはMardini2024のDay14 Cloud Shape Generateの動画を視聴してまとめたものです。

動画

image.png

公式のサンプルファイル

Day13 RBD Material Fracture | Day14 Cloud Shape Generate | Day15 Pyro Burst Source

Cloud Shape Generateノードを使用すると、積雲の形状を生成することができます。また、クラウド以外の形状生成にも応用できます。

image.png

要約

  • Cloud Shape Generateノードは、積雲の形状を生成するために使用される
  • クラウドの種類(Mediocris, Humulus, Congestus)を選択できる
  • 形状のオフセット、ポイント間隔、サイズ、歪みなどを調整できる
  • Secondary Shapesを追加して、クラウドのディティールを増やすことができる
  • 入力ポイントを使用して、複数のクラウドを一度に生成できる
  • Attributeを使用して、クラウドのパラメータをランダム化できる
  • Cloud Replicateノードを使用して、クラウドのディティールを追加できる
  • VDB from Particlesノードを使用して、ポイントクラウドをボリュームに変換できる
  • Billowy Noiseノードを使用して、クラウドのディテールを追加できる
  • クラウド以外の形状生成にも応用できる(Bubble Remesh, Copy to Pointsなど)

サンプルファイル

image.png

CLOUD : Cloud Shape Generate を利用した積雲の例

image.png

image.png

CLOUD_SHAPE : Cloud Shape Generateノードでユニークな形状を作成する例

image.png

image.png

Stage

image.png

Cloud Shape Generateノードの基本設定

このノードはSOPレベルのジオメトリノードなので、まずジオメトリ内にCloud Shape Generateノードを作ってみましょう。

image.png

ノードには入力が1つありますが、デフォルトでは入力を必要としません。
ノードを作成すると球体(として表示された点)の集合が作成されます。これによってこれから作成しようとしている雲の形状の大まかな推定ができます。

image.png

ではこれから積雲を作成していきます。注意点として、これはふわふわした積雲などを作成するためのもので、層積雲や巻雲を作るためのものではありません。

  • Cloud Speciesでは、雲の種類(平らな雲や背の高い雲などのプリセット)を選択可能です

image.png

Mediocris:平らな雲と背の高い雲の中間 (デフォルト)

image.png

Humulus:平らな雲

image.png

Congestus:高く積み重なった雲

image.png

この先はmediocrisで作業を進めます。

Shapeの基本設定

image.png

■ Shape Offset:雲の形状変更

形状を変更するにはCloud Shapeタブ内のShape Offsetを利用します。シードに応じて色々な形の雲が生成されます。

image.png

■ Point Separation:ポイントのサイズ調整

Point Separationでは、雲を生成するときのポイントのサイズを定義するものです。サイズを小さくすると、雲とポイントが小さくなります。デフォルトでは0.1ですが、これを0.05に変更すると図のようになります。

image.png

■ Initial Size , Length , Width

Initial Sizeは、多くの場合、増加させる必要があります。なぜなら、一般的にこのような小さなスケールで雲を扱うことはないからです。10以上に押し上げることもあるでしょう。Lengthは雲の長さ、Widthは雲の幅です。図はLengthを10、Widthを10に設定したものです。

image.png

■ Distortion , Flat Bottom , Up Vector , Rotation

Distortionは雲を何らかの方法で歪ませるノイズパターンです。例えばShape Offsetがあんまり良い形状にならず、歪みを加えたい場合などに便利です。

Flat BottomはHeightで定義されます。これを上げると底が一緒に上がります。

image.png

Up Vectorは、雲の上向きの方向を定義します。Y方向以外の向きや負の方向も可能です。Rotationでは回転も可。

以上が基本的な設定です。

Random Scale per ShapeとSecondary Shapes

image.png

Secondary Shapesを無効にして、基本的な基礎となる形状がどのようなものかを見てみましょう。

image.png

上からの視点で見るとわかりますが、雲のポイントはPoint SeparationにRandom Scale per Shapeを乗算したサイズになっていることがわかります。デフォルトの状態において球体の一つ一つは、Point Separationの1~2倍の範囲でスケールが設定されています。Max Scaleを1にすると、均一のサイズにスケーリングされます。逆に3に増やすと、さらに大きな範囲になります。

image.png

次はSecondary Shapesを見ていきます。
先程の図からもわかるように、無効にすると単一の平らな層になり、有効にすると既存の形状の上に層が追加されます。

image.png

Iterationsは、どの程度層を積み重ねるかのレベルです。

image.png

Displacementは、各Iterationsでどれだけ上に移動するかを設定できます。1以上にすることもできますが、1の値でも基本的には大丈夫です。

image.png

SpreadはY軸以外の別の方向に広げることができます。

image.png

また、Secondary ShapesにもRandom Scale per Shapeがあります。設定方法は先程と同じです。

Outputタブの設定

image.png

Fuse Distanceは名前の通り2つのポイントが1つの球体にFuseする最小距離です。この値を大きくすると球体の数が減少します。重なりが減ることで雲に隙間ができやすくなります。その隙間が面白い形を生み出すかもしれません。

Remove Below Scaleは単なるしきい値で、ポイントのpscaleがこの値より小さい場合削除されます。

複数のクラウド生成

Grid上にScatterでポイントを散らばらせた(Force Total Count:10)ジオメトリを作成し、Cloud Shape Generateノードの入力に接続します。

image.png

先程の設定ではCloud Shape GenerateのShapeにあるInitial Sizeが10になっているので、1に戻しておきます。

image.png

これでスキャッターした10のポイントに対応した10個の雲を確認できます。

image.png

これらの雲の一つ一つには、Cloud IDが設定されています。(Point Attributesに0から9まで割り当てされています)
ColorノードをCloud Shape Generateの後ろに追加してRandom from AttributeでCloud IDを指定します。そうすることで、球体の各セットが異なる色を指定できます。

image.png

image.png

この区分は利便性が高そうです。例えば、For Eachループを使って、形状のそれぞれに個別に操作を実行できるからです。

image.png

For Each Named Primitiveを使用します。

image.png

Block Beginで設定するPiece Attributeを"cloudid"に変更し、Piece ElementsをPointsにします。これで、それぞれの雲を個別に取り出すことができます。

image.png

ランダム化とディティールの追加

For-Eachを利用しなくても複数の雲ごとに操作を実行する方法もあります。わかりやすい例としてRotationのパラメータを見てみましょう。通常ここのパラメータを変化させると全てのグループの雲が一様に回転し同じ方向に向いてしまいます。そこでSet UniformをSet Varyingに変更します。こうすることで、それぞれの雲に対して回転のバリエーションを持たせることができます。

image.png

この変動は、Variationパラメータが利用されます。25がセットされていれば最小と最大として‐25 〜 +25で、実際には50の範囲になります。これを180に設定すると、360の範囲でのランダムな回転になります。

他にもランダム化をより細かく制御する方法があります。

image.png

サイコロアイコンをクリックすると、Attribute Adjust Floatノード(ノード名はクリックした項目に応じて変化します)が自動で追加されます。

image.png

このノードでは各ポイントに回転値を与え、rotationというAttributeに格納します。

image.png

この手法の最高なところは途中の処理でAttribute Wrangleが使用できるところです!

例えば雲の情報は全てAttributeで管理されているので、

@cloudspecies=2;

と記述するだけで、Congestusタイプの雲(背の高い雲)に変更することができます。
グループと組み合わせると、ここは積雲に、ここは背の高い雲に、といった具合に自由自在に雲の形を操作することができます。

Cloud Shape Generate + Cloud Shape Replicate

Cloud Replicateノードを追加して、クラウドのディティールを増やします。

image.png

接続すると元の雲の形状を踏まえた上でさらに細かいディティールが追加されます。

image.png

Cloud Shape Generate + VDB From Particles

これまで作ってきた雲は、言ってみればただのpscaleを持つポイントです。これをボリュームに変換してあげます。

image.png

VDB From Particleノードを接続し、Voxol Sizeを上げて、Fog VDBを選択します。
image.png

Fogに変換できたので、Density情報としてCloud関連の他のツールをすべて使用できるようになります。今回はBillowy Noiseを接続します。

image.png

Lookをオーバーライドしてノイズの状態を確認します。

image.png

image.png

ノイズの解像度が低いので、AmplitubdeやElement Sizeを変更して細かいディティールを出します。
Iterationsを有効にすると、ノイズを複数回繰り返すことができます。Attenuation Settingsを使用すると、ノイズの強度を調整できます。

image.png

image.png

サンプルファイルのCLOUDでは、より詳細な設定が行われています。ランダム化、平坦化、VDBへの変換、Densityの調整、Billowy Noiseの追加、クリップ、いくつかのポストプロセッシング、そしてボリュームの調整など。
レンダリングについてはKarma Cloudマテリアルを使用します。
※動画では30秒で終わっているので、詳しくはhipファイルを見てください。

Cloud Shape Generateノードの他の用途

  • このノードは雲以外の形状作成にも利用できます
  • Bubble RemeshやCopy to Pointsを適用することで、ユニークな形状を生成可能です

Bubble Remesh

Bubble Remeshを使用して、ポイントクラウドをリメッシュすることができます。そのままだと縮んでしまうので、pscaleをWrangleなどで2倍にします。

@pscale=@pscale*2;

image.png

Copy to Points

Copy to Pointsで2番目の入力にTorusを使用した例

Attribute Randomizeノードを使用して、コピーしたジオメトリのオリエンテーションをランダム化しています。

image.png

まとめ

Cloud Shape Generateノードを使ってリアルな積雲の形状を生成したり、クリエイティブな形状を作成したりできます。パラメータを調整し、他のノードと組み合わせることで、様々な表現が可能です。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?