RealFlowのScript(Python)の使い方

粒子法のシミュレーションを行うことが出来るRealFlow http://www.realflow.com/

学生用やオンデマンドであれば、低価で使用することが出来ます。

今回はRealFlowでScriptを使ってみました。

RealFlowのScriptはPythonで書くことが出来ます。

 

今回の目的

Real Flow2013にはparticleのdestroyerがありません。

今回はparticleを削除出来るscriptを書くことを目的にします。

 

Scriptの設置方法とEditorの開き方

script

Edit->Add->Demon->Scripted

といけば、RealFlowのScriptをシーンに追加することが出来ます。

edit

Node ParamsのScriptedからEditを選択することでScript Editorが起動します。

scripteditor

ここにScriptを書いて行くことになります。

 

デフォルトのScriptの解説

まずは、はじめから書かれているScriptを見ていきます。

改行はカットしました。

すでに、シミュレーションの始めに呼ばれるメソッドや止まった時に呼ばれるメソッドが設定されていることがわかります。

  • def onSimulationBegin():
    • シミュレーションが始まった時に呼ばれます
  • def onSimulationResume():
    • シミュレーションが再び動いた時に呼ばれます
  • def onSimulationStop():
    • シミュレーションが止まった時に呼ばれます
  • def onSimulationFrame( frame ):
    • シミュレーションのフレームごとに呼ばれます
  • def applyForceToEmitter( emitter ):
    • エミッターの粒子に力が加わった時に呼ばれます
  • def applyForceToHybridoSecondaryEmitter( emitter ):
    • hybrido secondary emitterに力が加わった時に呼ばれます
  • def applyForceToBody( body ):
    • bodyに力が加わった時に呼ばれます
  • def applyForceToMultiBody( multiBody ):
    • multiBodyに力が加わった時に呼ばれます
  • def applyForceToMist( mist ):
    • mistに力が加わった時に呼ばれます
  • def applyForceToHybridoGridDomain( domain ):
    • hybrido domainに力が加わった時に呼ばれます
  • def removeParticles( emitter ):
    • 粒子が削除された時に呼ばれます

今回は毎フレームで一定以下に落下した粒子を削除するので、def onSimulationFrame( frame )以下に Scriptを書いていきます。

 

Scriptの書き方

詳しくは公式のリファレンスを参照してください

今回書いたScriptは以下です。

 

scene.message()

をつかうことで、Messagesに出力することが出来ます。

printなども使えますがシミュレーション時にコマンドラインを出す必要があります。

emitterはシーン中のエミッタの名前で取得します。

最初の粒子をparticleに保持して、while中でy座標を確認して0未満であれば、粒子のIDを取得して削除しています。

 

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">