このチュートリアルで使用される3Dモデル:

  

こんにちは、みなさん!

これは、Geometry Nodes modifier in Blender 2.92に関する 2 つの入門ビデオ チュートリアルの 2 番目です。

前のチュートリアルでは、Geometry グループのnodesを調べました(ieモディファイヤ内のジオメトリを修正およびマージするには、TransformJoinを行います); モディファイヤ タブでパラメータを指定するために、Group Input用の入力ポートを作成する機能, およびいくつかのVectorおよびUtilities nodesの使用(Math, 特に) 数学的演算を実行し、情報を結合します。

このビデオでは、Geometry Nodesを”散乱”のパーティクルシステムとして使用するため、別のジオメトリノードの使用、つまり他のオブジェクトの表面上のオブジェクトのインスタンスの分布が表示されます。ただし、このミニシリーズの最初のビデオチュートリアルで説明されているすべてのトピックは、ここで役に立つでしょう。

B3D Geometry Nodes 2 of 2 01

Geometry Nodesモディファイヤを使用すると、それを使用するオブジェクトのジオメトリをポイントジェネレータに変換できます, 表面に分布します(すなわち:その顔に).

これらのポイントは、他のオブジェクトのインスタンスを配置するために使用できます; さらに、Geometry Nodesを使用すると、これらの各ポイントに変換(位置、回転、サイズ変更)を割り当てて、ランダム性を導入することもできます。

これらの操作をリストアップするに当たって、私は特に3つのことを言いました:

  1. ジオメトリをサーフェス上の一連の点に変換します;
  2. これらのポイント内のオブジェクトのインスタンス化;
  3. 生成されたポイントの特性(すなわち属性)を変更し、作成されたインスタンスに影響を与えます.

これらの3つの操作は、ジオメトリノードの数に変換され、私たちはすぐに見ます。

画面に表示されるシーンには、非常に単純なデフォルトのPlaneがあります(したがって、わずか4つの頂点と1つの面によって作られています); さらに、APPENDを使用して、私はいくつかの小石(the “Pebbles”)、石(“Stone 1”)と草の刃を含むオブジェクトの3Dモデルをインポートしました。

便宜上、小石をCollectionにグループ化し、これらのアクセサリ要素をすべて隠し、Outlinerエディタでオフにしています。

B3D Geometry Nodes 2 of 2 02

これらのアセットへのリンクは、ビデオの説明に記載されています。しかし、前のビデオの時計の場合のように、ビデオに従って、学ぶためにこれらのモデルを取得する必要はありません!

Planeを選択し、オブジェクトにGeometry Nodes modifierを追加します。

B3D Geometry Nodes 2 of 2 03

最初の操作を実行するには、平面をサーフェス上の一連の分散ポイントに変換するには、グループの中央にPoint DISTRIBUTE nodeを追加します。

B3D Geometry Nodes 2 of 2 04

画面上では、Planeが消え、一連の点に置き換えられたことがわかります... まあ、実際には、最初の情報が失われていない、確かにそれはまだそこにあります: Geometry Nodesのモデリングの非破壊的な方法では、Geometry Join nodePoint DistributeGroup Outputの間に追加し、2 つのJoin入力のいずれか、Geometry Input (元のPlane)から到着するジオメトリを接続することができます。

B3D Geometry Nodes 2 of 2 05

このようにして、元のPlane (たとえば、地形の外観を与えるために修正やテキスト化が可能)と、その表面に分布するポイントの両方があります。

Point Distribute nodeには、Densityが際立っているパラメータがいくつか用意されており、サーフェス上に分布するポイントの量を直感的に増減できます。

B3D Geometry Nodes 2 of 2 06

前のビデオ チュートリアルでは、モディファイヤ インターフェイスの値を変更できるように、node情報をGroup Inputに接続する方法を説明しました。Point Distribute Density パラメータに対してこれを行うのも意味があります。

次に、上記の 3 つの操作の 2 番目の操作に進めます, 別のオブジェクトをインスタンス化する(またはオブジェクトのコレクション), Point Distributeによって作成された各ポイントにコピーを配置する: 次に、Point DistributeJoinの間にPoint INSTANCE nodeを挿入します。

B3D Geometry Nodes 2 of 2 07

操作の意味は明確です: Distributeはポイントを生成し、Instanceはこれらのポイントから情報を取得して別のオブジェクトのコピーを作成します... はい、しかし、どのオブジェクト?

Point Instance nodeには、単一のオブジェクトまたはオブジェクトのCollectionのどちらをインスタンス化するかを定義できるセレクタがあります; 選択されたモード(Object, 私の場合は), nodeの内側にある空のボックスをクリックして、私たちに興味のあるオブジェクトを選択することができます(“Stone 1”, 私の場合は).

B3D Geometry Nodes 2 of 2 08

重要な注意: 正しい結果を得る, インスタンス化するオブジェクトのRotationScale変換を適用していることを確認します;これを行うには、選択してCTRL Aキーを押し、画面に表示されるApplyメニューからRotation and Scale”を選択します。

次に、必要に応じてPoint DistributeDensityパラメータを調整し、適切な結果が得られるまで調整します。

B3D Geometry Nodes 2 of 2 09

第3の基本的な操作は、さまざまな点のパラメータを修正することです(そして 生成されたインスタンス); 実際には、さまざまなタイプの操作を実行することが可能です, そのため、単一のnodeではなく、PointAttributeグループのノードについて話しています。

どちらの場合も、変換ノードはPoint DistributePoint Instanceの間に挿入されます, 作成されたポイントを変更する必要があるため、それらのポイントからインスタンスを生成する前に行います。

たとえば、すべてのポイントに適用する回転から始めましょう: Point DistributePoint Instanceの間にPoint Rotate nodeを追加し、パーティクルの回転角度を変更します。

B3D Geometry Nodes 2 of 2 10

結果は、このnodeなしで得られたものよりもすでに優れていますが、回転にランダム性を導入する方法と、なぜ、これらのインスタンスのサイズにも?

Attribute Randomize nodeに助けられます(もちろん"Random",から), Point RotatePoint Instanceの間でカスケードできます(実際には、この処理フローは、さまざまなnodes間のリンクされたGeometry ポートを観察することによって確認できるため、常にジオメトリ上で行われます).

B3D Geometry Nodes 2 of 2 11

Attribute Randomizeは、ポイントの属性にランダム性を導入できるnodeです, node"Attribute"フィールドに正確に指定されます。

私たちが持っている粒子の基本的な属性の中で、言うまでもなく、"rotation""scale"、それでは、まずこのフィールドに"rotation"を書き込み、Max値を変更しましょう…

B3D Geometry Nodes 2 of 2 12

ノードは実際にはパーティクルの方向にランダム性を導入しますが、これらはすべての軸を中心に回転しますが、これは正確には興味深い結果ではありません: Point Rotateで指定されたベース方向を維持し、垂直軸の周りでのみインスタンスをランダムに回転させたいと考えています。

この問題を解決するには、操作値のタイプをFloat (3 つのXYZ 軸で一様に作用するコンマを持つ数値) からVectorに変更する必要があります, ここで、変更する軸のMAXを除くすべての値に 0 を設定できます…

B3D Geometry Nodes 2 of 2 13

しかし、この操作でさえ、問題をもたらします:私たちはPoint Rotateによって与えられた回転を失っています!

B3D Geometry Nodes 2 of 2 14

これは、ある意味で優先順位の問題です: Point DistributePoint Instanceの間では、実際には、まずAttribute Randomizeしてから、Point Rotateを配置する必要があります。

B3D Geometry Nodes 2 of 2 15

Attribute Randomizeを複製し、元のPoint Rotateとの間に追加して、Scaleパラメータを変更します(回転と同じように、完全に小文字で書かれると、Blenderはそれを認識しません。).

B3D Geometry Nodes 2 of 2 16

ただし、この場合、すべてのパラメータ最小と最大XYZを修正して、興味深い結果を得る必要があります (また、最小値に 0 を設定しない場合は、オブジェクトは 1 つ以上の次元を失います)。

Scale 属性に関しては、最小スケール係数に 1 つだけ、最大値に 1 つのパラメータのみを使用するように、Floatタイプに戻る方が便利な場合があります...選択はあなたです。

これら 2 つの属性ノードだけで, しかし、1つの幾何学で構成されたオブジェクトからある程度の多様性を得ています: Stone 1.

Point Instanceでインスタンス化するオブジェクトの型をObjectからCollectionに変更し、小石のコレクションを指定すると、物事ははるかに興味深いものになります!

B3D Geometry Nodes 2 of 2 17

ただし、ObjectPoint InstanceStone 1で再設定して、Geometry Nodesで使用できる別の機能を確認してみましょう。

古典的なパーティクル システムでは、ジオメトリのどの部分にパーティクルを作成し、どの部分にパーティクルを作成するかを定義することもできます; それは、特に、Weight Paintingで、表面の様々な部分に(0から1まで)密度値を定義することによって行われます... まあ、私たちもここでそれを行うことができます!

ただし、先に進む前に、重み付けペイント(Geometry Nodeの外側、元のジオメトリで操作)が頂点に作用するため、Planeの 4 つの基本的な頂点では不十分であるため、Planeのサブディビジョンの数を増やす必要があります。

3D ビューでは、Edit Modeに入り、サーフェス全体をかなりの回数だけ細分化します。それではWeight Paint modeに切り替えましょう。

B3D Geometry Nodes 2 of 2 18

B3D Geometry Nodes 2 of 2 19

デフォルトでは、サーフェスは青で表示されます, ie “重量 0”; Point Distribute nodeは、ウェイト 1 のエリアにポイントを作成します, インスタンスを表示する領域にペイントする必要があります。

B3D Geometry Nodes 2 of 2 20

注意: 特定の場所を除くすべての場所にインスタンスを適用する場合は、逆に進む必要があります; この場合、特に、Point Distributeから除外する領域でブラシを使用します(Blenderは、デフォルト名としてGroup”を持つVertex Groupを自動的に作成しますが、"Pebbles"のようなより重要な名前に変更することもできます) 。

B3D Geometry Nodes 2 of 2 21

操作の終わりに, 3DウィンドウでWeightsメニューを開き、Invert”をクリックして、ウェイトを反転します: 現在、ペイントした領域のウェイトは 0 ですが、残りのジオメトリではウェイト 1 になります。

B3D Geometry Nodes 2 of 2 22

明らかに、Weight Paint modeToolタブのWeightパラメータの値を変更し、サーフェスをブラッシングすることで、後でウェイトを変更することを妨げるものは何もありません。0 重み付き領域にインスタンスを挿入しないことを覚えておく必要があります。

Geometry Nodesエディタで、Point Distribute nodeDensityフィールドにVertex Groupの名前を入力します("Pebbles"、私たちの場合。大文字と小文字に注意を払う): 元のサーフェス上のポイントの分布は、私たちが設定したVertex Weightsに比例します。

B3D Geometry Nodes 2 of 2 23

このビデオチュートリアルを終える前に、Blender 2.92Geometry Nodesミニシリーズの概要を説明する前に、オブジェクトのインスタンス化のさらなる例を見てみましょう....しかし、もう一つの変更で。

定義したスキームの中で, 新しいPoint Density nodeを挿入し, Group InputGeometryポートに接続する, 次に、新しい(空の) Point Instanceに接続し、シーンで使用可能な 2 つのPoint Instanceを新しいJoin Geometry nodeに接続します, このノードは、シーン内で既に使用可能なJoin nodeにリンクされます。実際には、結果のジオメトリは、2 つのInstance nodesによって到着した 1 つに結合された元のジオメトリによって与えられます。

B3D Geometry Nodes 2 of 2 24

新しいDistribute nodeでは、同じDensity属性“Stone 1”を設定しますが、Point Instanceでは、インスタンス化するオブジェクトとしてHigh Grassオブジェクトを設定します。

B3D Geometry Nodes 2 of 2 25

必要に応じて、Point Rotate nodeを挿入して、草の刃を正しく向けることができます。

また、Point Scale node (Point RotatePoint Instanceの間)を挿入し、特にVectorモードを設定して、ベクトルで草のサイズのスケール係数を指定できるようにします。

B3D Geometry Nodes 2 of 2 26

Combine XYZ nodeを挿入し、そのVector出力をPoint ScaleFactor (ベクトル)入力に接続してみましょう;草の刃が消え、Combine XYZパラメータの既定値は 0.0 なので、XY を 1.0 に戻します (場合によってはこれらの寸法に対して適切な値を返します)。

B3D Geometry Nodes 2 of 2 27

次に、Combine XYZZ入力を新しいGeometry Inputに接続します; あなたが推測したように、意図は、モディファイアインターフェイスで草の刃の高さを調整することです... しかし、なぜ自分自身を定数値に制限するか、手動でこの値を変更する必要があるのでしょうか?

B3D Geometry Nodes 2 of 2 28

BlenderウィンドウにTimeline エディタを追加し、アニメーションのフレーム範囲を設定します。例: 240 フレーム。

B3D Geometry Nodes 2 of 2 29

フレーム 1 に行きましょう, Zパラメータに 0.0 を設定します (クロックハンドの名前を使用して前のエピソードに示されているように、その名前を変更できます); このパラメータの値を右クリックし、アニメーションキーフレームを記録するには“Insert Keyframe”を選択します。

B3D Geometry Nodes 2 of 2 30

アニメーションのフレーム 240 に移動し、Z の値を必要に応じて変更し、アニメーションの最後のフレームにこのパラメータのキーフレームを挿入してみましょう。

B3D Geometry Nodes 2 of 2 31

TimelinePlayを押して、アニメーションの結果を見るだけです。

B3D Geometry Nodes 2 of 2 32

B3D Geometry Nodes 2 of 2 33

まあ、それはあまりにも、このチュートリアルのためのすべてです!

また近いうちにお会いしましょう!

B3D Geometry Nodes 2 of 2 34