[Animation nodes] Object Instancerで作ったObjectが更にランダム数Objectを複製する

AnimationNodes

はじめに

blender.stackexchange.com

Anmation Nodes: ネストされたインストタンスをインスタンス化出来るか?

という質問を発見。

Object instancer で作ったオブジェクトが更にオブジェクトを作ることが出来るか?という質問。

そこで紹介された解決策の一つが面白かったので試して見たと共に、同じ方法を使ってネストされたインスタンスの回転も変えられるか試したらできたのでメモ。

方法

複製するオブジェクトにArray Modifier を設定しておき、Object InstancerはCopy Full Object にしてArray Modifierをそれぞれ独立させる。

あとはArray Modifier をCountをAnimation Nodes から設定する

※Object Attribute Output から設定可能

結果

セットアップ

3D viewport

  • Empty
  • Cube
    • Cube をX方向に移動させたあと、Set Origin → Origin to 3D cursor をおこなって OriginをCubeの位置ではなく世界の中心にしている
    • Cube にArray modifier を追加し、Object Offset には Empty を指定
      • Count はAnimation nodesから変更するため、ここでは変更しない。

最終的にはCubeとEmptyは非表示にしている

Animation nodes

  • 上の段

    • Distribute Matrices でどれだけCubeを作るかを指定している
    • Object Instancer で Cube の複製と、Emptyを複製
      • Copy Full Object にチェックを入れている点に注意
    • Object Transforms Output で配置、複製したそれぞれに対し Array Modifier のCountとObject Offsetを変える為、下のループに渡す
  • 下の段

    • Random Number はArray ModifierがCubeを複製する数。2から10個の間でランダム
    • Float to Integer はRandom Number を整数にしている
    • 6.28 / Array の数で均等に配置されるように回転する量を算出
    • Combine Eulerでオイラー角に変更
    • Object Transforms Output でEmptyの y を回転させている
    • Object Attribute Output modifiers["array].countでCubeを複製
    • Object Attribute Output modifiers["Array"].offset_object でOffset Objectを指定

メモ

modifiers["array].countのようなデータパスの取得方法

  1. 取りたい項目上で右クリック→Copy Data Path
  2. あとは貼り付け
タイトルとURLをコピーしました