Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine Уроки и Документация
            Документация для уверенных пользователей
                Программный конвейер мультимедийных игровых ресурсов

Программный конвейер мультимедийных игровых ресурсов

Опубликованно: 22.04.2017, 1:38
Последняя редакция, Andry: 13.10.2017 23:32

Ресурсы(Assets) представляют собой файлы, которые не являются кодом. Мультимедиа ресурсы включают в себя, например, ваши текстуры (файлы изображений), модели (Mesh файлы), и звуки (звуковые файлы).

  • Вы создаете текстуры в графическом редакторе, например Gimp, и экспортируете их как PNG или JPG.
  • Вы создаете модели в 3D-редакторе, сетки(mesh) например Blender, и экспортируете их в формате Ogre Mesh XML или Wavefront OBJ.
  • Вы создаете звуки в звуковом редакторе, например Audacity, и экспортируете их как WAVE или OGG.

Конвейер ресурсов(Asset Pipeline)

Правильно  Не правильно
Импортируйте оригинальные модели и текстуры в assets/Textures Не оставляйте текстуры или модели в папках за пределами вашего JME проекта: игра не может ссылаться на них, или загрузить их оттуда.
Сохраняйте звуки в assets/Sounds. Не оставляйте аудио файлы в папке за пределами вашего проекта JME: игра не может ссылаться на них, или загрузить их оттуда.
Создавайте модели с низким количеством полигонов.  Не создавайте модели с высоким количеством полигонов, они слишком медленны чтобы быть полезными в играх.
Используйте только Diffuse Map, Normal Map, Glow Map, Specular Map в материалах ваших моделей.  Не используйте не поддерживаемые свойства материалов, которые не перечислены в Обзор материалов.
Используйте UV texture / texture atlases / baking для каждой текстурной карты.  Не создавайте модели на основе нескольких отдельных текстур, они разбивают модель на отдельные сетки.
Преобразуйте исходные модели для JME3 в формат .j3o. Переместите файлы .j3o в assets/Models.  Не указывайте пути к исходным файлам в виде Blender/Ogre/OBJ в вашем load() коде, так как эти не оптимизированные файлы автоматически не упаковываются в окончательный JAR.
На раннем этапе согласовывайте схемы, и схемы папок с вашими художниками, чтобы избежать путаницы. Например. Держите схемы именования для скелета и некоторых частей модели. Постарайтесь, чтобы у папок ваших ресурсов была чёткая структура классификаций.  Не загружайте бездумно модели и другие ресурсы вашего проект без задания структуры классификаций для логичного расположения файлов. Иначе вы можете повторно импортировать мусор который случаййно не удалили.

Читайте внимательно.

Использование папки Assets

Храните ваши ресурсы в под папках каталога ресурсов вашего проекта. Каталог ресурсов — это путь по умолчанию, где Asset Manager JME игры ищет файлы для загрузки.

jMonkeyProjects/MyGame/assets/Interface/ # .font, .jpg, .png, .xml
jMonkeyProjects/MyGame/assets/MatDefs/   # .j3md
jMonkeyProjects/MyGame/assets/Materials/ # .j3m
jMonkeyProjects/MyGame/assets/Models/    # .blend, .j3o
jMonkeyProjects/MyGame/assets/Scenes/    # .j3o
jMonkeyProjects/MyGame/assets/Shaders/   # .j3f, .vert, .frag
jMonkeyProjects/MyGame/assets/Sounds/    # .ogg, .wav
jMonkeyProjects/MyGame/assets/Textures/  # .jpg, .png; also .mesh.xml+.material, .mtl+.obj,

Подготовка структуры папок assets для вашего индивидуального проекта:

  1. Согласование структуры каталогов с графическими дизайнерами.
  2. Создавайте под папки ресурсов любым принципом, который соответствует вашему проекту (см. Пример выше). Придерживайтесь одной системы.
  3. Если разные ресурсы принадлежат друг к другу, создайте для них параллельную структуру подкаталогов.
    Например: для моделей автомобилей создайте каталоги Textures/vehicles/car1/, Materials/vehicles/car1/, Models/vehicles/car1/, Sounds/vehicles/car1/ (и.т.д.).
  4. Согласуйте схемы именования и нумерации файлов с графическими дизайнерами.
  5. Используются ли некоторые ресурсы взаимозаменяемо? Систематическое присвоение имен и нумераций позволяют разработчикам легко обменивать ресурсы путем замены частей пути String.
  6. Определите стандарты именования интерактивных частей (рук/ног) анимированных моделей.

Видео: Ужасные вещи случаются, если вы испортите маркировку своих ресурсов. Шутки в сторону. ;-)

Смотрите также:

  1. Более подробная информация о Менеджере ресурсов(Asset Manager), включая советы по работе с ресурсами при использовании других IDE.
  2. Используйте Asset Pack для объединения, совместного использования и управления ресурсами!

Создание текстур и материалов

Установите графический редактор, например, Gimp или Photoshop. Обратитесь к документации графического редактора для получения подробной информации о том, как выполнить следующие задачи.

  1. Создайте текстуры в графическом редакторе.
  2. Сохраните все текстуры в заранее подготовленные вложенные папки в каталоге assets/Textures.
  3. (Необязательно.) Если вы планируете использовать материалы JME, которые вы программно задаете из кода, тогда создавайте в SDK материалы с расширением .j3m.
  4. Сохраните эти .j3m-файлы в каталоге assets/Materials.

Хранение текстур в вашем каталоге проекта необходимо для того, чтобы пути в двоичных файлах JME (.j3o) модели работали. Относитесь к путям ваших ресурсов, как к именам классов, например классов java, они определяют конкретные ресурсы. Когда вы позднее создаете файлы .j3o, компилируете файлы классов и распределяете в приложении, все пути и файлы должны быть доступны в их окончательной, абсолютной форме.

Крайне важно сохранять одну и ту же структуру каталогов от начала до конца. Если вы когда-либо меняли структуру каталогов ресурсов, вы должны сделать ручной рефакторинг (как и для изменений имени пакета Java): реэкспортировать все затронутые модели, регенерировать все затронутые файлы .j3o и вручную обновлять все затронутые строки пути в вашем коде.

Создание 3D-моделей

Установите редактор сетки, такой как Blender или 3D Studio MAX. Максимально используйте текстуры и материалы. Проконсультируйтесь с документацией редактора сеток для получения подробной информации о том, как выполнять следующие задачи.

Обратите внимание, что UV координаты являются частью сетки, а не частью материала, поэтому, если вы успешно импортируете ваш mesh, вы можете позже применить текстуру снова, и она будет правильно отображаться.
  1. Создание 3D-моделей в редактор сетки.
  2. Создавайте эффективные модели с низким количеством полигонов. Модели с высоким количеством полигонов могут выглядеть очень хорошо в статических 3D-конкурсах, но они медленные в динамичной игре!
  3. Создавайте материалы для своих моделей либо в 3D-редакторе, либо в jME3 SDK. Используйте только следующие характеристики материала: Diffuse Map или Diffuse Color(минимум); Плюс необязательная Normal Map, Glow Map, Specular Map.
    Каждая функция материала, не перечисленная в Materials Overview, не поддерживается и игнорируется рендерером JME3.
  4. Разверните модель в 3D-редакторе и создайте UV-текстуру (то есть один файл текстуры, который содержит все части одной модели под разными углами).
    Не используйте несколько отдельных файлов текстур в одной модели, это разбивает модель на несколько сеток.
  5. Экспортируйте модельные сетки в одном из следующих форматов: .blend, Wavefront .OBJ/.MTL, Ogre .mesh/.material/.scene.
  6. Bake каждую текстуру в один файл при экспорте. Создайте Текстурный Атлас.
  7. Сохраните экспортированные модели в под папки каталога assets/Textures (sic), чтобы они были вместе с их текстурами!

Смотрите также: Текстурный Атлас на gamasutra

Когда я загружаю модель в JME3, почему она выглядит иначе, чем в 3D-редакторе?
3D-модели никогда не будут выглядеть одинаково в игровом движке и в редакторе сеток. Редакторы сетки оптимизированы для высококачественного автономного рендеринга, и многие из параметров материалов и текстур просто не работают в контексте живой трансляции, таком как игры. Кроме того, шейдеры, которые отображают материалы в JME3, отличаются от той реализаций, что в средстве рендеринга вашего редактора сеток. Напомните графическим дизайнерам, чтобы они сосредоточились на функциях, поддерживаемых игровыми движками.

Преобразование 3D-моделей в формат .j3o

Преобразуйте все модели и сцены в бинарный формат .j3o для загрузки их в jME3. Для выполнения преобразования используется SDK jMonkeyEngine.

  1. Убедитесь, что вы экспортировали модель в каталог assets/Textures (или подкаталоги) вместе со всеми ее текстурами.
  2. В SDK щелкните модель правой кнопкой мыши и выберите «Преобразовать в j3o Binary(Convert to j3o Binary)».
    Пути теперь ссылаются на файлы с абсолютным типом .j3o в assets/Textures/….
  3. Теперь переместите файл .j3o в соответствующий каталог assets/Models/ или assets/Scenes/.
  4. Используйте AssetManager для загрузки файлов .j3o.

Этот процесс гарантирует, что пути текстуры верны, и он также освобождает папку assets/Models от текстур. Вы можете повторно использовать свой набор текстур для других моделей.

Должен ли я преобразовать в .j3o обязательно? Да!

Формат файла .j3o это оптимизированный формат для хранения частей графа сцены в jME3 для трехмерных игр.

  • Файл .j3o может содержать одну фигуру, одну модель или же целую сцену.
  • Только файлы .j3o могут хранить все параметры материала jme3 и другие функции. Другие форматы можно рассматривать только как сетки с данными UV-картами и всегда нуждаются в дополнительной работе.
  • .j3o файлы легко работают на разных платформах, а также могут автоматически адаптироваться к определенным платформам при распространении.
  • (Дополнительно) В файле .j3o можно хранить физические свойства, материалы, источники света, излучатели частиц и аудио узлы модели.
    Используйте Java-команды или используйте jMonkeyEngine SDK SceneComposer в качестве удобного интерфейса для добавления этих свойств.
  • По умолчанию скрипт сборки Ant копирует файлы .j3o, .j3m, звуки и текстуры в распределяемый JAR файл автоматически.
Важно: Не оптимизированные файлы внешних моделей (.mesh.xml, .material, .obj, .mat, .blend, и.т.д.) Не включаются скриптом сборки по умолчанию в финальные сборки игры в каталоге dist! Если вы или ваши клиенты пытаетесь запустить игры, содержащие код, который загружает модели без .j3o, вы получите ошибку AssetNotFoundException Runtime Error (ресурс не найден). Ваш окончательный код приложения должен ссылаться только на файлы .j3o. Обратите внимание, что ваши разработчики не получат эту ошибку времени выполнения при запуске сборок разработки прямо из SDK.

Смотрите также

Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.