シーンエフェクトプラグイン

概要

シーンエフェクトプラグイン(SceneEffectsPlugin)は、シーン上に炎や煙などのエフェクトを描画できるようにするプラグインです。エフェクトはパーティクルシステムにより描画され、ボディモデルのデバイスとして記述することで利用できます。

エフェクトデバイスは他のデバイスと同様にコントローラからオン/オフを制御することもできるため、例えば災害現場を模擬したシミュレーション環境の構築などに活用できます。

ビルド方法

本プラグインはCMakeオプション BUILD_SCENE_EFFECTS_PLUGINON にすることでビルドできます。外部ライブラリのインストールは特に必要ありません。

エフェクトデバイス

本プラグインにより、以下のエフェクトデバイスが利用可能となります。いずれもBody形式のモデルファイルにおいて、リンクの elements 以下にデバイスノードとして記述します( type に以下のノード型名を指定します)。

  • FireDevice : 炎のエフェクトです。パーティクルが上方へ吹き上がりながら減衰する、炎らしい表現を行います。

  • SmokeDevice : 煙のエフェクトです。パーティクルが広がりながら立ち上る煙の表現を行います。

  • FountainDevice : 噴水のエフェクトです。パーティクルが噴き出して重力で落下する表現を行います。放水の表現などにも利用できます。

  • RainDevice : 雨のエフェクトです。雨粒が降り注ぐ様子を表現します。

  • SnowDevice : 雪のエフェクトです。雪が降る様子を表現します。

パラメータ

各エフェクトデバイスは共通のパーティクルシステムに基づいており、デバイスノードにおいて以下のパラメータを設定できます。エフェクトの種類ごとに適切なデフォルト値が設定されているため、通常は調整したいパラメータのみを記述すればOKです。

パラメータ

意味

offset_time

エフェクト開始からパーティクルの状態が定常状態になるまでの時間をスキップするオフセットです [s]。

life_time

各パーティクルの寿命です [s]。

particle_size

パーティクルの描画サイズです。

num_particles

パーティクルの数です。多くすると密度の高い表現になりますが、描画コストは増加します。

initial_speed_average

パーティクルの初速の平均値です。

initial_speed_variation

パーティクルの初速のばらつきです。

emission_range

パーティクルを放出する角度範囲です。

acceleration

パーティクルに適用する加速度ベクトルです。例えば噴水では重力に相当する下向きの加速度を設定します。

tint_color

パーティクルに乗算する色(RGB)です。エフェクトの色味を調整できます。

利用方法

エフェクトデバイスを記述したボディモデルを読み込むことで、シーンビュー上にエフェクトが描画されます。デバイスのオン/オフはコントローラから制御でき、シミュレーション中にエフェクトの発生・停止を切り替えることができます。

サンプルプロジェクトとして sample/SceneEffects/PlantAccident.cnoid が用意されています。これはプラント事故を模擬した環境のサンプルで、炎や煙のエフェクトが使用されています。デバイスの記述方法は本サンプルで使用されているモデルを参考にしてください。