Vector 图形、平滑着色和法线

Vector 图形、平滑着色和法线,vector,graphics,geometry,Vector,Graphics,Geometry,我正试图在我的图形程序中实现三角形的平滑着色,但是我目前一直在研究如何准确地实现它,我有两个选择 选项1:(每个向量) 创建一个“零”向量 将每个入射三角形的非标准化法线添加到创建的向量中 按1/IncidentTriangalCount缩放结果向量 返回结果向量的标准化版本 选项2:(每个向量) 创建一个“零”向量 将每个入射三角形的归一化法线添加到创建的向量中 按1/IncidentTriangalCount缩放结果向量 返回结果向量的非标准化版本 这两种方法都给了我不同的结果,我真的不知道

我正试图在我的图形程序中实现三角形的平滑着色,但是我目前一直在研究如何准确地实现它,我有两个选择

选项1:(每个向量)

  • 创建一个“零”向量
  • 将每个入射三角形的非标准化法线添加到创建的向量中
  • 1/IncidentTriangalCount
    缩放结果向量
  • 返回结果向量的标准化版本
  • 选项2:(每个向量)

  • 创建一个“零”向量
  • 将每个入射三角形的归一化法线添加到创建的向量中
  • 1/IncidentTriangalCount
    缩放结果向量
  • 返回结果向量的非标准化版本

  • 这两种方法都给了我不同的结果,我真的不知道该采用哪种方法,有人能给我一些建议吗?

    总是使用标准化法线。因此,您的两个选项将合并为一个:)


    此外,在使用“每个”事件三角形时必须小心,因为在这种情况下,您将使整个模型平滑,这是不好的。例如,实际有边的铅笔模型看起来会像圆形的。实现一个tRESHOLD,即只考虑三角形,法线的角度相对较小。

    总是用标准化法线工作。因此,您的两个选项将合并为一个:)


    此外,在使用“每个”事件三角形时必须小心,因为在这种情况下,您将使整个模型平滑,这是不好的。例如,实际有边的铅笔模型看起来会像圆形的。实现一个tRESHOLD,即只考虑三角形,法线的角度相对较小。

    如果你只能将法线分配给三角形(而不是顶点),那么你就不能做平滑的阴影。@ Athabaska我现在对每个三角形(面)都有一个正常值。每个顶点我想取所有与该顶点相关的三角形(面)的平均值,这不是我需要做的吗?哦,就是这样做的,是的。如果你只能将法线指定给三角形(而不是顶点),那么你就不能进行平滑着色。@athabaska我目前为每个三角形(面)都有一条法线。每个顶点我想取所有三角形(面)的平均值,这不是我需要做的吗?哦,就是这样做的,是的。