Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Библиотеки

Библиотеки Сторонние библиотеки для Blitz

Ответ
 
Опции темы
Старый 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)
Старый 17.02.2007, 20:02   #2
Megalan
AnyKey`щик
 
Регистрация: 14.02.2007
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PhysX wrapper

У меня ошибка. Семпл с машиной выдает ошибку о том что не найдена либа. (Другие не тестил)

---

После теста выявил что у него ошибка в pxSetGravity(0,-30,0) изменение ничего не даёт
(Offline)
 
Ответить с цитированием
Старый 17.02.2007, 20:14   #3
Render
Знающий
 
Регистрация: 12.07.2006
Сообщений: 283
Написано 16 полезных сообщений
(для 32 пользователей)
Re: PhysX wrapper

Сообщение от Megalan
У меня ошибка. Семпл с машиной выдает ошибку о том что не найдена либа. (Другие не тестил)
После теста выявил что у него ошибка в pxSetGravity(0,-30,0) изменение ничего не даёт
Ты качал инсталятор с дровами или без? Если с дровами то проверь в реестре на наличие ключа.
HKEY_LOCAL_MACHINE\SOFTWARE\AGEIA Technologies
"PhysXCore Path"="C:\Program Files\AGEIA Technologies"
Это похоже на то что неустановился драйвер. Странно я вчера лично всё сам проверил. А ты точно в тот Юзерлибс установил
(Offline)
 
Ответить с цитированием
Старый 17.02.2007, 20:15   #4
Megalan
AnyKey`щик
 
Регистрация: 14.02.2007
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PhysX wrapper

Сообщение от Render
Ты качал инсталятор с дровами или без? Если с дровами то проверь в реестре на наличие ключа.
HKEY_LOCAL_MACHINE\SOFTWARE\AGEIA Technologies
"PhysXCore Path"="C:\Program Files\AGEIA Technologies"
Это похоже на то что неустановился драйвер. Странно я вчера лично всё сам проверил. А ты точно в тот Юзерлибс установил
Всё точно. У меня стоят оффициальные дрова 6.12

----

PS. Вот бреееееед.... Переустановил дрова и теперь все работает...
(Offline)
 
Ответить с цитированием
Старый 17.02.2007, 20:35   #5
Megalan
AnyKey`щик
 
Регистрация: 14.02.2007
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PhysX wrapper

Некоторые туторы пытаются залезть в реестр. Но так как нужного юзер либа нету то соответственно туторы не компилятся
(Offline)
 
Ответить с цитированием
Старый 17.02.2007, 20:37   #6
Render
Знающий
 
Регистрация: 12.07.2006
Сообщений: 283
Написано 16 полезных сообщений
(для 32 пользователей)
Re: PhysX wrapper

Сообщение от Megalan
Некоторые туторы пытаются залезть в реестр. Но так как нужного юзер либа нету то соответственно туторы не компилятся
Ой, это случайно, Сорри. Удалите все строки для работы с реестром. Проверь мыло
(Offline)
 
Ответить с цитированием
Старый 17.02.2007, 22:02   #7
Megalan
AnyKey`щик
 
Регистрация: 14.02.2007
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PhysX wrapper

Слушай можешь сказать как заставить колидится все что есть на уровне с контентом загруженным из 3ds файла? А то сделал дорогу а она прозрачная для всего (Как в half-life когда включен noclip)
(Offline)
 
Ответить с цитированием
Старый 18.02.2007, 16:04   #8
Render
Знающий
 
Регистрация: 12.07.2006
Сообщений: 283
Написано 16 полезных сообщений
(для 32 пользователей)
Re: PhysX wrapper

Тебе нужно использовать тримеш. Смотри примеры в папке TriMesh, или пример с машиной Победа.
(Offline)
 
Ответить с цитированием
Старый 20.02.2007, 19:26   #9
ЛысыЙ_Чук-Иванчук
Дэвелопер
 
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений
(для 17 пользователей)
Re: PhysX wrapper

Теперь если что то вот:
http://rubux.swargo.com/rus/
(Offline)
 
Ответить с цитированием
Старый 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)
 
Ответить с цитированием
Старый 25.02.2007, 11:08   #11
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: PhysX wrapper

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

Сообщение от HolyDel
а где взять?
Только здесь http://rubux.swargo.com/rus . В разделе Файлы
(Offline)
 
Ответить с цитированием
Старый 06.03.2007, 03:38   #13
Render
Знающий
 
Регистрация: 12.07.2006
Сообщений: 283
Написано 16 полезных сообщений
(для 32 пользователей)
Re: PhysX wrapper

Наконецто готов хелп!!! Качать в разделе файлов.

Новый релиз 0.7.6.0

1. Исправлены ошибки с тригерами. Тригер может определить 200 форм находящихся в нём. Еужно различать формы и тела. Компаунд может иметь несколько форм. Тригер имеет 2 формы. Простые тела имеют по одной. Если количество тел в тригере превышено, то они просто небудут определятся и МАВ больше небудет.

2. Устранён глюк с Удалением мира когда в нём есть тряпки.

3. наконецто нормально работают контакты (надеюсь ошибок больше небудет)


4. Добавлены новые команды для райкаст подвески.
pxWheelGetSuspensionTravel#(wheel%)- узнаёт длину пружины
pxWheelGetSuspensionRestitution#(wheel%) - жёсткость пружины
pxWheelGetSuspensionDamping#(wheel%) - затухание (сопротивление)


5. Добавлена команда для отключения райкасту тела
pxBodySetFlagRayCast(body, stat)


6.
pxBodySetCollisionGroupPair(int group1, int group2) - Команда включает заполнение информациеё о контакте между двумя группами. По умолчанию информация о коллизии (кординаты коллзии, тела и т.д.) получается только между телами с группой 0. Если группа была изменена, то нужно поставить будет ли эта группа заполнятся информацией о контакте.


7. Команда которая отключает проверяемость тела на нахождении в тригере. Тело не будет в нём определятся при
установки флага в ноль
pxBodySetFlagTriggertable(body%, stat%)


8.Добавлена металическая тряпка
pxCreateMetalCloth%(entity%, surf%, coreActor%, impThr#, depth#)
entity% - блитцевский ентити
surf% - сюрфейс данного ентити
coreActor% - физическое тело основы
impThr# - сила удержания
depth# - шаг сминания

Создайт мягкое тело со свойствами металла. Это тело небудет востанавливать прежнюю форму после сминания. Для правильной работы нужно физическое тело основы, оно должно быть похоже по форме на мягкое тело. Тело основы будет задавать области сминания мягкого тела. Мягкое тело сомнётся лиш в том случае когда выйдет за пределы основы. Сила удержания - это та сила с которой мягкое тело привязано к основе. Шаг сминания указывает насколько сомнётся тело за один удар.
(Offline)
 
Ответить с цитированием
Старый 06.03.2007, 04:01   #14
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: PhysX wrapper

Какие могут быть причины не запуска враппера, если я в клубе, установил драва, поставил блиц (скопировал домашний), и примеры тестяца, а дома нет, выводит MAV на Gravity, как-будто я не ввожу key. Меня это очень даже трогает и не устраивает, да и если я не один такой? Что делать то?
(Offline)
 
Ответить с цитированием
Старый 06.03.2007, 21:32   #15
Render
Знающий
 
Регистрация: 12.07.2006
Сообщений: 283
Написано 16 полезных сообщений
(для 32 пользователей)
Re: PhysX wrapper

давно мне нужно было это зделать
http://rubux.swargo.com/rus/index.ph...ticles&b=2&a=3

ФАК по установке и решению проблем.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Учебник по PhysX Wrapper для Blitz3D ABTOMAT FAQ 15 29.04.2014 19:11
Обсужение учебника по PhysX Wrapper для Blitz3D ABTOMAT 3D-программирование 309 24.02.2014 08:46
Капсульный игрок в PhysX Wrapper JohnAustin 3D-программирование 10 17.12.2009 20:50
Xors3D's Wrapper (PB4.3+) Chrono Syndrome PureBasic 19 20.08.2009 21:37
Bink Video Wrapper Zidane Библиотеки 7 05.06.2007 22:41


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com