パーティクルシステム

 パーティクルシステムは、煙、水流、花火、炎などのように、物体を面として表現するのが難しく、形状が時間とともに変化するものをモデリングするのに有用な方法である。パーティクルシステムでは、煙などをパーティクルの集合として表現する。それぞれのパーティクルには、誕生時期、寿命、色などの属性などが定義され、物理現象を考慮した決定的、確率的な規則によって移動する。パーティクルの動きを利用して、複雑な木や草を表現することなどにも用いられる。
 最近では、映画やテレビなどにおいて、ロケットの発射時の煙、宇宙船や星が爆発するときの炎など、多くの場面で利用されている。

アプレットの使用方法
[シミュレーションの種類]

 このアプレットでは、下図のように煙、水(噴水)、花火のシミュレーションができる。

   煙 
   水(噴水)  花火 

[操作方法]


 マウスをドラッグした方向に視点が移動する。

 このアプレットには、以下のような(1)〜(13)の13個の設定変更項目がある。各項目について説明する。

[メインパネル]

(1)プログラムの一時停止、開始、時刻0からの再開、アプレット初期化[Simulation Switch]
  Halt:一時停止
  Continue:開始
  Restart:再び時刻0からの開始
  Reset:アプレットの初期化(視点の位置、パラメータの値など、すべてを初期化

(2)視点の自動移動 [Auto view point move]
 視点は、マウスをドラッグした方向に移動する。マウスを左右方向にドラッグすると、極座標系における方位角(Theta)の方向に移動する。上下方向にドラッグすると、仰角(Phi)の方向に移動する。
 ここで、視点の自動移動を選ぶと、自動的に視点が移動する。各ボタンの機能は、以下のようになる。
  R+ , R- :注視点からの距離が、R+で増加、R-で減少。
  Th+ , Th+:方位角(Theta)が、Th+で増加、Th-で減少。
  Phi+ , Phi-:仰角(Phi)が、Phi+で増加、Phi-で減少。
  Stop :視点の自動移動の停止。

(3)コントロールパネルを開く [Control Panel]
 このボタンをクリックすると、さらに詳細な設定をするための、コントロールパネルが開かれる。

(4)物体の表示 [Object]
 煙突、噴水の塔となるポール(円柱)を表示。

(5)シミュレーションの種類の選択 [Sim_type]
 煙[Smoke],水(噴水)[Water],花火[Fireworks]のシミュレーションの種類の選択。

(6)風速の変更 [Wind speed]
 風速ベクトルのx,y,z成分の各成分を変更する。スクロールバーをスライドすることにより、下記の範囲で変更できる。
 煙の場合 :x,y,z=− 2.0〜 2.0[m/s]
 水の場合 :x,y,z=−40.0〜40.0[m/s]
 花火の場合:x,y=−40.0〜40.0[m/s]
       z  =  0.0〜40.0[m/s]
 また、直接数値を書き込むこともできる。直接数値を書き込む場合、範囲の制限はない。数値を書き込む場合、リターンキーを押すと、数値入力が認識される。

(7)粒子の初速度の変更 [Farst speed of particle]
 粒子の初速度の大きさ、向き、ランダム方向成分を変更する。図のような極座標系において、速度v0、方位角theta、仰角phi、ランダム方向成分randを、スクロールバーをスライドすることにより変更する。
 ランダム方向成分とは、粒子の発射方向の散らばり範囲である。
 スクロールバーで変更できる範囲は下記の通りである。
 煙の場合 :v0=0.0〜 2.0[m/s]
   水の場合 :v0=0.0〜60.0[m/s]
 花火の場合:v0=0.0〜90.0[m/s]

 共通 :theta=−180.0〜180.0[度]
     phi  = −90.0〜 90.0[度]
     rand =   0.0〜 60.0[度]
 また、直接数値を書き込むこともできる。直接数値を書き込む場合、範囲の制限はない。
 初速度の変更例を後で示す。
  

(8)粒子の質量の変更 [Mass of particle] (煙の場合のみ有効)
 粒子の質量(密度)を変更する。0.5を空気の質量(密度)として、0.5より小さい値を取ると、空気より軽くなり浮力が働く、0.5より大きくすると空気より重くなり重力により落下する。
 直接数値を書き込むこともできる。直接数値を書き込む場合、範囲の制限はない。
  
(9)粒子のランダム変動速度の変動範囲の変更 [Random speed of particle]
 粒子のランダム変動速度の変動範囲の大きさを変更する。スクロールバーをスライドすることにより、下記の範囲で変更できる。
 煙の場合 :0.0〜 3.0[m/s]
 水の場合 :0.0〜30.0[m/s]
 花火の場合:0.0〜30.0[m/s]
 また、直接数値を書き込むこともできる。直接数値を書き込む場合、範囲の制限はない。
  
(10)粒子の数、ボールの半径の変更 [Smoke ball parameter]
 発生する粒子の数、また、煙、水滴のように、粒子をボールで表現する場合における、半径、半径の増加率を設定する。

(11)粒子の跳ね返り係数の変更 [Bound coefficient] (水の場合のみ有効)
 水滴が地面に当たったときの、跳ね返りのための、跳ね返り係数を変更する。スクロールバーにより、0.0〜1.0の範囲で変更できる。直接数値を書き込むこともできる。

(12)粒子をボールで表現するかどうかの設定 [Circle draw switch]
 煙、水滴などのシュミレーションを行うとき、粒子をボールで表現するかどうかのスイッチ。

(13)グリッド(方眼目盛)を表示するかどうかの設定 [Marking switch]
    mark_off :グリッドを表示をしない。
    mark_type1:グリッドの表示をz=0平面と地面で表示する。
    mark_type2:グリッドの表示を正方形で表示する。

[変更例(水の場合)]

 初速度
     v0   = 30.0
     theta= 45.0
     phi  = 45.0
     rand = 20.0
 粒子のランダム変動速度
      20.0
 視点
     R    =799.0
     theta=330.0
     phi  = 10.0