Тема: PhysX wrapper
Показать сообщение отдельно
Старый 02.09.2007, 19:22   #29
Render
Знающий
 
Регистрация: 12.07.2006
Сообщений: 283
Написано 16 полезных сообщений
(для 32 пользователей)
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. Класная штука, я долго наслаждался. Там шляпа на анимированой голове, короче смотрите сами. Также прикольный пример Бубле
З.Ы. Примеры, только в исходниках.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pepel (24.11.2012)