1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

A-FRAME: 物理演算でボーリングっぽい動きを実現してみる2(ボールの形状)

Posted at

A-Frameをつかって物理演算ができるようにしてみます。
今回はボールの形状を検証します。

ボールは球体なのでsphereなのですが、変更したらどうなるのか試してみます。

例1)auto

autoは使用可能な形状から自動的に選択します。
sphereが選択されるのでしょう。
shape1.gifdemo
前回と差はなさそうですが、debugモードでワイヤーフレームも表示させて確認してみます。
shape2.gifdemo
sphereが選択されています。

例2)primitive

primitiveは平面/円柱/球。対応するAフレームプリミティブで自動的に使用されます。
こちらも自動的にsphereが選択されるのでしょう。
shape1.gifdemo
やはりsphereでした。
autoと差はあるのでしょうか、もう少し複雑な形状で試すと違いがわかるかもしれません。
追々、ピンにも形状を設定して試してみたいと思います。

例3)sphere

sphereにsphereを設定してもsphereでしょうが、とりあえずやります。
shape1.gifdemo
やはりsphereでした。
sphereの説明には、boxを参照してください。sphereRadiusオプションを追加します。とあります。
box云々はちょっと置いておいて、sphereRadiusを試してみましょう。
とりあえずsphereRadiusに1を設定してみます。
shape1.gifdemo
浮きました。
どういう事でしょうか、デバッグモードにしてみましょう。
shape3.gifdemo
なるほど、本体の球よりも大きな球状の当たり判定ができているようです。
本体のsphereのradiusが0.2で、sphereRadiusが1なので、本体の5倍のサイズの当たり判定ができたようです。

例4)box

boxを試します。
ハルまたはトリメッシュのシェイプと比較して優れたパフォーマンス。カスタムモデルに適合可能。という事です。
よくわからないですが、やってみます。
shape1.gifdemo
sphereの周辺にboxの当たり判定ができました。
同じ力を加えていますが、四角いので転がりにくくなりました。

例5)cylinder

cylinderを試します。
boxを参照してください。cylinderAxisオプションを追加します。
やってみます。
shape1.gifdemo
cylinderが飛んでいきました。
丸いところではなく、角ばったところで転がろうとしてしまっています。
きっとcylinderAxisを設定すれば、丸い側で転がるのでしょう。
cylinderAxisにzを設定してみます。
shape2.gifdemo
丸い側で転がりましたが、sphereと比べて転がりが甘い感じがします。

例6)hull

hullを試します。
シュリンクラップのようなモデルをラップします。凸形状は、Trimeshよりもパフォーマンスが高く、より適切にサポートされていますが、動的オブジェクトとして使用すると、パフォーマンスに多少の影響がある場合があります。
説明はよくわからないですが、hullという単語には殻や外皮といった意味があるようです。
shape1.gifdemo
sphereより多くのポリゴンが使われていて、処理落ちがおこっています。
パフォーマンスに多少の影響があるという説明はこういう事なのでしょう。

例7)mesh

meshを試します。
非推奨です。トリムッシュは、カスタムジオメトリ(a .OBJまたは.DAEfile)に適合するように適応しますが、サポートは非​​常にわずかです。任意のトリムシェイプは、JS物理エンジンでモデル化するのが難しく、特定の他のシェイプを「フォールスルー」し、パフォーマンスに重大な制限があります。
shape1.gifdemo
ボールが消えました。
手前から奥に向かってはいるので力は加わったのでしょうが、レーンとの当たりは発生しないようです。
これも追々みていこうと思います。

例8)none

形状としてnoneです。
衝突ジオメトリを追加しません。shapeコンポーネントまたはカスタムJavaScriptを使用して、衝突形状を手動で追加するときに使用します。
通常はこのままでは利用しないもののようですが、どうなるか試してみます。
shape2.gifdemo
ボールが手前から奥にいかず、真下に落下しました。
球体はレンダリングされていますが、当たり判定をあらわすワイヤーフレームもレンダリングされていません。
物理的な影響を受けないという事のようですが、staticな物体とは異なり重力の影響は受けているようです。

まとめ

ボールは元々sphereを使っているので、あらためて物理演算用の形状を指定する必要はなさそうです。
今後はピンにも物理演算用に形状を設定してみて、どのように形状が自動設定されるかを確認してみます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?