查看: 1548|回复: 11

如何使几何体更加光滑

[复制链接]

该用户从未签到

发表于 2014-12-4 10:51:31 | 显示全部楼层 |阅读模式
本帖最后由 rubby 于 2015-1-15 21:59 编辑

各位大哥好:

小弟我用MFC+osg,
将若干个小圆柱面堆砌成一个大的圆柱面,见图1

可是发现两个小圆柱面连接处尤其不光滑,看起来很多毛刺.
其它三维软件绘制的效果,则是很光滑,见图2
请问,osg中如何设置参数,才能也光滑呢?

是不是需要用Multisample 或者抗锯齿等技术?请各位帮忙提示一下。
如有代码更好,感激涕零。

图1.png

图2

图2

该用户从未签到

 楼主| 发表于 2014-12-7 12:08:16 | 显示全部楼层
网页 https://www.opengl.org/sdk/docs/man/html/glSampleCoverage.xhtml
中有关于Multisample  方法,小弟先试试。

哪位高人指点下,感激感激。

该用户从未签到

发表于 2014-12-10 15:44:05 | 显示全部楼层
哥们你这个事怎么绘制的呢,我也想绘制这样的图形,求大哥给思路,小弟感谢

该用户从未签到

 楼主| 发表于 2014-12-16 13:10:30 | 显示全部楼层
louis 发表于 2014-12-10 15:44
哥们你这个事怎么绘制的呢,我也想绘制这样的图形,求大哥给思路,小弟感谢

使用小圆柱面。一个一个堆积而成。

该用户从未签到

发表于 2014-12-29 12:21:59 | 显示全部楼层
rubby 发表于 2014-12-16 13:10
使用小圆柱面。一个一个堆积而成。

哥们问题解决了吗

该用户从未签到

 楼主| 发表于 2015-1-6 14:27:10 | 显示全部楼层
louis 发表于 2014-12-29 12:21
哥们问题解决了吗

没有,还是较粗糙。不够光滑。暂时没有好idea

该用户从未签到

发表于 2015-1-6 14:47:45 | 显示全部楼层
几何体使用点法向构造,重新计算小圆柱连接面处点的法向。

该用户从未签到

 楼主| 发表于 2015-1-15 22:03:49 | 显示全部楼层
smash 发表于 2015-1-6 14:47
几何体使用点法向构造,重新计算小圆柱连接面处点的法向。

多谢smash大哥,

我的每一个小圆柱面是用多个四边形拼接而成的。
法线是自动生成的。
  1. osgUtil::SmoothingVisitor smv;                //法线自动生成工具
  2.                 smv.smooth(*geom);
复制代码


这样是不是就已经计算好了法线。

我应该怎么改呢?麻烦您能再给点提示。感激不尽。

该用户从未签到

发表于 2015-1-15 23:30:59 | 显示全部楼层
用SmoothingVisitor有点作用,但不如自己计算的。你这个计算很简单,就是找到这个顶点相邻的几个面,把各个面的法向取个平均值,作为这个顶点的法向就行了。

该用户从未签到

 楼主| 发表于 2015-1-19 08:55:26 | 显示全部楼层
smash 发表于 2015-1-15 23:30
用SmoothingVisitor有点作用,但不如自己计算的。你这个计算很简单,就是找到这个顶点相邻的几个面,把各个 ...

多谢smash大哥,终于明白原因了,我按照您说的提示,再做做。thanks.

该用户从未签到

 楼主| 发表于 2015-6-4 10:51:49 | 显示全部楼层
smash 发表于 2015-1-6 14:47
几何体使用点法向构造,重新计算小圆柱连接面处点的法向。

经过查证,确实如此。
需要自己重新设置顶点法线才能够使之光滑。

我尚未成功,但原因是如此。
目前打算采用的方法是:
先smooth(geom)自动生成顶点法向量,
然后在重新计算顶点法向量,求平均值。

该用户从未签到

 楼主| 发表于 2015-6-4 10:54:37 | 显示全部楼层
本帖最后由 rubby 于 2015-6-4 10:55 编辑

半年之后终于找到相关信息,从别的地方找到的。
如果有兄弟遇到这个问题,可以如下解决:

我一般计算顶点法线都如下思路

外层一个for循环遍历顶点索引,然后内层一个for循环遍历三角形索引,凡是发现索引中的三个点包含外层的顶点的话,就将这个索引的三角形面法线加到一个零时的变量中,内层遍历完成后将那个零时变量除以包含这个顶点的索引个数,然后就OK了

至于面法线这个应该会算吧,就是三角形索引的三个点拿来叉乘
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表