forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=108)
-   -   TriMesh - создание. (http://forum.boolean.name/showthread.php?t=8654)

Данил 12.07.2009 03:35

TriMesh - создание.
 
//перенесите темы в 3д плиз. ) ошибься)

В общем, запутался с физиксом.
Стоит такая задача:

Я создаю прямо в игре меш - то есть ни откуда не загружаю, именно в игре создаю.

Проблема такая - как заменить функцию 3dmax - ResetXForm - в ксорсе под бмаксом и почему функция по поводу создания тримеша не работает - заикается на именно самом создании :

Цитата:

Function BodyCreateMesh:Int(mesh:Int)
Local nsurf:Int = xCountSurfaces(mesh)
Local nvert:Int = 0
Local nface:Int = 0
For Local ns:Int = 0 To nsurf-1
Local surf:Int = xGetSurface(mesh, ns)
nface:Int = nface + xCountTriangles(surf)
nvert:Int = nvert + xCountVertices(surf)
Next

Local fbank:TBank = CreateBank(nface * 4 * 3)
Local nf:Int = 0
Local vbank:TBank = CreateBank(nvert * 4 * 3)
Local nv:Int = 0
For Local ns:Int = 0 To nsurf-1
Local surf:Int = xGetSurface(mesh, ns)
Local nfv:Int = xCountTriangles(surf)
For Local nfc:Int = 0 To nfv - 1
PokeInt fbank, nf * 12 + 0, xTriangleVertex(surf, nfc, 0)
PokeInt fbank, nf * 12 + 4, xTriangleVertex(surf, nfc, 1)
PokeInt fbank, nf * 12 + 8, xTriangleVertex(surf, nfc, 2)
nf=nf+1
Next

Local nvv:Int = xCountVertices(surf)
For Local nvc:Int = 0 To nvv - 1
PokeFloat vbank, nv * 12 + 0, xVertexX(surf, nvc)
PokeFloat vbank, nv * 12 + 4, xVertexY(surf, nvc)
PokeFloat vbank, nv * 12 + 8, xVertexZ(surf, nvc)
nv = nv+1
Next
Next
Local bbb:Int = pxCreateTriMesh(vbank, fbank, nvert, nface, 0)
vbank = Null
fbank = Null
Return bbb%
End Function
Кто-нибудь знает? Я с физиксом мало знаком, да и с ксорсом тоже)...:@

Данил 12.07.2009 15:00

Ответ: TriMesh - создание.
 
Нашел заменение этой функции:

Цитата:

Global VB:Byte Ptr = xGetMeshVB(Cube)
Global VB_size:Int = xGetMeshVBSize(Cube)
Global IB:Byte Ptr = xGetMeshIB(Cube)
Global IB_size:Int = xGetMeshIBSize(Cube)
Global Cube_Body:Int = pxCreateTriMesh(VB, IB, VB_size, IB_size, 0)
Но - такая же ерунда. Следовательно, вывод:
виноват resetXform.

Я провел эксперимент - взял модель в максе, применил resetXform . запускаю в ксорсе функцию по созаднию тримеша- работает! .

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

следовательно вывод - вся соль в resetXform!


// add

Global Cube:Int = xCreatexLoadMesh("Media/Test/1.b3d")

Global VB:Byte Ptr = xGetMeshVB(Cube)
Global VB_size:Int = xGetMeshVBSize(Cube)
Global IB:Byte Ptr = xGetMeshIB(Cube)
Global IB_size:Int = xGetMeshIBSize(Cube)
Global Cube_Body:Int = pxCreateTriMesh(VB, IB, VB_size, IB_size, 0)

если делать так - то работает.

Но мне нужно сделать это через пустой меш, т.е.:

Global Cube:Int = xCreateMesh()
Global Mesh:Int = xLoadMesh("Media/Test/1.b3d")
xAddMesh(mesh,Cube)

Global VB:Byte Ptr = xGetMeshVB(Cube)
Global VB_size:Int = xGetMeshVBSize(Cube)
Global IB:Byte Ptr = xGetMeshIB(Cube)
Global IB_size:Int = xGetMeshIBSize(Cube)
Global Cube_Body:Int = pxCreateTriMesh(VB, IB, VB_size, IB_size, 0)

т.е. через пустой меш создать тримеш, а к пустому добавить модель.

мб так обхяснил норм)

Данил 12.07.2009 16:42

Ответ: TriMesh - создание.
 
На удивление, разобрался.

Global VB:Byte Ptr = xGetMeshVB(Cube)
Global VB_size:Int = xGetMeshVBSize(Cube)
Global IB:Byte Ptr = xGetMeshIB(Cube)
Global IB_size:Int = xGetMeshIBSize(Cube)
Global Cube_Body:Int = pxCreateTriMesh(VB, IB, VB_size, IB_size, 0)

вот ЭТО вот работает только в глобальном режиме, в виде функции, почему-то ,не канает о_О

ABTOMAT 12.07.2009 16:51

Ответ: TriMesh - создание.
 
Да чо за бред какой-то, меш-то сам одинаковый, глобальный у него хендл или нет.

Данил 12.07.2009 17:28

Ответ: TriMesh - создание.
 
Да сам не особо врубаюсь, что сделал, и почему все заработало

H@NON 12.07.2009 18:01

Ответ: TriMesh - создание.
 
ты наверняка хранил функцию в отдельном подключаемом файле, и инклуд вынес выше создания физического мира. недавно тока со мной такая шляпа случилась)) минут 30 дебажил код, пока не дошло)

Данил 12.07.2009 19:33

Ответ: TriMesh - создание.
 
Блин, точно ведь! Я тупой, сцуко )


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot