液体やネバネバは Liquid Simulationで作る方が普通なのだろうが、今回はGeometry Nodeで作る方法。
むずい。
方法1
下記動画の内容
レンダリングエンジンはEEVEE。
準備
RenderPropertiesのCurvesの箇所をStripに設定しておく。

Shift + A でMesh – Circleを出す。

そしたらCircleを選択して、TabキーでEditModeに入る。
デフォルトだと画像のようにオブジェクトのOriginは中央にある。

頂点を全選択して、G – X で横に移動させ、さらに R – -90 で回転させる。
下の画像のように原点と頂点群が離れるようにする。

さらに全選択のままFキーで面を張る。
できたらTabキーでEditModeを出る。

次に上のタブのGeometryNodesモードに切り替える(あるいは画面を分割してひとつをGeometryNodesの画面にする)

GeometryNode画面の Newから新規にジオメトリーノードを生成する。

ノードを組む
デフォルトのノードはこれ。

線を出す
まず、左から DistributePointsonFaces ノード – PointstoVerticesノード – ExtrudeMeshノード。

この状態だと、こんな感じの見た目になる。

次にターゲット用のEmptyオブジェクトを出す。

下の4つのノードを追加する。
左上から Positionノード – Scaleノード (VectorMathノードを出してScaleに切り替える)
左下はObjectInfoノード。これにはEmptyを割り当てる。
できたら再度VectorMathを出し、Addに設定して上下2つを接続(ObjectInfoはLocation)
最後にExtrudeMeshノードのOffsetに接続し、OffsetsScaleの値を -1 にする。

この時点で、辺の一端がひとつの箇所にあつまる。Emptyを動かすとこの箇所を調整できる。

次に、SetPositionノードとRandomValueノードを一番後方に接続する。
RandomValueのモードはVectorにし、値を調整してオブジェクトがバラけるようにする。

見た目。

カーブを曲げる
上3つは左から MeshtoCurve – ResampleCurve – SetPosition
ResampleCurveのモードはLengthに。
中段2つはSplineParameter – ColorRamp
ColorRampには3つのストップを配置し、”白黒白”の並びに、さらにモードはCardinalに。
下2つはValueとMultiply(MultiplyはMathノード)
Multiplyの値は -1 に、Valueの値は適当に
それらのノードをMultiplyAddに接続する(これもMathノード)
最後にCombineXYZのZに接続し、それをOffsetに

これでなめらからカーブが作れる。

現時点の全景はこう。

カーブに厚みをつける
とりあえず均等な厚みの場合は、一番最後にあるSetPostionノードを挟むように3つのノードを加える。
左側はSetCurveRadius、右はCurvetoMeshとCurveCircle(この後方の2つがないとRadiusの値をいくらいじっても表示されなかった。)

これでとりあえず厚みをつけることができる。

厚みにランダムさを加えるには下記のように6つのノードを加える。
左2つはIDとCaptureAttribute(モードはSpline)でResampleCurveの前に挿入する。
右はRandomValueとSplineParameter-ColorRampをMultiplyでつなぎ、SetCurveRadiusのOffsetに接続する。

繋いだだけだと厚みがですぎてしまうので、はじめに出していたCurveCircleのRadiusの値を小さくして調整する。(またResolutionの値を小さくすれば頂点数を減らせる)

この状況だとこんな感じ。

ノード全景はこれ。
厚みの箇所でやったのは赤い部分。

方法2
準備
モードをGeometryNodesにする。あるいは、画面を分割して一つをGeometryNodesの画面にする。

Shift + A で何らかのオブジェクトを出し、そのオブジェクトにGeometryNodesを割り当てる(当該オブジェクトを選択して、GeometryNodes画面のNewを実行)

こんな感じになる。

GeometryNodesでノードを組んでいく
上2つの緑は左から Curve Line – ResampleCurveノード。
下の左は CurveCircle
これらをInstanceOnPoint ノードに接続する。

この時点だとこんな感じ。

コメント