Тема: Пружина
Показать сообщение отдельно
Старый 24.06.2011, 17:50   #2
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ище одна поверхность вращения

Еще одна бесполезная, но симпатишная поверхность отдаленно, похожа по смыслу на винтовую линию.

Я походу замутил довольно универсальный конструктор поверхностей вращения.

Function CreateStrange(torrad#,inrad#,elements,segments,vitki,shagvitka#)

mesh=CreateMesh()
meshsurf=CreateSurface(mesh)

For i=0 To vitki*elements
For h=0 To segments


x1#=torrad*Sin(i*360/elements)+(inrad+shagvitka*i/elements/10)*Cos(h*360/segments)*Sin(i*360/elements)
y1#=torrad*Cos(i*360/elements)+(inrad+shagvitka*i/elements/10)*Cos(h*360/segments)*Cos(i*360/elements)
z1#=inrad*Sin(h*360/segments)+shagvitka*i/elements

AddVertex meshsurf,x1,z1,y1,inrad*h/segments,inrad*i/elements

Next
Next

For x=0 To vitki*elements
For i=0 To segments
v0=i+segments*X
v1=i+segments*X+1
v2=i+segments*X+segments
v3=i+segments*X+segments+1
If v3<=CountVertices(meshsurf)-1 Then
AddTriangle meshsurf,v0,v2,v3
AddTriangle meshsurf,v1,v0,v3
EndIf
Next
Next
UpdateNormals mesh


testtex=CreateTexture(256,256,256)
SetBuffer TextureBuffer(testtex)
Color 127,127,127
Rect 0,0,128,128
Rect 128,128,128,128
Color 235,240,235
Rect 0,128,128,128
Rect 128,0,128,128
SetBuffer BackBuffer()
ScaleTexture testtex,0.2,0.2
EntityTexture mesh,testtex,0,0


Return mesh

End Function
Эммм... С учетом мизерного времени на генерацию можно замутить спецэффект с морфингом в прямом эфире. Заклинание какое-нить.

Последний раз редактировалось dsd, 10.08.2011 в 03:06.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
Артем Валерьевич (24.06.2011), Harter (24.06.2011), moka (24.06.2011), Mr_F_ (24.06.2011)