以下教程说明了如何使用高度图执行基本的纹理喷涂。

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使用三个文件来管理它们:

  • 带有GLSL顶点着色器代码
  • .vert文件
  • 带有GLSL片段着色器代码
  • .frag文件
  • 具有着色器程序定义
  • .j3md文件

    顶点着色器和片段着色器都只是使用GLSL语言的一段代码。顶点着色器对 View 中的每个顶点执行一次,以计算屏幕坐标。片段着色器对屏幕上的每个像素执行一次以计算颜色。 .j3md文件具有有关输入参数( Material ),技术(着色器)等的定义。

    参数的数量和类型是固定的。但是您可以修改Terrain.j3m以添加新的纹理参数:
    Texture2D tex4
    

    Terrain.frag中添加一个新的输入参数:
    uniform sampler2D m_Tex4;
    

    并修改片段着色器代码,以根据需要使用该新的纹理参数。

    09-11 18:34