ともさんの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に衝突判定を付加

広告
新着ページ

AIを利用し、衣服のデザイン画から型紙を制作する方法  
2つのアパレル3D技術でひらくオーダーメイド生産の手法  
【洋裁型紙】前後身頃の肩の傾きは何故前身頃の方が傾いているのか  
電子追尾式天体写真撮影法  
日本ミツバチ巣箱の種類  
ドラフター(製図台)でソーイング  
日本ミツバチが逃亡  
カメさんの箱庭  
天体用デジタルカメラの構造と天体写真  
Javaで静止画像(Jpeg)を動画(Mov)に変換  
USBカメラをJAVAで制御  

他のサイト

3D-CAD
洋裁CAD

いいねなど

 RSS 

Author: Tomoyuki Ito

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