FC2ブログ

頭と尻尾はくれてやる!

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


SCNPhysicsVehicleでシャーシとホイールの位置関係

SCNNodeをつなぐSCNPhysicsHingeJointやSCNPhysicsSliderJointと同列に(つまりみんなSCNPhysicsBehaviorのサブクラス)SCNPhysicsVehicleなるものがあって何やら車の挙動をシミュレーションできそう、なのがあるなあと思ってたので今更だけどいじってみた。

screenshot of SceneKitVehicle

↑APPLEのサンプルコードにSceneKitVehicleというiOS用アプリがあるのですごく参考になる。

はまったのはシャーシとホイールのつなぎ方。
{
    wheel0.connectionPosition = SCNVector3Make(x,y,z);
}
SCNPhysicsHingeJointの場合と同じような位置関係で接続する(上のコードでx,y,zはシャーシのローカル座標)でいいんだけど、この場合それだけでシャーシとホイールの位置関係が決まるわけではない。
SCNPhysicsVehicleWheelオブジェクトに設定できるプロパティに
suspensionRestLength
suspensionStiffness
などがあって、車体とホイールの間にはスプリングとダンパを持つサスペンションがあるイメージ(頑張ったな!SceneKit!!)。
このふたつをいじった場合の動画がこちら↓



スプリングにかかる力の話なので当然車体の重さなんかも影響する。
このあたりのパラメータを下手に設定するとタイヤが車体から不自然に離れてしまったりする。最初は普通に走ってても、車がひっくりかえったりした時に同じようにタイヤが離れてしまったりする。

なお、APPLEのサンプルコードだとこのあたりのサスペンション周りのプロパティが登場してこないので最初はホント悩んだ。おそらくデフォで設定しなくていい重さや形状になってんのね。

<< Qloneでスキャン→Blender→SceneKitで使う  TopPage  強化学習(DQN)で3枚板のロボットを歩かせる(3) >>

コメント


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

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1161-98f991ad




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

FC2Ad