![]() |
![]() |
![]() |
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 |