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

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

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

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 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)
 
Ответить с цитированием
Старый 07.01.2010, 20:20   #2
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: Проблема с тримешем.

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

Я и не спорю - в тримешах нихрена не смыслю. Мав не вылетал вообще на этом ниразу. Странно то, что в простом Blitz3d этот же уровень грузится и всё сталкивается как надо. А в Xors3d не робит.
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 20:27   #4
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: Проблема с тримешем.

Сообщение от St.AnGer Посмотреть сообщение
Странно то, что в простом Blitz3d этот же уровень грузится и всё сталкивается как надо.
Ты врешь. Этот код не будет работать под B3D (если затереть все префиксы у команд).
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 20:32   #5
St.AnGer
Нуждающийся
 
Регистрация: 02.09.2007
Сообщений: 50
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Проблема с тримешем.

Работает. Только за место nsurf = xCountSurfaces(mesh)-1 пишу на nsurf = CountSurfaces(mesh), ну и везде префиксы убираю.
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 20:37   #6
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: Проблема с тримешем.

Только за место nsurf = xCountSurfaces(mesh)-1 пишу на nsurf = CountSurfaces(mesh)
Т.е. ты считаешь что после этого код идентичен? Собственно здесь и проблема. А вообще тримеш создается в 7 строк.
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 20:43   #7
St.AnGer
Нуждающийся
 
Регистрация: 02.09.2007
Сообщений: 50
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Проблема с тримешем.

А вообще тримеш создается в 7 строк.
free= xLoadMesh(...)
VB = xGetMeshVB(free)
VB_size = xGetMeshVBSize(free)
IB = xGetMeshIB(free )
IB_size=xGetMeshIBSize(free)
in_mesh=pxCreateTriMesh(VB, IB, VB_size, IB_size, 0)
эти вот строки? Взял из примера. Их проверял, вот с ними MAV как раз вылетает. На команде pxCreateTriMesh
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 20:47   #8
St.AnGer
Нуждающийся
 
Регистрация: 02.09.2007
Сообщений: 50
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Проблема с тримешем.

Ой... Проверил пример из физикса под ксорс "Trimesh_Spring". Он тоже не работает чего то =( чего то не так с физиксом у меня что ли?
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 21:17   #9
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Проблема с тримешем.

Функция создания п-мап файла у меня такая:
Для создания тримеша тебе не понадобится это хрень.

Попробуй:
Function CreatePxTrimesh(mesh,mass#=0)
If mesh <> 0
	Local VBs = xGetMeshVB(mesh)
	Local VB_sizes = xGetMeshVBSize(mesh)
	Local IBs = xGetMeshIB(mesh )
	Local IB_sizes=xGetMeshIBSize(mesh)
	Local Trimesh=pxCreateTriMesh(VBs, IBs, VB_sizes, IB_sizes, mass)
	Return Trimesh
End If
End Function
Массу 0 оставь для левела.

Сообщение от St.AnGer Посмотреть сообщение
Ой... Проверил пример из физикса под ксорс "Trimesh_Spring". Он тоже не работает чего то =( чего то не так с физиксом у меня что ли?
Дрова для физикса поставь.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 21:32   #10
Si-Jey
AnyKey`щик
 
Регистрация: 03.06.2009
Сообщений: 9
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Проблема с тримешем.

St.Anger

Выдаёт МАВ на pxCreateTriMesh. Даже знаю наверно из за чего. У меня старый враппер. Только что обнаружил новый (от октября того года) на xor3d.com. Сейчас скачаю и попробую.

Это St.Anger
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 23:36   #11
Katenok
 
Сообщений: n/a
Ответ: Проблема с тримешем.

Проблема была в моём установленом враппере. Переустановил и всё работает. Спасибо всем кто помогал.

St.AnGer
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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