forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   PhysX wrapper (http://forum.boolean.name/showthread.php?t=2734)

Render 01.04.2007 01:07

Re: PhysX wrapper
 
Новый релиз 0.7.7.0

1. Добавлены Ф-и которые узнают скорость локальной точки на теле.

pxBodyGetLocalPointSpeedX(body%, x#, y#, z#)
pxBodyGetLocalPointSpeedY(body%, x#, y#, z#)
pxBodyGetLocalPointSpeedZ(body%, x#, y#, z#)


2. Расширена работа с тряпкми

pxClothMaskSet(Cloth%, mask%) - устанавливает маску колизии для тряпки. аналогична командам для обычных тел.
pxClothMaskCombineSet(Cloth%, mask%) - продвинутый режим установки масок
pxClothGetEntity%(Cloth%) - получает ентити от тряпки
pxClothSetUserData(Cloth%, userdata%) - устанавливает пользовательские данные тряпке
pxClothGetUserData%(Cloth%) - возвращает пользовательские данные

pxClothAddForceAtPos(Cloth%, pos_x#, pos_y#, pos_z#, magnitude#, radius#) - добавляет силу в позицию
pxClothAddForceAtVertex(Cloth%, nx#, ny#, nz#, vID%) - добавляет силу вершине с индексои ИД.


3. Добавлены две ф-и для партикл эмитеров

pxParticleEmitGetNumberParticles%(pEmitter%) - узнаёт количество частиц в партикл генераторе на даный момент
pxParticleEmitDelete(pEmitter%) - удаляет генератор частиц и все частици.


4. Добавлена функция для удаления pxCreateSpringAndDamperEffector

pxDeleteEffector(effector%)


5. Появились маски на магниты. пример прилагается в семплах

pxMagnetSetMask(mdata%, mask%) - устанавливает маску магниту. Установка идёт в двоичной системе. Например:
Установим магниту маску bin(101) или в десятичной 5.
Возьмём три вида тел
Метал - поставим маску bin(001)
дерево - поставим маску bin(010)
ну и ещё что то - поставим маску bin(110)
Как вы догадались метал и ещё что то будет магнитится , а дерево - нет. Проверка идёт по логическому "И"

pxMagnetGetMask%(mdata%) - узнаёт маску магниту
pxBodySetMagnetMask(body%, mask%) - ставит маску магнетизма на иело
pxBodyGetMagnetMask%(body%) - узнаёт маску магнетизма из тела

6. Исправлены баги в тригерах. И для ускорения работы добавлена ф-я

pxUpdateTriggers() - обновляет тригера в сцене.


7. Проведены оптимизации, отладка, шлифовка врапера и переделаны примеры.


Всё качать по старым ссылкам. Внимание!!!! теперь драйвера и и врапер раздельно. Установку нужно производить в паку блитц3д, а дальше инсталятор сам поставит в юзерлиб. Также с виндовса можно поудалять ФизиксЛоадер и НхКукинг. Врапер приобрёл уже комерческий вид и больше в винду ставится ничего не будет, так что советую поудалять всё лишнее.
Примено в таком виде всё и останется в дальнейшем. Возможны мелкие штрихи.

Также есть полный английский хелп. Он шире чем русский и дополненый. Если бы его кто то проверил ещё, я был бы безмерно благодарен!!! У самого плохо с английским. Кому нужно, могу выложить.

Render 18.04.2007 00:26

Re: PhysX wrapper
 
Релиз 1.0

1. Исправлены мелкие недочёты и уменьшен обьём занимаемой памяти каждым телом :)


2. Исправлена ошибка возникающая в тригере типа хулл.


3. Доработаны материалы и добавлены новые ф-и.

pxCreateAnisotripicMaterial%(nx#, ny#, nz#) - изменился синтаксис. теперь материал
присваивается командой pxMaterialSetToBody(body%, mat%)

Команды устанавливают режим выбора материала при взаимодействии двух тел. Известно что каждое

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

помогут в этом деле:
pxMaterialSetRestitutionCombineMode(mat%, mode%) - для упругости
pxMaterialSetFrictionCombineMode(mat%, mode%) - для трения

mode%:
0 - среднее значение: (a + b)/2. - по умолчанию
1 - материал с минимальным значением: min(a,b).
2 - значение материалов перемножаются: a*b.
3 - максимальное значание из двух материалов: max(a,b).
4 - This is not a valid combine mode, it is a sentinel to denote the number of possible values.

We assert that the variable's value is smaller than this.

pxMaterialSetFlagStrongFriction(mat%) - устанавливает флаг материалу. С этим флагом материалы

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


4. добавлены новые ф-и для контактов

pxContactEventsOnStartTouch%(body%) - устанавливается в 1 когда тело вступает в контакт. 1 - действует на протяжении одного цикла. Используется для озвучки падающих предметов. Например,

когда нужно узнать начало проигрования ролика со звуком удара.
pxContactEventsOnEndTouch%(body%) - устанавливается в 1 когда тело выходит с контакта. Даже незнаю зачеи она нужна )))


5. Добавилась команда

pxSetTiming(maxTimeStep#, maxIter%, StepMethod%) - команда для настройки дельтатайма мира.
по умолчанию имеет вид pxSetTiming(1/60, 8, 0)

method%:
0 - TIMESTEP FIXED.
1- TIMESTEP VARIABLE.
2 - TIMESTEP INHERIT. Inherit timing settings from primary scene. Only valid for compartments.


6. Внимание!!!!!!!!!!!!!
Поменялся синтаксис основной команды

pxRenderPhysic(time#, sinc%) - новый синтаксиси команды


Обновлены семплы и хелп.

moka 03.07.2007 20:41

Re: PhysX wrapper
 
Есть новости с фронта?

Render 03.07.2007 23:16

Re: PhysX wrapper
 
Ну канечно, уже давно можно скачать версию 1.1 с сайта. Там организована подержка всех существующих двигов. В том числе БлитцМакс, Блитц3д СДК ну и так далее. работает всё вплоть до тряпок.
Сегодня появился СДК 2.7.2. так что ждите обьёмные поля сил, и улучшеные тряпки.

johnk 04.07.2007 12:21

Re: PhysX wrapper
 
Молодец! Немедлено же проплюсадиню твои мессаги! Ибо хоть какая то мера благодраности.

jimon 04.07.2007 13:06

Re: PhysX wrapper
 
Render
они гады не выложили заметки к 2.7.2 :)
расказывай что изменили или банально Release Notes выложи

Render 04.07.2007 15:25

Re: PhysX wrapper
 
http://www.ageia.com/developers/sdk_rn.html

было выложено ещё 2 месяцы назад

ABTOMAT 04.07.2007 17:20

Re: PhysX wrapper
 
Render? а почему русского хелпа нет?

Может, я чем могу помочь? (например пару обучений напишу или переводов)? Если что стукни в асю :)

438-012-412

Render 04.07.2007 21:08

Re: PhysX wrapper
 
Есть наброски рус хелпа в екселе. Там много ошибок неточностей, просто не желания не времени заниматся этим нету. Разработка хелпа это такая нудная и надоедливая работа. С меня английской версии хватило :)
Также есть проблема с руским шрифтом, во время перегонки с екселя в нормальный вид.

ABTOMAT 05.07.2007 13:56

Re: PhysX wrapper
 
Обнаружены ошибки в хэлпе:

Нет описания к командам:
  • GetCompoundFromMesh
  • pxBodySetEntity

Ошибки в примерах:
  • В примере Compound в функции GetCompoundFromMesh нельзя указать статический объект или динамический
  • В этом же примере не работает и масса - что ни указываешь - всё одно.

И ещё наверное пары. Буду по мере читканья Хэлпа дописывать в этот пост.
З.Ы. Если мне обьяснят что это за команды могу дописать их в хэлп :)

Render 06.07.2007 13:01

Re: PhysX wrapper
 
Полезное дело делаеш!

Цитата:

Обнаружены ошибки в хэлпе:
Нет описания к командам:
GetCompoundFromMesh
pxBodySetEntity
GetCompoundFromMesh - это команда из парсера 3дМоделей, она не от Физикса :). Команда разбирает модель по установленым рнее ключам и создаёт из неё физ тело. Я как то давно описовал работу парсера, нужно поискать :)

pxBodySetEntity - в самом деле пропустил. исправлю :)
А вообще в хелпе ещё неописаны команды из релиза 1.1

Цитата:

Ошибки в примерах:
В примере Compound в функции GetCompoundFromMesh нельзя указать статический объект или динамический
В этом же примере не работает и масса - что ни указываешь - всё одно.
Ну дак правильно. Можно указывать только тело обьект специально подготовленый для парсера.

Render 06.07.2007 13:04

Re: PhysX wrapper
 
Вообщем сейчас делаю обьёмные поля сил. Уже более менее разобрался, поидее ничего сложного. А вот для юзеров будет сложновато. Там, что бы настроить желаемый эфект нужно устанавливать элемены матрици в определёные значения. Проблема ещё в том, что эту самую матрицу придётся тащить в блитц как-то.
Также нужно понимание аксеальной, радиальной и тангегсиальной составляющей. В доках примеров нету, приходится самому разбиратся.

ABTOMAT 06.07.2007 16:22

Re: PhysX wrapper
 
Render, стараюсь :-) Буду дописывать тот пост где написал обнаруженные ошибки по мере их обнаружения.
Огорчает отсутствие обучений (не описания команд а именно обучений) на русском языке. Я по мере изучения враппера мог бы написать парочку :)

Render 02.09.2007 19:22

Re: PhysX wrapper
 
Апдейт 1.2.

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

2. И СофтоБоди :)

pxCreateSoftBody%(OBJfile$, TETfile$, vbank*, numVert%, pos_x#, pos_y#, pos_z#, rot_x#, rot_y#, rot_z#) - Создаём софтоБоди
OBJfile - файл который юзается дл генерации тетрагонов и построение связей с граф мешем физического
TETfile - файл с тетрагонами
vbank - банк вершин от блитцмеша, нужен для связи блитц меша с физическим
дальше идёт позиция и поворот СБ

pxSoftBodyGetNumVert%(SB%) - получает количество вершин СБ
pxSoftBodyGetVertexPos(SB%, vbank*, numVert%) - получает банк позиций всех вершин
pxSoftBodyGetNormals(SB%, nbank*, numVert%) - возвращает банк нормалей
pxSoftBodyIsSleeping%(SB%) - определяет спит СБ или нет
pxSoftBodyPutToSleep(SB%) - усыпляет СБ (если юзается ядро, то СБ нельзя усыпить)
pxSoftBodyWakeUp(SB%, interval%) - будит СБ

pxSoftBodySetAttachmentResponseCoefficient(softBod y%, coef#) - Коефициент связи с телом к которому привязано СБ
pxSoftBodySetAttachmentTearFactor(softBody%, coef#) - сила, которую нужно приложить, что бы оторвать СБ от тела
pxSoftBodySetCollisionResponseCoefficient(softBody %, coef#) - хз, в доке ничего нельзя понять =)
pxSoftBodySetDampingCoefficient(softBody%, coef#) - сопротивление среды
pxSoftBodySetExternalAcceleration(softBody%, x#, y#, z#) - приложение внешнего ускорения
pxSoftBodySetFriction(softBody%, fric#) - трение
pxSoftBodySetLinkRadius(radius#) - используется до создания СБ. Для создания СБ необходимо постороить связь между физ телом и мешем. Если некоторые вершины не привязаны, то нужно увеличить этот радиус.
pxSoftBodySetMask(softBody%, mask%) - ставит маску колизии
pxSoftBodySetMaskCombine(softBody%, mask%) - ставит маску колизии, аналогична с обычными телами
pxSoftBodyMaskClear(softBody%) - убирает маску
pxSoftBodySetName(softBody%, name$) - устанавливает нейм
pxSoftBodySetParticleRadius(softBody%, radius#) - ставит радиус колизии частици
pxSoftBodySetSleepLinearVelocity(softBody%, vel#) - скорость на засыпание
pxSoftBodySetSolverIterations(softBody%, iter%) - количество проходов (просчётов) СБ за цикл, чем меньше это число тем быстрее работает.
pxSoftBodySetStretchingStiffness(softBody%, coef#) - тянучесть, гибкость
pxSoftBodySetVolumeStiffness(softBody%, coef#) - обьём СБ, Если быть точным, то это как бы давление внутри Тетрагона

Команды получают даные от СБ:
pxSoftBodyGetAttachmentResponseCoefficient#(softBo dy%)
pxSoftBodyGetAttachmentTearFactor#(softBody%)
pxSoftBodyGetCollisionResponseCoefficient#(softBod y%)
pxSoftBodyGetDampingCoefficient#(softBody%)
pxSoftBodyGetFriction#(softBody%)
pxSoftBodyGetName$(softBody%)
pxSoftBodyGetParticleRadius#(softBody%)
pxSoftBodyGetSleepLinearVelocity#(softBody%)
pxSoftBodyGetSolverIterations%(softBody%)
pxSoftBodyGetStretchingStiffness#(softBody%)
pxSoftBodyGetVolumeStiffness#(softBody%)

pxSoftBodyAttachToShape(softBody%, body%) - Крепит СБ к боди, Если юзать эту команду, то СБ и боди будут иметь взаимное влияние. Тоесть Когда СБ вступит в колизию, то ядро на неё отреагирует.
pxSoftBodyAttachToCollidingShapes(softBody%, tearable%) - крепит СБ ко всем телам, что пересекают его. В этом случае обратной связи нет.
pxSoftBodyDetachFromShape(softBody%, body%) - отделяет СБ от тела
pxSoftBodyAttachVertexToGlobalPosition(softBody%, vertID%, x#, y#, z#) - фтачит вершину в позицию
pxSoftBodyFreeVertex(softBody%, vertID%) - освобождает вершину
pxSoftBodyAddForceAtPos(softBody%, pos_x#, pos_y#, pos_z#, magnitude#, radius#, mode%) - прикладывает силу в позиции
pxSoftBodyAddForceAtVertex(softBody%, x#, y#, z#, vertID%, mode%) - прикладывает силу.



Инструкция как создавать СБ и файл тетрагонов:

1. Открываем 3дмакс или любой другой редактор и создаём модель
1.1 После создания ставим центр модели в её геометрический центр с помощью кнопки "Use selection Center"

1.2 Перемещаем модель так, что бы её центр совпал с центром координат 3дМакса

1.3 Сохраняем модель в Model.b3d и Model.obj. Б3Д можно заменить любым другим.

С 3дмаксом закончили.

2. Открываем утилиту PhysXViewer
2.1 Импортируем Model.obj
2.2 Создаём тетрагоны. Порядок действий на рисунке. Качество модели можно регулировать ползунками. После перемещение ползунков, нужно заново сгенерировать тетрагоны.

Должна быть следующая картина

2.3 Експортим всё в файлы Model_SB.obj и Model_SB.tet


3. Открываем блитц, и по примерам создаём своё СБ

Если наловчится, то вся процедура занимает меньше 2 минут. Просто нужно потренироатся немного :)



PhysXViewer качаем здеся (ели выковырял его с Агеевского СДК) http://files.swargo.com/render/PhysXViewer.rar

Новый врапер: http://files.swargo.com/render/PhysX(Pro).exe

И семплы с софтободями: http://files.swargo.com/render/SoftBodiesSamples.rar
Советую посмотреть семпл Funny.bb. Класная штука, я долго наслаждался. Там шляпа на анимированой голове, короче смотрите сами. Также прикольный пример Бубле
З.Ы. Примеры, только в исходниках.

Render 02.09.2007 19:22

Re: PhysX wrapper
 
Хочу также поправить Доку, принимаю предложения по оформлению. Просто сейчас не нравится тем что, нету возможности поиска. Думаю определёные групы команд вынести на один листик, а там уже поиск по страничке рулит. Также думаю рускую версию закончить, но самому времени писать нету.

И ещё замечание по СБ, чем меньше вершин в Физ моделе, тем быстрее работает. Количество тетрагонов почти не влияет.
Жду отзывов и сообщений о глюках, если таковы будут.


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

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