
配列って何で思ったとおりに並んでくれんことが多いんやー!
横に均等に並ばせたいのに、
斜めになったり…




十字エンプティを中心に輪を描くように並ばせたいのに、
バラバラになってみたり、
とんでもないサイズになってみたり…









配列なんて…
大嫌いやー!!!!!
位置や向きがおかしくなる原因は原点
配列は、オブジェクトの「形状」を中心に行っていると思いがちですが、そうではありません。


この例の場合であれば、「うさぎ」という形を元に配列していると思いがちですが、違います。


オブジェクトの中心である「原点」を元に配列を行っています。
原点は、目立たないので普段はあまり気にしていないかもしれませんが、実は向きがあります。
この原点の向き自体が、オブジェクトのローカル軸の向きを決めています。
この原点が、配列を行う際にとても重要な役割をしています。
原点についての詳細は下記記事を参照してください。


通常の配列(倍率)
試しに、原点の方向がワールド軸と同じ状態で、通常の配列(倍率)を行ってみましょう。


特におかしくなることはなく、期待通りX軸方向に配列されました。
では原点の方向をわざと変更してみます。


配列で作成されたうさぎの位置が変わってしまいました。
原点が示すローカル座標のX軸に従っているため、このような結果になります。
もしこのようにローカル座標がワールド座標とずれている場合、どうしたらいいでしょうか。



みんな大好きトランスフォーム!!!
サイドバーのアイテムにあるトランスフォームの回転を確認すると、Zに28.458°とあります。


この回転の値は、ワールド軸に対して、原点(ローカル軸)がどのくらい回転しているかの値になります。
Ctrl+Aでメニューを開き回転を選択します。


サイドバーのトランスフォームのZの値が0になりました。
原点のローカル軸方向も、ワールド軸と同じになりました。





よく分かってないのに、魔法の呪文みたいに唱えまくってたトランスフォームって、実はこういうことやったんやな
十字エンプティを使った配列
十字エンプティを使った配列の場合、オブジェクトの原点とエンプティの原点の距離と位置関係で配列が行われます。


うさぎのオブジェクトの原点とエンプティの原点の距離(画像の矢印部分)分を、
うさぎのオブジェクトの原点を起点に配列を行います。
結果、このようになります。





あれ?
十字エンプティを使った配列って、十字エンプティが中心になって複製してる感じやないん?


こういうイメージをされている方が多いのではないでしょうか?
結論としては、違います。
恐らく、回転で使うことが多いのでそのようなイメージを抱いてしまったのかと思いますが、起点になるのはうさぎのオブジェクトの原点であり、十字エンプティではありません。
エンプティの原点は、オブジェクトからの距離と位置関係のための目印のようなものです。
では、よく見る「回転」が、どのような仕組みになっているのか確認してみましょう。
よく使われている回転をさせる場合は、うさぎのオブジェクトの原点と十字エンプティの原点を完全に同じ位置にしなければなりません。




同じ位置にあるからこそ、方向に対してだけの配列を行うことができます。
(距離分のズレが発生しません)
十字エンプティを45°回してみます。




もし先ほどのうさぎのお腹に原点を置いたままの状態で、回転するとどのようになるでしょうか?


うさぎのオブジェクトから十字エンプティまでの距離分移動して、45°回転された状態の配列が行われることになります。
意図しない結果が発生しやすく、難しいと感じるのは、こういった仕様のせいかと思われます。



かなりややこしく感じるけど、原点の位置関係をしっかり理解できるようになったら、応用もしていけんで


うさぎのオブジェクトの原点はワールド原点のまま、
十字エンプティを上に持ち上げた状態。
うさぎのオブジェクトの原点と十字エンプティの原点が上下にずれたことで螺旋階段のような配置にすることができます。



ちなみに。
十字エンプティが一般的やから十字エンプティで説明したんやけど、別に十字エンプティである必要はないで。
どんなオブジェクトでもOK。原点さえあればいいから。


十字エンプティの代わりに、立方体を使った配列。
どちらが本命のオブジェクトか分かりにくいので、エンプティがよく使われる理由が納得できます。
サイズがおかしくなる原因はスケール
サイズがおかしくなる現象は、十字エンプティを使った配列の場合で、倍率を使った配列では起こりません。
十字エンプティを使った配列は、オブジェクトの原点と十字エンプティの原点の、距離・方向によって決められていると説明しましたが、実はサイズの違いも関連しています。
サイズは、スケールが基準になっています。
倍率の配列がどのようになるか確認してみましょう。


この画像のケースでは、スケールが0.500となっていますが、サイズに違いは出ていません。
倍率の配列の場合は、うさぎのオブジェクトのみで完結しており、他から影響を受けないためです。
十字エンプティを使った配列のほうを確認してみましょう。


明らかなサイズの違いが出ました。
これは、うさぎのオブジェクトを基準に、十字エンプティが影響を与えて配列を行っているためです。
うさぎのオブジェクトのスケールが0.5なのに対して、十字エンプティのスケールは1.0という差があります。
0.5のうさぎのオブジェクトに、1.0の十字エンプティが影響します。




サイズに0.5の差があるため、配列で作成された2つめのうさぎのサイズは1.0になります。
3つめ、4つめと配列の数を増やすと、
3つめのうさぎは1.5、4つめのうさぎは2.0というサイズになります。
結果として、こういったサイズの差が発生します。


これを解決するには、
またまた「みんな大好きトランスフォーム!」
かというと、必ずしもそうする必要もありません。
もちろん、うさぎのオブジェクトのスケールをトランスフォームしても解決は出来るのですが、
十字エンプティのスケールを0.5にすることでも、サイズの違いをなくすことはできます。





大事なんは、オブジェクトとエンプティのスケールを揃える
このスケールの差をうまく利用すれば、少しずつ大きくなる配列や少しずつ小さくなる配列を作ることができます。









