Как сделать эффект разрушенного здания
Добавил пользователь Владимир З. Обновлено: 05.09.2024
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Рыженко Алексей Алексеевич
Проблемы дистанционного управления силами и средствами при ликвидации ЧС и пожаров актуальны. Важную роль играют методы моделирования текущей обстановки. В статье представлен усовершенствованный механизм визуализации разрушений зданий и сооружений сложной формы.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Рыженко Алексей Алексеевич
Численное моделирование распространения дециметровых радиоволн в тропосфере с применением модели WRF V. 3. 5 и метода трассировки лучей
THE MECHANISM OF MODELLING OF CHIPS AND SPLINTERS OF THE DESTROYED OBJECTS OF THE DIFFICULT FORM
Problems of remote control of forces and means at elimination of an emergency and the fires are actual. An important role is play by methods of modeling of the current situation. The advanced mechanism of visualization of destructions of buildings and constructions of a difficult form is present in article.
УДК 004: [614.89+351]
Академия Государственной противопожарной службы МЧС России (г. Москва)
МЕХАНИЗМ МОДЕЛИРОВАНИЯ СКОЛОВ И ОСКОЛКОВ РАЗРУШЕННЫХ ОБЪЕКТОВ СЛОЖНОЙ ФОРМЫ
Проблемы дистанционного управления силами и средствами при ликвидации ЧС и пожаров актуальны. Важную роль играют методы моделирования текущей обстановки. В статье представлен усовершенствованный механизм визуализации разрушений зданий и сооружений сложной формы.
модель, информационная система, компьютерная графика, дуализм.
THE MECHANISM OF MODELLING OF CHIPS AND SPLINTERS OF THE DESTROYED OBJECTS OF THE DIFFICULT FORM
Problems of remote control of forces and means at elimination of an emergency and the fires are actual. An important role is play by methods of modeling of the current situation. The advanced mechanism of visualization of destructions of buildings and constructions of a difficult form is present in article.
model, information system, computer graphics, dualism.
Использование геоинформационных систем с поддержкой управления в структурах и подразделениях МЧС России, способных моделировать и отображать текущую обстановку на основе снимков стационарных спутников и цифровых изображений оперативной выездной бригады, позволяет более эффективно принимать решения территориально удаленной экспертной комиссией. Тем не менее, существует ряд проблем в адекватном отображении информации, в частности, целостного моделирования разрушений сложных объектов. Данная задача обоснована постоянными конфликтами между собственниками разрушенных объектов и сотрудниками МЧС при проведении аварийно-восстановительных работ. Как правило, собственник требует полного восстановления объекта с минимальными затратами, что не всегда возможно.
Обзор информационных технологий позволил сделать вывод, что существующие графические ядра либо не позволяют отображать в трехмерном виде с достаточной степенью детализации разрушенные здания и сооружения [1, 2], либо требуют избыточных аппаратных ресурсов. В работе предлагается усовершенствованный механизм и алгоритм его использования для визуализации объектов сложной формы с применением метода дуального моделирования [3, 4].
В качестве исходных данных используются оцифрованные эскизы и экспликации зданий и сооружений, а также цифровые фотоизображения в растровом формате. На предварительном этапе происходит векторизация
элементов с применением алгоритмов распознавания образов. Модификация классических механизмов перевода растра в вектор не является задачей данной работы. Как следствие, результатом этапа является частичный перевод в векторный аналог, формируются только прямые линии, ломанные или кривые, попадающие под алгоритм Безье кривых третьего порядка. Дальнейшее комплексное применение двух полученных типов графики дает материал для анализа и обработки исходных данных.
Рис. 1. Пример необходимого элемента для дуального моделирования
На рис. 2 представлен алгоритм возможного применения комбинации двух типов трёхмерной графики в единой системе координат.
Алгоритм моделирования осколков фрагментов разрушенного объекта можно представить следующей последовательностью действий (рис. 2):
- на основе векторных эскизов экспликаций зданий и сооружений строится каркасная модель проектируемого объекта сложной формы;
- полученный векторный каркас заполняется текстурами;
- дальнейшая частичная векторизация фотоизображений разлома (разрушений) дает представление (модель) фрагмента;
- используя модель отчуждения разбиений (эффект пазла), на оцифрованных фотоизображениях производится поиск фрагментов и осколков;
- осколки моделируются в виде триангулярной векторно-полигональной сетки, затем собираются в фрагменты;
- заполнение остаточных пустот фрагментов (для дальнейшей детализации) производится путем вокселизации сколов.
Рис. 2. Блок-схема алгоритма моделирования осколков объекта разрушения
Механизм применения двух автономных типов графики в единой системе координат (основанный на принципе дуализма), представлен на рис. 3. В качестве направляющего основания для формирования воксельной модели используется крайний вектор полигона, который не имеет двух замыкающих векторов и не образует полигон. Причем в механизме нет жесткой зависимости от триангулярной архитектуры полигона или сложности полигональной сетки.
Определяющей подложкой, как правило, выступает растровое изображение, отображающее форму заполнения пустоты (например, на основе оцифрованного снимка места разрушения). При отсутствии подложки, вокселями заполняется пространство между несоприкасающимися полигонами или векторами, т.е. между полигонами соседних фрагментов разрушений или их осколков.
Для каждого случая заполнения вокселями пустот отдельно рассматривается сценарий, когда не удается достичь поверхности второго полигона. В качестве эффективного инструмента решения данной проблемы используется направляющий вектор нормали от проецируемой поверхности.
Рис. 3. Принцип построения трёхмерной модели с использованием
Блок-схема алгоритма построения воксельной поверхности на основе одного направляющего вектора представлена на рис. 4.
Рис. 4. Блок-схема алгоритма формирования воксельной поверхности на основе одного направляющего вектора
Принцип построения модели разрушенного фрагмента объекта, а также механизм взаимодействия двух автономных типов компьютерной графики при заполнении вокселями оставшихся пустот в общем виде представлен на рис. 5. Каждый крайний вектор ребра образует подложку и направление для основания построения воксельной поверхности. Подложкой выступает комплексное многослойное растровое изображение разрушений.
Рис. 5. Пример моделирования разрушений здания и его последующая обработка
Малые соседние воксели объединяются, образуя более крупные, обрабатываемые алгоритмом далее как один воксель. Особенность укрупнения (построения больших) вокселей, имеющих одинаковую подложку (основание) в схематичном представлении, отображена на рис.6.
Рис. 6. Приближенная схема примера дуального моделирования
Блок-схема алгоритма формирования укрупненных (больших) вокселей на подложке одного цвета с использованием функционала теоретических инструментов октодерева представлена на рис. 7.
Рис. 7. Блок схема использования октодерева для построения воксельной поверхности
Для формирования формальной составляющей полученного механизма определим общий кортеж, описывающий графическую модель разрушения объектов сложной формы:
где В - проектируемая модель разрушенного фрагмента, с - векторная модель каркасной части, / - воксельная модель детализации поверхности скола, х - определяемая степень свободы в системе координат, а Е (а^ о,- \ щ П о,- = 0) - элемент множества в пределах целого, определяющий минимальный элемент графической модели построения.
где at - элемент множества положительно направленных векторов, ш - показатель целого, п - произвольный целый элемент.
где CLj - элемент множества отрицательно направленных векторов,
I - показатель целого, к - произвольный целый элемент. Причем:
где lev - коэффициент, определяющий уровень детализации (с чертой - для вектора), lev = .
Другими словами, один вектор порождает множество вокселей, кото -рые могут объединиться в более крупный, либо быть частью нескольких множеств параллельно. Причём возможное количество вокселей имеет чёткие границы (показатель целого). Нижнюю границу определяет величина вектора, верхнюю - точечная длина вектора или множество допустимых значений вектора-строки в используемом множестве - условие автономности.
Рассмотрим задачу использования метода на следующем примере: вследствие локального взрыва разрушилась стена двухэтажного здания промышленного предприятия (без обрушения стены). Предварительный анализ показал, что образовалось пять больших фрагментов. К аварийно -восстановительным работам привлечена внешняя (территориально удаленная) комиссия. Задание: необходимо провести анализ исходных данных, построить формулу моделирования процессов разрушенного объекта.
Проблемная составляющая: при композиции хаотичной составляющей смешанных осколков фрагмента последствий разрушений возможно мно-жество сценариев, например:
- несколько осколков разрушений определяют один фрагмент моде -лируемого здания;
- один осколок определяет несколько фрагментов;
- один осколок является осколком нескольких фрагментов и т.д.
Механизм решения задачи:
Более сложный вариант модели может содержать крестообразный или другой формы осколок разрушенного фрагмента, тем не менее, практика показала, что введение одной дополнительной переменной достаточно.
Рис. 8. Пример моделирования разрушений в условиях задачи
Для рассматриваемой задачи алгоритм нахождения решения следующий (рис. 9):
[2 + 1 + 4] + [1 + 2] Автономы
[2 -Ь 1 + 4] -Ь [1 + 2] +> 5 1 Целое
[2 -С 4gJ + [1 + 25|у+5 Итог
Применение данного алгоритма возможно для любого количества элементов (осколков, сколов и фрагментов). Используя представленный выше сценарий, получаем итоговое выражение:
Представленные алгоритмы можно визуально отобразить с использованием классической теории множеств (диаграммы Эйлера-Венна). При этом необходимо уточнение: атомарный элемент множества представлен также только в виде множества, причем каждый одновременно автономен и является частью другого автономного множества (рис. 10).
При этом необходимые для решения условия не выполняются:
- нельзя объединять разные элементы разных множеств;
- объединение элементов одного множества не равно объединению этих же элементов вызванных повторно.
Следовательно, классические методы работы с множествами для данных задач требуют введения дополнительных условий и элементов [5].
Рис. 10. Пример использования диаграммы Эйлера-Венна
В результате решение поставленной задачи свелось к одному из видов решеток - кольцо в пределах единого целого на множестве решений.
На следующем этапе выполнено моделирование объектов сложной формы с использованием принципов дуализма на автономных компонентах. Особенностью построения является вид прорисовки элементов воксельной графики, где описание каждого вокселя (в виде кубика) выполнено не вершинами, а гранями (рис. 11 ). При этом повторяющиеся и тыльные грани не прорисовываются (рис. 12).
Данный метод проектирования трехмерных примитивов на начальном этапе моделирования требует больше аппаратных ресурсов, чем вершинный и реберный методы. Тем не менее, при удалении из массива не прорисованных полигонов показатели значительно снижаются. Данная технология используется в таких графических редакторах, как 3D Studio MAX или Maya.
Рис. 11. Использование приграничного метода граней при построении воксельной фигуры
Алгоритм формирования воксельной модели разлома:
- первый отображенный воксель становится базовым;
- каждый последующий прилегающий к граням базового воксель, прорисовывается не полностью, а только те его грани, которые не совпадают с предыдущим вокселем (рис. 11) и видимы по отношению к углу обзора (рис. 12);
- определяется матрица преобразования координат по отношению ко всей полученной модели, а не к каждому вокселю отдельно;
- преобразование модели (поворот, смещение и растяжение-сжатие) применяется к каждому вокселю, в том числе и укрупненному.
Создание разрушаемого стекла в Blender
Заходим в Blender, выделяем куб и начинаем делать форму стекла. Для этого нажмите S и X,Y или Z, чтобы масштабировать по одной из осей. Должно получиться что-то подобное.
Текстурированием и созданием материалов мы займемся позже. Сейчас мы должны сохранить модель в формате FBX.
Вернемся к Блендеру, откроем панель инструментов (слева), нажав горячую клавишу T. Слева есть несколько вкладок: Tool, Create, Relations, Animation, Physics, Grease Pencil. Перед тем, как использовать Cell Fracture, нам нужно создать эффект пробития стекла пулей. Для этого нам нужен Grease Pencil. Заходим в эту вкладку, ставим галочку Continuous Drawing, в Data Source выбираем Object, в Stroke Placement > Surface. Затем нажимаем Draw. Если что-то не понятно, то выделите так, как на этом скриншоте.
Теперь нам нужно нарисовать два круга, как на скриншоте ниже.
Теперь можно приступить к разбитию стекла. Заходим в Cell Fracture (Tool > Cell Fracture). В открывшемся меню мы видим огромное количество функций, но мы будем работать только с теми, что выделены на фото ниже.
Source Limit отвечает за количество деталей, на которые мы разобьем модель. Noise - рандомизатор разрушений, от нуля до единицы. Material отвечает за то, какой материал будет в разрушенной модели, то есть в тех местах, где будет разлом. По умолчанию стоит 0, то есть тот материал, который вы сейчас используете. Если параметр Margin стоит не равный нулю, то в конечной модели у нас будут щели, поэтому выставляем Margin=0. В окне сцен рекомендуется поставить галочку в Next Layer, чтобы разрушенная модель была на новом слое. В итоге мы должны получить вот такие значения: Source Limit=50, Noise=0,25, Material=0, Margin=0,0 и самое главное - Grease Pencil.
Теперь жмем OK и дожидаемся конечного результата.
На этом этапе мы получили разрушенную модель, теперь нам нужно экспортировать ее в Unity 5. Также, как и в первый раз, заходим в File > Export > FBX.
Открываем Unity, создаем новый проект или открываем старый. Импортируем модели в Юнити, перенося их в папку Assets.
Настраиваем сцену в Unity
Сейчас мы должны настроить нашу сцену. Выделяем нашу модель, в окне Inspector добавляем Box Collider и Rigidbody. Также создаем материал, называем как вам угодно, пусть будет GlassMat. На фото ниже отмечены те настройки, которые нам понадобятся для создания прозрачного стекла.
Поменяем Rendering Mode на Transparent, Metallic=0,3, Smoothness=0,8. Нажмите на выбор цвета и поставьте такие значения: R=214, G=250, B=256, A=50. Последний параметр отвечает за прозрачность объекта, можете выставить больше или меньше, как вы считаете нужным. Должен получиться материал, похожий на этот:
На сцене для примера мы должны поставить 3 одинаковых целых стекла, над ними 3 сферы, на каждой должен висеть Rigidbody и SphereCollider. Данные три сферы будут разбивать наши стекла. Можно, конечно, добавить что-то другое, но смысл будет один и тот же. Перейдем к разрушенной модели. Модель состоит из множества осколков, которые не имеют не коллайдеров, ни Rigidbody. Выделив все части, добавим RigidBody и MeshCollider в окне Inspector. Теперь все готово к тесту.
Скрипт разбивания в Unity 5
Код можно будет скачать с GoogleDrive здесь, изучите его сами, мы расскажем вам только то, как им нужно пользоваться.
Скрипт содержит несколько переменных: Broken Prefabs, Collision Sounds, Breaking Sounds, Apply Collision Forcem Apply Hp, Max Hp, Current Hp, Apply Explosion Force и т.д. В Broken Prefabs можно вставить несколько сломанных версий, выбираться будут рандомно. Со звуками также, можно выбрать несколько. Обязательно ставим Apply Collision Force, Collision Force=1, можно добавить жизни объекту и так далее. Очень интересными будут последние переменные: Explosion Force и Radius. Можно поэкспериментировать с ними. Вот результат, который должен у нас получиться:
Редакция Devgam
Благодарим наших читателей и подписчиков за проявленный интерес. Поделитесь постом в социальных сетях.
Распад на частицы(эффект разрушения) объекта в видео.Исчезновение объекта в видео сделаем с помощью эффекта распада(разрушения) на частицы в After Effects.Использовать будем встроенный эффект частицы(particular).
Чтобы сделать эффект распада реалистичным,в видео должны быть кадры,где отсутствует сам объект разрушения.Если такового нет,то исчезновение объекта сделаем из кадра в Фотошоп.Где удалим его при помощи инструмента Штамп.В After Effects загружаем файл с видео и изображение,которое сделали в Фотошоп.Далее создаем эффект распада(разрушения) при помощи встроенных инструментов After Effects.
Круто ! Спасибо за тутор
Вот блин исчезновение через трапкод на партиклы. Я не понимаю что там в видео на 20 минут вышло, русские туториалы специально такие длинные? А если на какой нибудь сложный проект сразу гайд сделать, уйдет 20 уроков по часу?
Кот - режиссер или как понравиться Заку Кингу
Визуальный обман
Забавно, как благодаря небольшому наклону досок цвет дороги на набережной меняется. По классике, все зависит от точки зрения.
Думаю, помните прикол с кубом и клеточками, где один и тот же цвет кажется то белым, то серым?
Магия шейдеров 19: ASCII Art Шейдер а-ля Watch dogs от Мэтта Старка
Я возвращаюсь к Магии шейдеров и сегодня хочу, как обычно, не вдаваясь в детали, рассказать как бы я сделал шейдер для такого post-эффекта.
Но, давайте, сначала вспомним: что это за ASCII-арт такой. Как сообщает нам Википедия: ASCII-графика — это форма изобразительного искусства, использующая символы ASCII на моноширинном экране компьютерного терминала или принтера для представления изображений.
🤔 А причем здесь хакеры и Watch dogs? ASCII-арт, помимо демосцены, частенько встречался в .nfo файлах с crack и keygen архивами. В этих nfo-файлах создатели crack'ов и keygen'ов указывали всякую информацию о своей команде, рисовали теги команды или просто какой-то симпатичный арт. Часто можно было увидеть там символьные черепа, монстров и другую симпатичную жуть, которой, наверняка вдохновлялись Ubisoft для создания логотипа группировки DeadSec.
Так как бы я сделал?
Сделаем fullscreen post-эффект: 1) Вычисляем Luminance 2) Сжимаем картинку до размеров нашей ASCII-картинки в символах. Сколько символов мы хотим чтобы у нас было на экране? 3) Делаем 1D LUT-текстуру с, отсортированными по количеству белого, символами 4) В последнем пассе используем картинку из шага 2 и LUT-текстуру из шага 3 чтобы отрисовать символы в экранную текстуру.
Простор для применения
- Можно блендиться между исходной текстурой и полученной в результате такого пост-эффекта, чтобы сделать какой-то красивый fade-эффект.
- Можно затенять пиксели символов, я предполагаю будет гораздо более объемная картинка
Play now
пятница, 11 апреля 2014 г.
Разрушение объектов на кусочки. Mesh destruction
Привет юнити девелопер ! Сегодня хочу поделится своим опытом в создании интересного эффекта для игры.
Особенностью игры должны стать визуальные эффекты и разрушение всего,что в игре можно увидеть . Поэтому реалистичные взрывы - очень важная часть игры.
Речь пойдет о том, как сделать эффект разрушения объекта на части (mesh destruction) . В этом мне помог плагин Exploder (asset store link). При желании его можно найти и на других сайтах.
Сам плагин неплохо взрывает объекты, но когда нужно взрывать много моделей, то начинаются проблемы с производительностью. Взрывы начинают подвисать и играть становится сложно.
Чтобы решить эту проблему я немного переписал код плагина. Главная идея в том, чтобы сохранять полученные кусочки модели как ассеты и потом заменять ими модель во время взрыва. Это очень улучшает производительность и уменьшения FPS практически нету.
Чтобы создать такой взрыв - создаем в сцене объект со скриптом ExploderObject. Нужную модель отмечаем тегом "Explode" и вызываем функцию Explode() у ExploderObject. Вот его параметры.
Если поставить Force > 0 то частички будут разлетаться как при взрыве ( на скриншоте) . Но если Force =0 то частички останутся на своих местах и их можно будет сохранить. Также лучше заблокировать движение частиц через параметры Freeze Position X,Y,Z и Freeze Rotation X,Y,Z .
GameObject obj=PrefabUtility.CreatePrefab("Assets/fragments/" + folder_name + "/part" + count + ".prefab", frag.gameObject);
Функция будет сохранять кусочки всех взорванных моделей. Поэтому для сохранения фрагментов каждого объекта лучше перезапускать сцену.
В полученных фрагментах лучше убрать все скрипты и MeshCollider заменить на SphereCollider. Также частички можно пометить как отдельный layer и выключить его столкновения друг с другом (Project Setting-> Physics )
После этого все фрагменты можно объединить в один объект и прикрепить к нему скрипт взрыва. Например такой :
У нас получился объект взрыва частичек. Его нужно создавать в сцене сразу при взрыве модели ( в моем случае корабля ). Результат будет примерно такой:
- Для оптимизации можно создать low-poly модель разрушаемого обьекта и разрушать ее. При взрыве разницу будет мало заметно, даже если уменьшить колличество полигонов в 3-4 раза
- Для всех полученных кусочков старайтесь использовать один и тот же материал. Это значительно уменьшит колличество Drawcall.
Спасибо за интерес к материалу. Подписывайтесь в twitter @Oxygamer . Буду рад любым предложениям и вопросам.
1 комментарий:
VarangaOfficial - варанга цена и отзывы - проверенные и достоверные факты. Воспользовавшись нашим ресурсом, вы сможете узнать исчерпывающую информацию касающуюся представленного средства. Увидеть данные о проведенных клинических исследований, прочитать реальные отзывы пациентов и медицинского персонала. Изучить инструкцию по применению, прочитать особенности и методы работы комплекса, осмыслить, почему крем Варанга настолько эффективен, где можно приобрести оригинальный сертифицированный препарат и, как избежать покупки подделки. Мы очень тщательно и скурпулезно проверяем размещаемые данные. Предоставляем пользователям нашего ресурса сведения, которые берутся только из надежных источников. Если вы обнаружили у себя признаки развития грибка или уже довольно продолжительное время, без ощутимых результатов пытаетесь излечиться от этого неприятного коварного недуга, наш сайт покажет вам легкий и быстрый способ решения проблемы. Приобщайтесь и живите здоровой полноценной жизнью. Теперь все ответы на самые популярные и волнующие пользователей вопросы, собраны на одном ресурсе.
Читайте также: