Amazon Sumerian Tutorial 20:Physics Part 1

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

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

ここで学ぶのは、

・Rigid Body component

・Collider component

・Translation component

・Entities panel

の4つです。

はじめに

Sumerian では、物理的要素を生成するコンポーネントが主に 2つ あります。

それは、Rigid Body component と Collider component です。

Rigid Body component は、多くのプロパティを持っていますが、

大きな役割は、Entity に重力を追加することです。

Collider component は、Entity 間の衝突判定を追加することができます。

両方とも物理的振る舞いを Entity に与えることができます。

それでは、進めていきましょう。

1. シーン作成

まず、シーンを作成していきます。

① ダッシュボードから Default Lighting をクリック。

② シーン名を「Physics Part」に設定。

① ダッシュボードから Default Lighting をクリック。

② シーン名を「Physics Part」に設定。

③ Create をクリック。

2. シーン内の環境設定

ここでは、Entity を追加したり、位置を変更したりして環境設定を行っていきます。

親となる Entity の作成

① Create Entity を選択。

① Create Entity を選択。

② Entity を追加。

③ Entity 名を「Table」に変更。

③ Entity 名を「Table」に変更。

Floor の作成

① Create Entity から Box を追加。

① Create Entity から Box を追加。

② 名前を「Floor」に変更。

③ Transform のScale 値を (20, 1, 40) に設定。

③ Transform のScale 値を (20, 1, 40) に設定。

④ Inspector パネルから Add component を選択し、Collider を追加。⑤ Friction と Restitution の値を 0 に変更。

④ Inspector パネルから Add component を選択し、Collider を追加。

⑤ Friction と Restitution の値を 0 に変更。

Friction は、摩擦の値を調整できる設定項目です。

今回は、ボールのスピードを落とさないようにするために、値を 0 に設定しています。

Restitution は、物体のはねかえりを調整できる項目です。

今回は、ボールが跳ね返らないようにするために、値を 0 に設定します。

Wall の作成

それでは、ボールが落ちないようにするため、壁を作成していきます。

① Create Entity から Box を追加し、名前を「LeftWall」に変更。

② 以下のように Transform を設定。

– Translation : (-9.5, 1.5, 0)

① Create Entity から Box を追加し、名前を「LeftWall」に変更。

② 以下のように Transform を設定。

– Translation : (-9.5, 1.5, 0)

– Scale : (1, 2, 40)

③ Collider コンポーネントを追加。④ Friction を 0 と Restitution の値を 0.5 に変更。

③ Collider コンポーネントを追加。

④ Friction を 0 と Restitution の値を 0.5 に変更。

⑤ LeftWall を 複製し、名前を「RightWall」に変更。⑥ X translation の値を 9.5 に設定。

⑤ LeftWall を 複製し、名前を「RightWall」に変更。

⑥ X translation の値を 9.5 に設定。

⑦ RightWallを複製して、「TopWall」に名前変更。⑧ Transform を以下のように変更。– Translation : (0, 1.5, -19.5)– Scale : (20, 2, 1)

⑦ RightWallを複製して、「TopWall」に名前変更。

⑧ Transform を以下のように変更。

– Translation : (0, 1.5, -19.5)

– Scale : (20, 2, 1)

キャンバス内は以下のようになっているはずです。

⑨ 最後に、ここで作成したEntityを Table の子要素にする。

⑨ 最後に、ここで作成したEntityを Table の子要素にする。

3. Ball の追加と設定

① Table を選択し、X Rotation の値を 36 に変更。

② Create Entity から Sphere を追加し、名前を「Ball」に変更。③ Transform を以下のように設定。– Translation : (0, 8.5, -8.5)– Scale : (1.0, 1.0, 1.0)

② Create Entity から Sphere を追加し、名前を「Ball」に変更。

③ Transform を以下のように設定。

– Translation : (0, 8.5, -8.5)

– Scale : (1.0, 1.0, 1.0)

※画像は、Scale が 1.5 ですが、記述どおり 1.0 に設定してください。④ Collider コンポーネントを追加し、以下のように設定。– Shape : Sphere– Friction : 0– Restitution : 1

※画像は、Scale が 1.5 ですが、記述どおり 1.0 に設定してください。

④ Collider コンポーネントを追加し、以下のように設定。

– Shape : Sphere

– Friction : 0

– Restitution : 1

⑤ Rigit Body コンポーネントを追加し、Mass の値を 2.5 に設定。

⑤ Rigit Body コンポーネントを追加し、Mass の値を 2.5 に設定。

⑥ Material の Color を以下のような色に設定。

⑥ Material の Color を以下のような色に設定。

実行ボタンをクリックして、実行してみてください。

ボールがフロア上転がるはずです。

私の場合は、フロア上をきちんと転がりませんでしたが、、、

4. Bumper の作成

まずはじめに、Table の X Rotation の値を 0 に戻します。

① Create Entity から Cylinder を追加し、名前を Bumper1 に変更。

② Transform の値を 以下のように設定。

– Translation : (-4.75, 1.5, -8)

– Rotation : (90, 0, 0)

① Create Entity から Cylinder を追加し、名前を Bumper1 に変更。

② Transform の値を 以下のように設定。

– Translation : (-4.75, 1.5, -8)

– Rotation : (90, 0, 0)

– Scale : (2, 2, 2)

③ Material の Color, Emissive, Ambient を以下のような色に設定。

③ Material の Color, Emissive, Ambient を以下のような色に設定。

④ Bumper に Collider コンポーネントを追加し、以下のように設定。– Shape : Cylinder– Friction : 0– Restitution : 2

④ Bumper に Collider コンポーネントを追加し、以下のように設定。

– Shape : Cylinder

– Friction : 0

– Restitution : 2

⑤ Bumper を Table の子要素として入れ込む。

⑤ Bumper を Table の子要素として入れ込む。

再度、Table の X Rotation を 36 にして実行してみてください。

5. Bumper の複製

前回と同様に Table の傾きをリセットします。

① Entities パネルで Bumper1 を選択し、複製を 2 回行う。

① Entities パネルで Bumper1 を選択し、複製を 2 回行う。

② 3 つの Bumper を以下のように配置。

③ Table の傾きを 36 に戻す。ボールの位置を Bumper に当たるように調整して実行してください。

実行の様子は以下の通りです。

今回、私が実行した際には、ボールがフロアの下まで落ちてしまい、

きちんと実行されませんでした。

衝突判定の位置を変更したり、範囲を広げたりしてみましたが、

どれも上手くいかなかったです。

そこで、はじめから作り直してみたところきちんとなりました!

原因はよくわかりません。。。

前回と違うところと言えば、Uniform Scale にチェックを入れていないところなので、

もしかしたら原因はチェックを入れているか入れていないかかもしれません。

実行成功した様子は以下から見ることができます。

今回のチュートリアルは以上です。

お疲れ様でした。

この記事を書いた人

aws-recipe-user