October 28, 2020, 06:38:28 AM

Author Topic: [bb] B3D, Colormap, Dot3map, Cubemap und Alphamap by Jan_ [ 1+ years ago ]  (Read 1355 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : B3D, Colormap, Dot3map, Cubemap und Alphamap
Author : Jan_
Posted : 1+ years ago

Description : Download with Source, and image:

<a href="http://www.blitzforum.de/gallery/?image=817" target="_blank">http://www.blitzforum.de/gallery/?image=817[/url]


Code :
Code: BlitzBasic
  1. Include "blur.bb"
  2. Graphics3D 800,600,32,2
  3. SetBuffer BackBuffer()
  4.  
  5. cam= CreateCamera()
  6. MoveEntity cam,80,120,0
  7. CameraClsColor cam,0,0,0
  8.  
  9. cube_cam=CreateCamera()
  10. ;CameraClsColor cube_cam,255,255,255;0,0,0
  11. CameraClsColor cube_cam,0,0,0;255,255,255
  12.  
  13. CreateBlur(Cam,8,3,255,255,255,0,True)
  14.  
  15. Type Dot3Light
  16.    Field ent
  17.    Field mul#
  18.    Field typ
  19. End Type
  20. AmbientLight 0,0,0
  21.  
  22. enemy = LoadAnimMesh("beast.b3d")
  23.  
  24. texture = LoadTexture("beast3.jpg")
  25.  
  26. tex=CreateTexture(256,256,128+256)
  27. TextureBlend tex ,2
  28.  
  29.  
  30. spec = LoadTexture("spec_beast.jpg",4)
  31.  
  32. bump=LoadTexture( "n_beast.png",0)
  33. TextureBlend bump,4
  34.  
  35. Global piv=CreatePivot()
  36. light = Dot3_CreateLight(2,piv,1.0,1)
  37. lighticon = CreateSphere(8,light)
  38. EntityFX lighticon,1
  39. ;ScaleEntity lighticon,0.01,0.01,0.01
  40. Dot3_LightRange light,100
  41. PositionEntity piv,0,80,0
  42.  
  43. level = LoadMesh("blub.x")
  44. ScaleEntity level,80,80,80
  45.  
  46. ClsColor 0,0,0
  47. Local blender#=0.2
  48.  
  49. timer = CreateTimer(60)
  50.  
  51. Local maps[4]
  52. For j = 0 To 3
  53.         maps[j] = 1
  54. Next
  55. Repeat
  56.  
  57.        
  58.         Cls
  59.         m=m+1
  60.        
  61.         If i >= 250 Then i=0
  62.         i=i+1
  63.         SetAnimTime(enemy,i/10.0)
  64.         MoveEntity enemy,0,0,-0.25
  65.         If EntityZ(enemy) > 250 Then TurnEntity enemy,0,180,0
  66.         If EntityZ(enemy) < -200 Then TurnEntity enemy,0,180,0
  67. ;       TurnEntity enemy,0,0.1,0
  68.  
  69.         HideEntity cam
  70.         UpdateCubemap(tex,cube_cam,enemy,i)
  71.         ShowEntity cam
  72.  
  73.         PointEntity cam,enemy
  74.  
  75.         If maps[0] Then EntityTexture enemy,tex,0,2
  76.         If maps[1] Then EntityTexture enemy,spec,0,1
  77.  
  78.         Cls
  79.  
  80.         HideEntity level
  81.         RenderWorld
  82.         ShowEntity level
  83.  
  84.         UpdateBlur(blender#)
  85.         UpdateBumpNormals(enemy,light,2)
  86.  
  87.         fpr=fpr+1
  88.         t1=MilliSecs()
  89.         If t2+1000 < t1 Then
  90.                 t2=t1
  91.                 fps=fpr
  92.                 fpr=0
  93.         EndIf
  94.         If maps[2] Then EntityTexture enemy,texture,0,2
  95.         If maps[3] Then EntityTexture enemy,bump,0,1
  96.  
  97.         If KeyHit(17) Then
  98.                 wires=1-wires  
  99.                 WireFrame wires
  100.         EndIf
  101.         If KeyHit(46) Then
  102.                 campos = campos +1
  103.                 campos = campos Mod 3
  104.                 Select campos
  105.                         Case 0
  106.                                 PositionEntity cam,80,120,0
  107.                         Case 1
  108.                                 PositionEntity cam,0,10,0
  109.                         Case 2
  110.                                 PositionEntity cam,90,50,0
  111.                 End Select
  112.         EndIf
  113.  
  114.         If KeyHit(16) Then blender = blender +0.01
  115.         If KeyHit(30) Then blender = blender -0.01
  116.         If KeyHit(20) Then break = 1-break
  117.        
  118.         For j = 2 To 5
  119.                 If KeyHit(j) Then maps[j-2]=1-maps[j-2]
  120.         Next
  121.        
  122.         RenderWorld
  123.         UpdateWorld
  124.         If KeyDown(59) Then ;F1
  125.                 Text 0,20, "w = Wireframes"    
  126.                 Text 0,40, "c = cameraposition"
  127.                 Text 0,60, "1 = toogle colormap"
  128.                 Text 0,80, "2 = toogle Normalmap"
  129.                 Text 0,100, "3 = toogle cubemap"
  130.                 Text 0,120, "4 = toogle cubemapmask"
  131.                 Text 0,140, "q = blend +"
  132.                 Text 0,160, "a = blend -"
  133.                 Text 0,180, "t = 60 FPS breake"
  134.         Else
  135.                 Text 0,20, "F1 = Help" 
  136.                 Text 0,40, "blending: "+blender
  137.                 Text 0,80, "Made by Jan Kuhnert"
  138.                 Text 0,100, "www.blitzforum.de"
  139.                 Text 0,580, "Beast model by: Psionic, http://www.psionic3d.co.uk"
  140.         EndIf
  141.  
  142.         Text 0,0,fps;1000.0/(t1-t2)
  143.  
  144.         If break WaitTimer(timer)
  145.         Flip 0
  146. Until KeyHit(1)
  147. End
  148.  
  149.  
  150. Function UpdateCubemap(tex,camera,entity,lma)
  151. tex_sz=TextureWidth(tex)
  152. ShowEntity camera
  153. HideEntity entity
  154. PositionEntity camera,EntityX#(entity),EntityY#(entity),EntityZ#(entity)
  155. CameraClsMode camera,True,True
  156. CameraViewport camera,0,0,tex_sz,tex_sz
  157.  
  158. lma = lma Mod 6
  159. Select lma
  160.         Case 1
  161.                 SetCubeFace tex,0
  162.                 RotateEntity camera,0,90,0
  163.                 RenderWorld
  164.                 CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex)
  165.         Case 2
  166.                 SetCubeFace tex,1
  167.                 RotateEntity camera,0,0,0
  168.                 RenderWorld
  169.                 CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex)
  170.         Case 3
  171.                 SetCubeFace tex,2
  172.                 RotateEntity camera,0,-90,0
  173.                 RenderWorld
  174.                 CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex)
  175.         Case 4
  176.                 SetCubeFace tex,3
  177.                 RotateEntity camera,0,180,0
  178.                 RenderWorld
  179.                 CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex)
  180.         Case 5
  181.                 SetCubeFace tex,4
  182.                 RotateEntity camera,-90,0,0
  183.                 RenderWorld
  184.                 CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex)
  185.         Case 0
  186.                 SetCubeFace tex,5
  187.                 RotateEntity camera,90,0,0
  188.                 RenderWorld
  189.                 CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex)
  190.         End Select
  191.  
  192. ShowEntity entity
  193. HideEntity camera
  194. End Function
  195.  
  196.  
  197.  
  198. Function UpdateBumpNormals(mesh,light,lighttype=0)
  199.    EP=GetParent(mesh)
  200.    n_surf = CountSurfaces(mesh)
  201.    For s = 1 To n_surf
  202.       surf = GetSurface(mesh,s)
  203.       n_vert = CountVertices(surf)-1
  204.       For v = 0 To n_vert
  205.          red2# = 0
  206.          grn2# = 0
  207.          blu2# = 0
  208.          For d3l.Dot3Light = Each Dot3Light
  209.             lx#=EntityX(d3lent,True)
  210.             ly#=EntityY(d3lent,True)
  211.             lz#=EntityZ(d3lent,True)
  212.    
  213.             If d3l      yp = 1 ; Directional light
  214.                TFormVector 0,0,1,d3lent,0
  215.                nx# = TFormedX()
  216.                ny# = TFormedY()
  217.                nz# = TFormedZ()
  218.                TFormNormal VertexNX(surf,v),VertexNY(surf,v),VertexNZ(surf,v),mesh,0
  219.                red# = TFormedX()
  220.                grn# = TFormedY()
  221.                blu# = TFormedZ()
  222.                
  223.                
  224.             ElseIf d3l  yp = 2 ; Point light      
  225.                ; Vertex Normal in World coordinates
  226.                TFormNormal VertexNX(surf,v),VertexNY(surf,v),VertexNZ(surf,v),mesh,0
  227.                Vnx# = TFormedX()
  228.                Vny# = TFormedY()
  229.                Vnz# = TFormedZ()
  230.                
  231.                ; Vertex > Light Vector in World coordinates
  232.                TFormPoint VertexX(surf,v),VertexY(surf,v),VertexZ(surf,v),mesh,0
  233.                Lvx# = lx - TFormedX()
  234.                Lvy# = ly - TFormedY()
  235.                Lvz# = lz - TFormedZ()
  236.  
  237.                
  238.                ; Normalize Vertex > Light Vector
  239.                d# = Sqr(Lvx*Lvx + Lvy*Lvy + Lvz*Lvz)
  240.                Lvx   =   Lvx / d
  241.                Lvy = Lvy / d
  242.                Lvz = Lvz / d
  243.             End If
  244.  
  245.             ; Theta Angle between Vertex Normal & Vertex>Light Normal
  246.             dot# = (Lvx*Vnx + Lvy*Vny + Lvz*Vnz)
  247.  
  248.             ; Clamp Colors to 0
  249.             If dot<0.0 Then dot# = 0
  250.            
  251.             ; If the Mesh had a Parent, Convert Light Vector into that Parents Local coordinates
  252.             ; unsure if this'll work with multiple hierarchy
  253.             If EP
  254.                TFormNormal Lvx,Lvy,Lvz,0,EP
  255.                Lvx# = TFormedX()
  256.                Lvy# = TFormedY()
  257.                Lvz# = TFormedZ()
  258.             End If
  259.            
  260.             red# = ( (1.0+(  Lvx * dot)) * 127) * d3lmul
  261.             grn# = ( (1.0+(  Lvy * dot)) * 127) * d3lmul
  262.             blu# = ( (1.0+( -Lvz * dot)) * 127) * d3lmul
  263.            
  264.             red2# = red2+red
  265.             grn2# = grn2+grn
  266.             blu2# = blu2+blu
  267.          Next
  268.          VertexColor surf,v,red2,grn2,blu2
  269.       Next
  270.    Next
  271. End Function
  272.  
  273.  
  274.  
  275.  
  276.  
  277. Function Dot3_CreateLight(typ=1,parent=0,mul#=1.0,real=True)
  278.    
  279.    d3l.Dot3Light = New Dot3Light
  280.    
  281.    If real
  282.       d3lent = CreateLight(typ,parent)
  283.       LightRange d3lent,50
  284.    Else
  285.       d3lent = CreatePivot(parent)
  286.    End If
  287.    PositionEntity d3lent,.4,.5,-2
  288.  
  289.  
  290.    d3l  yp = typ
  291.    d3lmul = mul
  292.    
  293.    Return d3lent
  294.  
  295. End Function
  296.  
  297. Function Dot3_LightRange(ent,range#)
  298.    For d3l.dot3light = Each dot3light
  299.       If d3lent = ent
  300.          If Lower$(EntityClass(d3lent))="light"
  301.             LightRange d3lent,range
  302.             Return
  303.          End If
  304.       End If
  305.    Next
  306.    
  307. End Function
  308.  
  309. Function Dot3_LightIntensity(ent,intens#)
  310.    For d3l.dot3light = Each dot3light
  311.       If d3lent = ent
  312.          d3lmul = intens
  313.          If Lower$(EntityClass(d3lent))="light"
  314.             LightColor d3lent,d3lmul*255.0,d3lmul*255.0,d3lmul*255.0
  315.          End If        
  316.          Return
  317.       End If
  318.    Next
  319. End Function


Comments :


_33(Posted 1+ years ago)

 Cool, thanks :D


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal