着衣シミュレーション
— 型紙から縫ったドレスを、歩くマネキンに着せる

型紙の寸法から筒状の布を作り、XPBD(拡張位置ベース動力学)でリアルタイムに計算して、歩く・回る・跳ぶマネキンに着せるクロスシミュレーション(布シミュレーション)です。シルク・コットン・レザーの3種類の生地で、同じドレスの落ち感や揺れ方がどう変わるかを、ブラウザ上で動かしながら見比べられます。

クロスシミュレーション 布シミュレーション 着衣シミュレーション XPBD WebGPU ファッションデザイン
読み込み中…
WebGPU に対応したブラウザ(Chrome / Edge の最新版など)で動きます。スマートフォンや内蔵 GPU では重くなることがあります。 全画面で開く ↗
01

操作方法

How to Use
ドラッグマネキンのまわりを回って、好きな角度から見る
ホイール近づく・離れる
Stand / Walk / Turn / Jump上のバーのプルダウンで、マネキンの動きを選ぶ(立つ・歩く・回る・跳ぶ)。切り替えの間は動きをいったん止めて、姿勢を滑らかにつなぐ
Windオンにすると、ドラッグした向きに風が吹く。長く引くほど強く、上へ引くと下から吹き上げる。風速の表示の × か Esc で止める
色見本ドレスの色を変える(Champagne / Bordeaux / Emerald / Noir / Ivory)
↺ Drape立ち姿勢に戻して、型紙から着せ直す
⚙ 設定パネル
Fabric生地を Silk / Cotton / Leather から選ぶ
BodiceFitted=胸元からアンダーバストまでを体の形に沿わせて固定する(カップ付きのドレスに相当)。Draped=身頃もすべて布として動かす
Hem / Flare / Slit裾の高さ、裾まわりの長さ(広がり)、左脚の前のスリットの長さ
Biasバイアス方向(布目に対して斜め)の伸びやすさ。主にシルクに効く
Self-col布どうしの衝突。オンにすると、スカートが重なる場面で布が布をすり抜けにくくなる(計算は重くなる)
Exposure画面の明るさ
02

しくみ

How It Works

1. 型紙から布を作る

実際の服づくりでは、体の寸法から型紙を引き、平らな布を裁断して縫い合わせます。このデモでは、それを単純化した手順で布を作っています。マネキンの胴体を高さごとに輪切りにして断面の外形(腕を除いた凸包)を測り、そこにゆとりを足した長さを、その高さでの布の周長にします。バストでは +1cm、ウエストではバイアスで体に吸い付くぶん −1.5cm、ヒップでは +4cm、といった具合です。こうして作った周長の分布を縦に並べると、筒状の布(周方向 192 分割、約2万点)ができあがります。

筒をそのまま胸に当てると、バストトップから下がまっすぐなテントのような形になります。布の縦の長さが、胸のふくらみを越えてアンダーバストへ入り込む道のりよりも短いためです。実際の服ではここにダーツを入れて立体にします。このデモでは代わりに、布の縦方向の「自然な長さ」を、体の表面に沿って測った道のりに合わせています。

2. 布を XPBD で動かす

布の動きをコンピュータで計算することを、クロスシミュレーション(布シミュレーション)と呼びます。映画やゲームの衣装、アパレルの 3D 設計などで使われている技術です。このデモでは、布をたくさんの点と、それらをつなぐ拘束で表します。拘束の種類は、たて・よこの伸び、斜め方向(布目)のずれ、そして曲げです。毎ステップ、まず重力や風で点を動かし、次に拘束が満たされるように点の位置を直接補正します。これが Position Based Dynamics(PBD)の考え方です。

もとの PBD では、計算の反復回数や時間刻みによって、布の硬さが変わってしまいます。XPBD(eXtended PBD)は、拘束ごとの柔らかさをコンプライアンス(硬さの逆数)という物理量で与え、その問題を解消した方法です。このデモでは、シルク・コットン・レザーの違いを、このコンプライアンスの値の違いとして表しています。1フレーム(1/60秒)を 20 のサブステップに分けて解くことで、布の伸びを小さく保っています。

3. GPU で並列に解く

拘束を1つずつ順番に解くと、2万点の布では間に合いません。そこで、同じ点を共有しない拘束どうしを同じ「色」にまとめる(グラフ彩色)ことで、同じ色の拘束を GPU で一斉に解けるようにしています。色ごとに順番に処理すれば、結果は順番に解いた場合(Gauss–Seidel 法)と同じ性質を保てます。計算は WebGPU の compute shader で行い、描画も同じ GPU 上で行います。

4. 動く体との衝突

マネキンは、骨格(ボーン)に皮膚が追従するスキンメッシュで、歩く・回る・跳ぶの動きは Mixamo で付けたモーションです。動く体と布の衝突を毎ステップ正確に計算するのは重いので、体を 20 の部位に分け、部位ごとに静止姿勢での符号付き距離場(SDF)を3次元テクスチャに焼いておきます。SDF は、空間の各点から体の表面までの距離を、内側なら負の値で表したものです。衝突判定のときは、布の点を各部位の骨の動きと逆向きに変換して静止姿勢の座標へ戻し(逆スキニング)、そこで SDF を引きます。値が負なら体にめり込んでいるので、表面まで押し戻します。こうすると、体の形が動いても衝突判定はテクスチャを読むだけで済みます。

5. 身頃を体に沿わせる

筒状の1枚の布からは、胸のような二重に曲がった形をきれいに作れません。実際のドレスは、ダーツや切り替え、芯地やカップで胸元の形を作っています。このデモの Fitted は、それにならって、胸元からアンダーバストまでの布を着せた直後の形で肌に固定し、体の動きに追従させています。Draped に切り替えると、身頃もすべて自由な布として動きます。固定の有無で、胸元の形やしわの寄り方がどう変わるかを比べてみてください。

03

生地の違い

Fabrics

3種類の生地は、拘束の硬さ(伸びと曲げ)、空気から受ける力、体との摩擦、そして見た目(光沢や表面の質感)の組み合わせで作り分けています。

Silk(シルク)

布目に対して斜めに裁つバイアスカットを想定し、斜め方向に伸びやすく、曲げもとても柔らかい設定です。体の線に沿ってとろりと落ち、わずかな風でもなびきます。光沢は糸の向きで変わる異方性のハイライトで表しています。

Cotton(コットン)

ブロードやポプリンのような、まっすぐな布目で伸びない生地です。曲げの硬さはシルクの約30倍で、空気にも流されにくく、張りのある広がったシルエットになります。つや消しで、糸の毛羽による柔らかい反射があります。

Leather(レザー)

薄手のラムナッパ程度の革です。伸びず、曲げの硬さはコットンのさらに約20倍で、重く、風ではほとんど動きません。大きくゆったりした折れ方をし、表面には細かいシボ(粒状の凹凸)があります。

04

試してみよう

Try This
  1. Walk にして、⚙ の Fabric を Silk → Leather と切り替える。同じ歩き方でも、裾の遅れ方や揺れの大きさがまったく違うことがわかります。
  2. Turn にすると、回転の遠心力でスカートがベル状に広がります。Flare(裾まわり)を大きくすると、広がりがさらに大きくなります。
  3. Wind をオンにして、画面を下から上へ長めにドラッグする。下からの風でスカートが舞い上がり、生地による違いがいちばんはっきり出ます。
  4. Bodice を Draped にして着せ直す。固定がないと、肩紐のないドレスの身頃がどこで落ち着き、どこにしわが寄るかを観察できます。
  5. Slit を長くして Walk にすると、踏み出した脚がスリットから出て、布が脚に引っかかりながら動きます。
05

技術メモ

Technical Notes
計算手法
XPBD(グラフ彩色 Gauss–Seidel)
布の点の数
約 2 万点(周方向 192 分割)
時間刻み
1/60 秒 × 20 サブステップ
体との衝突
部位別 SDF + 逆スキニング
モーション
Mixamo(FK + 四元数補間)
実行環境
WebGPU(compute + render)

布が伸びすぎないように、着せたときの位置から布の上を測った距離を上限とする長距離の拘束(Long Range Attachments)も使っています。描画では、影マップによる影と、体の SDF を使った環境遮蔽(布と体、体どうしが近いところほど暗くなる効果)を加えています。

まだ苦手なこともあります。網目の細かさには限りがあるので、ごく細かいしわは表現できません。また、ターンで脚を速く振り出す瞬間などには、脚が裾を突き抜けることがあります。

06

参考文献

References
  1. M. Müller, B. Heidelberger, M. Hennix, J. Ratcliff: Position Based Dynamics, Journal of Visual Communication and Image Representation, 18(2), 2007.
  2. M. Macklin, M. Müller, N. Chentanez: XPBD: Position-Based Simulation of Compliant Constrained Dynamics, Proc. Motion in Games (MIG), 2016.
  3. T.-Y. Kim, N. Chentanez, M. Müller-Fischer: Long Range Attachments — A Method to Simulate Inextensible Clothing in Computer Games, Proc. ACM SIGGRAPH/Eurographics Symposium on Computer Animation, 2012.
  4. M. Fratarcangeli, V. Tibaldo, F. Pellacini: Vivace: a Practical Gauss-Seidel Method for Stable Soft Body Dynamics, ACM Transactions on Graphics, 35(6), 2016.
→

ほかのデモ

More from Morphology Lab