标题:OPENGL画3D管线遇到的问题
只看楼主
xiaoxun
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-7
 问题点数:0 回复次数:7 
OPENGL画3D管线遇到的问题
我用4边形逼近3D管线,管线的外型没问题,但是在加光照的时候,四边形之间相交的部分颜色会比较明显,总是看得出一条一条的交线,该怎么样让表面变得更平滑呢?我计算顶点法线的方法是该顶点所在的所有平面的法线的平均值,或者用该顶点的坐标减去该顶点所在圆的圆心的坐标,再单位化做为顶点法线。两个方法我都试过,效果一样,实际上两种方法算出来的法线是差不多一样的。
搜索更多相关主题的帖子: OPENGL 管线 
2008-10-07 15:28
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
得分:0 
你所说的效果是不是像地板砖一样,地板砖之间的连接处很明显,很容易分别出一块块地板砖?
如果是这样,请先检查你用来画边框的线,他的颜色是否与四边形中填充的颜色相同(设置成透明的也可)?是否设置了遮盖效果(就是被挡住的部分不必画,交线会被画两次,它重叠了),透明度设置是否正确?还有,画边框的线是否设置了成最细的。这在一定程度上可以改进画面的效果。但这种方法也是治标不治本。
该问题的根源在于交线处光线变化太明显,与其相关的两个平面的法线是不变的,但在交线处有了突变(当然如果这两个四边型在同一个平面上就不会有问题,如果有问题那就是我上面说的那些参数没设好,这可以用来检查你的参数设置),因此光照不是均匀变化,突变之处当然效果明显。解决这个问题的根本办法就是让光照的变化变成均匀变化,方法有如下两种:
1.单位面积上用更多的四边形模拟,即增加四边形的个数,减小四边行的大小,这样可以使过渡更加平滑。缺点是运算量增大。
2.对于管线,我们可以这么想,我们截取一小段,可以近似的把它看成是一个圆柱,而不去管这个圆柱是由哪几个四边形组成的,那么我们很容易得到圆柱侧面的任意一点的顶点法线,我们就用这个圆柱的光照参数(他是渐变的,就看你分成几个等分去算,分的越多,效果越好)去替代原来的光照参数,(就是图行照旧,但光照重新算,不与画出的图形相关。就像画好了图形但不给光照,但用一个有光照的透明圆柱体把它给罩起来。)至于这个圆柱取多高,应根据具体情况定。如果你用16个四变形模拟逼近一个圆柱,那么算光照时,至少要将圆柱分成16等分来算,否则效果变化不大,一般情况下要大一倍,即分成32分来算。

我更加倾向于第一种方法,它有更好的图形效果,用你的程序也更好实现一些。第二种方法是在不增加四边行的情况下改善光照效果。第一种方法是图形光照一起改,第二种只改善光照。也可以2种方法同时用。

我的征途是星辰大海
2008-10-07 17:43
xiaoxun
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-7
得分:0 
感谢,可否加一下我的QQ,我可以把效果图和代码发给你
2008-10-08 17:05
xiaoxun
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-7
得分:0 
68839078
2008-10-08 17:06
xiaoxun
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-7
得分:0 
画边框的线是否设置了成最细的???我用的是填充模式画的,也跟画边框的线有关系吗?
2008-10-08 17:13
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
得分:0 
[bo][un]xiaoxun[/un] 在 2008-10-8 17:13 的发言:[/bo]

画边框的线是否设置了成最细的???我用的是填充模式画的,也跟画边框的线有关系吗?

有关系,系统默认的好像是用第3细的线画边框,在画之前自己设定就可以用最细的线画。

我的征途是星辰大海
2008-10-13 18:23
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
得分:0 
我现在在网吧上网,这里没有编译器。。。。。

我的征途是星辰大海
2008-10-13 18:55
高坛阔论
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-11 15:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-236793-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.181304 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved