|
3D-программирование Вопросы, касающиеся программирования 3D мира |
26.02.2008, 00:30
|
#1
|
ПроЭктировщик
Регистрация: 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
|
Знающий
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.02.2008, 01:14
|
#3
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Проблемка с чайлдами
Значит в сцене присутствуют чилды не только кубиков.
Лучше всего отсекать по именам (см. пост выше)
И насколько я помню, из мешей которые являются чилдами нельзя создавать физ тела - они не отцентруются как надо
Если не выйдет, попробуй так:
сначала все чайлды занеси в тип
потом в цикле отпаренть
И только после этого создавай физ тела
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.02.2008, 02:02
|
#4
|
ПроЭктировщик
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений (для 16 пользователей)
|
Спасибо огромное, второй способ прошел )
Вот только да, с центровкой проблемы... ( Они неправильно перенимают позицию и scale... что делать в этом случае? уж очень не хочется расстановщик писать )
Причем что интересно, если делать CopyMesh, то в блице не наследуется скейлинг и сбиваются координаты, но верно обрабатывается физикой, а если делать CopyEntity то скейлинг сохраняется, координаты сбиваются и неверно обрабатывается физикой...
Все таки да, сейчас попробую с чайлда брать трианглы, пересаживать их на свежесозданный мэш, позиционировать его и только потом отдавать физике...
З.Ы. Я не извращенец )
Последний раз редактировалось LD, 26.02.2008 в 02:28.
|
(Offline)
|
|
26.02.2008, 06:26
|
#5
|
Гигант индустрии
Регистрация: 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
|
ПроЭктировщик
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений (для 16 пользователей)
|
Ответ: Проблемка с чайлдами
Нет, это тоже не помогает, в данном случае мав на рендере физики... Ну ладно, значит не судьба - буду писать маленький расстановщик объектов )
|
(Offline)
|
|
27.02.2008, 01:28
|
#7
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Проблемка с чайлдами
Сообщение от LD
Нет, это тоже не помогает, в данном случае мав на рендере физики... Ну ладно, значит не судьба - буду писать маленький расстановщик объектов )
|
Разберись почему МАВ
Все должно работать
__________________
|
(Offline)
|
|
27.02.2008, 03:21
|
#8
|
ПроЭктировщик
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений (для 16 пользователей)
|
Ответ: Проблемка с чайлдами
Разобрал свою лень, МАВ возникает от phBodySetEntity, ему явно не нравится такое присвоение чайлда, даже если obj\mesh=CopyMesh(Child) все равно МАВ... Все таки буду писать маленький редактор физ объектов ))) Все равно когда нибудь да понадобится...
|
(Offline)
|
|
27.02.2008, 03:47
|
#9
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Проблемка с чайлдами
йопть
у тебя там ошибка.
поменяй местами параметры функции:
phBodySetEntity(obj\mesh,obj\phismesh)
__________________
|
(Offline)
|
|
27.02.2008, 12:28
|
#10
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Проблемка с чайлдами
LD, заюзай функцию EntityClass, чтобы определить каким типом энтити является объект.
Далее, в 3Д Максе созданный кубик, нужно конвертить в Editable Mesh (правой кнопкой на кубик и там будет).
Тогда экспортируемый кубик будет Мешем.
|
(Offline)
|
|
27.02.2008, 14:35
|
#11
|
ПроЭктировщик
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений (для 16 пользователей)
|
Ответ: Проблемка с чайлдами
Ссорь, вчера был не в состоянии проверять код - я сессию вчера закрыл )
И кстати, в функции phBodySetEntity синтаксис - phBodySetEntity(%physbody,%blitzentity), так что все было правильно
|
(Offline)
|
|
27.02.2008, 20:01
|
#12
|
Гигант индустрии
Регистрация: 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
|
.
Регистрация: 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
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Проблемка с чайлдами
MoKa
Ну это подразумевалось по умолчанию - парсинг уровня по именам.
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:31.
|