Blender animation_nodesの初心者向け基本操作2【オブジェクトの複製】

本ページには、プロモーションが含まれています。

f:id:TomoG:20200304162933j:plain

本記事ではBlenderのanimation_nodesの使い方の中でもオブジェクトを複製させる方法についてご紹介していきたいと思います。

参考動画

www.youtube.com

本記事は上記の動画を参考にしていますが、バージョンの違いなのか上記の動画のように行うことはできません。

なので、それについての回避方法を含めて本記事ではご紹介していきたいと思います。

オブジェクトを複製する方法

前提の状態

f:id:TomoG:20200304145927p:plain

まず上図が前提の状態となっています。スザンヌを1体追加し、アニメーションノードでは、ノードでスザンヌを読み込みその位置を出力しているだけのものとなっています。

もし、このノードの意味が分からない場合は前回の記事からご覧ください。

この状態から本記事の説明を開始していきたいと思います。

複製をしてくれるノードを追加

まずはオブジェクトの複製をするために複製をしてくれるノードを呼び出します。

f:id:TomoG:20200304151533p:plain

上図のようにanimation_nodes上で【Shift + A】でオブジェクト>Instancerを追加してください。

f:id:TomoG:20200304151637p:plain

そして、上図のようにノードをリンクさせてください。この状態だとまだ複製はされないためご注意ください。

上図の赤線部分の【ソース】は複製したいものをリンクさせてください。本記事だとスザンヌを複製したいため、スザンヌのオブジェクトをインプットしてくれるノードをリンクさせています。

上図の緑線部分の【Instances】は複製する個数を表しています。ここで、複製したい個数を直接入力しても問題ありませんが、位置の移動と連動させたいため、ここにノードを追加していきます。

複製する個数を決定

f:id:TomoG:20200304152514p:plain

本記事では一番簡単な平面に複製する方法をご紹介します。

まず上図のようにメッシュ>Generators>グリッドの順で選択してください。

f:id:TomoG:20200304152615p:plain

すると上図のようなノードが追加されると思います。

このノードは平面を出力しているノードで

・X/Y Divisions:X/Yの分割数

・長さ/幅:X/Yの距離

を表しています。

f:id:TomoG:20200304152818p:plain

次に、このメッシュから頂点数を取得するため、上図のようにメッシュ>Mesh Infoを選択して追加してください。

f:id:TomoG:20200304152855p:plain

そして、追加されたMesh Infoと前節で作成しておいたObject InstancerのInstancesをリンクさせようとすると、上図のようにGet List Lengthが自動で挿入されると思います。

もし自動で挿入されるのが嫌な場合は、List>Get Lengthから追加してリンクさせてください。

 

この追加したノードの説明として、メッシュ情報を分割して、その中から頂点数をListとして出力。

その頂点数のリストから長さ、つまり個数を出力して複製する個数とリンクさせています。

なので上図の例では合計10×10の100個複製することになります。

複製した後の位置決定

前節で複製しましたが、このままだと複製したものが全て同じ位置にあることになります。なので、平面の頂点ごとの場所に割り振っていきたいと思います。

f:id:TomoG:20200304153659p:plain

上図のように位置の場所は全てVectorで表現されているため、そのままObject Transforms Outputの位置にリンクさせて問題ありません。

f:id:TomoG:20200304153747p:plain

すると上図のようにスザンヌを大量に複製し配置できたと思います。

これで完了となります。

余談1:参考動画について

f:id:TomoG:20200304154129p:plain

参考動画では上図のようになっていると思います。上図のInvoke SubprogramとLoop Inputが入っていると思います。

f:id:TomoG:20200304154435p:plain

このInvoke SubprogramとLoop Inputは上図のように対応しています。

この当たりはプログラミングをやったことがある人なら引数と関数名と同じような関係といえば分かると思います。

プログラミングをやったことがない人は、上図の各矢印のように対応したもので、動作にはあまり関係のないものとなっています。しかし、これがあると複雑になりやすいノードを綺麗にまとめることができます。

 

使い方は簡単で、Invoke SubprogramはSubprogram>Invoke Subprogramから、Loop InputはSubprogram>Inputで追加してください。

f:id:TomoG:20200304155351p:plain

次に上図の右の赤線部分のように追加したLoop Inputの下部ある名前を適当な名前にしてください。

名前を決めた後、上図の左図の赤線部分にあるInvoke SubprogramのChooseボタンを押してください。

f:id:TomoG:20200304155513p:plain

すると、今まで作成してきたLoop Inputが出てくると思いますが、先ほど決めたLoop Inputの名前を選択してOKを選択してください。

f:id:TomoG:20200304155558p:plain

次に上図の赤線部分にある+ボタンを押すことで、新しい値を追加することができます。

+ボタンを押した、どのような型にするかを選択することができます。

本記事ではあれば複製したいオブジェクトのリストと複製したオブジュエクトの置き場所を追加したいと思います。

なので

・複製したいオブジェクトのリスト = Object List

・複製したオブジェクトの置き場 = Vector List

となるため、その2項目を追加してください。

f:id:TomoG:20200304155823p:plain

すると上図のようになると思います。これが本章の最初でご紹介したようにものとなっています。

後は同じようにこのノードにリンクさせていってください。

本記事の内容では行う意味は薄いと思ったため省きましたが、覚えておくと非常に便利な機能となっています。

余談2:応用

本記事では平面(Grid)を生成して、その生成した平面の頂点の上に並べていくというものでした。

これを応用すると、自分の好きなメッシュの頂点の上に置けるようになります。

f:id:TomoG:20200304161252p:plain

例えば上図の赤枠部分のように変更します。オブジェクトのCircleは、オブジェクト追加の円を回転しただけのものとなります。

Mesh Object InputはMesh>Mesh Inputから追加することができます。

f:id:TomoG:20200304161539p:plain

そうすると、上図のように円の頂点に沿った並びをすることができます。

このように自分の好きなように変更したメッシュを使って複製していくというのが主な使い方だと思います。

 上記のツイートで貼った動画に移っているオブジェクトは、本記事と同じような手法で複製しているため、様々な用途で利用できるとご理解頂けると思います。


本記事の内容は以上となります。

animation_nodesで複製は結構行う操作であるため、必ず本記事の方法は覚えておくようにしてください。

本記事は以上です。お疲れさまでした。