Code archives/3D Graphics - Effects/dragon fire
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
the old dragon with fire effect | |||||
Graphics3D 800,600,32,1 SetBuffer BackBuffer() enable=True vert=False Global camera=CreateCamera () ;environment cube cube=CreateCube () FitMesh cube,-250,0,-250,500,500,500 FlipMesh cube tex=LoadTexture( "D:\Program Files\Blitz3D\samples\mak\dragon\chorme-2.bmp" ) ScaleTexture tex,1.0/3,1.0/3 EntityTexture cube,tex EntityAlpha cube,.4 EntityFX cube,1 ;floor mirror m=CreateMirror() ;simple light light=CreateLight() TurnEntity light,45,45,0 dragon=LoadMD2 ("D:\Program Files\Blitz3D\samples\mak\dragon\model\dragon.md2 ") tex=LoadTexture("D:\Program Files\Blitz3D\samples\mak\dragon\model\dragon.bmp") PositionEntity dragon,0,25,0 EntityTexture dragon,tex AnimateMD2 dragon,1,0.05,90,130 ;camera camera=CreateCamera() cam_xr#=30:cam_yr#=0:cam_zr#=0:cam_z#=-100 ;--------------- fire-------------------- pivFire=CreatePivot() Type fire Field x# Field y# Field z# Field alpha# Field entity Field scale# End Type sprite=LoadSprite("D:\Igra Dracula\sprite\fire.bmp",2,pivFire) PositionEntity sprite,3,20,43 RotateEntity sprite,0,90,0 HideEntity sprite con#=0.5:conx#=0.3:no=5 Md=4 ;---------------------------------------- time=MilliSecs() While Not KeyDown(1) ;-------------- mod of fire------ If Md=1 Then a1=117:b1=122 con#=1:conx#=0.8:no=5 PositionEntity sprite,3,20,43 RotateEntity sprite,0,90,0 End If If Md=2 Then a1=125 :b1=127 con#=0.4:conx#=0.4:no=1 PositionEntity sprite,-18,10,23 End If If Md=3 Then a1=100 :b1=102 con#=0.4:conx#=0.3:no=3 PositionEntity sprite,-3,3,33 End If If Md=4 Then a1=90 :b1=93 con#=1:conx#=1:no=7 PositionEntity sprite,10,15,43 RotateEntity sprite,0,75,0 End If ;--------------- fire -------------------- u=u+1 If u>360 Then u=1 Repeat elapsed=MilliSecs()-time Until elapsed>0 time=time+elapsed dt#=elapsed*60.0/1000.0 anim=MD2AnimTime(dragon) If anim>129 Then Md=4 End If If anim>93 And anim<100 Then Md=3 End If If anim>100 And anim<122 Then Md=1 End If If anim>122 And anim<127 Then Md=2 End If If anim>a1 And anim<b1 For i=1 To no f.fire=New fire f\alpha#=1;Rnd(0,1) f\scale#=con#*Rnd(8,12) f\entity=CopyEntity (sprite,piv1) SpriteViewMode f\entity,1 RotateSprite f\entity,Rnd(360) num=mum+1 Next End If For f.fire=Each fire f\alpha#=f\alpha#-0.02 ;f\scale#=f\scale#-Rnd(0.02,0.1) If f\alpha>0 EntityAlpha f\entity,f\alpha If f\alpha#<0.4Then EntityColor f\entity,80,200,150 f\x#=con#*conx#*3 f\y#=con#*Rnd(2.4,6.4) f\z#=con#*Rnd(-4.8,4.8) ElseIf f\alpha#<0.8 And f\alpha#>0.4Then f\scale#=con#*Rnd(10,14) f\x#=con#*conx#*4;Rnd(1.9,2) f\y#=con#*Rnd(-6,6) f\z#=con#*Rnd(-6,6) Else f\scale#=con#*4 f\x#=con#*conx#*Rnd(2,4) f\y#=con#*Rnd(-2,2) f\z#=con#*Rnd(-2,2) EndIf ScaleSprite f\entity,f\scale#,f\scale# MoveEntity f\entity,f\x,f\y,f\z Else FreeEntity f\entity Delete f num=num-1 EndIf Next ;-------------------------------------------- If KeyDown(17)WireFrame enable If KeyDown(203) cam_yr=cam_yr-2 Else If KeyDown(205) cam_yr=cam_yr+2 EndIf If KeyDown(200) cam_xr=cam_xr+2 If cam_xr>90 cam_xr=90 Else If KeyDown(208) cam_xr=cam_xr-2 If cam_xr<5 cam_xr=5 EndIf If KeyDown(26) cam_zr=cam_zr+2 Else If KeyDown(27) cam_zr=cam_zr-2 EndIf If KeyDown(30) cam_z=cam_z+1:If cam_z>-10 cam_z=-10 Else If KeyDown(44) cam_z=cam_z-1:If cam_z<-180 cam_z=-180 EndIf PositionEntity camera,0,0,0 RotateEntity camera,cam_xr,cam_yr,cam_zr MoveEntity camera,0,0,cam_z If KeyDown(16) surf=GetSurface (dragon,1) If KeyDown(78) Then x=x+1 If x>CountVertices (surf) Then x=CountVertices(surf) vert=True End If If vert=True Then VertexX(surf,x) VertexY(surf,x) VertexZ(surf,x) VertexColor surf,a,255,0,0,1 EndIf UpdateWorld RenderWorld Flip Wend End |
Comments
| ||
Could you provide the texture : sprite=LoadSprite("D:\Igra Dracula\sprite\fire.bmp",2,pivFire) thanks :) |
| ||
you can use fire texture from exsample never mind it will be good |
| ||
Nice effect! I replaced the fire.bmp file with... C:\Program Files\Blitz3D\samples\Hi-Toro\Shooter\Shooter\gfx\fire.bmp |
| ||
Ok man nice thanks for compliment |
| ||
add this line: EntityBlend f\entity, 3 It will look even more realistic. Rogue Vector |
Code Archives Forum