力の見直しとマウスで布をつかむ設定
洋裁CAD開発日記84
2020/3/30
力の見直し
布にかかる力を見直すことにした
現状では布重力などで引っ張り続けるので、放置しておくと布がびよーんと伸びてしまう。
速度と加速度の概念を加えて現実に近くなるように設定を変えてみた。
これで布が伸びずに、安定するようになった。
伸びなくなったけれども、しわの様子などもだいぶ変わった。
パラメトリックの試験
二次元では数値を変更するとそれに合わせてパターンの形状も変わる。二次元のパターンが変わったら三次元もそれに合わせて変わるようにできている。
下の動画は、袖の長さを変更して三次元に反映させるもの。
下は原型型紙をボディに着せているもので、バストポイントの高さを調整しているところ
バスト、ウエスト、背丈を変更知るとこんな感じ。2次元のパターンはかなり変わっているけど、3Dではあまり印象変わらないのが意外。
服をマウスでつまむ
3D上の布を触ることができなかったので、マウスでつまめるようにする。
まずはマウスの位置を取得することから。
結構難しいと思っていたけれども、マウス位置の物体の3D座標は簡単に取得することができた。
マウスカーソルが、布の上にある時は布の3次元座標、床の場合は床の3次元座標が返される。
単純な座布団の3Dモデルで布をつまむとこのとおり。うまくつまむことが出来た。
これでうまくいくと思ったのだけれども、実際に服の3Dモデルをつまんでみると、さっぱりうまくゆかない。
取得するマウスの3次元座標が時々あらぬ位置になっている。
原因は今のところよくわからないのだけど、複雑な形状のポリゴンだと変な値が出る感じがする。
下の動画ではマウスの座標が上の方に飛んでしまうので、スカートめくりの状態になってしまっている。
2次元座標との併用
2020/4/1
三次元座標の値がおかしい理由がよくわからないのだけれども、原因が分かっても対策にはならなそうなので、二次元座標を使って三次元位置を決めることにした。
JavaFXの機能では、マウスの座標は、
マウスの下にある3Dオブジェクトの三次元座標
現在のウィンドウの二次元座標
CRTの二次元座標
の三つを得ることができる
最初にマウスが押されたら、3Dオブジェクトの三次元座標を取得する。
この値からオブジェクト上のつまむ10を選び出す。
同時にウィンドウの二次元座標も取得しておく。
ウィンドウの2次元座標は、3次元空間内の、マウス3D位置を通る、マウス-視点間ベクトルに垂直な平面の座標と考える。
マウスがドラッグされたらウィンドウの2次元座標を取得する。
この2次元座標を3次元上の平面の3次元位置に置き換え、この位置に3Dオブジェクトのつまんだ点を移動させる
これで3Dオブジェクトをマウスでつまんで動かすことができるようになった。
布がフニャフニャで、クラゲを扱っているかのような触感なので、次はこの辺りを直してみようと思う。
最終更新日: 2020-04-02 08:54:29