Как стать автором
Обновить

Комментарии 21

Была же точно такая статья в 2013г.
Да, моя статья. По неизвестным причинам попала в черновики, при попытке вернуть обратно — просто исчезла. Тема интересная же, думаю еще пару подобных экспериментов с R.U.B.E. опубликовать. В том числе физику танка.
В этом плане не понимаю Хабр, когда удаляют статью типа за рекламу продукта (особенно, если не своего). Да на хабре почти нет статей, которые по какой-либо причине нельзя отнести к рекламе
В последнем методе — не будут ли сверхбыстрые мелкие объекты проходить через очень тонкие стены?
Если использовать «Continuous Collision Detection», то нет. Как раз поле IsBullet у частички взрыва за это отвечает.
А где такая опция?

Кстати, сам UniTech советует RayCast, чтобы быстрые пули не пролетали сквозь тонкие стены незамеченными.
Я так понял, что на каждом Update надобно бить лучом от предыдущего кадра до нынешнего.
Mea culpa. Спутал движки. Но принцип вопроса остался — проверка лучом надёжнее, вроде бы?
Надежнее. Но для достижения наиболее впечатляющего эффекта луч придется перезапускать при пересечении с геометрией несколько раз для симуляции отражения ударной волны. Но гараздо большая проблема в том, что луч «движется» с бесконечной скоростью и при его использовании придется еще как-то симулировать скорость распространения ударной волны.
С частицами проще: просто не стоит придавать им слишком большую скорость и включить CCD, как это посоветовали выше.
Еще один побочный эффект: сила взрыва не применяется одновременно на все тела.

А так ли это плохо? В реальном мире, насколько я помню, взрывная волна тоже не мгновенно «долетает» до цели, а распространяется с какой-то скоростью.
В оригинале статьи как раз и говорится, что это «хороший побочный эффект»:
Another nice side-effect is that the energy from the blast does not affect everything instantaneously — it takes a tiny bit longer for the particles to reach objects that are further from the blast center.

ЗЫ. Если не ошибаюсь, в английском языке «side-effect» не имеет негативного оттенка, в отличие от русского.
А в методе частиц не будет ли взрыв сильно зависеть от физических свойств окружающий объектов, а именно от коэффициента отражения? Никогда подобный метод не пробовал, в основном работаю с мобильными платформами, но он кажется очень интересным, а телефоны становятся все производительнее)
Ещё, как недостаток всех методов (с точки зрения физики), можно отметить отсутствие поглощения частиц и соответственно отсутствие вибраций окружающих объектов. Конечно очевидно, что это будет доп. нагрузка на ЦП, но всё же было бы круто!
После столкновения с нестатичным объектом частицу можно прибить. Но в этом случае не будет переотражения взрывной волны от динамических объектов. Можно, если движок позволяет, назначать частицам максимальное количество переотражений, после которых они уничтожатся. Тогда не придется проверять, статичен ли объект.

PS: возможно ли контролировать / обрабатывать колизии частиц в случае с Box2D я не знаю. Просто возможную идею изложил.
Мне глючится, что вы путаете фугасность с «осколочностью».

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

А для моделирования фугасной ударной волны потребуется «ярд» частиц.

В целом идея любопытная, но… Для кое-чего совсем не подходит.

P.S. Да я и сам путаю фугасность с бризантностью. Кажется бризантность крошит предмет, а фугасность отбрасывает…
Ноги растут из описанного в статье способа эмуляции взрывной волны шрапнелью.
Возможно. Нужно назначить свой обработчик коллизий и для частиц применять необходимые законы.
А как же ссылки на демо?
Box2d прикольная библиотека. Не могу удержаться, чтобы не показать вот такой эксперимент, на котором я исследовал производительность Java JBox2D-Liquid-WC-Test.html :) Надеюсь никого сильно не оскорбит.
А что там с производительностью? :) Вполне шустро работает ваш пример.
Это смотря на чём запускать. Вы пробовали на планшете или телефоне с ARM или x86?… В принципе, сейчас уже всё достаточно быстро работает. Жидкость как и взрывную волну в Box2D можно моделировать большим количеством маленьких частиц. Думаю именно так делается в известных играх Sprinkle и Крокодильчик Свомпи.
А на каких телефонах можно запускать java-апплеты в браузере? Что-то мне еще ни разу не попадались такие.
Запускал на x64, под icedtea.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории