ともさんのHP >プロブラミング >JavaFX >JavaFXのMeshViewに衝突判定を付加

JavaFXのMeshViewに衝突判定を付加

布(クロス)シミュレーションの際に、物や人の体に触れたら布がその物体に沿って変形するよう、衝突判定を考えました。
他に良い方法があるかもしれませんが、とりあえず下のような結果を得ることができました。
このページでは衝突の判定方法と、移動方法について書いています。
JavaFXクロスシミュレーション

広告


TriangleMesh同士の衝突を考える

布側、物体側、ともにMeshViewを構成する単位の三角形、TriangleMesh同士の衝突として考えることにしました。上の動画では物体側 も細かな三角形で構成されていますが、平らなテーブルなど、大きな三角形との衝突を考えると、この方法ではうまくできないと思います。
布の衝突判定


衝突判定

1、中心点同士の距離を測り、設定値以内である
2、物体側3角形と布側中心点の距離を測り、設定値以内である
の条件が揃えば衝突したと判定するようにしました。
1の条件としては、サンプルでは距離10以内にしています。布の格子がが10で切ってあるためですが、正確ではないし、物体側の三角形が大きいとこの方法は使えません。
正確に判定するには、物体側の三角形を負の方向に押し出した立体を作り、この中に布側三角形の中心点が含まれているかどうかを見るのが良いと思います。
三角形の立体

三角形平面と点の距離は、中心点間のベクトルと物体側法線ベクトルの内積で求めることができます。
計算で得られる距離は絶対値なので、正負の判定は、中心点間のベクトルと物体側法線ベクトルの角度を測り、90度以上であれば負と判定します。
衝突判定は距離0〜-10以内としました。負の距離は三角形の面の裏側、すなわちめり込んでいることを示します。
布のシミュレーション


布の移動

衝突と判定したら、布側三角形を、物体側3角形と布側中心点の距離だけ移動します。
判定時に距離は測っているので、これを流用すればOk。
すべてのTriangleMeshの組み合わせで実施しますが、ダブって判定してしまうと移動しすぎになるので、1度移動した布側三角形は次回の計算からは外します。

最終更新日: 2017-08-10 16:12:52

ともさんのHP >プロブラミング >JavaFX >JavaFXのMeshViewに衝突判定を付加

このエントリーをはてなブックマークに追加
広告
おすすめ記事
新着ページ

大正時代の洋裁型紙  
蜂舎一号の失敗  
Fusion360で木工  
風呂の焚き口を修理  
柿渋染め  
ヒョウタンの乾燥  
男性用原型でシャツを自作  
温室の研究  
スリットカメラアプリケーション  
ゴアテックス生地の入手方法  
洗濯物干しハンガーの自作  

私の他のサイト

ともさんの箱庭(ブログ)
家庭菜園
3D-CAD
洋裁CAD

いいねなど

 RSS 
PageSpeedInsights
html5チェック

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます