【问题标题】:JME3 - Splatting more than three texturesJME3 - 喷溅三个以上的纹理
【发布时间】:2012-01-23 18:31:58
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java jmonkeyengine


    【解决方案1】:

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

    材料的名称是TerrainLighting.j3mdthis 是一个使用它的(非常好的)示例。

    【讨论】:

      【解决方案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;
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-29
        • 2013-09-23
        • 1970-01-01
        • 2014-07-06
        • 1970-01-01
        • 2015-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多