以下教程说明了如何使用高度图执行基本的纹理喷涂。
http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_terrain
我能够按照本教程和练习进行练习,并获得了出色的效果。但是,我想知道如何添加三个以上的纹理。我在Terrain.j3md文件的 Material 参数中看到只有三个纹理层:Tex1,Tex2,Tex3,所以我不相信您可以使用Terrain.j3md来做到这一点。
我的假设是您必须使用TerrainLighting.j3md。但是,它的结构与NormalMap和DiffuseMap等参数截然不同,我找不到任何解释这些参数的文档/教程。
最佳答案
JME3是一个基于OpenGL的库,使用GLSL shaders进行渲染。您必须编写自定义着色器或修改现有的着色器,才能执行自定义渲染。
着色器是一个高级主题。您可以在SDK文档中找到shaders的简介。但是可能您想阅读有关"Materials, Light, Shadow"的完整文章。
JME3使用三个文件来管理它们:
.vert
文件.frag
文件.j3md
文件顶点着色器和片段着色器都只是使用GLSL语言的一段代码。顶点着色器对 View 中的每个顶点执行一次,以计算屏幕坐标。片段着色器对屏幕上的每个像素执行一次以计算颜色。 .j3md文件具有有关输入参数( Material ),技术(着色器)等的定义。
参数的数量和类型是固定的。但是您可以修改
Terrain.j3m
以添加新的纹理参数:Texture2D tex4
在
Terrain.frag
中添加一个新的输入参数:uniform sampler2D m_Tex4;
并修改片段着色器代码,以根据需要使用该新的纹理参数。