84 lines
1.6 KiB
BlitzBasic
84 lines
1.6 KiB
BlitzBasic
;Quick deform
|
|
;David Bird
|
|
;dave@birdie72.freeserve.co.uk
|
|
;15/6/01 (beta 2.24)
|
|
Graphics3D 640,480
|
|
SetBuffer BackBuffer()
|
|
|
|
piv=CreatePivot()
|
|
|
|
cam=CreateCamera(piv)
|
|
PositionEntity cam,0,0,-4
|
|
lit=CreateLight()
|
|
|
|
Global ox#,oy#,oz#,cnt#
|
|
mesh=CreateSphere(25)
|
|
tex=LoadTexture("bl3d_big.jpg")
|
|
ScaleTexture tex,.2,.2
|
|
|
|
EntityTexture mesh,tex
|
|
;WireFrame True
|
|
|
|
While Not KeyDown(1)
|
|
TurnEntity mesh,1,1.5,0
|
|
If KeyDown(2) Then Wave_Effect(mesh,.01,-1,2)
|
|
If KeyDown(3) Then Wave_Effect(mesh,.01,1,2)
|
|
|
|
If KeyHit(4) Then Add_Flats(mesh,.75,.75,.75,0,0)
|
|
UpdateWorld
|
|
RenderWorld
|
|
Text 0,0,"1- wave effect +"
|
|
Text 0,15,"2- wave effect -"
|
|
Text 0,30,"3- Add Flats"
|
|
Text 0,45,"dave@birdie72.freeserve.co.uk"
|
|
Flip
|
|
Wend
|
|
|
|
FreeEntity mesh
|
|
FreeEntity lit
|
|
FreeEntity cam
|
|
FreeEntity piv
|
|
EndGraphics
|
|
End
|
|
|
|
Function Wave_Effect(mesh,ampl#,dir,act)
|
|
surf=GetSurface(mesh,CountSurfaces(mesh))
|
|
cnt=CountVertices(surf)
|
|
For a=0 To cnt-1
|
|
x#=VertexX(surf,a)
|
|
y#=VertexY(surf,a)
|
|
z#=VertexZ(surf,a)
|
|
ang#=(180*y)
|
|
Select act
|
|
Case 0 ; x axis
|
|
x=x+(ampl*Cos(ang)*dir)
|
|
Case 1 ; z axis
|
|
z=z+(ampl*Cos(ang)*dir)
|
|
Case 2
|
|
y=y+(ampl*Cos(ang)*dir)
|
|
End Select
|
|
VertexCoords surf,a,x,y,z
|
|
Next
|
|
End Function
|
|
|
|
Function Add_Flats(mesh,width#,height#,depth#,ang1,ang2)
|
|
RotateMesh mesh,ang1,ang2,0
|
|
surf=GetSurface(mesh,CountSurfaces(mesh))
|
|
cnt=CountVertices(surf)
|
|
For a=0 To cnt-1
|
|
x#=VertexX(surf,a)
|
|
y#=VertexY(surf,a)
|
|
z#=VertexZ(surf,a)
|
|
If x>width Then x=width
|
|
If x<-width Then x=-width
|
|
|
|
If z>depth Then z=depth
|
|
If z<-depth Then z=-depth
|
|
|
|
If y>height Then y=height
|
|
If y<-height Then y=-height
|
|
|
|
VertexCoords surf,a,x,y,z
|
|
Next
|
|
RotateMesh mesh,-ang1,-ang2,0
|
|
End Function |