模型的奇怪渲染(一个在另一个前面)
Odd rendering of models (one in front of the other)
我有两个模型。我的地形之一是使用网格生成的。另一个模型(深蓝色海洋)是使用模型构建器创建的圆柱体。
海洋模型和地形模型在地形底部相交。如何阻止这些行发生?
更新:
我已将属性添加到我的模型中:
modelBuilder.part("chunk" + Integer.toString(x) + "." + Integer.toString(y), myMesh, GL20.GL_TRIANGLES, new Material(new DepthTestAttribute(0)));
但是现在我的模型没有了,只剩下大海了。
oceanModel = mb.createCylinder(10000f, 15, 10000f , 30, new Material(ColorAttribute.createDiffuse(Color.NAVY)), Usage.Position | Usage.Normal | Usage.TextureCoordinates);
如果您不需要地形在水下通过(即,您在模型中水应该显示的地方打洞),您可以在绘制这两个网格时关闭深度测试。如果您使用的是 LibGDX 3D API,您可以通过为地形模型提供一个 DepthTestAttribute 并将该属性的 depthFunc
设置为 0 来实现。如果您自己处理网格渲染,您可以直接用Gdx.gl.glDisable(GL20.GL_DEPTH_TEST);
关掉
如果你确实需要两个网格相交,那么保持深度测试,你需要将相机的近平面设置得更远(更大的数字)。通常,在它开始剪切游戏中的对象之前,您应该将它设置得尽可能远。这也有助于将相机的远平面设置得更近,但不如将近平面设置得更远。
如果您想了解有关此问题的更多信息,请查看 Z-fighting。
我有两个模型。我的地形之一是使用网格生成的。另一个模型(深蓝色海洋)是使用模型构建器创建的圆柱体。
海洋模型和地形模型在地形底部相交。如何阻止这些行发生?
更新:
我已将属性添加到我的模型中:
modelBuilder.part("chunk" + Integer.toString(x) + "." + Integer.toString(y), myMesh, GL20.GL_TRIANGLES, new Material(new DepthTestAttribute(0)));
但是现在我的模型没有了,只剩下大海了。
oceanModel = mb.createCylinder(10000f, 15, 10000f , 30, new Material(ColorAttribute.createDiffuse(Color.NAVY)), Usage.Position | Usage.Normal | Usage.TextureCoordinates);
如果您不需要地形在水下通过(即,您在模型中水应该显示的地方打洞),您可以在绘制这两个网格时关闭深度测试。如果您使用的是 LibGDX 3D API,您可以通过为地形模型提供一个 DepthTestAttribute 并将该属性的 depthFunc
设置为 0 来实现。如果您自己处理网格渲染,您可以直接用Gdx.gl.glDisable(GL20.GL_DEPTH_TEST);
如果你确实需要两个网格相交,那么保持深度测试,你需要将相机的近平面设置得更远(更大的数字)。通常,在它开始剪切游戏中的对象之前,您应该将它设置得尽可能远。这也有助于将相机的远平面设置得更近,但不如将近平面设置得更远。
如果您想了解有关此问题的更多信息,请查看 Z-fighting。