Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > Полезные функции

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 24.06.2011, 07:20   #1
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 12.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,835 пользователей)
Пружина

Сделал из тора более полезный объект. Легко анимировать манипулируя последним значением.

Function CreateSpring(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*Cos(h*360/segments)*Sin(i*360/elements)
y1#=torrad*Cos(i*360/elements)+inrad*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, 09.08.2011 в 23:06.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
Harter (24.06.2011), Ky3R_94 (29.08.2011), moka (24.06.2011), Mr_F_ (24.06.2011)
Старый 24.06.2011, 13:50   #2
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 12.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,835 пользователей)
Ище одна поверхность вращения

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

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

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, 09.08.2011 в 23:06.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
Артем Валерьевич (24.06.2011), Harter (24.06.2011), moka (24.06.2011), Mr_F_ (24.06.2011)
Старый 24.06.2011, 14:39   #3
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 12.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,835 пользователей)
Ответ: Пружина

x1#=(torrad+shagvitka*i/elements/10)*Sin(i*360/elements)+(inrad+shagvitka*i/elements/10)*Cos(h*360/segments)*Sin(i*360/elements)
y1#=(torrad+shagvitka*i/elements/10)*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

Получится винтовая лестница без ступенек
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 21:25.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com