|
Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново... |
07.03.2011, 22:55
|
#1
|
Знающий
Регистрация: 29.05.2007
Сообщений: 227
Написано 126 полезных сообщений (для 312 пользователей)
|
Улучшенная функция тримеша
Теперь тримешь без проблем строится из многосюрфейсных мешей:
Function BodyCreateMesh(mesh%, mass# = 0)
nsurf = CountSurfaces(mesh)
nvert = 0
nface=0
For ns = 1 To nsurf
Local surf = GetSurface(mesh,ns)
nface = nface+CountTriangles(surf)
nvert = nvert +CountVertices(surf)
Next
fbank = CreateBank(nface*4*3)
nf = 0
vbank = CreateBank(nvert*4*3)
nv = 0
pnvv = 0
For ns = 1 To nsurf
surf = GetSurface(mesh,ns)
nfv = CountTriangles(surf)
For nfc = 0 To nfv -1
PokeInt fbank,nf*12+0,TriangleVertex(surf,nfc,0)+pnvv+ns-1
PokeInt fbank,nf*12+4,TriangleVertex(surf,nfc,1)+pnvv+ns-1
PokeInt fbank,nf*12+8,TriangleVertex(surf,nfc,2)+pnvv+ns-1
nf=nf+1
Next
nvv = CountVertices(surf)
For nvc = 0 To nvv - 1
PokeFloat vbank,nv*12+0,VertexX(surf,nvc)
PokeFloat vbank,nv*12+4,VertexY(surf,nvc)
PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)
nv = nv+1
Next
pnvv=pnvv+nvv-1
Next
bbb%=pxCreateTriMesh(vbank, fbank, nvert, nface,mass)
FreeBank vbank
FreeBank fbank
Return bbb%
End Function
Последний раз редактировалось Coks, 08.03.2011 в 00:53.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Coks за это полезное сообщение:
|
|
11.03.2011, 18:45
|
#2
|
Разработчик
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений (для 329 пользователей)
|
Ответ: Улучшенная функция тримеша
БЕЗНОГNМ
Function BodyCreateMesh(mesh, mass# = 0)
nsurf = CountSurfaces(mesh)
nvert = 0
nface=0
For ns = 1 To nsurf
Local surf = GetSurface(mesh,ns)
nface = nface+CountTriangles(surf)
nvert = nvert +CountVertices(surf)
Next
fbank = CreateBank(nface*4*3)
nf = 0
vbank = CreateBank(nvert*4*3)
nv = 0
pnvv = 0
For ns = 1 To nsurf
surf = GetSurface(mesh,ns)
nfv = CountTriangles(surf)
For nfc = 0 To nfv -1
PokeInt fbank,nf*12+0,TriangleVertex(surf,nfc,0)+pnvv+ns-1
PokeInt fbank,nf*12+4,TriangleVertex(surf,nfc,1)+pnvv+ns-1
PokeInt fbank,nf*12+8,TriangleVertex(surf,nfc,2)+pnvv+ns-1
nf=nf+1
Next
nvv = CountVertices(surf)
For nvc = 0 To nvv - 1
PokeFloat vbank,nv*12+0,VertexX(surf,nvc)*EntityScaleX(mesh)
PokeFloat vbank,nv*12+4,VertexY(surf,nvc)*EntityScaleY(mesh)
PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)*EntityScaleZ(mesh)
nv = nv+1
Next
pnvv=pnvv+nvv-1
Next
bbb%=pxCreateTriMesh(vbank, fbank, nvert, nface,mass)
FreeBank vbank
FreeBank fbank
Return bbb%
End Function
Function EntityScaleX#(ent%)
row=0
el1# = GetMatElement(ent,row,0)
el2# = GetMatElement(ent,row,1)
el3# = GetMatElement(ent,row,2)
Return Sqr(el1*el1+el2*el2+el3*el3)
End Function
Function EntityScaleY#(ent%)
row=1
el1# = GetMatElement(ent,row,0)
el2# = GetMatElement(ent,row,1)
el3# = GetMatElement(ent,row,2)
Return Sqr(el1*el1+el2*el2+el3*el3)
End Function
Function EntityScaleZ#(ent%)
row=2
el1# = GetMatElement(ent,row,0)
el2# = GetMatElement(ent,row,1)
el3# = GetMatElement(ent,row,2)
Return Sqr(el1*el1+el2*el2+el3*el3)
End Function
Hint: убирает потребность в ResetXForm и проблемы с масштабами.
__________________
299 792 458
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
11.03.2011, 18:56
|
#3
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Улучшенная функция тримеша
Сообщение от DeeJex
БЕЗНОГNМ
Hint: убирает потребность в ResetXForm и проблемы с масштабами.
|
Опередил же!
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
13.03.2011, 17:00
|
#4
|
Разработчик
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений (для 92 пользователей)
|
Ответ: Улучшенная функция тримеша
а в чем разница?
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb
Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)
Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
|
(Offline)
|
|
13.03.2011, 17:59
|
#5
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Улучшенная функция тримеша
Сообщение от Colossus
а в чем разница?
|
Вариант от DeeJex`а принимает во внимание ScaleEntity при создании тримеша.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
17.04.2011, 16:25
|
#6
|
Знающий
Регистрация: 29.05.2007
Сообщений: 227
Написано 126 полезных сообщений (для 312 пользователей)
|
Ответ: Улучшенная функция тримеша
Сообщение от DeeJex
Hint: убирает потребность в ResetXForm и проблемы с масштабами.
|
С ResetXForm это не может помочь!
А для изменения масштаба лучше использовать функцию ScaleMesh, в противном случае могут вылезти другие неприятные глюки.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.04.2011, 21:22
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Улучшенная функция тримеша
а если ентитю покрутят или переместят? все ваши танцы с отдельными элементами матрицы трансформации станут ненужными. была же кажется функция переводящая вектор из системы ентити в систему мира? както ТФорм кажется...
|
(Offline)
|
|
17.04.2011, 22:45
|
#8
|
Знающий
Регистрация: 29.05.2007
Сообщений: 227
Написано 126 полезных сообщений (для 312 пользователей)
|
Ответ: Улучшенная функция тримеша
Так а смысл вращать/перемещать объект, если из него собираешься делать тримешь. Сначала сделай физ. тело, а потом его уже ориентируй как тебе надо.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Coks за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:03.
|