Heres a simple demo to get you started
Type water
Field mesh
Field surf
Field size
Field wavedensity
Field wavespeed
End Type
Graphics3D 800,600,32
SetBuffer BackBuffer()
WireFrame True
camera=CreateCamera()
look=CreatePivot()
PositionEntity camera,50,10,10
PositionEntity look,50,0,25
PointEntity camera,look
;createwater meshsize,wavedensity,wavespeed
createwater(100,10,10)
While Not KeyHit(1)
updatewater(MilliSecs())
RenderWorld
Text 0,0,"Simple non random wave motion"
Flip
Wend
Function createwater(s,wd,ws)
w.water=New water
w\size=s
w\wavedensity=wd
w\wavespeed=ws
w\mesh=CreateMesh()
w\surf=CreateSurface(w\mesh)
v=0
For x=0 To w\size
For z=0 To w\size
AddVertex w\surf,x,0,z, x,z,0.5
v=v+1
Next
Next
zs=w\size+1
zm=w\size-1
rd=0
For z=0 To zm
For v=0 To w\size-1
AddTriangle w\surf,rd+v,rd+v+1,rd+v+1+w\size
AddTriangle w\surf,rd+v+1+w\size,rd+v+1,rd+v+w\size+2
Next
rd=rd+zs
Next
UpdateNormals(w\mesh)
EntityColor w\mesh,150,200,255
End Function
Function updatewater(move)
For w.water=Each water
v=0
For x=0 To w\size
For z=0 To w\size
h#=(Sin(w\wavedensity*x+move/w\wavespeed)+Cos(w\wavedensity*z+move/w\wavespeed))
VertexCoords w\surf,v,x,h#,z
v=v+1
Next
Next
Next
End Function