forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Обсужение учебника по PhysX Wrapper для Blitz3D (http://forum.boolean.name/showthread.php?t=7569)

KiberPUNK 24.04.2010 02:03

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Я так понимаю, что на данный момент продолжение написания "Учебника по PhysX Wrapper для Blitz3D" на данный момент приостановлено на неопределённый срок времени. Последняя статья (о RagDoll) была написана аж 27.06.2009, а это уже 10 месяцев назад.

Хотелось бы видеть продолжение, очень занимательно рассказывается тут о физике ;)

.Squid 25.04.2010 02:12

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Прикол хотите? Забудьте вообще о PhysX Wrapper. Рендер на него забил воооооот такой болт.

St_AnGer 25.04.2010 09:00

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
а жаль... вещь полезная....

CRASHER 02.05.2010 20:47

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
.Squid, Не подскажешь в пользу чего он забил?
Что теперь Блитз без физики останется? да?:(

Hurrit 02.05.2010 21:47

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
CRASHER Пользуйся старыми версиями, они очень хороши

ABTOMAT 02.05.2010 21:48

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Так шо берём C++, Огре и PhysX SDK и делаем игры как большие дяди :D </вброс>

Reizel 03.05.2010 10:31

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
О да, до Огра еще дорасти надо хех :)

Hurrit 17.05.2010 19:25

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
АВТОМАТ, я читал твой учебник (низкий поклон тебе за него), но ничего не нашел про аналоги команд MoveEntity и TurnEntity. Да, конечно, было про pxBodyAddForce, но после него тело дальше несет. А про TurnEntity я вообще ничего не нашел, если использовать pxBodySetRotation, то тело просто поворачивается, но не меняет вектор направления. Вообщем, есть какие-нибудь аналоги MoveEntity и TurnEntity, которые работали бы как эти команды?

.Squid 17.05.2010 19:53

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Гхм, а смысл вообще в симуляции физики тогда?
В реальном мире ты прикладываешь силу (pxBodyAddForce) чтобы сдвинуть или повернуть объект.

Hurrit 17.05.2010 19:57

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Цитата:

Сообщение от .Squid (Сообщение 147127)
Гхм, а смысл вообще в симуляции физики тогда?

Для нормальной коллизии, ну и некоторых дополнительных плюшек.

LLI.T.A.L.K.E.R. 17.05.2010 21:18

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Цитата:

Сообщение от Hurrit (Сообщение 147125)
АВТОМАТ, я читал твой учебник (низкий поклон тебе за него), но ничего не нашел про аналоги команд MoveEntity и TurnEntity.

1) Да, конечно, было про pxBodyAddForce, но после него тело дальше несет.

2) А про TurnEntity я вообще ничего не нашел, если использовать pxBodySetRotation, то тело просто поворачивается, но не меняет вектор направления. Вообщем, есть какие-нибудь аналоги MoveEntity и TurnEntity, которые работали бы как эти команды?

1) Я у себя попробую использовать антизанос, тормоза. Смысл в том, что вычислить текущую скорость и относительно уменьшать её (например делением на 2, ну и возможно с расчётом массы объекта)

2) А это наверное только своими ручками управлять... траектории по x y z, углы... :crazy:
Пока могу сказать про pxBodyGetLinearSpeedX(body), pxBodyGetLinearSpeedY(body), pxBodyGetLinearSpeedZ(body) а также pxBodySet.. С этим монжо менять траекторию пути объекта

Reizel 18.05.2010 00:23

Ответ: Обсужение учебника по 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#);
}

St_AnGer 18.05.2010 12:08

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Тут пример управления персонажем (это к вопросу о том, что тело несёт дальше). Но на сколько я помню - там нет поворота.

а что бы двигать тело в направлении его поворота пользуйтесь pxBodyAddLocalForce. Что бы персонаж поворачивался нормально и не падал (немного не в тему, но всё же) я делал так: делал pxBodySetRotation body, -pxBodyGetRotationPitch(body),0,0 для каждой оси, а к нужной оси просто прибавлял угол поворота. Двигаю тело так же, как и cahekp в указанной выше ссылке. Всё. Если надо - выложу небольшой пример, как это сделано у меня, если кто нибудь не понял что я тут накалякал.

Hurrit 19.05.2010 19:27

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
У меня созрело ещё пару вопросов:
1) При pxBodySetRotation тело просто поворачивается, но не меняет вектор направления. Вопрос: как изменить вектор направления?
2) Пытался сделать привязку, как при использовании EntityParent, используя команды joint, и потерпел частичное фиаско. Привязку сделать смог, но однако при поворотах корпуса танка, башня танка свободно гуляла. Вопрос: как сделать обыкновенную привязку, чтобы привязанная часть реагировала, только при столкновении или передачи данных с клавиатуры или мышки?

viper86 20.05.2010 12:12

Ответ: Обсужение учебника по 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. Мало того, когда вы двигаете тела в кинематическом режиме, то при выходе из него они сохраняют скорость, крутящий момент и тд. (можно использовать для плавного перехода от анимации к рэгдолу - см. прикреплённый файл).

YaLAS 10.11.2010 15:47

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Подскажите, пожалуйста, команды PhysX для реализации падения цилиндрического тела (бочка) в воду и плаванья этого тела на поверхности воды. И еще для куба и сферы. С параметрами и описанием хотя бы в пару строк.
Спасибо.

Reks888 23.11.2010 18:20

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
1. Закон всемирного притяжения
2. Закон Архимеда
Никогда не пользовался физиксом, но уверен что функции FloatThatBigBarrelInWater(WhatFuckingBarrelIs:TObj ect) нету

is.SarCasm 23.11.2010 21:01

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Цитата:

Никогда не пользовался физиксом, но уверен что функции FloatThatBigBarrelInWater(WhatFuckingBarrelIs:TObj ect) нету
Это нужно исправить!

Raven 29.12.2010 11:17

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Всем привет :) Вчера решил заняться PhysX'oм, до этого пытался воплотить свои идеи с помощью newton'a. Но проблема с лицензионным ключиком от генерации мира, обрубило мне все возможности дальнейшего исследования. И вот с какой проблемой я столкнулся, все сочленения в PhysX'e, какие то хлипкие, вместо веревки получается разболтанная резинка, фиксированные соединения колбасит, будто соединение пружинное. Ораничения работают ограниченно. При небольшом количестве соединяемых тел, все более-менее, но если их больше пары десятков, начинаются чудеса, не устраняемые даже самыми жесткими ограничениями. Как устранить сии безобразия? Помогите пожалуйста..

pepel 29.12.2010 11:52

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Raven конкретней задачу поставь. или сделай маленький пример

Raven 30.12.2010 16:37

Ответ: Обсужение учебника по 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))

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

}{@KeR 15.02.2011 19:33

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
У кого-нибудь там не затерялся случайно ключик от PhysX Wrapper
Цитата:

Очень нужно

Leowey 16.02.2011 22:18

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
есть, ща скину....

Leowey 16.02.2011 22:20

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
}{@KeR, проверь личку

Colossus 20.01.2012 05:40

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
А можно ли сделать регдол если обьект анимируется бипедом?

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

CRASHER 22.01.2012 10:36

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Colossus, я где то спрашивал про проверку попадания пули инструментарием физикса. Диалог привел к тому что это очень затратно. Проще обычным лайнпиком проверять на расстояние которое пройдет пуля за апдейт. А силу приложить к точке части тела используя вектор попадания. Не помню какая команда, проще в этом плане булит.

LLI.T.A.L.K.E.R. 22.01.2012 20:16

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
В Буллете тоже кажется есть linepick.
И Bullet вроде определён как более быстрый движок.
Хотя это мне наверное так показалось.. Ну это ещё и не доказано.

tirarex 04.05.2012 19:28

Ответ: Обсужение учебника по 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
PHP код:

[php

[/php]

St_AnGer 04.05.2012 20:59

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
использовать магниты для таскалки? Вполне логично что именно так она и работает. Когда то давно баловался этим, всё получалось. Конкретно алгоритм не помню, но в двух словах объяснить могу:

0) создаём магнит вместе с мешью таскалки и задаём ему маску по которой он будет работать, выключаем магнит;
1) тыкаем в любой нужный объект(боди) лучом (pxRay который);
2) задаём ему магнитную маску как у магнита;
3) включаем магнит (тело полетело, всё круто);
4) натыкаемся на проблему - примагничиваемое тело пролетает сквозь нас со сверхзвуковой скоростью
5) точное решение проблемы п.4 не помню, но помоему (даже точно, а не помоему) во враппере есть команды-ограничители действия магнита и радиус на котором он не даёт пролететь предмету мимо себя;
6) если нужно отпустить - задаём предмету магнитную маску отличную от рабочей маски магнита и предмет сам падает.

Как то так. Поигравшись с магнитами всё должно получиться. В примерах от враппера есть несколько примеров для магнитов, там всё и узнаешь конкретно на практике.
Рад бы помочь кодом, но под рукой нет ни блица, ни враппера, ни моих старых наработок на эту тему.

tirarex 04.05.2012 21:25

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
магниты это изврат и делается там по другому

St_AnGer 04.05.2012 22:39

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Изврат или нет - работало как часы. Помню на отладкувсех коэфициентов дня два/три убил, но результат того стоил.
Если не нравится магнитами - делай джоинтами фиксироваными. Но ты ими делать не хочешь, да и тут будет гораздо больше проблем (прям сразу: перевешивание игрока предметом, и как следствие выравнивания положения игрока - полный расколбас).

tirarex 04.05.2012 22:41

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
а можеш скинуть свой код (желательно с медией и в лс )

burovalex 22.05.2012 21:00

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Ребят, помогите пожалуйста.
Как проверить нахождение поплавка в воде. Не могу найти!

А такая функция полюбому должна быть! Без нее вообще никакого контроля в воде нету.

St_AnGer 22.05.2012 22:17

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Нету такой команды. Сам мучался в своё время с этим. И вода в данном враппере реализована как силовое поле, а не как вода ЕМНИП

Спасёт проверка координат тела и водоёма, если водоём правильной формы конечно. Если нет - то трудно будет. Но в любом случае только сравнение координат помоему спасёт

burovalex 24.05.2012 21:10

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Пусть это даже будет силовое поле. На поплавок действует сила - Дампинг или чтото такое...
Полюбому враппер не реализован полностью.
Может кто-нибудь объяснит как посматреть исходную библиотеку (Nvidia PhysX) и вытащить нужную функцию?? :SOS:

St_AnGer 24.05.2012 21:28

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Скачать nVidia PhysX SDK?

Враппер сделан в очень очень очень бородатом году и уже давно никем не дорабатывается, потому что его создатель Render на него забил. Исходники враппера открыты, если разберёшься с PhysX SDK - дорабатывай на своё усмотрение. SDK постоянно совершенствуется компанией.

Nex 24.05.2012 21:52

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 

Цитата:

SDK постоянно совершенствуется компанией.
Вроде уже нет. (?)

Mr_F_ 24.05.2012 21:59

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
вода во враппере написана Рендером, её не было в ориг физыксе.
можно написать свою воду с помощью сил и какие угодно фичи к ней.
помню я делал свою воду с волнами)

оригинальную можешь увидеть в сдк в pxKepUpdate

burovalex 25.05.2012 20:19

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Блин, я наверное не в ту сторону заморачиваюсь.
Мне в принципе проверить нахождение поплавка в воде только чтоб делать брызги, менять параметры экрана при погружении игрока, круги на воде и т.д.
Т.е. в принципе можно обойтись и чтото вроде MeshesIntersect(), вот тольо не нашел такового во врапере.

burovalex 25.05.2012 20:39

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Блин, я наверное не в ту сторону заморачиваюсь.
Мне в принципе проверить нахождение поплавка в воде только чтоб делать брызги, менять параметры экрана при погружении игрока, круги на воде и т.д.
Т.е. в принципе можно обойтись и чтото вроде MeshesIntersect(), вот тольо не нашел такового во врапере.

Mr_F_ 25.05.2012 20:46

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Цитата:

MeshesIntersect()
не нужно, можно простой математикой проверять пересекает ли куб/сфера плоскость.

tirarex 27.05.2012 11:38

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Вложений: 1
никто не знает как решить проблему с магнитами

когда боди прямо у магнита он его пролетает потом возвращается
с более высокой скоростью и так до бесконечности
скрин в аттаче

St_AnGer 27.05.2012 12:36

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Там помоему есть коэфициент торможения у магнита какой то, но точно не помню. Сейчас найду свой прикол старый, конкретно эту проблему помоему я решил. Но там какой то другой косяк был и не один

Апд:

Нашёл проЭкт свой древний, хотел когда то сталкера повторить :-D там магниты как раз используются для гравипушки. Вырезал всё лишнее, но там такой говнокод :-D пришлось пытаться вспомнить как я тогда мыслил что бы понять где что расположено :-D

Вообщем, понадобятся для "изучения" файлы:
Shot_functions.bb
Player_functions.bb

Вырезал вообще ВСЁ лишнее, игрок даже не ходит (разбираться почему времени сейчас нет, да и тебе не это нужно). Вращение камеры мышкой, правая кнопка мыши - притянуть объект к себе.

Скачать архив

tirarex 27.05.2012 17:31

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
спс буду думать

tirarex 27.05.2012 17:37

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
в твоём примере боди диржется но на секунды улетает это очень видно

St_AnGer 27.05.2012 18:28

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
да там ппц :-D прыгает постоянно, и если очень далеко было - может снести игрока :) надо что то ещё придумывать, но магниты точно нужны для гравипушки

reumep 19.02.2014 23:17

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Я некромант. Почему-то у меня регдолл не работает как надо. Физическая модель как бы есть, но визуальная модель не отображается. ЧЯДНТ?

Черный крыс 19.02.2014 23:41

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
вполне возможно, что меш модифицируется без обновления отсекающего бокса, пробуй MeshCullBox()

ABTOMAT 19.02.2014 23:55

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Да именно это и может быть основной причиной.

reumep 19.02.2014 23:59

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Цитата:

MeshCullBox()
А как правильно использовать? На что? При применении на объекты для хулла mav. Пример из урока работает нормально

ABTOMAT 20.02.2014 00:29

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Применять на заскиненный меш.
Функция эта недокументирована, так что справку у ней надо гуглить.
А суть там какова: есть CullBox у каждого Surface в Блице, по нему рассчитывается, должна ли рендериться модель или нет, чтобы не рендерить то, что не попало в камеру.
Если начать двигать кости модели, то CullBox останется на месте и может срабатывать неправильно.
MeshCullBox позволяет вручную его указать.

reumep 20.02.2014 10:49

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Проблема решена, я как в учебнике после превращения в регдолл удалял меш. Если не удалять, все работает

reumep 23.02.2014 15:19

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
А можно ли отключить столкновения одного тела с другим, но оставить для остальных?

St_AnGer 24.02.2014 08:46

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Цитата:

Сообщение от reumep (Сообщение 275151)
А можно ли отключить столкновения одного тела с другим, но оставить для остальных?

Да, и очень просто.

pxBodySetCollisionGroup(тело, группа) - собственно, устанавливает пользовательскую группу коллизия (число).

pxBodySetCollisionGroupFlag(группа1, группа2, флаг коллизии) - устанавливает будет-ли столкновение между определёнными группами. Можно указывать одну и ту же группу как первую и вторую, тогда между всеми телами этой группы будет/неБудет столкновений.

Использовать очень просто:
Код:

pxBodySetCollisionGroupFlag(1, 1, 0);

Body1 = pxBodyCreateCube(1, 1, 1, 10)
pxBodySetCollisionGroup(Body1, 1)
Body2 = pxBodyCreateCube(2, 1, 3, 10)
pxBodySetCollisionGroup(Body2, 1)



Часовой пояс GMT +4, время: 23:56.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot