Продолжая обширную тему стремления к реализму в играх в своих статьях, настало время задеть симуляцию ткани.
Механизмы для реализации технологии были доступны на этапах появления 3D игр, но по сей день разработчики не используют весь её потенциал.
В этой статье я расскажу и наглядно покажу как работает симуляция тканей в 3D среде.
Где используется?
Очевидно одежда, но не вся : в основном плащи, подвязки, накидки.
Симулировать всю одежду было бы очень затратным процессом, к тому же происходило бы огромное количество багов, например плечо пройдет сквозь рубаху, почему так может происходить я расскажу чуть дальше.
Вот несколько примеров :
Так же симулируются флаги, тряпки, занавески и в особо извращенных вариантах - волосы. В отличии от одежды они практически всегда подвержены воздействию ветра, ведь для этого им и добавляется симуляция.
Как работает?
Технология симуляции ткани основана на процедурной полигональной анимации. Это означает что вершины нужной модели передвигаются согласно заданному поведению, в нашем случае - законы физики.
Перейдем к примеру :
В blender я смоделировал кружку и буду кидать на неё платок
В роли платка выступит плоскость
Парой кликов я придал плоскости свойства ткани, приступим к действу
Ой. Кажется это не то, что вы ожидали увидеть? Сейчас плоскость имеет лишь 4 вершины, а значит на гибкость модели и не разогнаться. Получается качество симуляции ткани зависит от детализации модели. Может увеличим количество вершин? (а так же нагрузку на устройство)
Кажется теперь этот полигон стал похож на ткань! В одной из своих статей я писал что модель из треугольников обладает большей гибкостью, чем модель из полигонов (четырехугольники здесь), ткань идеально подходит для демонстрации
А вот слайд-шоу с еще более детализированной моделью :
Как вы видите результат зависит от детализации, а от детализации в свою очередь страдает производительность. Создатели игровых движков всё же оптимизировали симуляцию ткани, а так же прикрутили к ней пару фишек.
Кстати, подробнее о 3D моделях и том, из чего они состоят, можно почитать в моей статье :
Основы 3D моделирования
На игровом движке
Для демонстрации ветра я создал флаг и он получился кажется слишком детализированным, для нормального поведения =)
В действии :