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

JMonkeyEngine SDK: Процедурные текстуры с NeoTexture

Опубликованно: 09.06.2017, 3:52
Последняя редакция, Andry: 10.10.2017 16:59

NeoTextureEditor позволяет создавать плиточные текстуры процедурно, используя простой интерфейс узла для генерации изображений, их смешивания, создания карт нормалей и многого другого. Вы можете напрямую загружать файлы .tgr в качестве материала или экспортировать созданные изображения в виде файлов .png и использовать их в играх на основе jMonkeyEngine.

Текстуры обычно составляют наибольшую часть дистрибутива игры. Вот почему NeoTexture — это не только редактор, но и библиотека, которая генерирует текстуры из .tgr-файлов. Используйте библиотеку для загрузки .tgr файлов непосредственно в jME3 в качестве материала, без необходимости экспортировать текстуры. Это означает, что высококачественные текстуры для ваших моделей, это просто крошечные файлы описанные в дистрибутиве.

Создание и редактирование файла NeoTexture

  • Щелкните [ПК мыши] папку assets/Textures и выберите Новый ▸ Другое.
  • В Мастере создания файлов выберите NeoTexture ▸ Empty NeoTextureFile и нажмите [Далее].
  • Дайте файлу название, для примера neoMaterial.
  • Новый файл neoMaterial.tgr создается в папке Textures и открывается в редакторе NeoTexture.

Редактируя .tgr файл создайте свою процедурную текстуру: (Читать больше о создании процедурных текстур)

  • Перетащите любой шаблон из левой панели в область редактора.
  • Щелкните [ПК мыши] область редактора и вставьте узел фильтра NormalMap.
  • Подключите зеленый выходной знак рисунка с красной меткой входа фильтра. Это создает Карту Нормалей, которая может использоваться как карта рельефа.

Добавление библиотеки NeoTexture в ваш проект

Чтобы использовать tgr файлы NeoTexture непосредственно в вашем приложении, вы должны добавить библиотеки NeoTexture в свой проект:

  • Щелкните [ПК мыши] свой проект и выберите Свойства
  • Перейдите в раздел Библиотеки в окне свойств
  • Нажмите [Добавить библиотеку].
  • Выберите NeoTexture-Libraries и нажмите [Добавить библиотеку]

Загрузка tgr файла в качестве материала

Мы хотим использовать процедурную текстуру как материал, основанный на Lighting.j3md (по умолчанию). Мы знаем, что Lighting.j3md поддерживает DiffuseMap, NormalMap, SpecularMap и ParallaxMap.

  1. Щелкните фильтр «Normal Map», чтобы выбрать его. Мы хотим использовать его как Карту Нормалей текстуры.
    1. В окне «NeoTextures Properties» в разделе Export name введите название для слоя текстуры, то с каким название оно появится в файле .j3m, например. «NormalMap».
  2. Щелкните шаблон, чтобы выбрать его. Мы хотим (повторно) использовать его как Diffuse Map текстуру.
      В окне «NeoTextures Properties» в разделе Export name введите название для слоя текстуры, то с каким название оно появится в файле .j3m, например. «DiffuseMap».
  3. Нажмите кнопку «Save» в редакторе NeoTextures. Файл .tgr сохраняется с двумя слоями. (Мы могли бы добавить SpecularMap и ParallaxMap таким же образом, если бы захотели.)

Давайте назначим вновь созданную текстуру сетке, чтобы увидеть, как она выглядит.

  1. Откройте файл Main.java.
  2. Выберите Окно ▸ Палитра, чтобы открыть палитру. Вы найдете два фрагмента кода NeoTexture, один для добавления загрузчика NeoTexture в agentManager и один для загрузки материала NeoTexture.
  3. Перетащите по одному из них в метод simpleInitApp() вашего приложения.
  4. Откорректируйте имена путей файла .tgr в соответствии с созданным нами файлом: Materials/neoMaterial.tgr.

Очистите, соберите и запустите. Вы готовы загрузить свой процедурный материал!

assetManager.registerLoader(com.jme3.material.plugins.NeoTextureMaterialLoader.class,"tgr");
NeoTextureMaterialKey key = new NeoTextureMaterialKey("Materials/neoMaterial.tgr");

Material mat = assetManager.loadAsset(key);
mat.setFloat("Shininess",12); /* Lighting.j3md также имеет параметры не-карты, которые мы можем задать. */
thing.setMaterial(mat);

По умолчанию Описанием Материала(Material Definition) для NeoTextures является Lighting.j3md, и это, вероятно, тот, который вы будете использовать чаще всего. Если вы хотите использовать дополнительные параметры текстуры, кроме DiffuseMap, SpecularMap, ParallaxMap и NormalMap, вы можете переключиться на другое описание материала с помощью setMaterialDef(), например:

key.setMaterialDef("Commons/MatDefs/Misc/ColoredTextured.j3md");

Помните, что названия слоев в файле .tgr должны совпадать с названиями, указанными в файле .j3md. В нашем примере ColoredTextured.j3md файл .tgr должен содержать ColorMap, и вам нужно задать RGBAColor.

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

Вы можете использовать .tgr-файлы, такие как обычные текстуры в файлах j3m, с синтаксисом, подобным этому: Materials/neoMaterial?DiffuseMap.tgr Часть между? А суффикс — это название узла, который вы хотите загрузить в качестве текстуры. Если вы не указываете название, используется текстура.

Чтобы иметь возможность загружать эти текстуры, вам необходимо зарегистрировать Locator и Loader в AssetManager, обратите внимание, что вы можете зарегистрировать только один загрузчик на расширение, чтобы вы не могли загружать .tgr-файлы в качестве материалов и как текстуры с тем же AssetManager.

assetManager.registerLocator("/", com.jme3.texture.plugins.NeoTextureLocator.class );
assetManager.registerLoader(com.jme3.texture.plugins.NeoTextureLoader.class,"tgr");

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

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

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