はじめに
先日マトリックスを見るという記事を書いた時にアフィン変換について触れた。
これは matrix @ vector という演算のときに出てくる。平行移動やスケーリング、回転などを可能にする。
やはり気になっていて、少しドキュメントをチラチラ見てるとまさしくアフィンというワードが Iterateというノードで出てきたので見てみる
オフィシャルドキュメント
機能
このノードは入力された頂点、辺、面に対し反復的にアフィン変換を適用する。与えられた matrix M
と vertex ‘V’は新しい V
、M * V
、M * M * V
などなどを生成する。
もしいくつかの matrixが入力に与えられたらそれぞれの反復で与えられたすべての matrix を入力された頂点へ適用する。もし1つの頂点とN個のmatrixが渡されたら最初の反復で N個の頂点を生成し、2番目の反復で N*N以上、続く。となる。
ノート1 ソースとなる頂点のセットは常に outputの asisに出力される。最小の反復数0の状態、このノードは入力をただ出力にコピーしただけ。
ノート2 このノードの再帰的な性質により大きな反復数や複数の matrix入力は多くのデータを生成する。例えば100個の頂点と10個のmatrix、反復数4で指定した場合。100 + 10100 + 10 * 10100 + 10 * 10 * 10 * 100 + 0 * 10 * 10 * 100 = 1111100頂点となる。
ノート3 このノードは常に1つのメッシュを生成する。それをパーツに分解するには、Separate Loose Parts ノードを使う。
入力
このノードは下記の入力を持つ
- Matrix
- Vertices
- Edges 空(未接続)または入力した頂点セットに対応するエッジセットの数を示す。
- Polygon 空(未接続)または頂点セットに対応するポリゴンセットの数を示す。
- Iterations 反復数。もし配列が渡されたら、最初の値が最初の頂点で使用され、2番めは2番めの頂点に使用される。3番目は3番目などなど
パラメータ
このノードは iterations
というパラメータがある。このパラメータは反復処理の数を定義する。最小値の0は反復せず入力をそのまま出力に渡すことを意味する。
出力
- Vertices(頂点)
- Edges(辺)
- Polygons
- Matrixes ソースメッシュから生成されたコピーに適用される Matrix
もし Edges や Polygons入力が未接続なら対応する出力は空となる
例
- Vertices = Circle
- 反復数 3
- matrix はスケーリングを 0.65、平行移動 X軸 0.3
- Vertices = オブジェクトの頂点
- Cylinder オブジェクト(Vertices 5)
- 反復数 4
- matrix はx,yスケーリング 0.6、平行移動 Z軸1
- Vertices = Box
- 反復数 3
- 2つのmatrix
- Vertices = Box
終わり
最後に
複数 Matrix 辺りから迷子になりっぱなり。
勉強しておけばよかったなぁ