Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Глобальные волны синусом
надо бы сделать чтоб синус делал одинаковые волны вне зависимости от позиции меша воды
у меня в цикле так делаются волны
y#=Sin(z#*1000)
на каждый вертекс
надо чтоб меш двигался а волны на нём были как в глобальном пространстве
если делать
TFormPoint x#,y#,z#,mesh,0
gz#=TFormedZ#()
y#=Sin(gz#*1000)
то чето чем дальше я меш от нуля отодвигаю по z тем быстрей эти волны по нему двигаются) т.е. через пару координат уже со скоротсю света летят
ничего не понимаю

graphics3d 1280,1024,32
cam=createcamera()
moveentity cam,250,10,0
CameraClsColor cam,100,100,100
lit=createlight()
Global height#=1
high=CreateLODedWater()
pointentity cam,high
Wireframe 1
While Not KeyHit(1)
If KeyDown(KEY_W) moveentity cam,0,0,1
If KeyDown(KEY_S) moveentity cam,0,0,-1
If KeyDown(KEY_A) moveentity high,0,0,-.1
If KeyDown(KEY_D) moveentity high,0,0,.1
UpdateWater2(high)
renderworld
text 0,0,TrisRendered()
Flip
Wend
Function CreateFace(segs,double,parent)
;segs=24
mesh=CreateMesh()
surf=CreateSurface( mesh )
stx#=-.5
sty#=stx
stp#=Float(1)/Float(segs)
y#=sty
For a=0 To segs
x#=stx v#=a/Float(segs)
For b=0 To segs
u#=b/Float(segs)
AddVertex(surf,x,0,y,u,v)
x=x+stp
Next
y=y+stp
Next
For a=0 To segs-1
For b=0 To segs-1
v0=a*(segs+1)+b:v1=v0+1
v2=(a+1)*(segs+1)+b+1:v3=v2-1
AddTriangle( surf,v0,v2,v1 )
AddTriangle( surf,v0,v3,v2 )
Next
Next
Scaleentity mesh,50,height#,50
;rotateentity mesh,180,0,0
Return mesh
End Function
Function UpdateWater2(m)
surf=GetSurface(m,0)
cnt=CountVertices(surf)-1
For k=0 To cnt
x#=VertexX(surf,k)
z#=VertexZ(surf,k)
TFormPoint x#,0,z#,m,0
gz#=TFormedZ#()
y#=Sin((Float(gz#)*1000))*1
VertexCoords surf,k,x,y,z
Next
End Function
Function CreateLODedWater()
height#=1
high=CreateFace(24,0,0)
Return high
End Function
|
кнопки A,D - двигать меш
|