FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


SCNPhysicsSliderJointで二つのオブジェクトをカチッと固定する

SCNPhysicsSliderJointはjoint部分に目標になる速度や角速度与えて直線運動や回転運動させたりなんて面白いことができる(他のSCNPhysicsHingeJointなどにはない)。それに関連して、
minimumLinearLimit
maximumLinearLimit
minimumAngularLimit
maximumAngularLimit
なんてプロパティがある。
直線運動と回転運動の可動範囲を指定できるんだけど、リファレンスによるとmin,maxともゼロにすると固定できるとある。
つまり、上記4つの値を全てゼロにすると二つのオブジェクトを固定できることになる?!
ということで試してみた。
で、なんでこれがうれしいかというと、、、物理エンジンを使う時により描いてる形状に近い形状で物理演算できるからなのよ。



↑こんな感じ。(1)から(3)までは
sceneView.debugOptions = SCNDebugOptionShowPhysicsShapes;
でPhysicsShapesを表示させてる。

(1) Blenderなどで作成したL字型のオブジェクトでオプションのSCNPhysicsShapeTypeKeyを
SCNPhysicsShapeTypeBoundingBox
とした場合。物理演算する形状がL字よりだいぶ大きい直方体になってる。

(2) 同じL字型オブジェクトに対しオプションを
SCNPhysicsShapeTypeConvexHull
にした場合。形状の一番外側部分を拾ってくれる(いわゆる凸包)ので大抵はこれでもよかったりする。ただL字の凹んだところまで物質があるような扱いになる。
これが許せない場合もあるかもしれない。そこで、、、

(3) 二つの直方体をSCNPhysicsSliderJointで接続した場合。それぞれの直方体に対して物理演算が行われている。

(4) 通常表示に変更


ただ動画をよく見ると接触した時にjoint部分がすこしずれてる場合がまれにある。
こういうのや処理時間なんかが許せる場合にはいい方法かもしれない。

<< ヨッピーたこ焼きに挑戦してみた  TopPage  脚の先にホイールを付けた3枚板ロボット >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1169-349e333d




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad