home *** CD-ROM | disk | FTP | other *** search
/ DarkBasic Professional / DarkBasicPro.iso / data1.cab / Lang_Files_(English) / Help / examples / basic3d / basic3d3-example.dba < prev    next >
Encoding:
Text File  |  2004-09-22  |  4.5 KB  |  158 lines

  1. rem Mesh Manipulation
  2.  
  3. rem Standard Setup Code for all examples
  4. `set window off
  5. sync on : sync rate 0 : color backdrop rgb(0,128,0)
  6. set text font "arial" : set text size 16
  7. set text to bold : set text transparent
  8. ink rgb(255,255,0),0
  9.  
  10. rem Load model
  11. ObjectNumber=1
  12. set dir "models"
  13. load object "ninja.x",ObjectNumber
  14. rotate object ObjectNumber,0,0,0
  15. scale object ObjectNumber,6000,6000,6000
  16. loop object ObjectNumber
  17. set dir ".."
  18.  
  19. rem Create mesh from primitive
  20. randomize timer()
  21. pr=1+rnd(5)
  22. MeshIndex=1
  23. if pr=1 then make object cube 5,50
  24. if pr=2 then make object box 5,50,25,10
  25. if pr=3 then make object sphere 5,50
  26. if pr=4 then make object cylinder 5,50
  27. if pr=5 then make object cone 5,50
  28. if pr=6 then make object plain 5,100,50
  29. if pr=7 then make object triangle 5,0,0,0,50,50,0,50,0,0
  30. make mesh from object MeshIndex,5
  31. delete object 5
  32.  
  33. rem Sphere to Shape
  34. if mesh exist(MeshIndex)=1
  35.  ObjectNumberB=2
  36.  make object sphere ObjectNumberB,50
  37.  change mesh ObjectNumberB,0,MeshIndex
  38.  position object ObjectNumberB,50,100,0
  39.  set object ObjectNumberB,0,1,1,0,0,0,0
  40.  set object light ObjectNumberB,1
  41.  delete mesh MeshIndex
  42. endif
  43.  
  44. rem Make a new object from an object
  45. ObjectNumberC=3 : ImageNumber=1
  46. load image "models\ninja.bmp",ImageNumber
  47. make mesh from object MeshIndex,ObjectNumber
  48. if mesh exist(MeshIndex)=1
  49.  make object ObjectNumberC, MeshIndex, ImageNumber
  50.  position object ObjectNumberC, 100, 0, 0
  51.  set object wireframe ObjectNumberC,1
  52.  set object light ObjectNumberC,1
  53.  delete mesh MeshIndex
  54. endif
  55.  
  56. rem Load mesh and make object with it
  57. ObjectNumberD=4
  58. load mesh "models\ninja.x",MeshIndex
  59. make object ObjectNumberD,MeshIndex,0
  60. position object ObjectNumberD,50,0,0
  61. scale object ObjectNumberD,6000,6000,6000
  62.  
  63. rem Save and delete a mesh
  64. save mesh "newmesh.x",MeshIndex
  65. delete mesh MeshIndex
  66.  
  67. rem Extract limb from object
  68. ObjectNumberE=5
  69. make object from limb ObjectNumberE,ObjectNumber,11
  70. position object ObjectNumberE,-50,50,0
  71.  
  72. rem Remove limb from object
  73. remove limb ObjectNumber,11
  74.  
  75. rem Create a hierarchy of five cylinders
  76. ObjectNumberF=6
  77. MeshIndex1=2 : MeshIndex2=3 : MeshIndex3=4
  78. make object cube 6,20 : make mesh from object MeshIndex1, 6 : delete object 6
  79. make object cube 6,50 : make mesh from object MeshIndex3, 6 : delete object 6
  80. make object cylinder 6,20 : scale object 6,10,300,10
  81. make mesh from object MeshIndex2, 6 : delete object 6
  82. make object box ObjectNumberF, 100,2,100
  83. add limb ObjectNumberF, 1, MeshIndex1 : link limb ObjectNumberF, 0, 1
  84. add limb ObjectNumberF, 2, MeshIndex2 : link limb ObjectNumberF, 1, 2
  85. add limb ObjectNumberF, 3, MeshIndex2 : link limb ObjectNumberF, 2, 3
  86. add limb ObjectNumberF, 4, MeshIndex3 : link limb ObjectNumberF, 3, 4
  87. offset limb ObjectNumberF, 3, 0, 60, 0
  88. offset limb ObjectNumberF, 4, 0, 60, 0
  89. position object ObjectNumberF,-100,0,0
  90.  
  91. rem Example prompt
  92. desc$="Normal Object and Object From Mesh"
  93.  
  94. rem Setup camera
  95. position camera 0,100,-300
  96. autocam off
  97.  
  98. rem Main loop
  99. do
  100.  
  101. rem Show all limbs
  102. set cursor 0,0
  103. print "LIMBS IN OBJECT"
  104. perform checklist for object limbs ObjectNumber
  105. for c=1 to checklist quantity()
  106.  print "  ";checklist value a(c);" ";checklist string$(c)
  107. next c
  108.  
  109. rem Rotate objects
  110. yrotate object ObjectNumberB,wrapvalue(object angle y(ObjectNumberB)+1)
  111. yrotate object ObjectNumberC,wrapvalue(object angle y(ObjectNumberC)+1)
  112.  
  113. rem Rotate limbs
  114. a#=wrapvalue(a#+1)
  115. for t=1 to 4
  116.  if limb exist(ObjectNumberF,t)=1 then rotate limb ObjectNumberF,t,0,0,cos(a#)*-10
  117. next t
  118. scale limb ObjectNumberF, 4, 200+cos(a#)*100, 200+cos(a#)*100, 200+cos(a#)*100
  119.  
  120. rem Rotate head of model while it animates
  121. rotate limb ObjectNumber,16,0,cos(a#)*45,0
  122.  
  123. rem Modify texture of each limb of model
  124. for t=0 to 16
  125.  if limb exist(ObjectNumber,t)=1
  126.   scale limb texture ObjectNumber,t,100.01,100.01
  127.   scroll limb texture ObjectNumber,t,0.001,0.002
  128.  endif
  129. next t
  130.  
  131. rem Manipulate individual limbs
  132. if a#>180 then hide limb ObjectNumber,9 else show limb ObjectNumber,9
  133. if a#>180
  134.  color limb ObjectNumberF,1,rgb(255,255,0)
  135. else
  136.  color limb ObjectNumberF,1,rgb(0,0,255)
  137. endif
  138.  
  139. rem Space will remove a limb and replace it
  140. if spacekey()=1 and limb exist(ObjectNumberF,3)=1
  141.  remove limb ObjectNumberF,4
  142.  make mesh from object MeshIndex, ObjectNumberE
  143.  add limb ObjectNumberF, 4, MeshIndex
  144.  link limb ObjectNumberF, 3, 4
  145.  offset limb ObjectNumberF, 4, 0, 60, 0
  146. endif
  147.  
  148. rem Show Framerate
  149. text 20,screen height()-40,desc$
  150. fps$="DBPro Fps: "+str$(screen fps())
  151. text screen width()-20-text width(fps$),screen height()-40,fps$
  152.  
  153. rem Update screen
  154. sync
  155.  
  156. rem End loop
  157. loop
  158.