Мне нужно реализовать игровой уровень. Для этого сделал уровень в 3ds max studio 2009, экспортировал на всякий случай в разные форматы (3ds и Fbx). Гружу командой xLoadMesh. Создаю своей функцией (функция приведена ниже) Trimesh pmap. Потом создаю из полученного п-мап создаю тримеш командой pxCreateTrimeshFromPmap. Ну и прикручиваю модель к созданному тримешу.
Всё содаётся и ни на что не ругается (ни при 3ds, ни при fbx). Но... Наблюдаю следующую картину. Созданный тримеш не сталкивается вообще (!!!) ни с одним физическим объектом (эксперементировал с массами, но результат один - тримеш просто пролетает всё насквозь).
Пробовал до кучи создавать файл ещё в b3d формате. Результат тот же.
Если без Ксорса, то всё работает =(
Функция создания п-мап файла у меня такая:
Function pxBodyCreateMesh(mesh%,file_name$)
nsurf = xCountSurfaces(mesh)-1
nvert = 0
nface=0
For ns = 1 To nsurf
Local surf = xGetSurface(mesh,ns)
nface = nface+xCountTriangles(surf)
nvert = nvert +xCountVertices(surf)
Next
fbank = CreateBank(nface*4*3)
nf = 0
vbank = CreateBank(nvert*4*3)
nv = 0
For ns = 1 To nsurf
surf = xGetSurface(mesh,ns)
nfv = xCountTriangles(surf)
For nfc = 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
nvv = xCountVertices(surf)
For nvc = 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
bbb%=pxCreateTriMeshPmap(vbank, fbank, nvert, nface, file_name$, 64)
FreeBank vbank
FreeBank fbank
Return bbb%
End Function
Помогите пожалуйста разобраться с ситуацией. Файл уровня состоит всего из трёх кубов, так что он очень низкодетализированый.
И ещё вопрос, но уже по физике. Что означает цифра 64 в команде pxCreateTriMeshPmap(vbank, fbank, nvert, nface, file_name$,
64) ? Пробовал ставить другие цифры (например 32), всё равно столкновений не наблюдается.