2012-01-23 12 views
5

Poniższy samouczek wyjaśnia, w jaki sposób wykonać podstawowe rozpryski tekstury za pomocą map wysokości.JME3 - Rozpryskiwanie więcej niż trzech tekstur

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

byłem w stanie śledzić ten tutorial i ćwiczenia z doskonałymi wynikami. Zastanawiam się jednak, jak dodać więcej niż trzy tekstury. Widzę w parametrach materiału pliku Terrain.j3md istnieją tylko trzy warstwy tekstur: Tex1, Tex2, Tex3, więc nie sądzę, że można to zrobić za pomocą Terrain.j3md.

To moje założenie, że musisz użyć TerrainLighting.j3md. Jednak jest to bardzo odmienne z parametrami takimi jak NormalMap i DiffuseMap i nie mogę znaleźć dokumentacji/samouczków wyjaśniających czym dokładnie są.

Odpowiedz

2

JME3 jest biblioteką opartą na OpenGL, z wykorzystaniem renderowania GLSL shaders. Musisz napisać niestandardowy moduł cieniujący lub zmodyfikować istniejący, aby wykonać renderowanie niestandardowe.

Shadery to zaawansowany temat. Możesz znaleźć wprowadzenie do shaders w dokumentacji SDK. Ale prawdopodobnie chciałbyś przeczytać pełne artykuły na temat "Materials, Light, Shadow".

JME3 wykorzystuje trzy pliki zarządzać nimi:

  • Plik .vert z GLSL wierzchołka kodu shaderów
  • Plik .frag z fragmentu GLSL kodu shaderów
  • Plik .j3md z definicją programu shader

Zarówno shadle wierzchołków, jak i fragmentów to tylko fragment kodu używający języka GLSL. Vertex shader jest wykonywany raz dla każdego wierzchołka w widoku, aby obliczyć współrzędne ekranu. Fragmentowy shader jest wykonywany raz dla każdego piksela na ekranie, aby obliczyć kolory. Plik .j3md zawiera definicje parametrów wejściowych (materiałów), technik (modułów cieniujących) i tak dalej.

Liczba i typ parametrów są stałe. Ale można modyfikować Terrain.j3m dodać nowy parametr Tekstura:

Texture2D tex4 

Dodaj nowy parametr wejściowy do Terrain.frag:

uniform sampler2D m_Tex4; 

i modyfikować kod fragment shader używać tego nowego parametru tekstury, jak chcesz.

3

Niedawno wydano nową definicję materiału do rozpryskiwania tekstur, obsługującą do 12 tekstur, z opcjonalnie dodatkowymi teksturami jarzeniowymi i lustrzanymi.

Nazwa materiału to TerrainLighting.j3md, a this to (bardzo ładny) przykład z jego użyciem.

+0

@RichardTingle thx, poprawił link –

Powiązane problemy