はじめに
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から変更するため、ここでは変更しない。
- 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
のようなデータパスの取得方法
- 取りたい項目上で右クリック→Copy Data Path
- あとは貼り付け