0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-11-27

A-Frameをつかって物理演算ができるようにしてみます。
ピンに物理的な形状を設定してみて、振る舞いの違いをみてみます。

ピンは細長いひょうたん型で、プリミティブにはそのような形状はありません。
cylinderがふさわしいような気がしますが、自動的に割り当てた場合にどのような形状が割当たるのでしょうか。

例1)shape=auto

autoは使用可能な形状から自動的に選択されます。
shape1.gifdemo
boxが選択されたようです。

例2)shape=primitive

primitiveは平面/円柱/球の内、対応するAフレームプリミティブが自動的に使用されます。
shape2.gifdemo
boxが選択されたようです。
説明にはboxは候補として書かれていないですが、置いておきましょう。

例3)shape=box

boxを設定します。
shape3.gifdemo
ピンの形状にマッチしたboxが設定されました。

例4)shape=hull

hullはシュリンクラップのようなモデルをラップします。
hullという単語には殻や外皮といった意味があります。
shape4.gifdemo
レーンをすり抜けていきました。
ボールにhullを設定した時はレーンを転がっていったので、思っていたのと違う感じがします。

例5)shape=mesh

meshはJS物理エンジンでモデル化するのが難しく、特定の他のシェイプを「フォールスルー」し、パフォーマンスに重大な制限があります。
shape5.gifdemo
hullと同じように、レーンすり抜けていきました。
ボールにmeshを設定した時もレーンをすり抜けたので、この振る舞いはボールと同じように感じます。

例6)shape=none

noneは衝突ジオメトリを追加しません。
shape6.gifdemo
ボールにnoneを設定した時と同様、レーンをすり抜けていきました。

例7)shape=sphere

sphereを設定します。
shape7.gifdemo
ピンは球体とは異なるので、違和感が大きいです。
あと、sphereの中心とピンの中心がずれているように見えます。
boxの場合はboxの中心とピンの中心は一致していました。

例8)shape=cylinder

最後にもっとも有力に思っていたcylinderを設定します。
shape8.gifdemo
cylinderもsphereと同様に、sphereの中心とピンの中心が一致していません。

まとめ

ピンの物理的な形状は、自動で設定するとboxが選択されてcylinderにはなりませんでした。
そして、今回設定した形状はどれもしっくりきませんでした。

今回みえた課題としては、
- sphereとcylinderを設定した時に、ピンと物理的な形状の中心が一致しない原因が何か
- 複合シェイプを利用する事で、中心の不一致に対応する事もできそう(noneの本来の使い方っぽい)
- hullを設定した時の振る舞いがボールとピンで異なる

があるので、次以降で見ていきます。

0
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
0
0