![]() |
xors+PhysX=ragdoll
================
WARNING!!! ================ Так, сразу предупреждаю: копипастить ragdoll Render'a из аналогичного семпла я НЕ НАМЕРЕН. Почему - не спрашивайте. Как говорится, t0p secre|) ================ Теперь по теме: --- Итак, задача: сделать меш и физическое тело (с написанием всех элементов проблем нет), объеденить все тела (думаю, тоже сам смогу сваять) и сделать функцию приведения в соответствие всех элементов. Именно с последним пунктом у меня и возникли проблемы. Поначалу использовал вот эту функцию, вычитав ее в справке (эх, пора-бы что ли справку поисправлять, или мне свежую версию найти... Кстати, никто не знает, где брать? Только точный линк, плз) : pxBodySetBodyEntity ... С этой коммандой все нормально компилировалось, однако никаких результатов ее работы я лично так и не обнаружил. Потом глянул в семплы, нашел другой синтаксис: pxBodySetEntity ... Вот тут и начались веселости... Т.к. я работаю сразу в Realese режиме, я сразу же словил MAV. Угу, молодец, ничего не скажешь... Включил дебаг, поймал тот же самый MAV на строчке: pxBodySetEntity a\meshL,a\bodyL В чем же дело? Код вот такой: Код:
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ |
Re: xors+PhysX=ragdoll
pxBodySetEntity работает только с блитцем. В Ксорсе другая структура памяти, поэтому МАВ. Тебе придётся самому писать ф-ю, делай как в ОДЕ. Определяё углы поворта и позицию боди, а потом ставь в ту же позицию меш.
|
Re: xors+PhysX=ragdoll
Да ты бы 50 раз подумал как можно задать, и потом задавол- ато чтобы понять такое приходится даже мозг подключать.
PositionEntity Entity, pxBodyGetPositionX(body), ...Y, ...Z RotateEntity Entity. pxBodyGetRotationPitch( body), ... Yaw, ... Roll RTFM PS\ Вопрос можно было озвучить так: Как в Ксорсе Меш поставить в позицию боди.:-) |
Re: xors+PhysX=ragdoll
Всем огромное спасибо, плусадын и прочие респекты.
Пошел писать функцию для приведения Ксорсовского ентити под боди. Как напишу - кину сюда. |
xors+PhysX=ragdoll ; Функция приведения в соответствие
Как и обещался, выкладываю сюда плод цельных 2-х минут деятельности моего моска... Юзайте на здоровье. За возможные совпадения я не отвечаю.
Код:
; pxBodySetEntity-заменитель... |
Re: xors+PhysX=ragdoll
Что-то лагучий мой метод получается... Есть мысль сделать несколько блитцевских ентити, а потом проводить синхрониз уже с ними (вполне верноятно, что это будут простые pivot... Скорее всего так оно и будет)... Но вопрос встает: не будет ли это слишком расточительно?
|
Re: xors+PhysX=ragdoll
Блин чувак ЖЖОш, я находу ето прописывал:), но если так охота функцию(1001% рабочести)
Но изза того что юзается Ксорс могут возникнут дерганости(объект иногда дергается)- у меня возникали(но ето было давно, что сейчас хз) Function BodySetEntity(bod,ent) xPositionEntity ent,pxBodyGetPositionX(bod),pxBodyGetPositionн(bod ),pxBodyGetPositionZ(bod) xRotateEntity ent,pxBodyGetRotationPitch(bod),pxBodyGetRotationY aw(bod),pxBodyGetRotationRoll(bod) End Function |
Re: xors+PhysX=ragdoll
Глобали не забудьте установить, а то у физ объектов нету локальных, а у энтитей вероятны.
|
Re: xors+PhysX=ragdoll
Тогда вопрос состоит теперь именно в том, чтобы убрать дерганности...
Я попробовал и через стандартные ентити, однако дерганность осталась... Придется видимо городить функцию для проверки движения на баг и устранения ошибки (; Если реализую грамотно и мое чудо даже заработает, то опять-таки выложу здесь. ПёС. А "жжу" я именно потому, как мне хотелось в коде видеть не мудреную конструкцию, а что-то вроде: BodySetEntity a\body,a\mesh ... |
Re: xors+PhysX=ragdoll
Ize'g0re, хм если ставить перемещение после упдейта физики и перед рендером?
|
Re: xors+PhysX=ragdoll
Там оно и находится... Вернее находилось... (^+^')
|
Re: xors+PhysX=ragdoll
обычно матрица обьекта не обновляется после SetPosition
надо ее ручками обновлять и всьо :) хотя хз |
Re: xors+PhysX=ragdoll
Джимон, если возможно, опиши несколько подробнее.
Не совсем понимаю, что есть матрица объекта - имеется ввиду вертексная матрица? В любом случае, вопрос: как ее обновить ручками? |
Re: xors+PhysX=ragdoll
ну в ирлихте, к примеру, после вызова setposition сама позиция
обьекта не обновляется там стоит такой метод в ISceneNode Код:
virtual void setPosition(const core::vector3df& newpos) Код:
virtual void updateAbsolutePosition() тоесть после задания позиции, ее реальное значение не обновляется и для синхронизации приходилось ручками вызывать updateAbsolutePosition() :) я хз как в xors ... просто предположил такое |
Re: xors+PhysX=ragdoll
Цитата:
|
Часовой пояс GMT +4, время: 09:01. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot