Metal Gear Rising : Revengeance, абстрактно существующая от остальной гениальной серии, всё же имеет в себе выделяющую её среди остальных слэшеров особенность.
В отличии от Fruit Ninja, этот ninja кромсает подавляющую часть игрового окружения взаправду, а не придавая физику заведомо разделенным кусочкам фрукта.
Для многих секрет реализации этой механики по сей день является чем-то вроде магии, однако для написания этих волшебных скриптов использовалась логика, нежные отношения с движком и тригонометрия (черная магия).
Для начинающих волшебников
Вероятно вы уже догадались, что речь идет о процедурном изменении геометрии меша, но здесь все немного более сложно, нежели с анимациями, деформациями и мягкими телами.
Вот например как вы думаете, какой из вариантов полигональной сетки объекта, что в данном случае олицетворяет куб, больше подойдет для вольного разрезания с любой траектории?
Двенадцать треугольничков против ста девяноста двух и овер пяти тысяч треугольничков. Возможно начали зарождаться предположения, мол больше треугольников - лучше детализация, но это не так. Разрежем средний кубик и найдем новую проблему :
Какой бы детализация не была, уголки останутся всё равно, к тому же объект будет полым, а изнутри и вовсе прозрачный, ибо на стандартных шейдерах обычно не прорисовывается задняя часть полигонов.
Надо создавать геометрию...
Для верховных магов
Под созданием геометрии подразумевается не только генерация "внутренних" стенок новых объектов, но и реконструкция уже существующих треугольников, что падут под меч грозного кибер-анимешника.
Происходит все таким образом :
- Как только была нажата кнопочка удара, траектория которого ввиду молниеностности неизменна, в получившейся плоскости генерируется плоскость (извините за тавтологию), равную по длине мечу и шириной как его предстоящий путь
- Её задачей становится определение объектов на пути меча и разметка будущих точек контакта с ним как в месте входа, так и выхода меча
- Точек контакта может быть бесконечное количество по всей площади контакта, но определяются они лишь на ребрах задетых треугольников, у которых к тому же спросят индекс (адресочек в топологии)
- По соприкосновению меча с объектом, в ранее определенных точках контакта создаются новые вершины, а старые треугольники нещадно удаляются. Именно удаляются, так как в случае, если всего одна вершина уходит за линию разреза, ребра тянутся к ней два и в случае реконструкции получится полигон, а здесь нужна гибкость
- После воссоздания визуально-идентичных форм, что были разрушены в месте разреза, нужно создать внутренности. Тут все просто, ибо это будут просто треугольники лежащие в одной плоскости
- Посреди той самой необходимой плоскости создаются дополнительные вершины и генерируются треугольники. Здесь главное чтобы каждая вершина с краешка успешно интегрировалась в новообразовавшуюся банду треугольников "из пробирки", иначе будут дырки
И после этого всего обновляются UV-карты, заново рассчитываются нормали и накладываются заранее подготовленные текстуры внутренностей. Для людишек это красное месиво, для металла - осветленные шероховатости и лишь один арбуз удостоился чести иметь что-то особенное внутри.