JME3 - 喷涂三种以上的纹理

时间:2012-01-23 18:31:59

标签: java jmonkeyengine

以下教程介绍了如何使用高度贴图执行基本纹理喷涂。

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

我能够按照本教程和练习获得优异的成绩。但是,我想知道如何添加三个以上的纹理。我在Terrain.j3md文件的材质参数中看到只有三个纹理图层:Tex1,Tex2,Tex3所以我不相信你可以使用Terrain.j3md来做到这一点。

我认为你必须使用TerrainLighting.j3md。但是,它的结构与NormalMap和DiffuseMap等参数的结构完全不同,我找不到任何文档/教程来解释它们到底是什么。

2 个答案:

答案 0 :(得分:3)

最近,一种新的纹理喷溅材质定义已经发布,支持多达12种纹理,可选择额外的发光和镜面纹理。

材料的名称是TerrainLighting.j3md,而this是使用它的(非常好的)示例。

答案 1 :(得分:2)

JME3是一个基于OpenGL的库,使用GLSL shaders进行渲染。您必须编写自定义着色器或修改现有着色器以执行自定义渲染。

着色器是一个高级主题。您可以在SDK文档中找到shaders的简介。但是,您可能希望阅读有关"Materials, Light, Shadow"的完整文章。

JME3使用三个文件来管理它们:

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

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

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

Texture2D tex4

将新输入参数添加到Terrain.frag

uniform sampler2D m_Tex4;

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