FC2ブログ

頭と尻尾はくれてやる!

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


SceneKitの物理エンジンでオブジェクト間の隙間を設定する

サイズや状況にもよるんだけど、例えば立方体を床に落っことした時に立方体は床に接地してるはずなのに微妙な隙間が見える、、、なんて場合がある。

SCNBoxの場合の隙間

↑SCNBoxオブジェクトならデフォでも問題ないのかもしれないが、

Blenderで作成したオブジェクトの隙間

↑Blenderで作成したオブジェクト(daeファイルでインポート)だとデフォでこんな感じで表示される。なんでやー?!ってくらい隙間あいてる。
ちなみにどちらもサイズ1の立方体。
{
    box.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeDynamic shape:nil];
}
↑SCNBoxオブジェクトならこれでもいいんだけど、daeファイル経由のオブジェクトの場合はこのnilになってるSCNPhysicsShapeオブジェクトのオプションで指定する。こんな感じ↓
{
    NSDictionary *option = @{SCNPhysicsShapeTypeKey:SCNPhysicsShapeTypeBoundingBox  ,    SCNPhysicsShapeOptionCollisionMargin:@0.0};
    SCNPhysicsShape *physicsShape = [SCNPhysicsShape shapeWithGeometry:box.geometry options:option];
    box.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeDynamic shape:physicsShape];
}
オプション設定時の隙間

↑隙間がなくなった。

オプション設定時の隙間(失敗)

↑SCNPhysicsShapeTypeKeyはデフォでSCNPhysicsShapeTypeConvexHullだったと思うのだが、これだとSCNPhysicsShapeOptionCollisionMarginをゼロにしても隙間はまだ目立つ。

ともかく隙間が気になったらこのあたりをいじってみる。

<< 強化学習(DQN)で3枚板のロボットを歩かせる(3)  TopPage  強化学習(DQN)で3枚板のロボットを歩かせる(2) >>

コメント


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

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1159-27571156




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

FC2Ad