5

以下教程解释了如何使用高度图执行基本的纹理喷溅。

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

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

我假设您必须使用 TerrainLighting.j3md。但是,这与 NormalMap 和 DiffuseMap 等参数的结构非常不同,我找不到任何文档/教程来解释这些究竟是什么。

4

2 回答 2

3

最近,发布了用于纹理喷溅的新材质定义,支持多达 12 种纹理,可选择附加的发光和镜面反射纹理。

The name of the material is TerrainLighting.j3md, and this is a (very nice) example using it.

于 2014-04-30T15:10:49.293 回答
2

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

着色器是一个高级主题。您可以在 SDK 文档中找到对着色器的介绍。但可能您想阅读有关“材料、光、影”的完整文章。

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

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

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

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

Texture2D tex4

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

uniform sampler2D m_Tex4;

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

于 2012-03-06T20:37:31.233 回答