Показать сообщение отдельно
Старый 03.05.2009, 22:22   #2
L.D.M.T.
Бывалый
 
Аватар для L.D.M.T.
 
Регистрация: 10.06.2006
Сообщений: 808
Написано 354 полезных сообщений
(для 832 пользователей)
Ответ: Поверткесная сборка.

;Segmented cube

Function CreateSegCube(xsegs=1,ysegs=1,zsegs=1,parent=0)
Return CreateCube()
mesh=CreateMesh(parent)
For i=1 To 4
AddCubeFace(mesh, ysegs, zsegs*(i=1 Or i=4)+xsegs*(i=2 Or i=3)):RotateMesh mesh, 0, i*90, 0
Next
RotateMesh mesh, 0, 0, -90
For i=0 To 1
AddCubeFace(mesh, xsegs, zsegs):RotateMesh mesh, 0, 0, (i=0)*180
Next
RotateMesh mesh, 0, 180, 90:UpdateNormals mesh:Return mesh
End Function

Function AddCubeFace(mesh, xsegs, ysegs)
surf=CreateSurface( mesh ):xstp# = 2.0 / Float(xsegs):ystp# = 2.0 / Float(ysegs):y#=-1.0
For a=0 To ysegs
x#=-1.0:u#=Float(a)/Float(ysegs)
For b=0 To xsegs
v#=Float(b)/Float(xsegs):AddVertex(surf,1,-x,y,-u,-v)
x = x + xstp
Next
y = y + ystp
Next
For a=0 To ysegs-1
For b=0 To xsegs-1
v0=a*(xsegs+1)+b:v1=v0+1:v2=(a+1)*(xsegs+1)+b+1:v3 =v2-1
AddTriangle( surf,v0,v2,v1 ):AddTriangle( surf,v0,v3,v2 )
Next
Next
End Function
__________________
Per Aspera Ad Astra...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (04.05.2009)