コンテキスト
Cavalry のアーキテクチャは、驚くべきユニークなことを実現しています。表面的には、より少ないレイヤーでより多くのことが可能になっていますが、内部では実際に何が起こっているのでしょうか?
理解すべき核となる概念はインデックス(Index)です。インデックスとは、単純に別のレイヤーに渡される数字です。Duplicator の基本的な役割の 1 つは、生成する Shape にインデックスを割り当てることです。このインデックスは、位置、回転、色、辺の数など、あらゆるものを決定するために Duplicator や他のレイヤーで使用できます。
例えば、Duplicator を使って 10 個の矩形の列を作成したとします。

この場合、Duplicator は 10 個のインデックスを生成し、Distribution 設定に基づいて各複製 Shape に位置を提供します(本例では Grid で、Height が 350、Size Mode が Fit)。Index:0(最初のシェイプ)には Position Y が 0 として割り当てられ、Index:9(10番目/最後のシェイプ)には Position Y が 350 として割り当てられ、その他の Shape はその間に均等に分布します。
では、この Duplicator を2つ目の Duplicator に追加するとどうなるでしょう?ここでは2つ目の Duplicator を Grid に設定し、Count X = 5、Count Y = 1 としています。

インデックスは2つ目の Duplicator のシェイプに流れ込みます。Duplicator が複製されるにつれて、このインデックスカウントはグラフ内を流れ続けます。
以下は実践的な例です:
- Text Shape を作成します。
- String 属性の隣にある
+ボタンを使用して String Generator を追加します。 - Generator を Value に設定します。
- Text Shape を Duplicator に追加します。
- Grid Distribution で Count を X = 1、Y = 10 に設定します。
結果:ゼロの列。

表面的には、特に興味深いことは何も起きていません 😉 しかし、それは Duplicator にインデックスを使って何かするよう指示していないからに過ぎません。では、Number 属性に渡すランダムな値を生成するよう指示してみましょう。
結果: 各数字は 0 から 10 の間のランダムな数値です(デフォルト)。

Duplicator が各複製にランダムな数値を渡します。
上記が可能なのは、Duplicator が各数値にインデックスを提供し、Random Behaviour がそのコンテキストを活用しているからです。
- Duplicator は String Generator にその Number を 10 回要求します。
- 次に String Generator は Random にその Number の値を 10 回要求します。
- その 10 回の間、Random は Index 値として 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 を受け取ります。
- 各インデックスに基づいて、Random は Seed 値を変更して異なる結果を生成します。
この考え方は Cavalry のあらゆる属性に適用できます。同じ方法で Polygon の辺の数に影響を与えてみましょう。
- Polygon Shape を作成します。
- それを Duplicator に追加します。
- Random Behaviour を追加します。
- Minimum を 3、Maximum を 5 に設定します。
- random.id→polygon.sides を接続します。

各シェイプに 3 から 5 の間のランダムな辺の数が与えられます。
このコンセプトは、Noise Deformer、Color、Stroke Width、Path Length、Blur Filter、Asset Array、Dynamic Rendering など、あらゆるものに使用できます。可能性は無限大です!😎
手動モードへの切り替え
「手動モードへの切り替え」という見出しのセクションこれらのインデックスの割り当て方法を手動で制御したい場合もあります。これには2つのレベルがあります。1つ目は、Duplicator が「受信インデックス」を使用しないようにすることです。
矩形グリッド(複製された Duplicator)の例で説明します:
- アトリビュートエディターで、Duplicator1 の Advanced タブの Use Index Context のチェックを外します。

これで Duplicator1 からのインデックスが2つ目の Duplicator に循環して渡されるようになります。
この考え方をさらに推し進めるには、Context Index Utility の助けが必要です。