try this:
Graphics3D 1024,768,32
SetBuffer BackBuffer()
WireFrame True
camera=CreateCamera()
PositionEntity camera,0,10,-10
ship=LoadMesh("models\fighter.3ds")
ScaleMesh ship,0.03,0.03,0.03
PointEntity camera,ship
light=CreateLight()
angle#=0
alpha#=1.0
Type vertex
Field s ; surface
Field index
Field x#
Field y#
Field z#
End Type
Global maxx#,maxy#,maxz#,minx#,miny#,minz#
Global rangex#,rangey#,rangez#
GetModel(ship)
rangex=maxx-minx
rangey=maxy-miny
rangez=maxz-minz
UpdateNormals ship
While Not KeyDown(1)
RenderWorld
Text 0,0,"Press C to cloak"
TurnEntity ship,0,0.1,0
If KeyHit( 46 )=True cloak=1-cloak
If cloak=1 And MilliSecs()>timer
angle=angle+12
timer=MilliSecs()+20
alpha=alpha*0.95
If alpha<0.0009 Then alpha=1.0:cloak=False
setalpha(ship,alpha)
vc=0
For v.vertex=Each vertex
vc=vc+1
perx#=((maxx-v\x)+minx)*48.0
pery#=((maxy-v\y)+miny)*48.0
perz#=((maxz-v\z)+minz)*48.0
VertexCoords v\s,v\index,v\x+(Sin(angle+perx)/4.0),v\y+(Cos(angle+pery)/4.0),v\z+(Cos(angle+perz)/4.0)
Next
UpdateNormals ship
EndIf
Flip
Wend
End
Function setalpha(ship,alpha#)
cc=CountChildren(ship)
If cc=0
EntityAlpha ship,alpha
Else
For count=0 To cc-1
gc=GetChild(ship,count)
setalpha(gc,alpha)
Next
EndIf
End Function
Function GetModel(ship)
For sur=1 To CountSurfaces(ship)
; get all the surfaces
surface=GetSurface(ship,sur)
; get the vertices for each surface
For vertex=0 To CountVertices(surface)-1
v.vertex=New vertex
v\s=surface
v\index=vertex
v\x=VertexX(surface,vertex)
v\y=VertexY(surface,vertex)
v\z=VertexZ(surface,vertex)
; get the limits of the model
If v\x>maxx# Then maxx=v\x
If v\x<minx# Then minx=v\x
If v\y>maxy# Then maxy=v\y
If v\y<miny# Then miny=v\y
If v\z>maxz# Then maxz=v\z
If v\z<minz# Then minz=v\z
Next
Next
End Function
You may have to adjust the scale of whatever model you decide to punch into this