0

我正在使用 opengles 2.0 为 android 中的 3d 应用程序绘制一些模型,但那些

盒状模型看起来太光滑,阴影平滑,我需要球体模型的阴影平滑。

我将 3d 模型导出到 .OBJ 文件中,并从搅拌机中获得平滑的阴影。

现在我的 3d 模型结构有

每个顶点法线。

使用顶点索引数组绘制模型。

由于我的模型的法线是每个顶点的法线,我处理这个问题的计划是创建一个每个面

正常并将我的所有绘图方法重建为不使用顶点索引数组导致它无法执行。

我不想做这个计划,因为顶点索引数组消耗的内存更少。

有没有办法用顶点索引数组使平面平滑,以便像函数一样使用插值变化或其他方式的中间值来制作 GLSL?

感谢您的帮助,并为我糟糕的英语感到抱歉。

4

1 回答 1

1

我也为此苦苦挣扎-您绝对可以更改管道以生成确切的面部法线并将它们传递给您的管道,然后在照明计算中使用它。

或者您可以在模型本身的 Blender(或任何其他 3D 程序)中完成这项工作 - 复制您想要平坦的顶点,以便每个面都有自己的顶点,并且当不连接到其他面时,它们的顶点法线将是面法线(带有平滑或平坦的阴影)。最初有 6 个顶点的立方体将变成 4*6=24 个顶点,具有相同的 6 个四边形面,但每个顶点的顶点法线将与四边形的面法线完全对齐。

最终结果是一样的,需要将更多顶点传递到管道中,但我喜欢模型中的解决方案,因为它允许您在模型中混合您想要平滑和平坦阴影的位置。

我想在搅拌机中甚至可能有一个脚本来自动化这个。这是一篇关于 Blender 在做什么以及为什么可编程管道中没有平面着色的松散相关文章。

于 2012-12-02T16:19:59.100 回答