home *** CD-ROM | disk | FTP | other *** search
- rem Mesh Manipulation
-
- rem Standard Setup Code for all examples
- `set window off
- sync on : sync rate 0 : color backdrop rgb(0,128,0)
- set text font "arial" : set text size 16
- set text to bold : set text transparent
- ink rgb(255,255,0),0
-
- rem Load model
- ObjectNumber=1
- set dir "models"
- load object "ninja.x",ObjectNumber
- rotate object ObjectNumber,0,0,0
- scale object ObjectNumber,6000,6000,6000
- loop object ObjectNumber
- set dir ".."
-
- rem Create mesh from primitive
- randomize timer()
- pr=1+rnd(5)
- MeshIndex=1
- if pr=1 then make object cube 5,50
- if pr=2 then make object box 5,50,25,10
- if pr=3 then make object sphere 5,50
- if pr=4 then make object cylinder 5,50
- if pr=5 then make object cone 5,50
- if pr=6 then make object plain 5,100,50
- if pr=7 then make object triangle 5,0,0,0,50,50,0,50,0,0
- make mesh from object MeshIndex,5
- delete object 5
-
- rem Sphere to Shape
- if mesh exist(MeshIndex)=1
- ObjectNumberB=2
- make object sphere ObjectNumberB,50
- change mesh ObjectNumberB,0,MeshIndex
- position object ObjectNumberB,50,100,0
- set object ObjectNumberB,0,1,1,0,0,0,0
- set object light ObjectNumberB,1
- delete mesh MeshIndex
- endif
-
- rem Make a new object from an object
- ObjectNumberC=3 : ImageNumber=1
- load image "models\ninja.bmp",ImageNumber
- make mesh from object MeshIndex,ObjectNumber
- if mesh exist(MeshIndex)=1
- make object ObjectNumberC, MeshIndex, ImageNumber
- position object ObjectNumberC, 100, 0, 0
- set object wireframe ObjectNumberC,1
- set object light ObjectNumberC,1
- delete mesh MeshIndex
- endif
-
- rem Load mesh and make object with it
- ObjectNumberD=4
- load mesh "models\ninja.x",MeshIndex
- make object ObjectNumberD,MeshIndex,0
- position object ObjectNumberD,50,0,0
- scale object ObjectNumberD,6000,6000,6000
-
- rem Save and delete a mesh
- save mesh "newmesh.x",MeshIndex
- delete mesh MeshIndex
-
- rem Extract limb from object
- ObjectNumberE=5
- make object from limb ObjectNumberE,ObjectNumber,11
- position object ObjectNumberE,-50,50,0
-
- rem Remove limb from object
- remove limb ObjectNumber,11
-
- rem Create a hierarchy of five cylinders
- ObjectNumberF=6
- MeshIndex1=2 : MeshIndex2=3 : MeshIndex3=4
- make object cube 6,20 : make mesh from object MeshIndex1, 6 : delete object 6
- make object cube 6,50 : make mesh from object MeshIndex3, 6 : delete object 6
- make object cylinder 6,20 : scale object 6,10,300,10
- make mesh from object MeshIndex2, 6 : delete object 6
- make object box ObjectNumberF, 100,2,100
- add limb ObjectNumberF, 1, MeshIndex1 : link limb ObjectNumberF, 0, 1
- add limb ObjectNumberF, 2, MeshIndex2 : link limb ObjectNumberF, 1, 2
- add limb ObjectNumberF, 3, MeshIndex2 : link limb ObjectNumberF, 2, 3
- add limb ObjectNumberF, 4, MeshIndex3 : link limb ObjectNumberF, 3, 4
- offset limb ObjectNumberF, 3, 0, 60, 0
- offset limb ObjectNumberF, 4, 0, 60, 0
- position object ObjectNumberF,-100,0,0
-
- rem Example prompt
- desc$="Normal Object and Object From Mesh"
-
- rem Setup camera
- position camera 0,100,-300
- autocam off
-
- rem Main loop
- do
-
- rem Show all limbs
- set cursor 0,0
- print "LIMBS IN OBJECT"
- perform checklist for object limbs ObjectNumber
- for c=1 to checklist quantity()
- print " ";checklist value a(c);" ";checklist string$(c)
- next c
-
- rem Rotate objects
- yrotate object ObjectNumberB,wrapvalue(object angle y(ObjectNumberB)+1)
- yrotate object ObjectNumberC,wrapvalue(object angle y(ObjectNumberC)+1)
-
- rem Rotate limbs
- a#=wrapvalue(a#+1)
- for t=1 to 4
- if limb exist(ObjectNumberF,t)=1 then rotate limb ObjectNumberF,t,0,0,cos(a#)*-10
- next t
- scale limb ObjectNumberF, 4, 200+cos(a#)*100, 200+cos(a#)*100, 200+cos(a#)*100
-
- rem Rotate head of model while it animates
- rotate limb ObjectNumber,16,0,cos(a#)*45,0
-
- rem Modify texture of each limb of model
- for t=0 to 16
- if limb exist(ObjectNumber,t)=1
- scale limb texture ObjectNumber,t,100.01,100.01
- scroll limb texture ObjectNumber,t,0.001,0.002
- endif
- next t
-
- rem Manipulate individual limbs
- if a#>180 then hide limb ObjectNumber,9 else show limb ObjectNumber,9
- if a#>180
- color limb ObjectNumberF,1,rgb(255,255,0)
- else
- color limb ObjectNumberF,1,rgb(0,0,255)
- endif
-
- rem Space will remove a limb and replace it
- if spacekey()=1 and limb exist(ObjectNumberF,3)=1
- remove limb ObjectNumberF,4
- make mesh from object MeshIndex, ObjectNumberE
- add limb ObjectNumberF, 4, MeshIndex
- link limb ObjectNumberF, 3, 4
- offset limb ObjectNumberF, 4, 0, 60, 0
- endif
-
- rem Show Framerate
- text 20,screen height()-40,desc$
- fps$="DBPro Fps: "+str$(screen fps())
- text screen width()-20-text width(fps$),screen height()-40,fps$
-
- rem Update screen
- sync
-
- rem End loop
- loop
-