<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>TG BLOG</title>
<link>http://www.tres-graficos.jp/blog/index.php</link>
<pubDate>Wed, 12 Oct 2011 11:34:56 </pubDate>
<description>
TG BLOG - RSS 2.0 (Really Simple Syndication).
</description>
<item>
<title>How to make Cloth with CheetahBullet - 布の作り方</title>
<link>http://www.tres-graficos.jp/blog/article.php?id=630</link>
<pubDate>Wed, 12 Oct 2011 11:34:56 +0900</pubDate>
<description>CheetahBullet で箱に布を落としてみます。





シーンを準備する
まず立方体と平面を追加して、平面のサイズを 3:3 に、分割数を 60:60 に設定しておきます。平面は立方体の上に移動しておきましょう。



立方体のほ...</description>
<content:encoded>
<![CDATA[<p>CheetahBullet で箱に布を落としてみます。</p>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb.jpg" width="640" height="480" alt="ch_20111012_cb.jpg" />
</p>
<!-- more -->
<hr />
<h3>シーンを準備する</h3>
<p>まず立方体と平面を追加して、平面のサイズを 3:3 に、分割数を 60:60 に設定しておきます。平面は立方体の上に移動しておきましょう。</p>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb_tut1.png" width="780" height="480" alt="ch_20111012_cb_tut1.png" />
</p>
<p>立方体のほうは固定させるので、RigidBody タグを付け、"mesh type" を "static mesh" に設定します。平面の方には、とりあえず SoftBody タグを付けておきましょう。</p>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb_tut2.png" width="780" height="480" alt="ch_20111012_cb_tut2.png" />
</p>
<p>この２つのオブジェクトをグループ化し、そのフォルダに Sim タグを付けて、計算結果ファイル（ .chdata ）を作成します。<br />
タグのプロパティーの "create sim. file" の "create" ボタンをクリック、保存先／保存名を設定して、結果ファイルを作成します。Mac の性能によって、少し時間がかかるかもしれません。</p>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb_tut3.png" width="780" height="480" alt="ch_20111012_cb_tut3.png" />
</p>
<p>次に、出来た計算結果ファイルを表示する Rep オブジェクトをシーンに追加します。今回はポリゴンオブジェクトなので、Polygon Rep オブジェクトを使います。追加した Polygon Rep オブジェクトのプロパティを設定します。<br />
計算に使った平面オブジェクトは、モードタグのプロパティでワイヤフレーム表示にしておきましょう。</p>
<ul>
<li>sim. file: 作成した .chdata ファイルをセットします</li>
<li>sim. target: 計算に使用したオブジェクトのはいったフォルダーをセットします</li>
<li>target 1: 表示させるオブジェクトをセットします。今回は平面オブジェクトのみをセットして下さい。（立方体は動かないので結果ファイルから表示させる必要はありません）</li>
</ul>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb_tut4.png" width="780" height="480" alt="ch_20111012_cb_tut4.png" />
</p>
<p>次に Rep オブジェクトの "frame" パラメータを 0 - 120 でアニメーションするようにキーを設定します。</p>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb_tut5.png" width="780" height="480" alt="ch_20111012_cb_tut5.png" />
</p>
<p>アニメーションを再生すると、立方体を突き抜けて失敗している結果になっているのが分かると思いますが、とりあえず今はこれで OK です。 :-! 基本的な設定は完了したので、後は平面に付けた SoftBody タグのプロパティを調整 -> 結果ファイルのアップデート（ Sim タグの update sim. file の "update" をクリック ）を繰り返して調整してみましょう。</p>
<hr />
<h3>SoftBody のパラメータで遊ぶ</h3>
<p>SoftBody タグには、沢山のパラメータがあります。実はすべてのパラメータを理解しているわけではなく、そのまま Bullet Physics のライブラリに直接渡して計算しています。なので勘違い・間違っている記述もあるかもしれません。 :-P</p>
<p>またパラメータの組み合わせによって、ポリゴンが破綻する場合もあります。が、気にせずいろいろ試してみて下さい。（この辺の使い難さについては、Bullet のアップデートも合わせて改善する予定ですが…）</p>
<p>Bullet Physics (2.78) を使った SoftBody の衝突判定には、ポリゴンのポイントを使って衝突判定する方法と、ポイントとは別にオブジェクトを分割したクラスターを使った方法の２種類があります。クラスターを使った場合は、自分自身との衝突も検知できるのですが、設定によっては少し計算時間がかかったりします。作りたいシーンによって使い分ける事になると思います。</p>
<h4>まずクラスターを使わない場合の設定を試す</h4>
<p>SoftBody タグの Solve Iterations -> "position iter." の値を 8 にあげて、Sim タグの "upadte sim. file" の "update" ボタンをクリックして再計算させてみましょう。</p>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb_tut6.png" width="780" height="480" alt="ch_20111012_cb_tut6.png" />
</p>
<h4>次にクラスターを使った場合の設定を試す</h4>
<p>クラスターを使うために Collision -> "use cluster" / "self collision" にチェックをいれます。クラスター数を 800 にしてみましょう。"self collison" にチェックを入れた場合、"margin（余白）"の値を小さくする必要があります。今回は 0.02 にしておきます。</p>
<p>重要なのが、衝突判定の精度をあげるため、計算時間のステップをあげる必要がある事です。計算全体のステップをあげるには、Sim タグのフレームレートをあげる事もできますが、今回は SoftBody タグの "time scale" パラメータを使います。今回は、平面の計算のみ４倍の精度になるよう 0.25 を設定します。（これはクラスターを使わない場合も有効なのですが、設定よりシミュレーション速度が遅くなるという問題がでます。実際のシーンで使う場合には、Rep オブジェクトの "frame" パラメータのアニメーションの動きを速くしてやる等の対応が必要ですね）</p>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb_tut7.png" width="280" height="690" alt="ch_20111012_cb_tut7.png" />
</p>
<p>結果はこんな感じです。</p>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb_tut8.png" width="780" height="480" alt="ch_20111012_cb_tut7.png" />
</p>
<p>クラスターを使う場合も、そうでない場合も、一長一短あります。シーンによって使い分けてみて下さい。</p>
<hr />
<p>最後に Rep オブジェクトにサブディビジョンモディファイアを適用して、ポリゴンを滑らかにして完成です。完成サンプルでは、チェッカーテクスチャのマテリアルを使ってみましたが、こういう柔らかい物の場合 Toon シェーダーも面白いですよね。</p>
<p>
<img src="http://www.tres-graficos.jp/blog/resources/ch_20111012_cb2.jpg" width="640" height="480" alt="ch_20111012_cb2.jpg" />
</p>
<p>バグや制限も多くて、まだまだ使い難いのですが、また試してみて下さい。 ;-)</p>
]]>
</content:encoded>
</item>
</channel>
</rss>