forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Обсужение учебника по PhysX Wrapper для Blitz3D (http://forum.boolean.name/showthread.php?t=7569)

NitE 11.02.2009 18:59

Re: Обсужение учебника по PhysX Wrapper для Blitz3D
 
нда, отклычи физикс и выучи блиц... для начала...
разумно делать физ модель чтобы расталкивать физ объекты...
это возможно - делаешь физическое тело и всё...

CRASHER 12.02.2009 01:30

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
NitE, а ты используешь в своих играх пули? если да то как проверяешь попадание ентити в физ тело? что, кроме пик энтити вообще никаких альтернатив?

moka 12.02.2009 02:38

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Хм, насчёт пулей это вообще отдельная большая тема, уже поздно, могу позже написать.
Насчёт персонажа - используй Капсулу - очень удобно. Если у тебя очень технологичная игра, и важен RagDoll и его динамичное взаимодействие с миром, придётся делать целый RagDoll и уже им орудовать.
Пули конечно проверяются по RagDoll'у, а не по цилиндру..

ABTOMAT 12.02.2009 03:04

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
ARTMAN, да, целесообразно, я так делаю (капсула с отключенным поворотом по осям). Кстати это будет шустрее чем если дополнительно врубать блицовую коллизию по полигонам.

Найт, ты сам-то делал, чтоб говорить?

Насчёт капсулы - самый оптимальный вариант :) Причём можно так сделать, что никто и не заметит, что это на самом деле капсула (ящики отскакивают как положено)) (у меня так). Капсула хороша тем, что почти не жрёт вычислений.

Если важно точное моделирование физики костей, то можно делать так: оболочка - по-прежнему капсула, к ней "пристёгнута" модель, но к каждой кости модели привязывать синематик-хулл и отключить капсуле коллизию с динамикой, оставить только со статикой. А синематики будут распихитвать ящики и т.п. :) Но ето имхо лишнее, хотя и позволяет всё моделировать очень точно.

Высшая степень точности - это нечто подобное Euphoria - где все кости изначально физические, и где анимация создаётся программно. Таким образом не только кости действуют на динамику, но и динамика - на кости. Ну, в GTA4 наверное уже видели. Но это требует нехилого знания анатомии человека + мышц и т.д., короче придётся штудировать спец. литературу чтобы получить качественные движения и кушать будет только так, но нет ничего невчозможного - было бы желание :) (кстати я вижу более дешёвый метод получения похожего эффекта, но не хотел бы пока что озвучивать до тех пор пока не удостоверюсь в его состоятельности)

Короч капсула - самое лучшее для игрока. Всё остальное - только если это действительно требуется и без этого не обойтись.

NitE 12.02.2009 15:50

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Цитата:

Найт, ты сам-то делал, чтоб говорить?
да, делал.

moka 12.02.2009 18:19

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
ABTOMAT, спасибо что развернул мой вопрос! +n!

Насчёт стрельбы (сразу оговорюсь что не реализовывал, но считаю это наглядно реальным и оптимальным).
Есть класс пуль, у пуль есть параметр скорости полёта, это зависит от оружия, длины дула, и калибра пули. К примеру натовские пули, из M16 (достаточно длинный ствол), имеют начальную скорость пули ~900 м/с. Тоесть она пролитает почти киллометр в секунду.

Зная скорость полёта пули в секунду, мы можем узнать сколько она пролетела за один такт, для этого нам нужно узнать продолжительность такта:
TickLenghtMS = (CurMS - LastMS)
TickLenghtMS% - длительность такта в MS
CurMS% - текущее системное время в MS (функция MilliSecs()).
LastMS% - прошлое значение CurMS, до присвоения ему нового данного текущего системного времени.
Предположим что TickLenghtMS=16.667 - это примерно 60 кадров в секунду.

Значит пройденный путь пули за один такт равен:
BulletTickLenght=BulletSpeed/float(TickLenghtMS)
BulletTickLenght# - Длина пройденного пути в метрах (как и единица указания скорости).
BulletSpeed# - скорость пули, у нас она 900.
BulletTickLenght будет примерно: 53.999, тут конечно нужна максимальная точность, чтобы где-то не оплошать.
Значит столько метров пуля пролетела за такт, делаем от прошлой позиции пули в направлении вектора полёта, RayCast пик, и если точка пересечения с динамикой не дальше чем BulletTickLenght метров, тогда пуля попала в цель.
Далее задача исходя из скорости полёта пули, точки пересечения, веса пули, и направления полёта, применить импульс к динамическому объекту, чтобы он соответствующе себя вёл при поподании в него. По моим наблюдениям, во всех играх это поведение очень отличается!
Если поподание в статику, то импульс применять не нужно, но тут есть другой моммент, этот метод просчёта, даёт хорошую возможность реализовать отскоки, т.к. есть чёткие данные для этого: вектор пика, вектор пикнутой плоскости, далее немного математики, и получим вектор отскока. И будут у вас стрелы из арбалета как в HL2!

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

Такая сложноватая система по сути себя не сильно оправдывает, и я рекомендую обойтись вообще без скорости, и делать мгновенные пики. Но если кто-то хочет по задротничеть - почему бы и нет :) Это хорошая фича в игре, темболее с ней можно приятно визуализировать полёт пули! Простым отрезком от прошлой до текущей точки полёта пули, такой прозрачненький шлейфик - и будет реальный полёт пули, а если ночью, так вообще как на роликах с ютуба.

tormoz 12.02.2009 19:12

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Да это элементарно:
делаем пик, получаем координаты попадания, вектор и дистанцию
заносим их в новый элемент типа "пападания пули"
в зависимости от дистанции включаем таймер, который обрабатывается в цикле перебора попаданий.
как таймер истек - бум-бах-чмок (мясо), импульс на физобъекты и тд, все что нужно
элемент удаляем - он отработан

делов на 10 минут с отладкой

moka 12.02.2009 19:35

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
tormoz, если полёт пули будет дольше чем 2 секунды, в твоём варрианте на пути пули может что-то встать, тогда твой варриант будет слишком этим бросаться в глаза, при этом если поподание просчитывается в моммент выстрела, и поподаем в двигающийся объект, то представь как будет выглядеть, если это ОЧЕНЬ быстрый к примеру поезд, бум-бух-чмок, произойдёт уже за километром, даже если пройдёт 100мс будет сильно заметна разница.

NitE 12.02.2009 20:20

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
зачем делать задержку полета пули ?? делаем просто пик + проверку на дистанцию и в зависимости от этого уменьшаем импулсь

moka 12.02.2009 20:26

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
NitE, ты постоянно тупишь.
Читать ещё раз:
Цитата:

Такая сложноватая система по сути себя не сильно оправдывает, и я рекомендую обойтись вообще без скорости, и делать мгновенные пики. Но если кто-то хочет по задротничеть - почему бы и нет Это хорошая фича в игре, темболее с ней можно приятно визуализировать полёт пули! Простым отрезком от прошлой до текущей точки полёта пули, такой прозрачненький шлейфик - и будет реальный полёт пули, а если ночью, так вообще как на роликах с ютуба.

NitE 12.02.2009 20:36

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
так я непонял, ты отвечал на чейто вопрос ? если да то пост был ему адресован, а если нет то зачем вообще столько бесполезной информаций ?

moka 12.02.2009 20:44

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
NitE, иди соси сосочку, ты начинаешь реально выбешивать.
Я тебе объяснять не буду зачем нужна та или иная информация. Эт форум, комьюнити, и его задача нести информацию, если твой мозг не видит в этом информации, тогда гуляй мимо, и не пости дебильных постов. Будь я модером в этом разделе, сразу бы потёр твоё сообщение #69.
Если тебе нужны + к постам, есть раздел: Болтовня.
КОНЧАЙ ТУПИТЬ! Иль ты добиваешся чтобы другие не постили?

Если по правилам получу бан на срок, не обижусь, и поделом, отдохну..

NitE 12.02.2009 21:26

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
:-D 1. ничего сосать не собираюсь
2. ты пости сколько хочешь, и я буду постить что хочу
3. ябы на товем месте просто не писал-бы пост #70
4. + не нужны, нафига они мне )) ?
5. я не туплю и ничего не добиваюсь
6. зачем бан ? ненадо никаких бан

такие посты кстати лучше в в оффтоп )))
я между прочем отлично знаю как я тут всех достал, но придется с этим мирится, потомучто я такой вот тупой флудер (или вечный бан )) )

moka 12.02.2009 21:38

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
NitE, глупенький ты просто, флуди скока хочешь, но не обижай других, и тебя ни кто не попытается обидить.
Твои посты заставляют о тебе считать, что твоё неаргументированное убеждение является истинным, на самом деле оно выглядит глупо, во первых ты себя не утвердил как корректного и весьма успешного программиста, ни проектами, ни наработками, во вторых, отсутствие аргументации доводов - всегда вызывает недоверие и сомнения, т.к. читатателей много больше чем ты один, и один раз тебе проаргументировать намного рациональнее, чем утруждать десяток читателей делать это за тебя.
Спустись с неба, и прислушайся, я только хорошего желаю, ничего плохого.

Tadeus 12.02.2009 21:39

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Вспомнилась тема на ГА, где они с Небанкой разбирались кто из них умнее :-D


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

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