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

В честь нового апдейта решил и здесь запостить тему. Вот держите 0.7.4.0.

1. Наконецто приделал ключик. Теперь уже не буду всем вподряд слать новые версии врапера , и секономлю траф.
PxCreateWorld%(plane%, password$)


2. Испарвлены баги
- в тригерах
- тригера определяют статические поверхности
- с отставанием колёс машины
- теперь можно получить силу контакта со всеми телами (кроме плоскости)


3. Улучшены тригера. теперь тригер имеет свойства кинематики при этом в колизию не вступает, но заполняет даными о контакте структуру контакта. Может определить спящие тела.
появились две новые команды. Эти команды позволяют при перемещении тригера определять им
спящие тела.

pxTriggerSetPosition(body%, x#, y#, z#)
pxTriggerSetRotation(body%, pitch#, yaw#, roll#)


4. Добавлена очень полезная ф-я для копирования тел
Оказывается создания хулла занимает 6-7 мс. Это очень сильно вредит ФПС-ам. Для устранения этого эффекта была создана ф-я копирования тела. Время её выполнения меньше 1мс. Она копирует тело и пересчитует его центр масс. масса остаётся прежней.

pxCopyBody%(body%) - возвращает Ид нового тела.


5. Добавилась ф-я для определения радиуса колеса в райкаст подвеске
pxWheelGetRadius#(wheel%)
и функция которая проверяет сочление на разрыв
pxJointIsBroken%(joint%) - 1-разорвано. 0 -целое.


6. Появились партикл эмитеры

pxParticleCreateEmitter%() - создаёт партикл генератор
pxParticleEmitSetAngDamping(pEmitter, damp) - устанавливает угловое сопротивление частицам
pxParticleEmitSetLinDamping(pEmitter, damp) - устанавливает линейное сопротивлнеие частицам
pxParticleEmitSetMass(pEmitter%, mass#) - устанавливает массу частиц
pxParticleEmitSetRadius(pEmitter%, radius#) - радиус частиц
pxParticleEmitSetPosition(pEmitter%, x#, y#, z#) - позиция эмитера
pxParticleEmitSetRotation(pEmitter%, pitch#, yaw#, roll#) - поворот
pxParticleEmitSetRandRadius(pEmitter%, radius#) - радиус разброса частиц
pxParticleEmitSetStartSpeed(pEmitter%, min#, max#) - начальная скорость частици. Меняется рандомно от минимальной к максимальной.
pxParticleEmitSetTDAcceleration(pEmitter%, x#, y#, z#) - сила действующая на частици (гравитация)
pxParticleEmitSetScaleFactor(pEmitter%, radius#, rate#) - ф-я для изменения размеров частиц (они как бы растут, используется для дыма). radius - конечный радиус, больше которого частици не ростут. rate - шаг роста.
pxParticleEmitDeleteFirstParticle%(pEmitter%) - удаляет первую частицу с эмитера. При этом возвращает ентити пренадлежащий частице. очень удобно использовать для ограничения числа генерируемых частиц.
pxParticleEmitDeleteParticle(pEmitter%, particle%) - удаляет выбраную частицу

ф-и узнают параметры эмитера
pxParticleEmitGetAngDamping#(pEmitter%)
pxParticleEmitGetLinDamping#(pEmitter%)
pxParticleEmitGetMass#(pEmitter%)
pxParticleEmitGetRadius#(pEmitter%)
pxParticleEmitGetPositionX#(pEmitter%)
pxParticleEmitGetPositionY#(pEmitter%)
pxParticleEmitGetPositionZ#(pEmitter%)
pxParticleEmitGetRotationPitch#(pEmitter%)
pxParticleEmitGetRotationYaw#(pEmitter%)
pxParticleEmitGetRotationRoll#(pEmitter%)
pxParticleEmitGetRandRadius#(pEmitter%)
pxParticleEmitGetStartSpeedMax#(pEmitter%)
pxParticleEmitGetStartSpeedMin#(pEmitter%)
pxParticleEmitGetTDAccelerationX#(pEmitter%)
pxParticleEmitGetTDAccelerationY#(pEmitter%)
pxParticleEmitGetTDAccelerationZ#(pEmitter%)
pxParticleEmitGetScaleFactorRadius#(pEmitter%)
pxParticleEmitGetScaleFactorRate#(pEmitter%)

pxParticleEmitAddParticle%(pEmitter%, entity%) - создайт новую частицу в сцене
pxParticleUpdateEmitter(pEmitter%) - апдейт эмитера
pxParticleGetEntity%(particle%) - получить ентити
pxParticleGetBody%(particle%) - получить боди частици. Следует учитывать что боди это не есть частица. На её боди можно применять все те же команды что и на обычных телах. Даже можно ставить маски и группы колизий.
pxParticleGetradius#(particle%) - получает текущий радиус частици с учётом её увеличения.

Советы по применению:
- желательно не сыпать все частици в большую кучу иначе будет падение фпс
- для одного генератора можно генерировать не больше 10 000 частиц
- учитывайте, что это не флуиды, эти частици медленее работают. Просто над флуидами много работы, и будут готовы они не скоро.
- в дальнейшем планируется применения СинглМеш для частиц.
- По применению частиц смотрите семплы.


Теперь есть две версии врапера. Они поставляются в инсталяторах. В одном из инсталяторов есть райвера. Устанавливать содержимое нужно в папку блитц3д\юзерлибс.
Обновились семплы. Теперь их 55 штук. Когда поправлю демки, то выложу заново.

http://files.swargo.com/render/PhysX(drivers).exe - версия с дровами (желательно потестить) -1.6 метра

http://files.swargo.com/render/PhysX.exe - версия без дров - 600 кил

http://files.swargo.com/render/PhysX_Samples.rar - семплы. Все проверены на работоспособность. 1.6 -матра 55 семплов

За ключиком обращатся ко мне либо по мылу, либо в личку.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо Render за это полезное сообщение:
Aiimer (22.09.2009), baton4ik (18.01.2010), ignatovich (13.01.2008), pepel (13.11.2010), rr333 (10.02.2009)