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

Как использовать Описание Материалов (.j3md)

Опубликованно: 18.05.2017, 15:36
Последняя редакция, Andry: 26.06.2017 23:35

Для всех Геометрий требуется, чтобы материал был видимым. Каждый Материал основан на Описании Материала(Material Definition). Описание материалов обеспечивают «логику материала», а шейдер рисует материал в соответствии с параметрами, указанными в описании. Файл J3MD абстрагирует шейдер и его конфигурацию от пользователя, предоставляя простой интерфейс, в котором пользователь может просто задать несколько параметров материалу, чтобы изменить его внешний вид и способ обработки шейдерами.

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

Пример:

Spatial myGeometry = assetManager.loadModel("Models/Teapot/Teapot.j3o");
Material mat = new Material(assetManager,  // Создать новый материал и...
    "Common/MatDefs/Misc/Unshaded.j3md");  // ... укажите файл Описания Материала, здесь "Unshaded.j3md"!
mat.setColor("Color", ColorRGBA.Blue);     // Задайте один или несколько параметров материала.
myGeometry.setMaterial(mat);               // Использовать материал на этой Геометрии.
Если вы часто используете один настраиваемый материал с описанными настройками, узнайте о сохранении настроек материала в файлах материалов j3m. Вы можете либо использовать jMonkeyEngine SDK для создания .j3m файлов (удобных для пользователя), либо пишете файлы .j3m в текстовом редакторе (независимом от IDE).

Подготовка материала

В списке Обзор материалов:

  1. Выберите Описание Материала, в которое предоставляет необходимые функции.
    • Совет. Если вы не знаете, начните с Unshaded.j3md или Lighting.j3md.
  2. Посмотрите на результаты применения параметров описания материала и определите, какие параметры вам нужны для достижения желаемого эффекта (например, «свечение или цвета»). Большинство параметров являются необязательными!
  3. Создайте и сохраните необходимые файлы текстур в свой каталог assets/Textures.
    • Например. Mytex_diffuse.png как ColorMap / DiffuseMap, mytex_normal.png как NormalMap, mytex_alpha.png как AlphaMap и.т.д. …
  4. Определите необходимые значения для достижения желаемого эффекта.
    • Например. Установить colors, floats, booleans, и.т.д. …

Использование материала

В вашем Java-коде,

  1. Создайте объект Material на основе выбранного описания материала (файл .j3md):
    Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
  2. Настройте свой материал, установив соответствующие значения, указанные в таблице Обзор материалов.
    mat.setColor("Color", ColorRGBA.Yellow ); // и более
  3. Примените подготовленный материал к геометрии:
    myGeometry.setMaterial(mat);
  4. (Необязательно) Отрегулируйте масштаб текстуры сетки:
    myGeometryMesh.scaleTextureCoordinates(new Vector2f(2f, 2f));

Подробнее см. Также: Как использовать материалы

Примеры

Ниже приведены примеры методов, которые устанавливают разные типы данных:

  • mat.setColor( “Color, ColorRGBA.White );
  • mat.setTexture( “ColorMap, assetManager.loadTexture(“Interface/Logo/Monkey.png ));
  • mat.setFloat( “Shininess, 5f);
  • mat.setBoolean( “SphereMap, true);
  • mat.setVector3( “NormalScale, new Vector3f(1f,1f,1f));

Простой текстурированный материал.

Material mat = new Material(assetManager,
    "Common/MatDefs/Misc/Unshaded.j3md");
mat.setTexture("ColorMap", assetManager.loadTexture(
    "Interface/Logo/Monkey.jpg"));

Текстурированный материал с цветным кровотечением через прозрачные области.

Material mat = new Material(assetManager,
    "Common/MatDefs/Misc/Unshaded.j3md");
mat.setTexture("ColorMap", assetManager.loadTexture(
    "Textures/ColoredTex/Monkey.png"));
mat.setColor("Color", ColorRGBA.Blue);

Вы можете проверить эти примеры в следующем фрагменте кода. Он создает коробку и применит материал:

 Box b = new Box(Vector3f.ZERO, 1, 1, 1);
Geometry geom = new Geometry("Box", b);
// ... вставка Описания материала...
geom.setMaterial(mat);
rootNode.attachChild(geom);
Эти и другие распространенные фрагменты кода можно найти в палитре кода SDK jMonkeyEngine. Перетащите их в исходный код.

Создание пользовательского описания материала

Сначала прочтите спецификацию разработчика jME3 системы материалов (.j3md, .j3m). Также ознакомьтесь с исходным кодом двидка и посмотрите, как реализованы некоторые описания материала.

Вы можете создать свои собственные описания материалов и поместить их в директорию assets/MatDefs вашего проекта.

  1. Найдите существующие MatDefs в engine/src/core-data/Common/MatDefs/.
  2. Откройте файл Something.j3md в текстовом редакторе. Вы видите, что этот файл .j3md определяет параметры и методы материала.
    • Параметры материалов — это те параметры, которые вы установили в Материалах, как показано в приведенных выше примерах.
    • Методы полагаются на VertexShaders и FragmentShaders: вы найдете их в файлах Something.vert и Something.frag в том же каталоге.
  3. Узнайте о GLSL (OpenGL Shading Language), чтобы понять синтаксис .vert и .frag, а затем написать свой собственный.

Ссылки по теме

  • Спецификация разработчика системы материалов jME3 (.j3md, .j3m)

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

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

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