生成点法线(Generating Vertex Normal)-应用版

上一篇博文《生成点法线 》首先从理论的角度描述了点法线的含义,接着给出了一个生成点法线的标准算法,最后基于标准算法进行了一些改进。

如果你不喜欢读长篇的理论来了解知识;如果你比较喜欢通过一个Demo来了解知识;如果你对点法线的生成比较感兴趣。那么本文就是为你而写的。

本文组织如下:首先给出生成点法线的步骤;接着给出一个三角网格模型格式;最后基于该网格模型格式,给出一个生成点法线的函数。

点法线生成步骤:

  1. 1 生成面法线
  2. 2 对顶点数据进行预处理,使得通过给定的顶点就可以索引到其所在的所有三角形
  3. 3 对于任意一个顶点,得到其所在的所有三角形。选定其中一个三角形作为该顶点技术上所属的三角形,然后缓存其对应的面法线。然后对于其他的三角形,计算其面法线与缓存的面法线的点积,如果点积大于某一个阈值,则该面法线将应用于求点法线。否则该面法线将作为在该三角形中,该点的点法线。
  4. 4 将求得的点法线标准化。然后将它与参与计算点法线的面线所在三角形的该点联系起来。

三角网格模型格式:

  1. 1 该三角网格模型存储在一个二进制文件中
  2. 2 该三角网格模型由多个三角形组成
  3. 3 每个三角形由12个浮点数组成。前三个浮点数表示该三角形的面法线。后九个浮点数分别表示该三角形的三个顶点。
  4. 4 各个三角形之间没有分隔符

那么该文件看起来像是这样:GLfloat GLfloat GLfloat …

点法线生成函数剖析:

 

面法线效果图 vs 点法线效果图:

facet vertex

其中左图是面法线效果图,右图是点法线效果图。看起来差距还是很明显的。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值