Теги
Текущее состояние движка.
Данная визуализация работает полностью на оригинальных ресурсах (папка Matrix).
Что реализовано:
- подгрузка всех необходимых ресурсов;
- парсинг и обработка конфигов
.cvo; - анимация текстур;
- окраска по маскам во фракционные цвета.
Поддержать проекты
Пока что движок не умеет собирать роботов честно, так что этот экземпляр собран через
CVOпри помощи линков из предыдущего поста (и с применением некоторых читов).Поддержать проекты
Отдельные элементы могут привязываться к конкретным точкам.
Как вам стало известно из предыдущих постов, MatrixGame имеет механизм сборки композитных моделей по текстовому (в формате BlockPar) конфигу с расширением
.cvo.Самый сложный конфиг в игре принадлежит главной базе и выглядит примерно так (в этом варианте исправлены кое-какие проблемки, оригинальный немного более неуклюжий):
Main { Model=b0.vo TextureGloss=b0_gloss TextureMask=b0_mask TextureBack=b0_back TextureBackScroll=0,0.00006 } Main2 { Texture=b0_1 Model=b0_0.vo } { Texture=b0_1 Model=b0_radar.vo } { Texture=b0_1 Model=b0_anim.vo } Platform { Id=1 Texture=b0_1 Model=b0_platform.vo } Left { Id=2 Texture=b0_1 Model=b0_left.vo } Right { Id=3 Texture=b0_1 Model=b0_right.vo }Каждый блок описывает часть этой композитной модели. Он может быть именованным или безымянным. Блоку можно назначить идентификационный номер через параметр Id.
Элементу можно в параметрах прописать модель, текстуру (по умолчанию берётся одноимённая модели), свойства текстур, включая анимацию (свойство TextureBackScroll управляет скоростью изменения текстурных координат для назначенной в TextureBack текстуры подложки, указывается в единицах UV/мс).
Но кроме перечисленных вариантов параметров также есть параметр Link, который не используется ни в одной оригинальной модели. Он позволяет привязывать кусок композитной модели к другому через матрицы, точки привязки.
Матрицы – это стандартный механизм формата
.voдля размещения корпуса на шасси, головы на корпусе, прикрепления оружия или отрисовки фонариков. Но в этих кейсах от матрицы используется только позиционная компонента, повороты задаются программно. Тогда как механизм Link, по идее, должен поддерживать позиционирование с поворотом.Синтаксис параметра:
Link=Parent,LinkPointЗдесь Parent может быть названием блока или его числовым id, LinkPoint – название или id матрицы. Элемент, которому прописали Link, своим ориджином (локальным нулём координат) привязывается к указанной точке на родителе.
Сами матрицы назначаются модели при моделировании и экспорте. А исходники экпортера моделей для 3ds Max 2024 можно найти здесь. Возможно, о нём будет отдельная статья или серия статей.
Поддержать проекты
Визуализация точек крепления. На них вешаются другие модули, оружие, фонарики или, как в случае с матрицами на «ступнях» пневматики – отображение спецэффектов.
Поддержать проекты
Как работают анимации в движке планетарных битв.
В отличии от современных игр, в которых за движения моделей отвечают скелет и привязки, движок планетарных битв использует покадровые вершинные (вертексные) анимации, примерно как в Quake 2.
Для тех лет это стандарт, база и основа. Скелетные анимации были дорогими по вычислительным ресурсам по сравнению с практически бесплатными вершинными. Платить, однако, приходится местом на диске – в отличие от той же Quake 2, где в файлах
MD2хранилась дельта (разница) положения вершин (и, насколько помню, вообще использовалось много разных оптимизаций, включая индексированные значения, почти как вGIF), в моделях форматаVOпокадрово запекаются вертексы целиком.Компенсируется такая растрата сжатием
zlibи малым количеством анимированных моделек.Воспроизведение таких анимаций абсолютно примитивно. Каждый кадр грузится целиком в видеопамять, без какой-либо обработки. Моделька обновляется полностью, как будто мы меняем одну карточку диафильма на другую.
Контроллера анимаций в привичном виде в движке нет. Из доступных модификаторов есть только управление скоростью воспроизведения, что используется в модельках шасси. Тем не менее, в движке есть машина состояний для управления переключениями анимаций шасси – эти состояния как раз и перечислены в посте про демонстрацию их переключения.
Как было упомянуто ранее, для анимированной модели каждый кадр сохраняется как полноценная копия всех её вершин, только в изменённом положении. Как же поступать с моделями, в которых нужно анимировать только отдельный кусочек, как, например, радар у главной базы? Ради этих нескольких вертексов пересохранять и перерисовывать всю геометрию целиком? Нет, как раз для решения этой проблемы и ввели композитные модели с разделением на части, тестирование работы которых демонстрировалось в предыдущем посте. Анимированный кусочек выделяется в отдельный файл
VOи цельная модель собирается из таких кусочков по конфигуCVO.Также в моделях запекаются положения точек соединения (матриц), которые синхронизируются с геометрией. Таким образом место сочленения шасси и корпуса, например, никуда не «съезжает» при воспроизведении анимации.
Про интересный факт относительно этих самых матриц и конфигов
CVOбудет отдельный пост.Так что же, собственно, не так с анимациями в MatrixGame? Всё так, для уровня начала XXI века. Но на текущий момент они довольно сильно технологически устарели. Будет ли что-то с этим сделано в нашем проекте? Посмотрим. Планы есть, но не хочу ничего загадывать наперёд. Следите за развитием.
Поддержать проекты