JME3 - Splatting более трех текстур - PullRequest
5 голосов
/ 23 января 2012

В следующем уроке объясняется, как выполнить базовое наложение текстуры на карты высот.

http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_terrain

Я смог выполнить этот урок и упражнения с отличными результатами.Однако мне интересно, как добавить более трех текстур.Я вижу в параметрах материала файла Terrain.j3md только три текстурных слоя: Tex1, Tex2, Tex3, поэтому я не верю, что вы можете сделать это, используя Terrain.j3md.

Это мое предположениечто вы должны использовать TerrainLighting.j3md.Тем не менее, это структурировано очень по-разному с такими параметрами, как NormalMap и DiffuseMap, и я не могу найти какую-либо документацию / руководства, объясняющие, что именно это.

Ответы [ 2 ]

3 голосов
/ 30 апреля 2014

Совсем недавно было выпущено новое определение материала для разбрызгивания текстур, поддерживающее до 12 текстур с опционально дополнительными текстурами свечения и зеркального отражения.

Название материала: TerrainLighting.j3md , и this (очень хороший) пример его использования.

2 голосов
/ 07 марта 2012

JME3 - это библиотека на базе OpenGL, использующая для рендеринга GLSL-шейдеры .Вы должны написать свой собственный шейдер или изменить существующий, чтобы выполнить пользовательский рендеринг.

Шейдеры - это сложная тема.Вы можете найти введение в шейдеров в документации SDK.Но, вероятно, вы хотели бы прочитать полные статьи о "Материалы, свет, тень" .

JME3 использует три файла для управления ими:

  • A .vert файл с кодом вершинного шейдера GLSL
  • A .frag файл с кодом фрагментного шейдера GLSL
  • A .j3md файл с определением программы шейдера

Как вершинные, так и фрагментные шейдеры - это просто кусок кода, использующий язык GLSL.Вершинный шейдер выполняется один раз для каждой вершины в представлении для вычисления координат экрана.Фрагмент шейдера выполняется один раз для каждого пикселя на экране для вычисления цветов.Файл .j3md содержит определения входных параметров (материалов), методов (шейдеров) и т. д.

Число и тип параметров являются фиксированными.Но вы можете изменить Terrain.j3m, чтобы добавить новый параметр текстуры:

Texture2D tex4

Добавить новый входной параметр в Terrain.frag:

uniform sampler2D m_Tex4;

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

...