游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1921|回复: 5

高手进来看看啊,渐进网格的问题:(

[复制链接]

12

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
发表于 2009-5-31 00:13:00 | 显示全部楼层 |阅读模式
  最近在研究ProgressiveMesh,其算法的核心是个求塌陷边的Cost的公式(详见:http://dev.gameres.com/Program/Visual/3D/PolygonReduction.htm),然后我在网上下了相关的Sample程序(见附件),
经过研究发现它在求每条边的cost值时是:

1.求出共享顶点u(程序中的变量名)的面列表faces,再求出共享边uv的面列表sides
2.对于faces中的每一个面,用它的法线先和sides的每一个面的法线点乘,求出一个所谓的曲率,在这些曲率中取个最小值
3.再求出所有的最小曲率值中的最大值和边长相乘得到顶点u的(边uv)的塌陷cost。

  对于上面的第二部中,为什么要取最小值始终不太明白,我试过把示例中的min改成了max,发现效果并没有明显的变化,只是在塌陷到多边形比较少的时候有点区别~.对于外循环中的max我认为是出于保守的考虑,取了cost最大的值,这点好理解,但内循环中我认为也应该是max才对啊?后来发现Ogre:rogressiveMesh的代码居然基本和示例中的一样~~

不知道这里有没有研究过这个程序或相关技术的高手,帮帮小弟看看这个问题,多谢了! [em4]

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2009-5-31 10:55:00 | 显示全部楼层

Re:高手进来看看啊,渐进网格的问题:(

是应该是min。你考虑一下那个文章里的立方体图里的A->C的那个情况,如果是max的话,它的cost就会很大,而是min的话就是0。曲率是在线上定义的,曲面上可以有多种曲率取法,比如用最大值、最小值、平均值等。这里用的曲率不是最大值,而是相对于边uv两边的三角面的,各有各的值。

12

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
 楼主| 发表于 2009-5-31 19:51:00 | 显示全部楼层

Re: 高手进来看看啊,渐进网格的问题:(

先谢谢qrli朋友的帮忙了!
我去按你说的看看,有什么问题再交流啊:) [em1]

12

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
 楼主| 发表于 2009-5-31 23:38:00 | 显示全部楼层

Re:高手进来看看啊,渐进网格的问题:(

  我已看了一下立方体图里的A->C的那个情况,的确是应该用min,但是还是不太明白为什么要用min,或者内循环的步骤用一句通俗的话应该怎样表达?还有“曲率是在线上定义的”这句话不是很理解~~,我个人认为用faces中的每一个面和sides中的面点乘是为了找出faces中的这个面和sides中的所有面有多大的误差,也就是最终的模型和原始模型在sides和这个面附近的区别程度,既然是误差我认为应该是取比较大的误差才对啊~~,不知道qrli兄是怎么理解的?

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2009-6-1 13:54:00 | 显示全部楼层

Re:高手进来看看啊,渐进网格的问题:(

对曲面上一点,在不同的方向上可以求得不同的曲率,也就是值不唯一。例如圆筒面上任一点的曲率,在轴方向为0,在弯曲方向为1/r。

对于误差,这里不是要找出“faces中的每一个面和sides中的面点乘是为了找出faces中的这个面和sides中的所有面有多大的误差”,而是要估计“塌陷该边后会造成多大的误差”。注意体会,两者是不等同的。A->C就是证明两者不同的一个例子。

12

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
 楼主| 发表于 2009-6-1 23:37:00 | 显示全部楼层

Re:高手进来看看啊,渐进网格的问题:(

哦,现在的确有些明白了,这里是有点微妙的区别,我再体会体会去,呵呵~~
这里再次感谢qrli不厌其烦的支持,谢谢啊!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 04:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表