Amazon Sumerian Tutorial 10:Transform Hierarchy

こんにちは、ナレコム前川です。

今回は、Amazon Sumerian の公式チュートリアルの Transform Hierarchy
を進めていきたいと思います。

ここで学ぶのは、以下の5つです。

  • ・Entities パネルについて
  • ・Hierarchy
  • ・3D Transforms
  • ・ローカルとグローバル座標について
  • ・Nesting

それでは、チュートリアルを進めていきましょう。

1. シーン作成

はじめに、シーンを作成していきます。
ダッシュボードから [Default Lighting] テンプレートをクリックします。

シーン名を「Transform Hierarchy」としました。

シーンが開いたら、Entities パネルと Assets パネルから
Camera, Light, Skysphere が含まれていることを確認してください。

2. 3D Transforms

ここでは、3D Transforms について進めていきます。
3D のすべてのエンティティは、Transform を持っています。

Transform には、
・Translation(位置)
・Rotation(向き)
・Scale(大きさ)

の3つの情報が含まれていて、設定することができます。
(これまでのチュートリアルをしてきた方はわかると思いますが、、)

また、上記の3つの情報は X, Y, Z のベクトルを持っています。

例えば、あるエンティティのTranslation(位置)を (5, 0, 0) に設定した場合、
最初に配置された (0, 0, 0) から X軸に +5 移動させたということになります。
※すべてのエンティティは、最初 (0, 0, 0) に配置されます。

-5 で設定すると、逆の方向に移動します。

大まかにまとめると

X軸:左右
Y軸:上下
Z軸:奥行き

というように 3 つの軸から 3D Transforms が構成されているんだよ ということです。

Translation だけでなく、Rotation(向き)や Scale(大きさ)の値も変更して
どのように変化するのか確認してください。

3. ローカル座標/グローバル座標

Transform には、2 つのタイプがあります。
それが、local Transformglobal Transform です。

global Transform は、シーンの中央となる原点を (0, 0, 0) で位置づけを行います。
そして、その原点はシーン全体の中心として位置づけされます。

一方、local Transform は、エンティティ自身の中心を位置づけ、
親子関係のあるものは親要素に対して変換を行うものです。

少しわかりにくいと思うので、実際に実行しながら理解していきましょう。

Create Entity から Box を追加してください。

追加したら、(0, 0, 0) の位置にBoxが配置されるのが分かると思います。

次に、Create Entity から Sphere を追加してください。

追加したら、Scale(1.25, 1.25, 1.25) に設定します。
設定すると以下のようになると思います。

また、Box と Sphere が同じ座標に配置されていることが分かります。

それでは、次に先ほど追加した SphereBox の子要素にします。
Entities パネルから SphereBox にドラッグ&ドロップしてください。

そして、Transform コンポーネントから Sphere の位置を X軸に ” -3 “ 移動させてください。

Box を選択して移動させてみると、Sphere が追従してくることが確認できます。

<実行動画>

移動させた Box の Translation の値と Sphere の Transform の値を比較してみてください。
Box は正確に値が変化していますが、Sphere は変化していないのが分かると思います。

Box の場合

Sphere の場合

Sphere はちゃんと追従して移動したのになぜ!?と思いますが、
この値が Sphere のローカル座標として表示されているため、値が変化しないようです。

しかし、シーン内では実際の位置は元の位置から変わっています。
この変更された位置は、グローバル座標として親要素である Box の Transform に反映されているようです。

まとめると、

グローバル座標は、シーン内でエンティティが実際に移動した値(シーン内での現在の位置)のこと
ローカル座標は、各エンティティの最初に移動・配置された値のこと(もとの位置)

といったところでしょうか。

少し理解しにくいと思いますが、今回は以上となります。
お疲れ様でした。

この記事を書いた人

aws-recipe-user