UIの作成、布の物性を計算に取り込む
2020年3月後半の作業
エラー対策
2020/3/16
縫い合わせ設定の表示が大体できたので、次に定義時のエラー対策を進めました。
一部のパラメーターを外したり間違っていたりするとエラーが出てしまうので。フリーズしないようにエラートラップを作っておきます。
定義にはいろんな場合があるし、ユーザーがどんな変な入力の仕方をするかわからないので、この辺りの作業が難しい上に単調で辛いところです。
変更した定義を正しく描画する、正しく計算するなど色々確認してみました。
大体出来上がり。
断面を切る機能
2020/3/18
JavaFXには視点(カメラ)からの距離を閾値にして、それよりも遠いあるいは近い物を見えなくする機能があります。これを使って断面を切る機能を追加しました。
みんな切れてしまうので、床やボディも服と一緒に切れてしまいますが、まあ良しとしましょう。
この機能はJavaFXの機能をそのまま利用したので、簡単にできた。
要素の確認方法
2020/3/19
要素リスト上の要素と3D空間上の要素の関係を表示するために、要素リスト上の要素の上にマウスを乗せると3D上の要素表示が変わるように設定した。
身頃は該当のものの表示が変更される。縫い合わせは表示されていないので、表示されるようにした。
布のはりの設定
2020/3/21
今の計算では、布にはりがなくて力を加えると抵抗なく曲がってしまう。
ハリをもたせるために下の図のようにバネを追加することにした。
元々あるバネは三角形ポリゴンの各辺と同じに配置されている。追加するバネは、任意の点と隣接する二つのポリゴンをまたいだ反対側の点を結ぶように設定する。
二つもポリゴンが曲がるとこのバネが元に戻ろうとするため、まっすぐになる力が働く。
任意の点に設定されるバネは、下の図のようになる。緑はすでに設定されているバネ。水色は追加のバネ
ハリを持たせた服の計算結果は以下の通り。
左ハリ0の今までの計算結果、右がハリを追加した服の計算結果。
ハリを持たせた方がやはり現実に近い外観に仕上がる。
引張方向に応じた伸びの調整
一般的に布は縦糸横糸の方向に引っ張っても伸びないが、45度(バイアス方向)には伸びる。
この性質を取り入れるために、布を構成しているばねの定数(ばね定数)を方向によって変えるようにした。
角度に応じたばね定数を下左のようにした。実際のばね定数は知らないのだけど、プログラムの都合上、とりあえず簡単な数式を入れたらこんな形になった。
ばねの初期位置での方向を求め、これに講じたばね対数を与えるようにした。
縦横方向に沿って裁断した布をつるしたものが下中。45度傾けて裁断した布は左右。バイアスの方が伸びるはずなので、一応予想どおりの結果。
メッシュの切りかたを変えて仕切り直し
ばねの配置がやはり気に入らない。布シミュレーションにはすでにいくつかモデルが確立されていることは、
対話的な布のシミュレーションに関する研究
(フォロワーさんに教えてもらった)知ってはいたけどあまり重視していなかった。
張りとバイアスの計算をしてみると、やはり確立されたモデル通りの計算方法が良さそうに思えてきた。
なのでいったんメッシュの切りかたまで戻ってやりなおすことにした。
具体的には、メッシュを構成する点を、縦糸横糸方向に沿って並べることにする。布目を変えたらメッシュを切りなおすようにする。バネは点同士を結ぶので、バネも縦糸と横糸と同じ方向に並ぶようになる。
最終更新日: 2020-03-22 21:21:45