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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 26.02.2008, 00:30   #1
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Проблемка с чайлдами

Ребят, помогите, делаю парсинг левелов (чтобы физ объекты, триггеры и.т.д. расставлять) и вот пытаюсь сделать просто нахождение чайлдов и делание их физ объектами... CountTriangles для каждого чайлда равно нулю, хотя чайлды находятся (там просто кубики), соответственно создание хулла вызывает МАВ, никак не могу разобраться... В чем может быть дело?


physmesh=LoadAnimMesh("level/phys_"+trkmesh$)
If physmesh<>0
For i=1 To CountChildren(physmesh)
child=GetChild(physmesh,i)
DebugLog CountTriangles(child)
obj.phisobject = New phisObject
obj\mesh=CopyMesh(child)
PositionEntity obj\mesh,EntityX(child),EntityY(child),EntityZ(chi ld)
obj\phismesh = BodyCreateHull(obj\mesh,10)
phBodySetPos(obj\phismesh,EntityX(obj\mesh),Entity Y(obj\mesh),EntityZ(obj\mesh))
phBodySetEntity(obj\phismesh,obj\mesh)
FreeEntity child
Next
EndIf
(Offline)
 
Ответить с цитированием
Старый 26.02.2008, 00:43   #2
Genius
Знающий
 
Аватар для Genius
 
Регистрация: 02.11.2007
Сообщений: 255
Написано 27 полезных сообщений
(для 43 пользователей)
Ответ: Проблемка с чайлдами

Просто всем физ оъектам в максе даеш имя допустим "PhysOBJ"
И в блице потом делаеш так:
Function RecurseSeek(ent)
tab=tab+4
For i=1 To CountChildren(ent)
child=GetChild(ent,i)
name$=Lower(EntityName(child))
If Instr(name$,"PhysOBJ")
obj.phisobject = New phisObject
obj\mesh=CopyMesh(child)
PositionEntity obj\mesh,EntityX(child),EntityY(child),EntityZ(chi ld)
obj\phismesh = BodyCreateHull(obj\mesh,10)
phBodySetPos(obj\phismesh,EntityX(obj\mesh),Entity Y(obj\mesh),EntityZ(obj\mesh))
phBodySetEntity(obj\phismesh,obj\mesh)
EndIf
Next
tab=tab-4
End Function


physmesh=LoadAnimMesh("level/phys_"+trkmesh$)
RecurseSeek(physmesh)

Последний раз редактировалось Genius, 26.02.2008 в 01:06.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LD (26.02.2008)
Старый 26.02.2008, 01:14   #3
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Проблемка с чайлдами

Значит в сцене присутствуют чилды не только кубиков.
Лучше всего отсекать по именам (см. пост выше)

И насколько я помню, из мешей которые являются чилдами нельзя создавать физ тела - они не отцентруются как надо

Если не выйдет, попробуй так:
сначала все чайлды занеси в тип
потом в цикле отпаренть
И только после этого создавай физ тела
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LD (26.02.2008)
Старый 26.02.2008, 02:02   #4
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Спасибо огромное, второй способ прошел )

Вот только да, с центровкой проблемы... ( Они неправильно перенимают позицию и scale... что делать в этом случае? уж очень не хочется расстановщик писать )

Причем что интересно, если делать CopyMesh, то в блице не наследуется скейлинг и сбиваются координаты, но верно обрабатывается физикой, а если делать CopyEntity то скейлинг сохраняется, координаты сбиваются и неверно обрабатывается физикой...

Все таки да, сейчас попробую с чайлда брать трианглы, пересаживать их на свежесозданный мэш, позиционировать его и только потом отдавать физике...

З.Ы. Я не извращенец )

Последний раз редактировалось LD, 26.02.2008 в 02:28.
(Offline)
 
Ответить с цитированием
Старый 26.02.2008, 06:26   #5
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Проблемка с чайлдами

Вот так попробуй

obj.phisobject = New phisObject
obj\mesh=child
mesh=CopyMesh(child)
obj\phismesh = BodyCreateHull(mesh,10)
EntityAlpha mesh,0

phBodySetPos(obj\phismesh,EntityX(obj\mesh,1),EntityY(obj\mesh,1),EntityZ(obj\mesh,1)
phBodySetEntity(obj\phismesh,obj\mesh)
__________________
(Offline)
 
Ответить с цитированием
Старый 27.02.2008, 00:04   #6
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Ответ: Проблемка с чайлдами

Нет, это тоже не помогает, в данном случае мав на рендере физики... Ну ладно, значит не судьба - буду писать маленький расстановщик объектов )
(Offline)
 
Ответить с цитированием
Старый 27.02.2008, 01:28   #7
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Проблемка с чайлдами

Сообщение от LD Посмотреть сообщение
Нет, это тоже не помогает, в данном случае мав на рендере физики... Ну ладно, значит не судьба - буду писать маленький расстановщик объектов )
Разберись почему МАВ
Все должно работать
__________________
(Offline)
 
Ответить с цитированием
Старый 27.02.2008, 03:21   #8
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Ответ: Проблемка с чайлдами

Разобрал свою лень, МАВ возникает от phBodySetEntity, ему явно не нравится такое присвоение чайлда, даже если obj\mesh=CopyMesh(Child) все равно МАВ... Все таки буду писать маленький редактор физ объектов ))) Все равно когда нибудь да понадобится...
(Offline)
 
Ответить с цитированием
Старый 27.02.2008, 03:47   #9
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Проблемка с чайлдами

йопть
у тебя там ошибка.
поменяй местами параметры функции:
phBodySetEntity(obj\mesh,obj\phismesh)
__________________
(Offline)
 
Ответить с цитированием
Старый 27.02.2008, 12:28   #10
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Проблемка с чайлдами

LD, заюзай функцию EntityClass, чтобы определить каким типом энтити является объект.
Далее, в 3Д Максе созданный кубик, нужно конвертить в Editable Mesh (правой кнопкой на кубик и там будет).
Тогда экспортируемый кубик будет Мешем.
(Offline)
 
Ответить с цитированием
Старый 27.02.2008, 14:35   #11
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Ответ: Проблемка с чайлдами

Ссорь, вчера был не в состоянии проверять код - я сессию вчера закрыл )

И кстати, в функции phBodySetEntity синтаксис - phBodySetEntity(%physbody,%blitzentity), так что все было правильно
(Offline)
 
Ответить с цитированием
Старый 27.02.2008, 20:01   #12
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Проблемка с чайлдами

Сообщение от LD Посмотреть сообщение
Ссорь, вчера был не в состоянии проверять код - я сессию вчера закрыл )

И кстати, в функции phBodySetEntity синтаксис - phBodySetEntity(%physbody,%blitzentity), так что все было правильно
Опечатка в хелпе
pxBodySetEntity(ca\mesh, ca\body)

вот строка из работающего проекта

ох, не заметил, что ты юзаешь ньютон.
Думал что физикс
Тогда хз откуда у тебя вылет
__________________

Последний раз редактировалось tormoz, 27.02.2008 в 20:11.
(Offline)
 
Ответить с цитированием
Старый 28.02.2008, 12:09   #13
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Проблемка с чайлдами

Как я уже писал, все модели в Editable Mesh должны быть.
А проверяй на класс объекта, либо ты найдёшь пивот к примеру, и попытаешься его копирнуть как меш =)
obj\mesh=CopyMesh(child)
obj\phismesh = BodyCreateHull(obj\mesh,10)
(Offline)
 
Ответить с цитированием
Старый 28.02.2008, 20:19   #14
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Проблемка с чайлдами

MoKa
Ну это подразумевалось по умолчанию - парсинг уровня по именам.
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемка Pro_100_Den C++ 3 08.12.2009 22:28
Управление переименованными чайлдами karry 3D-программирование 18 24.05.2009 23:00
Проблемка AndruXa Blitz3D 8 08.12.2007 15:54
Проблемка... Антихрист 3D-программирование 22 04.11.2007 22:07
Проблемка impersonalis Болтовня 11 14.01.2006 22:23


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


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