RealFlow 學習筆記 009 – Python Script 的 setVelocity 使用
簡述
以 particle 的 setVelocity Method 來直接指定粒子的速度,以達成粒子完全控制。詳情可找手冊的 PB_Particle 章節,找到 setVelocity 來用。
程式
雖然寫在 Batch Script 也可以,但是執行條件會比較狹隘 (時間軸必須是最新一格,否則無效),而且寫在 Batch Script 的話,我們賦予的速度,將被 RealFlow 當做那一格的初始速度,RealFlow 會以初始速度搭配黏滯、場等做用力計算後,才以最終速度讓粒子運動,也就是說很可能無法達成我們的預期效果。
所以寫在 Simulatiob Flow (即表達式) 的地方會比較好,放在正確的函數位置,就可以讓我們賦予的速度成為粒子的最終速度,也就能按照預期的行為來跑了。
我把程式放在 onSimulationStep 段落
import random def onSimulationStep(): cf=scene.getCurrentFrame() particles3 = Circle01.getParticles() if cf <= 435: for particle in particles3: nowv=particle.getVelocity() nowvx=nowv.getX() nowvz=nowv.getZ() rm=random.uniform(0,1)-0.5 rm*=0.1 newv=Vector.new(nowvx,rm,nowvz) particle.setVelocity(newv) elif cf > 435: for particle in particles3: nowv=particle.getVelocity() nowvx=nowv.getX() nowvz=nowv.getZ() rm=random.uniform(0,1)-0.3 newv=Vector.new(nowvx,rm,nowvz) particle.setVelocity(newv)
此 Python Script 非常簡單的控制 435 格前後的 Y 方向速度。
補充、 RealFlow 2013 ,可以直接拿發射器名稱當物件使用,以我的例子,直接寫 Circle01,然後調用 Emitter 的方法即可,不需要像之前必須先寫 getEmitter(“Circle01”)
Leave a Reply