Показать сообщение отдельно
Старый 07.01.2010, 20:16   #1
St.AnGer
Нуждающийся
 
Регистрация: 02.09.2007
Сообщений: 50
Написано 9 полезных сообщений
(для 9 пользователей)
Печаль Проблема с тримешем.

Мне нужно реализовать игровой уровень. Для этого сделал уровень в 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), всё равно столкновений не наблюдается.
(Offline)
 
Ответить с цитированием