Библиотека рендеринга скелетной анимации.
Конвейер рендеринга альтернативной сущности для Minecraft Forge 1.15.2.
Особенности
Поддерживаемые форматы
Внутренне мы используем наш собственный формат модели BoneTown (. bonemf), который разработан для простоты и показывает, что именно нам нужно для рендеринга в Minecraft. Конвертеры из популярных форматов моделей в.bonemf необходимы, в настоящий момент мы поддерживаем следующие форматы моделей:
Зачем использовать Bonetown?
Если вы моддер, желающий разрабатывать объекты с использованием стандартного программного обеспечения и предоставлять более подробные анимации и модели без снижения производительности, вам следует учитывать зависимость от BoneTown.
Базовый конвейер рендеринга Minecraft выполняет всю анимацию и рендеринг вычислений на процессоре и представляет их каждый кадр. Это прекрасно работает для большинства моделей с низким числом вершин по умолчанию, но многие моды Minecraft вводят значительно более детальные модели. Такой подход к рендерингу нарушает как сложность модели, так и сложность анимации.
BoneTown выполняет почти все вычисления непосредственно на GPU. Геометрия модели загружается на графическую карту только один раз, а не каждый кадр, и после этого только каждый изменяемый объект передает каждый кадр: информацию об освещении, окончательных позициях и данных о кости анимации.
Помимо этого, анимация данные могут быть повторно использованы и распределены между модами, открывая возможность для моддеров модифицировать измененные сущности друг друга и вводить новые поведения значительно эффективнее, чем в текущей среде Java MC.
Недостатки этого подхода
Там Вот некоторые недостатки нашего подхода:
Хотя наша двуногая модель поддерживает стандартные модели двуногой брони ванильного майнкрафта, аналогично это невозможно Поддержка пользовательских моделей кузнечной брони. Наш двуногий вводит дополнительный сустав в локте и коленях, и действительно модели брони также должны быть связаны со скелетными данными, чтобы оживить их, используя подход, который мы используем. Наша двуногая модель — воссоздание ванильных двуногих, BoneTown не способен использовать исходные ресурсы Minecraft, для использования с этой системой необходимо создать новые активы.
С другой стороны, в системе BoneTown можно зарегистрировать новые модели для брони Minecraft для каждой модели, для каждого материала и зарегистрировать модели брони для не двуногих персонажей, если они используют одинаковые текстуры. Это открывает совершенно новые возможности для пользовательских моделей брони и интеграции брони в другие сущности.
BoneTown представляет новый поток рендеринга, который лишь частично совмещает с существующим рендерингом Minecraft. автор понятия не имею, что это будет значить для Optifine, и, возможно, их можно заставить работать вместе, но автор не считаю это приоритетом. Optifine также является закрытым исходным кодом, поэтому очень трудно разобраться с такими проблемами.
Подход
В библиотеке BoneTown есть 3 ключевых части, которые значительно отличаются от ванильного Minecraft:
BoneTown загружает модели и анимации из файлов.bonemf, которые представляют собой cbored представление данных геометрии и анимации. Эти файлы имеют формат, основанный на формате Autodesk FBX, но значительно сокращенный по размеру, чтобы соответствовать потребностям Minecraft. Информация о материале для геометрии не сохраняется, вместо этого эта информация контролируется EntityRenderer, как в vanilla. Обычно прямо сейчас вы конвертируете свои файлы FBX в.bonemf с помощью утилиты командной строки FBXToBoneMF, вы можете найти здесь сборку Windows этого программного обеспечения или вы можете получить исходный код и попытаться скомпилировать его для других платформ. Пожалуйста, рассмотрите возможность добавления обновлений платформы для освоения!
Технические подробности
На данный момент программное обеспечение тестировалось только на моделях, изготовленных с использованием Maya LT, так как именно это автор и использую. Однако, если вы используете 3dsmax или Blender и у вас возникли проблемы, свяжитесь со мной, и мы их исправим.
BoneTown представляет новый конвейер рендеринга, который передает большую часть Данные модели только один раз, а затем загружает минимальные изменения, необходимые для рисования этой модели в определенном месте на экране. Это в отличие от стандартного рендеринга сущности Minecraft ng конвейер, который преобразует модели в мировое пространство и применяет анимацию к процессору, а затем отправляет окончательную геометрию в графический процессор каждый кадр.
Данные передаются в программируемый конвейер вместо устаревшего конвейера с фиксированными функциями. Данные модели представляются отдельно в виде массивов примитивов, а не в формате чередующихся структур. Данные о освещении, наложении, преобразовании мирового пространства и анимации, которые обычно копируются в каждую вершину, вместо этого передаются по одному разу как единые значения.
Встроенные шейдеры, включенные в BoneTown, предназначены для эмуляции устаревшего OpenGL Исправлена конвейерная функция состояния, в которой Minecraft использует почти точно. Однако использование шейдеров в BoneTown открывает захватывающие возможности для авторов контента, которые заинтересованы в более продвинутом рендеринге для своих сущностей.
В отличие от ванили, данные анимации хранятся на Сущность в BoneTown. Все сущности, желающие использовать средства визуализации BoneTown, должны реализовать IBTAnimatedEntity. В рамках этого ваша сущность должна будет содержать компонент AnimationComponent. AnimationComponent отвечает за определение фактического положения соединений (костей) сущностей и синхронизацию этих данных с соответствующими клиентами. Это также позволяет принимать решения на стороне сервера, такие как порождение снаряда в позиции конкретной кости.
Все корректировки состояния AnimationComponent должны выполняться с использованием AnimationMessages через функцию AnimationComponent :: updateState. Любые изменения, сделанные через этот интерфейс, будут автоматически записаны, объединены в один пакет и отправлены соответствующим клиентам.
Пример использования этой системы см. в реализации TestZombieEntity.
Руководство по программированию
Лучший способ узнать об этих реализациях — взглянуть на com.chaosbuffalo. Пакет bonetown.init, чтобы увидеть, как регистрируются новые активы, пакет com.chaosbuffalo.bonetown.client.render, чтобы увидеть эквиваленты ванильных классов, таких как RenderLayers и Renderers, и, наконец, com.chaosbuffalo.entity.TestZombieEntity — пример всего Собираясь вместе в конкретной реализации двуногого.
Как и vanilla, BoneTown ожидает, что модели (и анимации будут расположены в определенных папках), структура каталогов должна выглядеть следующим образом:
Расположение анимаций: assets/modid/bonetown/animations
Расположение моделей: assets/modid/bonetown/models
Поэтому при загрузке модели с помощью ResourceLocation ( ‘yourmod’, ‘test_cube’), BoneTown будет искать файл с именем test_cube.bonemf в расположении:
assets/yourmod/bonetown/models/t est_cube.bonemf
Для управления дополнительными активами введено 4 новых реестра:
Материалы
В основе материалов лежат файлы шейдеров, которые будут контролировать способ визуализации ваших объектов. BTMaterialEntry является базовым классом для объекта реестра, который в конечном итоге будет загружен как разработчик IBTMaterial. По умолчанию предусмотрено 2 материала: BTMaterial, подходящий для статических моделей, и AnimatedMaterial, подходящий для моделей со скелетной анимацией.
Модели
Аналогично материалам, модели состоят из статических или анимированных данных. BTModel является базовым классом для реестра и подходит для статических данных. Существует также BTAnimatedModel для анимированных данных.
Дополнительные анимации
Анимации можно загружать отдельно от самих моделей. Как правило, вы должны поместить одну анимацию в каждый файл, однако, если вы решите использовать несколько анимаций, они будут названы так: yourmodid: animation_name_N, где N — индекс этой анимации в массиве. Таким образом, другие моды могут вводить дополнительные анимации для существующих моделей.
Модели брони
Модели брони можно вводить для каждой модели отдельно, а для определенных материалов брони могут быть предусмотрены переопределения. Если вы создаете сущность, которую хотите носить ванильной броней, вы должны создать свою модель, чтобы она использовала UV для текстуры брони по умолчанию в Minecraft. Обычно это должна быть броня по умолчанию, добавленная к вашей модели. Затем вы можете представить дополнительные модели для каждого материала брони, если ваша броня не использует ванильное УФ-картирование или вам нужна дополнительная геометрия. Модели брони должны быть прикреплены к тому же каркасу, что и модель, для которой они предназначены.
Требования
Как установить BoneTown на Майнкрафт:
- Скачать и установить Forge
- Скачать и кинуть скачанный мод BoneTown в папку mods. Все!
- Подробнее.
Cкачать похожие моды
Скачать BoneTown мод на Майнкрафт:
На 1.15.2 (Forge)
- bonetown-0.1.jar (09.05.2021)