2011-11-05

particle atmos



global mypf = undefined
global myobj = undefined
global pf = undefined
global win = undefined
global volfog = undefined
if animationRange.end <= 100 do animationrange = interval 0 300

fn pf_filter pf = (classof pf == PF_Source)
fn rp rpobj =

(
for i in 1 to rpobj.count do
(
mypf.particleindex = i
rpobj[i].transform = mypf.particleTM
if rpobj[i].pos == mypf.pos then
(
scale rpobj[i] [0.01,0.01,0.01]
)
else
(
scale rpobj[i] [1,1,1]
)

)
)
fn gene_pf gene =
(
win = wind pos:[30,30,0] strength:0 turbulence:1 frequency:0.8 scale:0.06 name:"WIND01"
pf = PF_Source X_Coord:20 Y_Coord:0 name:"PFS01"
particleFlow.BeginEdit()
op1 = Birth emit_start:1760 emit_stop:24000 type:0 amount:200
op2 = Position_Icon location:0
op3 = Speed speed:60 variation:10
op4 = spin spinrate:120 variation:30
op5 = Force influence:100
op5.Force_Space_Warps = #(win)
op6 = ScaleParticles type:3 sync_type:1 Constrain_Scale:off Constrain_Scale_Variation:off
op6.x_scale_variation = 30 ;op6.y_scale_variation = 30 ;op6.z_scale_variation = 30
op6.Constrain_Scale_Variation = on
slidertime = 0f ;set animate on
op6.x_scale_factor = 0.01 ;op6.y_scale_factor = 0.01 ;op6.z_scale_factor = 0.01
slidertime = 15f
op6.x_scale_factor = 100 ;op6.y_scale_factor = 100 ;op6.z_scale_factor = 100
slidertime = 90f
op6.x_scale_factor = 0.01 ;op6.y_scale_factor = 0.01 ;op6.z_scale_factor = 0.01
op6.constrain_scale = on
set animate off
op7 = DeleteParticles type:2 Life_Span:14400
op8 = ShapeLibrary()
op9 = DisplayParticles color:(color 120 120 120)
--op9 = RenderParticles()
ev1 = Event()
ev1.SetPViewLocation (pf.X_Coord) (pf.Y_Coord+100)
particleFlow.EndEdit()
ev1.AppendAction op1
ev1.AppendAction op2
ev1.AppendAction op3
ev1.AppendAction op4
ev1.AppendAction op5
ev1.AppendAction op6
ev1.AppendAction op7
ev1.AppendAction op8
ev1.AppendAction op9
--pf.AppendAction op9
pf.AppendInitialActionList ev1
rotate pf (angleaxis 180 [1,0,0])
pf.Quantity_Viewport = 100
pf.Integration_for_Viewport = 1
)
fn gene_gzm gzm =
(
spheregizmo radius:10 pos:[0,-50,0] name:"sGizmo01"
)
fn atmo gizmo =
(
addAtmospheric (Volume_Fog name:"VolFog01")
volfog = getAtmospheric 1
volfog.Soften_Gizmo_Edges = 1
volfog.Exponential = 1
volfog.Density = 40
volfog.noise_type = 1
volfog.size = 15
)


-- generate rollout
gene_pf pf
hide pf ;hide win
prfloater = newrolloutfloater "Particle_Atmos" 200 300
rollout gen_roll "Generate"
(
button gen_pf "Generate PF" width:100
button gen_gzm "Generate Gizmo" width:100
on gen_pf pressed do
(
unhide pf
unhide win
mypf = pf
)
on gen_gzm pressed do
(
gene_gzm gzm
atmo $sgizmo01
)
)


--setobj rollout
rollout pf_roll "Set Objects"
(
pickbutton pickpf "Pick PF" filter:pf_filter width:100
on pickpf picked pf do
(
pickpf.text = pf.name
mypf = pf
)
pickbutton pickobj "Pick Gizmo" width:100
on pickobj picked obj do
(
pickobj.text = obj.name
myobj = obj
)
spinner fin "Replace Fin Frame" range:[1,3000,100] scale:1
button dobtn "Do Replace"
on dobtn pressed do
(
if mypf != undefined do
(
if myobj != undefined do
(
for i in 1 to 200 do --mypf.numparticles()-1 do
(
mycol = myobj.wirecolor
copyobj = copy myobj isselected:on
$.seed = random 0 99
)
myobj = $sgizmo*
for i in 1 to myobj.count do
(
appendGizmo volfog myobj[i]
)
slidertime = 0f
set animate on
while slidertime <= fin.value do
(
rp myobj
slidertime += 1

)
set animate off
)
)
)

)

addrollout gen_roll prfloater
addrollout pf_roll prfloater

No comments:

Post a Comment