![]() |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Я так понимаю, что на данный момент продолжение написания "Учебника по PhysX Wrapper для Blitz3D" на данный момент приостановлено на неопределённый срок времени. Последняя статья (о RagDoll) была написана аж 27.06.2009, а это уже 10 месяцев назад.
Хотелось бы видеть продолжение, очень занимательно рассказывается тут о физике ;) |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Прикол хотите? Забудьте вообще о PhysX Wrapper. Рендер на него забил воооооот такой болт.
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
.Squid, Не подскажешь в пользу чего он забил?
Что теперь Блитз без физики останется? да?:( |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
CRASHER Пользуйся старыми версиями, они очень хороши
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Так шо берём C++, Огре и PhysX SDK и делаем игры как большие дяди :D </вброс>
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
О да, до Огра еще дорасти надо хех :)
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
АВТОМАТ, я читал твой учебник (низкий поклон тебе за него), но ничего не нашел про аналоги команд MoveEntity и TurnEntity. Да, конечно, было про pxBodyAddForce, но после него тело дальше несет. А про TurnEntity я вообще ничего не нашел, если использовать pxBodySetRotation, то тело просто поворачивается, но не меняет вектор направления. Вообщем, есть какие-нибудь аналоги MoveEntity и TurnEntity, которые работали бы как эти команды?
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Гхм, а смысл вообще в симуляции физики тогда?
В реальном мире ты прикладываешь силу (pxBodyAddForce) чтобы сдвинуть или повернуть объект. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Цитата:
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Цитата:
2) А это наверное только своими ручками управлять... траектории по x y z, углы... :crazy: Пока могу сказать про pxBodyGetLinearSpeedX(body), pxBodyGetLinearSpeedY(body), pxBodyGetLinearSpeedZ(body) а также pxBodySet.. С этим монжо менять траекторию пути объекта |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Товарищи! Да вы что!! Совсем на блице обленились!!
Что такое MoveEntity ? Это добавление некоего вектора к текущим координатам объэкта, => function MoveBody(Body,X#,Y#,Z#) { bX#=pxBodyGetPositionX#(Body); bY#=pxBodyGetPositionY#(Body); bZ#=pxBodyGetPositionZ#(Body); pxBodySetPosition(Body,bX#+X#,bY#+Y#,bZ#+Z#); } |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Тут пример управления персонажем (это к вопросу о том, что тело несёт дальше). Но на сколько я помню - там нет поворота.
а что бы двигать тело в направлении его поворота пользуйтесь pxBodyAddLocalForce. Что бы персонаж поворачивался нормально и не падал (немного не в тему, но всё же) я делал так: делал pxBodySetRotation body, -pxBodyGetRotationPitch(body),0,0 для каждой оси, а к нужной оси просто прибавлял угол поворота. Двигаю тело так же, как и cahekp в указанной выше ссылке. Всё. Если надо - выложу небольшой пример, как это сделано у меня, если кто нибудь не понял что я тут накалякал. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
У меня созрело ещё пару вопросов:
1) При pxBodySetRotation тело просто поворачивается, но не меняет вектор направления. Вопрос: как изменить вектор направления? 2) Пытался сделать привязку, как при использовании EntityParent, используя команды joint, и потерпел частичное фиаско. Привязку сделать смог, но однако при поворотах корпуса танка, башня танка свободно гуляла. Вопрос: как сделать обыкновенную привязку, чтобы привязанная часть реагировала, только при столкновении или передачи данных с клавиатуры или мышки? |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Вложений: 1
Для управления физ телами, как обычными существуют команды pxKinematicSet(body%), pxKinematicClear(body%), pxKinematicMove(body%, x#, y#, z#), pxKinematicSetPosition(body%, x#, y#, z#), pxKinematicSetRotation(body%, pitch#, yaw#, roll#). Они все есть в документации.
P.S. Мало того, когда вы двигаете тела в кинематическом режиме, то при выходе из него они сохраняют скорость, крутящий момент и тд. (можно использовать для плавного перехода от анимации к рэгдолу - см. прикреплённый файл). |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Подскажите, пожалуйста, команды PhysX для реализации падения цилиндрического тела (бочка) в воду и плаванья этого тела на поверхности воды. И еще для куба и сферы. С параметрами и описанием хотя бы в пару строк.
Спасибо. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
1. Закон всемирного притяжения
2. Закон Архимеда Никогда не пользовался физиксом, но уверен что функции FloatThatBigBarrelInWater(WhatFuckingBarrelIs:TObj ect) нету |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Цитата:
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Всем привет :) Вчера решил заняться PhysX'oм, до этого пытался воплотить свои идеи с помощью newton'a. Но проблема с лицензионным ключиком от генерации мира, обрубило мне все возможности дальнейшего исследования. И вот с какой проблемой я столкнулся, все сочленения в PhysX'e, какие то хлипкие, вместо веревки получается разболтанная резинка, фиксированные соединения колбасит, будто соединение пружинное. Ораничения работают ограниченно. При небольшом количестве соединяемых тел, все более-менее, но если их больше пары десятков, начинаются чудеса, не устраняемые даже самыми жесткими ограничениями. Как устранить сии безобразия? Помогите пожалуйста..
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Raven конкретней задачу поставь. или сделай маленький пример
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Хорошо, пример:
segmQ = 100 Dim segment (segmQ) Dim segment_px (segmQ) Dim joint (segmQ) For i=1 To segmQ segment(i) = CreateCylinder (7) segment_px (i) = pxBodyCreateCylinder (1,.5,8,.01) ScaleEntity segment(i), 1,.5,1 pxBodySetPosition segment_px(i),-50+i,30,0 pxBodySetRotation (segment_px(i),0,0,90) Next For i=1 To segmQ-1 joint (i) = pxJointCreateSpherical (segment_px(i),segment_px(i+1),pxBodyGetPositionX( segment_px(i)),pxBodyGetPositionY(segment_px(i)),p xBodyGetPositionZ(segment_px(i)),1,0,0) pxJointSphericalSetLimitAngle(joint(i),.0001,.0001 ,.0001) Next joint (0) = pxJointCreateFixed(0,segment_px(1)) joint (segmQ) = pxJointCreateFixed(0,segment_px(segmQ)) Например, я хочу изменить натяжение, не меняя количества сегментов, увеличение расстояния между сегментами не помогает, ограничения углов не меняет ситуацию заметным образом, даже изменение массы сегментов ничего не меняет, что странно... И что самое интересное, даже если заменить сферический джоинт на фиксированный, картина не меняется. То есть все время получается некая сопля, а если я хочу струну или вообще, упругий прут? |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
У кого-нибудь там не затерялся случайно ключик от PhysX Wrapper
Цитата:
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
есть, ща скину....
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
}{@KeR, проверь личку
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
А можно ли сделать регдол если обьект анимируется бипедом?
и еще... я сделал визуальные пули, но мне нужно так же сделать чтобы физ тело получало необходимую физическую силу направленную от вектора попадания пули но с условием только если пуля долетела до обьекта, как этого добиться? |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Colossus, я где то спрашивал про проверку попадания пули инструментарием физикса. Диалог привел к тому что это очень затратно. Проще обычным лайнпиком проверять на расстояние которое пройдет пуля за апдейт. А силу приложить к точке части тела используя вектор попадания. Не помню какая команда, проще в этом плане булит.
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
В Буллете тоже кажется есть linepick.
И Bullet вроде определён как более быстрый движок. Хотя это мне наверное так показалось.. Ну это ещё и не доказано. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Вложений: 2
братцы по двигу вот у меня проблема
делаю таскалку как в игре half life , portal и тут эпик в виде того что мой обьект проваливается под землю если его туда направить а если его двигать к поинту то он начинает бесится дойдя до него з,ы, джоинты не предлогать !! вот кусоу кода для этой таскалки pick=CameraPick(camera,MouseX(),MouseY()) CameraPick(camera,MouseX(),MouseY()) pxRaySetPosition ray,EntityX(camera,1),EntityY(camera,1), EntityZ(camera,1) pxRaySetDir(ray, PickedX#() - EntityX(camera,1), PickedY#() - EntityY(camera,1), PickedZ#() - EntityZ(camera,1)) cpos_x = pxRayGetPickX(ray,1) cpos_y = pxRayGetPickY(ray,1) cpos_z = pxRayGetPickZ(ray,1) If MouseHit(2) =True enable=1-enable picked_body = pxRayGetBody(ray, 1) EndIf If enable = 1 If Not picked_body= player_body If picked_body > 0 pxBodySetPosition (picked_body, EntityX(target,True), EntityY(target,True), EntityZ(target,True)) или ;pxMoveBodyToPoint(picked_body, 500 , EntityX(target,True), EntityY(target,True), EntityZ(target,True)) EndIf EndIf EndIf |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
использовать магниты для таскалки? Вполне логично что именно так она и работает. Когда то давно баловался этим, всё получалось. Конкретно алгоритм не помню, но в двух словах объяснить могу:
0) создаём магнит вместе с мешью таскалки и задаём ему маску по которой он будет работать, выключаем магнит; 1) тыкаем в любой нужный объект(боди) лучом (pxRay который); 2) задаём ему магнитную маску как у магнита; 3) включаем магнит (тело полетело, всё круто); 4) натыкаемся на проблему - примагничиваемое тело пролетает сквозь нас со сверхзвуковой скоростью 5) точное решение проблемы п.4 не помню, но помоему (даже точно, а не помоему) во враппере есть команды-ограничители действия магнита и радиус на котором он не даёт пролететь предмету мимо себя; 6) если нужно отпустить - задаём предмету магнитную маску отличную от рабочей маски магнита и предмет сам падает. Как то так. Поигравшись с магнитами всё должно получиться. В примерах от враппера есть несколько примеров для магнитов, там всё и узнаешь конкретно на практике. Рад бы помочь кодом, но под рукой нет ни блица, ни враппера, ни моих старых наработок на эту тему. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
магниты это изврат и делается там по другому
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
а можеш скинуть свой код (желательно с медией и в лс )
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Ребят, помогите пожалуйста.
Как проверить нахождение поплавка в воде. Не могу найти! А такая функция полюбому должна быть! Без нее вообще никакого контроля в воде нету. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Нету такой команды. Сам мучался в своё время с этим. И вода в данном враппере реализована как силовое поле, а не как вода ЕМНИП
Спасёт проверка координат тела и водоёма, если водоём правильной формы конечно. Если нет - то трудно будет. Но в любом случае только сравнение координат помоему спасёт |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Пусть это даже будет силовое поле. На поплавок действует сила - Дампинг или чтото такое...
Полюбому враппер не реализован полностью. Может кто-нибудь объяснит как посматреть исходную библиотеку (Nvidia PhysX) и вытащить нужную функцию?? :SOS: |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Скачать nVidia PhysX SDK?
Враппер сделан в очень очень очень бородатом году и уже давно никем не дорабатывается, потому что его создатель Render на него забил. Исходники враппера открыты, если разберёшься с PhysX SDK - дорабатывай на своё усмотрение. SDK постоянно совершенствуется компанией. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
вода во враппере написана Рендером, её не было в ориг физыксе.
можно написать свою воду с помощью сил и какие угодно фичи к ней. помню я делал свою воду с волнами) оригинальную можешь увидеть в сдк в pxKepUpdate |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Блин, я наверное не в ту сторону заморачиваюсь.
Мне в принципе проверить нахождение поплавка в воде только чтоб делать брызги, менять параметры экрана при погружении игрока, круги на воде и т.д. Т.е. в принципе можно обойтись и чтото вроде MeshesIntersect(), вот тольо не нашел такового во врапере. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Блин, я наверное не в ту сторону заморачиваюсь.
Мне в принципе проверить нахождение поплавка в воде только чтоб делать брызги, менять параметры экрана при погружении игрока, круги на воде и т.д. Т.е. в принципе можно обойтись и чтото вроде MeshesIntersect(), вот тольо не нашел такового во врапере. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Цитата:
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Вложений: 1
никто не знает как решить проблему с магнитами
когда боди прямо у магнита он его пролетает потом возвращается с более высокой скоростью и так до бесконечности скрин в аттаче |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Там помоему есть коэфициент торможения у магнита какой то, но точно не помню. Сейчас найду свой прикол старый, конкретно эту проблему помоему я решил. Но там какой то другой косяк был и не один
Апд: Нашёл проЭкт свой древний, хотел когда то сталкера повторить :-D там магниты как раз используются для гравипушки. Вырезал всё лишнее, но там такой говнокод :-D пришлось пытаться вспомнить как я тогда мыслил что бы понять где что расположено :-D Вообщем, понадобятся для "изучения" файлы: Shot_functions.bb Player_functions.bb Вырезал вообще ВСЁ лишнее, игрок даже не ходит (разбираться почему времени сейчас нет, да и тебе не это нужно). Вращение камеры мышкой, правая кнопка мыши - притянуть объект к себе. Скачать архив |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
спс буду думать
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
в твоём примере боди диржется но на секунды улетает это очень видно
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
да там ппц :-D прыгает постоянно, и если очень далеко было - может снести игрока :) надо что то ещё придумывать, но магниты точно нужны для гравипушки
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Я некромант. Почему-то у меня регдолл не работает как надо. Физическая модель как бы есть, но визуальная модель не отображается. ЧЯДНТ?
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
вполне возможно, что меш модифицируется без обновления отсекающего бокса, пробуй MeshCullBox()
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Да именно это и может быть основной причиной.
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Цитата:
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Применять на заскиненный меш.
Функция эта недокументирована, так что справку у ней надо гуглить. А суть там какова: есть CullBox у каждого Surface в Блице, по нему рассчитывается, должна ли рендериться модель или нет, чтобы не рендерить то, что не попало в камеру. Если начать двигать кости модели, то CullBox останется на месте и может срабатывать неправильно. MeshCullBox позволяет вручную его указать. |
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Проблема решена, я как в учебнике после превращения в регдолл удалял меш. Если не удалять, все работает
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
А можно ли отключить столкновения одного тела с другим, но оставить для остальных?
|
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
Цитата:
pxBodySetCollisionGroup(тело, группа) - собственно, устанавливает пользовательскую группу коллизия (число). pxBodySetCollisionGroupFlag(группа1, группа2, флаг коллизии) - устанавливает будет-ли столкновение между определёнными группами. Можно указывать одну и ту же группу как первую и вторую, тогда между всеми телами этой группы будет/неБудет столкновений. Использовать очень просто: Код:
pxBodySetCollisionGroupFlag(1, 1, 0); |
Часовой пояс GMT +4, время: 23:56. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot