テーブルに布をかける表現 (物理アシスタント)
Shade3D ver.16.1で追加された「物理アシスタント」機能により、
テーブルに布をかぶせるような表現を行うことができます。
テーブルの形状を作成
ポリゴンメッシュでテーブル形状を円柱で作成します。
物理処理を行う場合は、形状サイズは厳密な数値を指定するようにします。
上記のテーブルの場合は、半径が300mmの円柱としました。
形状名を「table_top」としました。
布の形状をポリゴンメッシュで作成
プリミティブで「四角形」のポリゴンメッシュを作成し、分割を16 x 16とします。
1つの四角形面のポリゴンメッシュを後から分割する場合は、
形状編集モードで「分割」を使用します。
布にするポリゴンメッシュを、テーブルより少し上に配置しておきます。
布形状の場合は変形後に滑らかになるようにするため、
形状情報ウィンドウでポリゴンメッシュの「限界角度」を60度などに変更しておくのが効果的です。
形状名を「cloth」としました。
物理アシスタントの操作
メインメニューの「スクリプト」より「物理アシスタント」を選択します。
「物理アシスタント」ウィンドウが表示されます。
テーブル形状を物理空間に配置
「物理アシスタント」を使うことでShade3Dのシーンに対して物理空間を割り当て、そこで衝突処理を行います。
硬い変形しない形状は「剛体」と呼ばれます。
ブラウザで「table_top」のテーブル形状を選択。
物理アシスタントウィンドウで「剛体/ソフトボディ」で「静的な剛体」を選択。
「衝突形状の種類」で「メッシュ」を選択。
「追加」ボタンを押します。
左上のリストボックスに「table_top」が追加されました。
「静的な剛体」とすることで、衝突しても動かない、重力の影響も受けないメッシュとなります。
布形状を物理空間に配置
布のような変形する形状は「ソフトボディ」と呼ばれます。
ブラウザで「cloth」の布形状を選択。
物理アシスタントウィンドウで「剛体/ソフトボディ」で「ソフトボディ」を選択。
「マージン」を50mm、「硬さ」を0.05と指定。
「追加」ボタンを押します。
「マージン」を指定することで、衝突判定を指定の距離だけ浮かせます。
これにより、衝突してめり込むのを防ぎます。
「硬さ」を小さくすると、衝突したときに変形しやすくなります。
値を後から変更する場合は、
対象を物理アシスタントウィンドウの左上のリストボックスから選択し、
マージンなどの値を変更後「変更」ボタンを押します。
物理計算の実行
物理アシスタントウィンドウの「物理計算」で「時間を進める」ボタンを押すと、
「ステップ」で指定した秒数の時間を計算します。
メッシュとソフトボディの衝突は時間がかかります。
時間を進めると、以下のように布形状がテーブルにかかるように変形しました。
ブラウザ上では「Physics Result」パート内に物理計算された形状が配置されます。
少し布が硬いため、「硬さ」を0.01にして「変更」ボタンを押して変更。
物理計算を0.3秒分進めました。
物理計算をやり直す場合は「物理計算」で「経過時間をリセット」ボタンを押してから、
「時間を進める」ボタンを押します。
これで、テーブルクロスらしくなりました。