Найти в Дзене
Artem

3D треки для Farming Simulator 19: создайте свои треки в несколько кликов на Blender

Ким Брандвейк из Farmsim Forensicsизучил проблему создания треков в 3D. Ранее достижимый с помощью скриптов, которые исключали мод для использования на консолях, разработчик предлагает метод из программного обеспечения Blender, чтобы создать знаменитый файл “trackArray”, который могло создать только программное обеспечение Giants. Статья ниже представляет собой перевод на хороший французский язык из сообщения Farmsim Forensics, доступного здесь. Мы благодарим их за то, что сделали этот отличный инструмент доступным для всех и позволили нам поделиться им. Многие считают, что это святой Грааль гусеничных машин в FS19, это тема споров в сообществе: 3D треки. И не просто любые 3D треки, а 3D треки, которые не требуют никаких сценариев, и могут быть созданы в любой форме, и ГИГАНТЫ одобрены для ПК и консолей. Как работают GIANTS 3D tracks? Гусеница состоит из 3 элементов: сетки гусеницы (плоской), специального изображения (trackArray) и некоторого шейдера, чтобы придать гусенице окончательн
Оглавление

Ким Брандвейк из Farmsim Forensicsизучил проблему создания треков в 3D. Ранее достижимый с помощью скриптов, которые исключали мод для использования на консолях, разработчик предлагает метод из программного обеспечения Blender, чтобы создать знаменитый файл “trackArray”, который могло создать только программное обеспечение Giants.

Статья ниже представляет собой перевод на хороший французский язык из сообщения Farmsim Forensics, доступного здесь. Мы благодарим их за то, что сделали этот отличный инструмент доступным для всех и позволили нам поделиться им.

Многие считают, что это святой Грааль гусеничных машин в FS19, это тема споров в сообществе: 3D треки. И не просто любые 3D треки, а 3D треки, которые не требуют никаких сценариев, и могут быть созданы в любой форме, и ГИГАНТЫ одобрены для ПК и консолей.

Как работают GIANTS 3D tracks?

Гусеница состоит из 3 элементов: сетки гусеницы (плоской), специального изображения (trackArray) и некоторого шейдера, чтобы придать гусенице окончательную форму, используя информацию на изображении.
Этот метод основан на так называемой текстуре анимации вершин (VAT), и, как следует из названия, он работает путем кодирования информации о положении и / или вращении вершин в пикселях изображения. Это очень эффективно, потому что вы можете хранить много информации в небольшом кадре (вы можете закодировать 30-минутную анимацию с сотнями анимированных структур в одной текстуре 4K), а также потому, что все обрабатывается графическим процессором. Он не нагружает процессор, поэтому, как правило, очень эффективен.

trackArray состоит из двух изображений. Верхний содержит информацию о положении каждого "звена" в гусенице, нижний содержит информацию о вращении. Для резиновых дорожек эти значения интерполируются плавно, потому что резиновая дорожка - мягкая форма. Для треков типа metal track каждый пиксель соответствует одному звену трека.

Хранить информацию о положении и вращении в пикселе ?!

Теперь, когда код шейдера показал, что он хочет прочитать данные о положении и вращении с этого изображения, следующим шагом в разгадке тайны было понять, как эта информация закодирована в этих цветных пикселях. Опять же, код шейдера предоставил некоторые секреты, поскольку он использует " xyz "изображения для положения (простые координаты) и "xyzw" для вращения, предполагая, что информация о вращении должна храниться в виде значений кватернионов, что является специальным представлением вращения (см. https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation для углубленного введения в кватернионы). Декодирование этих данных, пиксель за пикселем, из существующих изображений trackArray и сравнение их с фактическим положением и вращением элементов трека подтвердили теорию, поэтому теперь мы знаем, какую информацию хранить в изображении. и в каком формате они должны храниться.

Создание новых форм гусениц

Как бы ни было приятно упражнение в расшифровке пикселей изображения, оно бесполезно без возможности генерировать наши собственные совершенно новые формы гусениц. Оказывается, что все треки ГИГАНТОВ создаются в дорогой программе 3D-моделирования под названием Houdini, которая имеет надстройку для НДС. Эти инструменты недоступны среднему моддеру, поэтому я решил создать что-то для Blender, которое имело бы ту же цель.

Рисование формы гусеницы в Blender.
Рисование формы гусеницы в Blender.

Для формы гусеницы я выбрал изогнутый объект. Очень легко изменить форму, ее можно даже сгенерировать из существующей сетки, а другие объекты можно легко настроить так, чтобы они следовали кривой.
чтобы представить гусеницу, рамка со 100 костями помещается на место, чтобы следовать кривой. Для резиновых треков эти 100 структур обеспечивают точность 10 см на пиксель или лучше, основываясь на стандартной сетке трека длиной 10 метров.

Эта техника является быстрым и простым способом определения формы трека. Файл blender, общий в конце статьи, также предлагает возможность использовать фоновое изображение, чтобы легко воссоздать существующие формы гусениц в реальном мире.

Создание изображений TrackArray

К сожалению, Blender не имеет функциональности VAT. Было несколько пользовательских опытов, но ни один из них не привел к чему-либо полезному для этой цели, поэтому он должен быть запрограммирован с нуля. Чтобы остаться на теме "вещи, которые Blender не поддерживает", в Blender нет поддержки DDS. Также нет другого встроенного формата изображения, подходящего для нашей цели. Единственный формат, который будет поддерживать 32-битную глубину, необходимую нам для хранения информации, - это OpenEXR. Однако ни одна библиотека не поддерживает преобразование EXR в DDS. Нет проблем, мы можем просто создать наши собственные DDS, прямо из Python. Я уверен, что есть библиотека, которая может это сделать, верно? Ну нет. Однако существует модуль Python для записи файлов TIFF, формат, который поддерживает 32-битную глубину и может быть легко преобразован в DDS... практически любым инструментом.

Таким образом, скрипт будет считывать положение и вращение каждой кости в цепочке, записывать ее в изображение TIFF и в конце скрипта преобразовывать TIFF для положения и вращения в один файл текстуры DDS. Оказывается, есть миллион различных способов испортить чтение, преобразование и запись координат и кватернионов ...

Попытка 68, 231 и 478
Попытка 68, 231 и 478

И вот, наконец, это произошло.

3D треки разных форм и размеров
3D треки разных форм и размеров

Но это был не полный конец истории. Экспортер работал, но из-за всех необходимых библиотек и инструментов установка стала кошмаром, запуск Blender с правами администратора для установки, упаковка инструментов командной строки в аддоне, ни одна из вещей, которые вы хотели бы, в идеале.

Когда я впервые подумал о написании DDS сразу, это казалось сложной задачей. Это сложный формат файла с заголовками и всевозможными флагами и полями, которые вам нужно правильно установить. Но… мы не создаем просто DDS, мы создаем очень, очень специфический DDS, с очень специфическим макетом: 2 изображения, всегда с одинаковым размером, одинаковой глубиной битов, без mipmaps и т. Д. Помимо пикселя данных, DDS всегда будут полностью идентичны. Так почему бы просто не закодировать его и просто добавить красивые цвета для конкретной формы гусеницы. Это оказалось намного проще, быстрее и устранило все библиотеки и инструменты командной строки. И экспортер был закончен.

Убедитесь, что вы делаете все в правильном порядке!
Убедитесь, что вы делаете все в правильном порядке!

Итак… как вы создаете своих гусениц?

Если вы все еще читаете это, у вас, вероятно, остался вопрос: как создать своих гусениц? Сначала загрузите файл blender по ссылкам для скачивания ниже. Как и Алиса в Стране чудес, файл содержит три основных объекта: фоновое изображение ("ЗАМЕНИТЬ МЕНЯ"), кривую ("РЕДАКТИРОВАТЬ МЕНЯ") и арматуру ("ЭКСПОРТИРОВАТЬ МЕНЯ ").

-6

Ничего не вращайте, не двигайтесь, ничего не вращайте. Все, что вам нужно сделать, это сформировать кривую так, как вы хотите, используя фоновое изображение в качестве ссылки, если это необходимо.

-7

Когда вы закончите, выберите армирование для экспорта.

Экспорт изображения TrackArray

Чтобы экспортировать изображение TrackArray, вы должны сначала загрузить и установить дополнение экспорта. При правильной установке аддона в меню Файл> Экспорт изображения TrackArray должна появиться новая запись.

Новая опция экспорта изображений TrackArray
Новая опция экспорта изображений TrackArray

С выбранным усилением (с надписью "Export Me") выберите новый вариант экспорта. Откроется стандартное диалоговое окно сохранения, и вы можете выбрать, где сохранить изображение TrackArray.

Поздравляем ! Вы только что создали свою собственную 3D-форму гусеницы.

Теперь вы готовы использовать свою новую форму TrackArray в редакторе Giants.

Соберите гусеницу в редакторе GIANTS

Для последнего шага мы перейдем к редактору GIANTS. Теоретически, вы можете сделать эти шаги и в Blender, так как удивительный экспортер сообщества SterneIdioten позволяет выбирать шейдеры и устанавливать параметры шейдеров, но он не оживит гусеницу, пока вы ее не загрузите. в игровом редакторе, поэтому ради этой статьи мы делаем это в редакторе GIANTS.

Во-первых, убедитесь, что вы экспортировали плоскую сетку. Как я уже упоминал ранее, GIANTS использует 10-метровую дорожечную сетку, которая особенно хорошо работает с количеством костей, которые мы использовали для генерации нашего trackArray, поэтому, если вы точно не знаете, что делаете. я предлагаю вам придерживаться этих размеров.

Плоская форма сетки в редакторе GIANTS
Плоская форма сетки в редакторе GIANTS

Далее мы назначим шейдер нашей сетке. Шейдер-это специальная вариация vehicleShader, которую мы все знаем и используем. Он не включен в общие базовые файлы игры, но доступен через мод GIANTS Axion Terra Trac на официальном ModHub. Скопируйте этот шейдер в папку mod и выберите его. В разделе variation выберите "motionPathRubber_secondUV_colorMask". Это временно заставит вашу гусеничную сетку исчезнуть. Это совершенно нормально, так как мы еще не рассказали ему о нашем изображении TrackArray.

VehicleShader пытается создать форму гусеницы
VehicleShader пытается создать форму гусеницы

На панели свойств шейдера нажмите на 3 маленькие точки “Custom Texture 3” и выберите изображение TrackArray, которое мы создали.

Наше новое изображение TrackArray применяется к шейдеру
Наше новое изображение TrackArray применяется к шейдеру

Карта для износа, грязи, АО с их собственной УФ-картой, а также материал и цвет UDIM, основанные на вашей первой УФ-карте на вашей сетке, все работают, как и все другие части автомобиля, так что это должно звучать знакомо для вас. Конечный результат, правильно текстурированный и настроенный, должен выглядеть так:

Наш последний трек, с правильными текстурами, грязью и нормальной картой
Наш последний трек, с правильными текстурами, грязью и нормальной картой

Я пропущу конфигурацию треков, чтобы установить их на транспортное средство. Есть много примеров того, как это сделать. В работе находится сквозное видео, которое также будет включать эту часть процесса.

А после?

Это начальная версия проекта и аддон для Blender. И хотя он полностью функционален для резиновых треков, я продолжу работать над ним, чтобы привнести ту же функциональность в Blender для жестких треков. Также в проекте я хотел бы разрешить визуализацию гусениц непосредственно в Blender. Это часть более масштабной попытки перенести другие части vehicleShader (например, материалы UDIM) в Blender. Мы будем держать вас в курсе !