Amazon Sumerian Tutorial 6:Flying a Drone

こんにちは、ナレコム前川です。
今回は、 Amazon Sumerian のチュートリアルの Flying a Drone
を進めていきたいと思います。

ここで学ぶことは、

  • エンティティの作り方
  • アセットのインポートについて
  • エンティティに物理的要素を入れる
  • ステートマシンについて

の4つです。

物理的な要素というのは、エンティティに重力をつけたり
物体との衝突ができるようにしたりなどというような感じです。(ざっくり言うと、、、)

このチュートリアルを進めるためには、以下の3つのチュートリアルを行ってください。

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

1. 新しいシーンを作る

まず、はじめに ダッシュボードの [Create scene from template] から [Default Lighting] を選択します。

次に、シーン名を入力します。今回、私は「Flying a Drone」にしました。

シーンが開いたら [Create Entity] をクリックし、
[3D Primitives] から [Box] を選択してください。

選択後のキャンバスには Box が表示されます。

2. 大きさを変更する

[Entities] パネルから Box を選択するか、キャンバス上の Box を選択してください。

次に、[Inspector]パネルから [Transform] を選択、展開します。
展開したら、[Uniform Scale] のチェックを外し、[Scale](10, 1, 2)に変更してください。

3.ドローンの追加

[Import Assets] をクリックし、「Drone」を検索、追加してください。

追加すると、[Assets] パネルに追加されるので確認してください。
確認できたら 「drone.fbx」をキャンバスにドラッグ&ドロップして追加しましょう。

※キャンバスにドローンが追加された時は、Boxに重なって追加されます。
そのため、上図ではドローンが見えるように移動させています。

4. Box の上にドローンを移動する

他のエンティティと重なっている場合は、[Entities]パネルから目的のエンティティを選択します。
まず、[Entities]パネルから [drone.fbx] を選択してください。

そして、[Inspector]パネルから [Transform] を展開し、
[Y Translation]0.75 に設定します。

設定したら、正常に実行できるか確認するため、キャンバス下の再生ボタンをクリックして実行してください。
ドローンのプロペラが回転していればOKです。

確認したら停止ボタンを押して実行終了しましょう。

5.Rigid Bodyコンポーネントの追加

ここでは、ドローンをより現実のモノのように近づけるために重力を追加していきます。

まずはじめに、[drone.fbx] を選択し、[Inspector] パネルの [Add Component] をクリックします。
そして、「Rigid Body」を追加してください。

追加したら [Rigid Body] コンポーネントにある Freeze rotation X, Freeze rotation Y, Freeze rotation Z にチェックを入れてください。

再度、再生ボタンをクリックしてどのような動作をするのか確認してください。

※再生すると、ドローンに重力が追加されたため、Boxをすり抜けて落ちていきます。

6. Colliderコンポーネントの追加

ここでは、Boxとドローンに衝突判定のコンポーネントを追加していきます。
衝突判定をつけることでBoxをすり抜けて落ちていったドローンが落ちなくなります。

まず、[Entities]パネルで [Box] を選択してください。
次に、[Inspector]パネルから [Add Component] をクリックし、
Collider」を追加してください。

続いて、[Entities]パネルから [drone.fbx] を選択して
同様の操作を行い、Colliderコンポーネントを追加してください。

追加したら[Collider]コンポーネントにある
Half ExtentsY の値を 0.25 に変更します。

この値を調整するのは、衝突判定の境界がBoxの内側に入りこまないようにするためです。

それでは、再生ボタンをクリックして動作を確認しましょう。

確認したら停止ボタンをクリックしてください。

7. State Machineコンポーネントの追加

ここでは、ドローンを動かすプログラムを作っていきます。
また、動かす上でキーボードで操作できるように設定していきます。

それでは、[Entities]パネルで [drone.fbx] を選択してください。
次に、[Inspector] パネルから [Add Component] をクリックし、
State Machine」コンポーネントを追加します。

追加したら、[Drop behavior] の横にある+ボタンをクリックします。

以降は、State Machine で動作の設定を行っていきます。

8. 垂直移動の操作設定

[Detail] の名前を「Vertical Movement」に変更し、
[Selected State] の名前を「No movement」に変更してください。

その後、[Add Action] をクリックします。

Key Down」を検索し、追加してください。

追加後、[Inspector]パネルの Key Down の KeyW に変更します。

これで垂直方向の移動の操作ができるようになりました。

9. 動作のトリガーを作る

ここでは、ドローンが飛ぶ際のトリガーを作っていきます。

State Graph の左上にある [Add State] をクリックし、新しく追加します。
追加したステート名を「Move Up」に変更し、[Add Action] をクリックします。

次に、「Key Up」を検索して、追加します。

Key Up の KeyW に変更してください。

変更したら、State Graph からステート同士を矢印でつなぎましょう。

設定ができたら、State Graph は閉じずに再生してみましょう。
再生すると、ドローンは動きませんが、動作しているステートの周りが青くなるのが確認できます。
w ボタンを押して動作が切り替わるのを確認してください。

10. 垂直移動の作成

ここでは、wボタンが押された際に垂直に力を加えてドローンを動かすような設定を行っていきます。

まず、Move Upを選択し、Add Action から「Apply force on rigid body」を検索、追加してください。

追加したら、[Apply force on rigid body] の Y Force15 に設定します。

再生ボタンを押して、State Graph の動きを確認しながら
操作を行った際のドローンの動きを確かめてみてください。

w ボタンを押すと、ドローンが上昇し、押すのを止めると落ちてくるはずです。

11. 左の水平移動の作成

ここでは、これまで作ってきた垂直方向のState Machine をコピーして編集することで
水平方向の移動の作成を行っていきます。

[Assets]パネルのバーからState Machine のアイコンを選択します。

選択後、 Vertical movement State Machine を複製しましょう。

※今回のように元の State Machine から新しく State Machine を作成したり
別のエンティティに用いたりする場合には、複製することは忘れないでください。

複製すると、Vertical movement 2 が [Assets] パネルに表示されるはずです。

表示されたら [Entities] パネルで [drone.fbx] を選択してください。

[Inspector] パネルから [State Machine]コンポーネントを展開し、
先ほど複製した Vertical movement 2Drop Behavior にドラッグ&ドロップします。

そして、Vertical movement 2 のエディタボタンを押して編集を行っていきます。

まず、[Detail] の名前を「Horizontal movement」に変更し、
Move Up ステートを選択した状態で、名前を「Move Left」に変更します。

次に、[Force]Y の値を 0 にし、X-4 に設定します。
最後に[Key]A に変更してください。

12. 右の水平移動の作成

Move Left を選択し、[Duplicate State] をクリックしてください。
複製したら、名前を「Move Right」に変更します。

次に、[X Force]4 に設定し、[Key]D に変更します。

State Graph で Move Right を見える位置に移動させてください。
そして、[No movement] を選択し、[Add Action] から [Key Down] を追加します。
追加したら、一方の [Key] が A でもう一方は D になるように設定してください。

最後に、[No movement] が Set as Initial State であることを確認します。

13. 最終設定

ここでは、操作の変化がきちんと行えるように設定していきます。

State Graph で、On key D down を選択し、Move Right へ矢印を繋げます。
次に、On key A down を選択し、Move Left へ矢印を繋げます。

以上でそれぞれの操作ができるようになりました。

実際に実行してみましょう。
実行動画は以下です。

公開する場合は、公開の仕方をコチラの記事に掲載しています。

お疲れ様でした。

この記事を書いた人

aws-recipe-user