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

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

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

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

Ответ
 
Опции темы
Старый 10.10.2006, 00:55   #1
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Колючий mesh

Короче, лучше один раз увидеть:
Вложение 1892
Скачать пример можно здесь
Вложение 1894
Вот сама функция:

Function CreateIgls(sm,height#=2.0)
;================================================= =================
;Function: CreateIgls(mesh,lenght)
;Параметры
;mesh - модель для которой надо сделать иглы
;Lenght - длина игл.
;Описание
;Создает для модели иглы. Возвращает указатель на модель содержащую иглы
;длина игл может быть равна 1 тогда игл ваще не будет, может быть отрицательной
;Autor :Олег Сапронов a.k.a. HolyDel
;Email: [email protected]
;Version:1
;Date: 2006.10.09
;================================================= =================

m=CreateMesh()
s=CreateSurface(m)
ss=GetSurface(sm,1)
For i=0 To CountTriangles(ss)-1
ssv0=TriangleVertex(ss,i,0)
ssv1=TriangleVertex(ss,i,1)
ssv2=TriangleVertex(ss,i,2)
ssv0x#=VertexX(ss,ssv0)
ssv0y#=VertexY(ss,ssv0)
ssv0z#=VertexZ(ss,ssv0)
ssv0u#=VertexU(ss,ssv0)
ssv0v#=VertexV(ss,ssv0)
ssv0w#=VertexW(ss,ssv0)
ssv0nx#=VertexNX(ss,ssv0)
ssv0ny#=VertexNY(ss,ssv0)
ssv0nz#=VertexNZ(ss,ssv0)
ssv1x#=VertexX(ss,ssv1)
ssv1y#=VertexY(ss,ssv1)
ssv1z#=VertexZ(ss,ssv1)
ssv1u#=VertexU(ss,ssv1)
ssv1v#=VertexV(ss,ssv1)
ssv1w#=VertexW(ss,ssv1)
ssv1nx#=VertexNX(ss,ssv1)
ssv1ny#=VertexNY(ss,ssv1)
ssv1nz#=VertexNZ(ss,ssv1)
ssv2x#=VertexX(ss,ssv2)
ssv2y#=VertexY(ss,ssv2)
ssv2z#=VertexZ(ss,ssv2)
ssv2u#=VertexU(ss,ssv2)
ssv2v#=VertexV(ss,ssv2)
ssv2w#=VertexW(ss,ssv2)
ssv2nx#=VertexNX(ss,ssv0)
ssv2ny#=VertexNY(ss,ssv0)
ssv2nz#=VertexNZ(ss,ssv0)
ssnvx#=(ssv0x#+ssv1x#+ssv2x#)/3.0*height
ssnvy#=(ssv0y#+ssv1y#+ssv2y#)/3.0*height
ssnvz#=(ssv0z#+ssv1z#+ssv2z#)/3.0*height
ssnvu#=(ssv0u#+ssv1u#+ssv2u#)/3.0
ssnvv#=(ssv0v#+ssv1v#+ssv2v#)/3.0
ssnvw#=(ssv0w#+ssv1w#+ssv2w#)/3.0
ssnvnx=(ssv0nx#+ssv1nx#+ssv2nx#)/3.0
ssnvny=(ssv0ny#+ssv1ny#+ssv2ny#)/3.0
ssnvnz=(ssv0nz#+ssv1nz#+ssv2nz#)/3.0
nv0=AddVertex(s,ssv0x,ssv0y,ssv0z,ssv0u,ssv0v,ssv0 w)
nv1=AddVertex(s,ssv1x,ssv1y,ssv1z,ssv1u,ssv1v,ssv1 w)
nv2=AddVertex(s,ssv2x,ssv2y,ssv2z,ssv2u,ssv2v,ssv2 w)
nv=AddVertex(s,ssnvx,ssnvy,ssnvz,ssnvu,ssnvv,ssnvw )
VertexNormal(s,nv0,ssv0nx,ssv0ny,ssv0nz)
VertexNormal(s,nv1,ssv1nx,ssv1ny,ssv1nz)
VertexNormal(s,nv2,ssv2nx,ssv2ny,ssv2nz)
VertexNormal(s,nv,ssnvnx,ssnvny,ssnvnz)
AddTriangle(s,nv0,nv,nv2)
AddTriangle(s,nv1,nv,nv0)
AddTriangle(s,nv2,nv,nv1)
Next
UpdateNormals m
Return m
End Function

А вот функция создающая плоское кольцо:

Function createring(r1#=1,r2#=2,seg=16,dual=0)
;================================================= =================
;Function: CreateRing(r1#,r2#,seg,dual)
;Параметры
;r1 - внутренний радиус
;r2 - внешний радиус
;seg - количество сегментов
;dual - если 1, то кольцо будет двусторонним
;Описание
;Создает плоское кольцо. Возвращает указатель на модель кольца
;Autor :Олег Сапронов a.k.a. HolyDel
;Email: [email protected]
;Version:1
;Date: 2006.10.09
;================================================= =================
da#=360/seg
a#=0
m=CreateMesh()
s=CreateSurface(m)
vx1#=Sin(a)*r1
vx2#=Sin(a)*r2
vz1#=Cos(a)*r1
vz2#=Cos(a)*r2
v0=AddVertex(s,vx1,0,vz1)
v1=AddVertex(s,vx2,0,vz2)
fv0=v0
fv1=v1
While a<360-da
a=a+da#
vx1#=Sin(a)*r1
vx2#=Sin(a)*r2
vz1#=Cos(a)*r1
vz2#=Cos(a)*r2
v2=AddVertex(s,vx1,0,vz1)
v3=AddVertex(s,vx2,0,vz2)
AddTriangle(s,v1,v3,v0)
AddTriangle(s,v3,v2,v0)
If dual
AddTriangle(s,v3,v1,v0)
AddTriangle(s,v2,v3,v0)
EndIf
v0=v2
v1=v3
Wend
vx1#=Sin(a)*r1
vx2#=Sin(a)*r2
vz1#=Cos(a)*r1
vz2#=Cos(a)*r2
v2=AddVertex(s,vx1,0,vz1)
v3=AddVertex(s,vx2,0,vz2)
AddTriangle(s,fv1,fv0,v2)
AddTriangle(s,v2,v3,fv1)
If dual
AddTriangle(s,fv0,fv1,v2)
AddTriangle(s,v3,v2,fv1)
EndIf
UpdateNormals m
Return m
End Function

З.Ы. Если вдруг соберетесь использовать функцию то лучше использовать ту что приведенена здесь, а не в примере, ибо там есть ошибка.
(Offline)
 
Ответить с цитированием
Старый 10.10.2006, 01:01   #2
jimon
 
Сообщений: n/a
Re: Колючий mesh

че не плохо
 
Ответить с цитированием
Старый 22.02.2007, 14:17   #3
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Re: Колючий mesh

Это для создания игры "Ёжик в тумане: Возвращение"?
Если серьёзно, то интересна разница в фпс между исходным мешем и колючим
Насколько я монимаю, её быть не должно... Можно привести результаты?
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Старый 22.02.2007, 14:31   #4
jimon
 
Сообщений: n/a
Re: Колючий mesh

Ize'g0re
разница минимальна
 
Ответить с цитированием
Старый 23.02.2007, 01:37   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Колючий mesh

Нет, ето для игры ЁЁжиГГ3: Месть за Лисенка

разница должна быть, ибо каждый треугольник превращается в пирамиду без основания (три треугольника).
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AnimMesh_Size_#(Mesh) moka Полезные функции 1 06.03.2011 23:47
AnimMesh<=>Mesh CRASHER 3D-программирование 3 30.03.2009 04:08
Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные! ELIAS 3D-программирование 10 10.01.2009 15:05
Камера и Mesh JeSss 3D-программирование 15 29.01.2008 21:00
CopyEntity + (functions)Mesh Horror 3D-программирование 6 20.11.2007 14:31


Часовой пояс GMT +4, время: 02:12.


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