|
|
最近在研究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] |
|