Тема: PhysX wrapper
Показать сообщение отдельно
Старый 25.02.2007, 03:12   #10
Render
Знающий
 
Регистрация: 12.07.2006
Сообщений: 283
Написано 16 полезных сообщений
(для 32 пользователей)
Re: PhysX wrapper

Релиз 0.7.5.0

Самое главное изменение это переход на новый СДК. так что нужно качать всё полностью с драйверами. И поудалять все старые длл-ки. желательно всё хорошенько проверить, а то я невсиле всё сам проверять на баги.
Поскольку удалось перейти на новый СДК, то возможно скоро появятся флуиды м продвинутые мягкие тела . Так что ждёмс.
В примерах появилось два новых. Один от МадМедика - хорошо демонстрирует контакты (смотреть всем в папке Contact). Второй от меня в папке с машинами. там подвеска на сочлениях. Сильно неругать, я её зделал за 15 минут.

1. Добавлена подвеска на сочлениях

pxJointCreateSuspFront%(body0%, body1%, x#, y#, z#) - сочление для передних колёс
pxJointCreateSuspBack%(body0%, body1%, x#, y#, z#) - для задних колёс
pxJointSuspSetSteerN(joint%, x#, y#, z#) - ось вращения колеса
pxJointSuspSetTurnN(joint%, x#, y#, z#) - ось поворота колеса
pxJointSuspSetLinLimit(joint%, lim#)- линейное ограничение хода
pxJointSuspSetLinParameter(joint%, spring#, rest#, damp#) - параметры линейного огарничения
pxJointSuspSetAngLimit(joint%, lim#) - угловое ограничение
pxJointSuspSetAngParameter(joint%, spring#, rest#, damp#) - параметры
pxJointSuspSetAngle(joint%, angle#) - угол поворота колеса
pxJointSuspSetSpeed(joint%, speed#) - установка скорости вращения (лучше не использовать, поскольку сила вращения прикладывается одновременно и к машине, поэтому она может переварачиватся. Для этого можно использовать Торкуе (желательно) или команды вращения и угловой скорости)
pxJointSuspSetBrake(joint%, mode%) - типа ручник . mode = 0 колесо свободно. mode = 1 - заблокировано

Я особо непытался настроить подвеску. В примере нужно применить материалы с хорошим сцеплением, и колёса вращать Торкуе (моментом вращения). также нужно обратить внимание на то что во всех тел есть ограничение угловой скорости. Для этого нужно будет увеличить pxSetMaxAngularSpeed(body%, speed#). на больших скоростях могут проявлятся баги. Вот вырезка из хелпа к Физиксу

Lets you set the maximum angular velocity permitted for this actor.
Because for various internal computations, very quickly rotating actors introduce error into the simulation, which leads to undesired results.
With NxPhysicsSDK::setParameter(NX_MAX_ANGULAR_VELOCITY
) you can set the default maximum velocity for actors created after the call. Bodies' high angular velocities are clamped to this value.
However, because some actors, such as car wheels, should be able to rotate quickly, you can override the default setting on a per-actor basis with the below call. Note that objects such as wheels which are approximated with spherical or other smooth collision primitives can be simulated with stability at a much higher angular velocity than, say, a box that has corners.
Note: The angular velocity is clamped to the set value before the solver, which means that the limit may still be momentarily exceeded.

так, что на боьших скоростях рекомендую использовать Рейкасты.



2. добавилась команда установки групы колизии

pxWheelSetCollisionGroup(NxWheelShape* wheel, int group)


3. Убрал глюк с проваливанием колёс во время засыпания машины


4. Добавились команды для работы с реестром. Конечно немного, но для некоторых мелочей хватит. Сделал специально, что бы нетаскать с собой дополнительную длл-ку для работы с реестром.

pxRegWriteDriverPath%(str$) - записывает в стандартный ключ путь где в текущий момент находятся драйвера. очень полезная ф-я. путь должен указывать на папку с номером версии
pxRegWriteDriverPath("C:\Program Files\AGEIA Technologies")

pxRegWriteString%(RootKey%, Path$, Name$, Data$) - записывает в реестр строку
pxRegWriteInt%(RootKey%, Path$, Name$, Data%) - записывает в реестр целое число
pxRegReadInt%(RootKey%, Path$, Name$) - возвращает целое
pxRegReadString$(RootKey%, Path$, Name$) - возвращает строку
pxRegDeleteValue%(RootKey%, Path$, Name$) - удаляет значение в ключе Name
Значения разделов имеют следующий вид:

RootKey = 0 HKEY_CLASSES_ROOT;
RootKey = 1 HKEY_CURRENT_USER;
RootKey = 2 HKEY_LOCAL_MACHINE;
RootKey = 3 HKEY_USERS;
RootKey = 4 HKEY_PERFORMANCE_DATA;

Все команды проверены.

5. Команда для установки локальной угловой скорости.

pxSetLocalAngularSpeed(body%, lx#, ly#, lz#)

6. Исправлены ошибки с контактами
(Offline)
 
Ответить с цитированием