![]() |
Проблемка с чайлдами
Ребят, помогите, делаю парсинг левелов (чтобы физ объекты, триггеры и.т.д. расставлять) и вот пытаюсь сделать просто нахождение чайлдов и делание их физ объектами... 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 |
Ответ: Проблемка с чайлдами
Просто всем физ оъектам в максе даеш имя допустим "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) |
Ответ: Проблемка с чайлдами
Значит в сцене присутствуют чилды не только кубиков.
Лучше всего отсекать по именам (см. пост выше) И насколько я помню, из мешей которые являются чилдами нельзя создавать физ тела - они не отцентруются как надо Если не выйдет, попробуй так: сначала все чайлды занеси в тип потом в цикле отпаренть И только после этого создавай физ тела |
Спасибо огромное, второй способ прошел )
Вот только да, с центровкой проблемы... ( Они неправильно перенимают позицию и scale... что делать в этом случае? уж очень не хочется расстановщик писать ) Причем что интересно, если делать CopyMesh, то в блице не наследуется скейлинг и сбиваются координаты, но верно обрабатывается физикой, а если делать CopyEntity то скейлинг сохраняется, координаты сбиваются и неверно обрабатывается физикой... Все таки да, сейчас попробую с чайлда брать трианглы, пересаживать их на свежесозданный мэш, позиционировать его и только потом отдавать физике... З.Ы. Я не извращенец ) |
Ответ: Проблемка с чайлдами
Вот так попробуй
Код:
obj.phisobject = New phisObject |
Ответ: Проблемка с чайлдами
Нет, это тоже не помогает, в данном случае мав на рендере физики... Ну ладно, значит не судьба - буду писать маленький расстановщик объектов )
|
Ответ: Проблемка с чайлдами
Цитата:
Все должно работать |
Ответ: Проблемка с чайлдами
Разобрал свою лень, МАВ возникает от phBodySetEntity, ему явно не нравится такое присвоение чайлда, даже если obj\mesh=CopyMesh(Child) все равно МАВ... Все таки буду писать маленький редактор физ объектов ))) Все равно когда нибудь да понадобится...
|
Ответ: Проблемка с чайлдами
йопть
у тебя там ошибка. поменяй местами параметры функции: phBodySetEntity(obj\mesh,obj\phismesh) |
Ответ: Проблемка с чайлдами
LD, заюзай функцию EntityClass, чтобы определить каким типом энтити является объект.
Далее, в 3Д Максе созданный кубик, нужно конвертить в Editable Mesh (правой кнопкой на кубик и там будет). Тогда экспортируемый кубик будет Мешем. |
Ответ: Проблемка с чайлдами
Ссорь, вчера был не в состоянии проверять код - я сессию вчера закрыл )
И кстати, в функции phBodySetEntity синтаксис - phBodySetEntity(%physbody,%blitzentity), так что все было правильно |
Ответ: Проблемка с чайлдами
Цитата:
pxBodySetEntity(ca\mesh, ca\body) вот строка из работающего проекта ох, не заметил, что ты юзаешь ньютон. Думал что физикс :) Тогда хз откуда у тебя вылет |
Ответ: Проблемка с чайлдами
Как я уже писал, все модели в Editable Mesh должны быть.
А проверяй на класс объекта, либо ты найдёшь пивот к примеру, и попытаешься его копирнуть как меш =) Код:
obj\mesh=CopyMesh(child) |
Ответ: Проблемка с чайлдами
MoKa
Ну это подразумевалось по умолчанию - парсинг уровня по именам. |
Часовой пояс GMT +4, время: 13:33. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot