The particle face
Posted: Wed Mar 09, 2016 8:41 pm
Code: Select all
;--------------------------------------------------
;Yet another mish mash
; By DK_PETER
;--------------------------------------------------
; Particle fun
;--------------------------------------------------
;it can get a lot more detailed...
;Just tweak and add particles and colors as needed.
;--------------------------------------------------
InitEngine3D()
InitSprite()
InitKeyboard()
Declare.i MakeFace()
Global NewList pa.i(), Quit = #False
OpenWindow(0, 0, 0, 1024, 768, "The Face", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0), 0, 0, 1024, 768)
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 0, 0, 10)
MakeFace()
Repeat
Repeat
ev = WindowEvent()
If ev = #PB_Event_CloseWindow : Quit = #True : EndIf
Until ev = 0
RenderWorld()
ExamineKeyboard()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = #True
Procedure.i MakeFace()
Protected Dim ma.i(1)
Protected Dim tx.i(1)
tx(0) = CreateTexture(#PB_Any, 128, 128)
StartDrawing(TextureOutput(tx(0)))
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Gradient)
FrontColor($FF000000)
BackColor($7E667C84)
CircularGradient(64, 64, 60)
Circle(64, 64, 60)
StopDrawing()
ma(0) = CreateMaterial(#PB_Any, TextureID(tx(0)))
MaterialBlendingMode(ma(0), #PB_Material_Add)
tx(1) = CreateTexture(#PB_Any, 128, 128)
StartDrawing(TextureOutput(tx(1)))
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Gradient)
FrontColor($FF000000)
BackColor($7E204692)
CircularGradient(64, 64, 60)
Circle(64, 64, 60)
StopDrawing()
ma(1) = CreateMaterial(#PB_Any, TextureID(tx(1)))
MaterialBlendingMode(ma(1), #PB_Material_Add)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.3, 0.1, 0.1, #PB_Particle_Point, 1, 1, 0)
ParticleEmissionRate(pa(), 300)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), -1, -0.1, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.2, 0.2)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.8, 0.2)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.3, 0.1, 0.1, #PB_Particle_Point, -1, 0.85, 0)
ParticleEmissionRate(pa(), 300)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), -0.23, -1, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.2, 0.2)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.2, 0.8)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.3, 0.1, 0.1, #PB_Particle_Point, 1, 0.85, 0)
ParticleEmissionRate(pa(), 300)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), 0.23, -1, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.2, 0.2)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.2, 0.8)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.3, 0.1, 0.1, #PB_Particle_Point, -1, -0.35, 0)
ParticleEmissionRate(pa(), 300)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), 0.23, -1, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.14, 0.14)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.2, 0.8)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.3, 0.1, 0.1, #PB_Particle_Point, 1, -0.35, 0)
ParticleEmissionRate(pa(), 300)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), -0.23, -1, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.14, 0.14)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.2, 0.8)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.3, 0.1, 0.1, #PB_Particle_Point, 0, -1.5, 0)
ParticleEmissionRate(pa(), 300)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), -1, 0, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.12, 0.12)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.8, 0.2)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.3, 0.1, 0.1, #PB_Particle_Point, 0, -1.5, 0)
ParticleEmissionRate(pa(), 300)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), 1, 0, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.12, 0.12)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.8, 0.2)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.1, 0.1, 0.1, #PB_Particle_Point, 0.3, 0.55, 0)
ParticleEmissionRate(pa(), 300)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), 1, -0.15, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.09, 0.09)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.2, 0.1)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.1, 0.1, 0.1, #PB_Particle_Point, -0.3, 0.55, 0)
ParticleEmissionRate(pa(), 300)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), -1, -0.15, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.09, 0.09)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.2, 0.1)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.1, 0.1, 0.1, #PB_Particle_Point, -0.39, 0.36, 0)
ParticleEmissionRate(pa(), 100)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), 0, 0, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.09, 0.09)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.6, 0.1)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.1, 0.1, 0.1, #PB_Particle_Point, 0.39, 0.36, 0)
ParticleEmissionRate(pa(), 100)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), 0, 0, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.09, 0.09)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.6, 0.1)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.1, 0.1, 0.1, #PB_Particle_Point, 0, 0, 0)
ParticleEmissionRate(pa(), 100)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), 0, 0, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.09, 0.09)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.2, 0.9)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.1, 0.1, 0.1, #PB_Particle_Point, 0, -0.7, 0)
ParticleEmissionRate(pa(), 100)
ParticleMaterial(pa(), MaterialID(ma(0)))
ParticleEmitterDirection(pa(), 0, 0, 0)
ParticleVelocity(pa(), 0.01, 0.01)
ParticleTimeToLive(pa(), 0.09, 0.09)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 1.2, 0.3)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.1, 0.1, 0.1, #PB_Particle_Point, -2, 0, 0)
ParticleEmissionRate(pa(), 100)
ParticleMaterial(pa(), MaterialID(ma(1)))
ParticleEmitterDirection(pa(), 0, 1, 0)
ParticleVelocity(pa(), 0.01, 0.03)
ParticleTimeToLive(pa(), 0.09, 0.19)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.3, 1.3)
AddElement(pa())
pa() = CreateParticleEmitter(#PB_Any, 0.1, 0.1, 0.1, #PB_Particle_Point, 2, 0, 0)
ParticleEmissionRate(pa(), 100)
ParticleMaterial(pa(), MaterialID(ma(1)))
ParticleEmitterDirection(pa(), 0, 1, 0)
ParticleVelocity(pa(), 0.01, 0.03)
ParticleTimeToLive(pa(), 0.09, 0.19)
ParticleSpeedFactor(pa(), 0.2)
ParticleSize(pa(), 0.3, 1.3)
EndProcedure