Ooops
March 02, 2021, 01:06:02 PM

Author Topic: [bb] VectorGFX example by MCP [ 1+ years ago ]  (Read 590 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] VectorGFX example by MCP [ 1+ years ago ]
« on: June 29, 2017, 12:28:40 AM »
Title : VectorGFX example
Author : MCP
Posted : 1+ years ago

Description : A way to create retro-style 3d vector objects with optional hidden line removal.

Cheers,

Roy


Code :
Code: BlitzBasic
  1. ;*** VectorGFX - R. Ferriby
  2.  
  3. Graphics3D 800,600,32,0
  4. SetBuffer BackBuffer()
  5. AntiAlias 1
  6. AppTitle "VectorGFX demo - R Ferriby"
  7.  
  8. Global camera%=CreateCamera()
  9. PositionEntity camera,0,0,-40
  10.  
  11. vectorcube%=CreateVectorMesh()
  12.  
  13. AddVector(vectorcube,-1,-1,-1, -1,1,-1) ; 0,1
  14. VectorTo(vectorcube,1,1,-1)             ; 1,2
  15. VectorTo(vectorcube,1,-1,-1)            ; 2,3
  16. CloseVector(vectorcube,0,3)             ; 3,0
  17.  
  18. AddVector(vectorcube,-1,-1, 1, -1,1, 1) ; 4,5
  19. VectorTo(vectorcube,1,1, 1)             ; 5,6
  20. VectorTo(vectorcube,1,-1, 1)            ; 6,7
  21. CloseVector(vectorcube,7,4)             ; 7,4
  22.  
  23. CloseVector(vectorcube,0,4)             ; 0,4
  24. CloseVector(vectorcube,1,5)             ; 1,5
  25. CloseVector(vectorcube,2,6)             ; 2,6
  26. CloseVector(vectorcube,3,7)             ; 3,7
  27.  
  28. ScaleEntity vectorcube,10,10,10
  29. EntityColor vectorcube,255,255,255
  30.  
  31. cube%=CreateCube()      ; used for hidden line removal
  32. EntityFX cube,5
  33. EntityColor cube,0,0,0
  34. ScaleEntity cube,10,10,10
  35. alpha#=0
  36. r%=255 : g%=255 : b%=255
  37.  
  38. While Not KeyHit(1)
  39.         If KeyDown(200)
  40.                 alpha=alpha+0.01
  41.                 If alpha>1.0
  42.                         alpha=1.0
  43.                 EndIf
  44.         EndIf
  45.         If KeyDown(208)
  46.                 alpha=alpha-0.01
  47.                 If alpha<0.0
  48.                         alpha=0.0
  49.                 EndIf
  50.         EndIf
  51.         If KeyDown(2)
  52.                 r=255 : g=255 : b=255
  53.         EndIf
  54.         If KeyDown(3)
  55.                 r=255 : g=0 : b=0
  56.         EndIf
  57.         If KeyDown(4)
  58.                 r=0 : g=255 : b=0
  59.         EndIf
  60.         If KeyDown(5)
  61.                 r=0 : g=0 : b=255
  62.         EndIf
  63.         EntityAlpha cube,alpha
  64.         EntityColor vectorcube,r,g,b
  65.         TurnEntity cube,0.1,0.2,0.3
  66.         TurnEntity vectorcube,0.1,0.2,0.3
  67.         CameraClsMode camera,1,1
  68.         WireFrame 1
  69.         ShowEntity vectorcube
  70.         HideEntity cube
  71.         RenderWorld
  72.         CameraClsMode camera,0,0
  73.         WireFrame 0
  74.         ShowEntity cube
  75.         HideEntity vectorcube
  76.         RenderWorld
  77.         Text 10,10,"Up - increase solidity"
  78.         Text 10,30,"Down - decrease solidity"
  79.         Text 10,50,"Keys 1,2,3,4 - change color"
  80.         Text 10,70,"ESC - quit"
  81.         Flip 1
  82. Wend
  83. End
  84.  
  85.  
  86. Function CreateVectorMesh%()
  87.         Local mesh%=CreateMesh()
  88.         Local surf%=CreateSurface(mesh)
  89.         EntityFX mesh,17
  90.         Return mesh
  91. End Function
  92.  
  93. Function AddVector(mesh%,x1#,y1#,z1#,x2#,y2#,z2#)
  94.         Local surf%=GetSurface(mesh,1)
  95.         Local v1%,v2%
  96.  
  97.         v1=AddVertex(surf,x1,y1,z1)
  98.         v2=AddVertex(surf,x2,y2,z2)
  99.         AddTriangle(surf,v1,v2,v1)
  100. End Function
  101.  
  102. Function VectorTo(mesh,x2#,y2#,z2#)
  103.         Local surf%=GetSurface(mesh,1)
  104.         Local v1,v2%
  105.         v2=AddVertex(surf,x2,y2,z2)
  106.         v1=v2-1
  107.         AddTriangle(surf,v1,v2,v1)
  108. End Function
  109.  
  110. Function CloseVector(mesh,v1%,v2%)
  111.         Local surf%=GetSurface(mesh,1)
  112.         AddTriangle(surf,v1,v2,v1)
  113. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal