Апдейт 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"
![](http://files.swargo.com/render/instr1.jpg)
1.2 Перемещаем модель так, что бы её центр совпал с центром координат 3дМакса
![](http://files.swargo.com/render/instr2.jpg)
1.3 Сохраняем модель в Model.b3d и Model.obj. Б3Д можно заменить любым другим.
![](http://files.swargo.com/render/instr3.jpg)
С 3дмаксом закончили.
2. Открываем утилиту PhysXViewer
2.1 Импортируем Model.obj
2.2 Создаём тетрагоны. Порядок действий на рисунке. Качество модели можно регулировать ползунками. После перемещение ползунков, нужно заново сгенерировать тетрагоны.
![](http://files.swargo.com/render/instr4.jpg)
Должна быть следующая картина
![](http://files.swargo.com/render/instr5.jpg)
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. Класная штука, я долго наслаждался. Там шляпа на анимированой голове, короче смотрите сами. Также прикольный пример Бубле
З.Ы. Примеры, только в исходниках.