Войти
ПрограммированиеФорумФизика

physx - разные вопросы

Страницы: 1 2 3 4 Следующая »
#0
21:19, 24 авг. 2009

Такой вопрос образовался.
По туториалам выходит, что есть три типа объектов - динамический, кинематический и статический.
Различаются они так: динамический просто движется себе по законам, к нему можно применять силу.
Кинематический - может двигаться, но силы на него не действуют, как и прочие объекты.
Статический - просто стоит и всем мешает.

С первым и последним что делать - это понятно, просто создаём и отпускаем на все четыре стороны.
А как привести в движение кинематические объекты, если силы на них не действуют? И зачем они нужны, если
их вполне можно заменить динамическими и статическими?


#1
21:38, 24 авг. 2009

Mephisto std

Как зачем?

Это объекты, движущиеся по анимации, но воздействующие на другие тела. Двигать их с помощью actor->setGlobalPose.

Рагдолы за живыми персами таскаются кинематиками, для определения попаданий, для того, что бы перс ногами там всякую мелочь раскидывал. Едущий лифт - кинематиком можно сделать.. да мало-ли еще чего.

#2
0:19, 25 авг. 2009

MNAndrew
Но как тогда киинематические объекты могут воздействовать на динамические? Если мы просто сделаем setGlobalPose, то
кинематический объект просто встанет на какую-то точку, у него не будет ни скорости, ни импульса. Как же он будет воздействовать
с другими объектами? Просто выталкивать со своего пути?

#3
0:40, 25 авг. 2009

> Двигать их с помощью actor->setGlobalPose
В мануале от NVidia сказано, что использование actor->setGlobalPose некорректно, т.к. вызывает нежелателиные артефакты: туннельный эффект - самый безобидный из них. Рекомендуется использовать actor->moveGlobalPose. В остальном все верно.

Но для реализации animated ragdoll moveGlobalPose не очень подходит. Растет сложность расчета матриц. Поэтому и используем setGlobalPose.

#4
10:47, 25 авг. 2009

Mephisto std
> Но как тогда киинематические объекты могут воздействовать на динамические? Если
> мы просто сделаем setGlobalPose, то
> кинематический объект просто встанет на какую-то точку, у него не будет ни
> скорости, ни импульса. Как же он будет воздействовать
> с другими объектами? Просто выталкивать со своего пути?

Ну... как-то будет выталкивать, вообщем все работает, про MoveGlobalPose тебе уже сказали.

#5
15:50, 25 авг. 2009

ясн, спасибо) попробуем поэксперементировать
не нашел в мануале просто примеров по кинематическим мэшам, где их как-то двигаться заставляют

#6
18:10, 25 авг. 2009

Mephisto std
В туторах есть всё...

#7
2:46, 26 авг. 2009

Тут новый вопрос... новую тему создавать не стану - чтобы не плодить)
Я сделал тут character controller, но возникла неожиданная проблема - когда
капсула перса после прыжка опускается на динамический объект тот улетает за облака.
Нереалистично очень выходит. Например, стол какой-нибудь подвинуть можно, но и встать на него
тоже можно, а у меня он улетает за облака. Тут можно что-нибудь сделать?

Я пробовал поэксперементировать с ControllerHitReport, но я, если честно, не смог на происходящее никак
повлиять. Если я правильно понял, это такой обработчик событий для столкновения контроллеров с окружающим миром.
В нем есть два метода - onShapeHit - столкновения с объектами и onControllerHit - столкновения с другими контроллерами.
Я пробовал там что-то менять и даже всё убирать - всё равно всё улетает в таджикистан.

#8
8:35, 26 авг. 2009

Mephisto std
> Я сделал тут character controller, но возникла неожиданная проблема

Честно говоря - действительно неожиданная. Мы как-то такую не бороли, ибо не возникало.

#9
18:04, 26 авг. 2009

MNAndrew
Ну, на самом деле, почему не бороли? Вот же реальная задача - стоит стол. Нужно, чтобы можно было на него запрыгнуть,
но и подтолкнуть тоже было возможно. Если делать стол динамическим, то он улетает в небо из-под character controller'а,
а если статическим, то его подвинуть будет неззя

#10
20:50, 26 авг. 2009

Mephisto std
>Ну, на самом деле, почему не бороли? Вот же реальная задача - стоит стол. Нужно, чтобы можно было на него запрыгнуть,
>но и подтолкнуть тоже было возможно. Если делать стол динамическим, то он улетает в небо из-под character controller'а,
>а если статическим, то его подвинуть будет неззя

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

Импульс динамику как дается? Я что помню, что у нас у персов есть такой параметр - cc_dynamic_push_force. Т.е. регулируется эта сила, только я уже и не вспомню она то-ли руками дается в onShapeHit, то ли где-то при создании контроллера задается.

Ну если не получится побороть, то я посмотрю в коде подробней что там и как.. когда буду на работе.

#11
3:46, 27 авг. 2009

MNAndrew
Посмотри, если не сложно) Я по сэмплам пока порыщу, но ваще character controller - это, похоже, лажа редкая...

#12
9:06, 27 авг. 2009

Mephisto std
>Посмотри, если не сложно) Я по сэмплам пока порыщу, но ваще character controller - это, похоже, лажа редкая...

Мне особо не с чем сравнить.. но - он работает. Единственный по мне серьезный минус - многовато он времени у процессора забирает.
Думаю в понедельник смогу посмотреть.

#13
14:12, 27 авг. 2009

Mephisto std

Проверил, ничего не летает. Достаточно отдавать в 

NxControllerAction  onShapeHit(const NxControllerShapeHit& hit)
{
    return NX_ACTION_NONE;
}

Как-то так.

Помогло?

#14
16:27, 27 авг. 2009

MNAndrew
Нет, но, кажется, я понял в чем дело. Просто я двигаю капсулу перса ф-цией

mController->move(disp, COLLIDABLE_MASK, 0.001, flag);

она двигается, и получается, что капсула и коробка как бы в одном месте. Ну и капсула вытесняет коробку, откуда
и эффект - полеты во сне и наяву
Я вижу два выхода - либо останавливать перемещение, когда капсула натыкается на объект, а толкание осуществлять через onShapeHit,
или выход два - понять, как действует функция move, возможно, в ней это уже зашито. Не хватает нормального описания как в directX. Что такое
COLLIDABLE_MASK? и какое к нему отношение имеет move?

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумФизика

Тема в архиве.