绘制光滑边缘立方体的最佳方法是什么? Bezier曲线,加载.3ds或其他?

时间:2010-11-22 22:33:12

标签: c++ opengl bezier

我需要使用OpenGL在C ++中制作一个具有平滑边角和光滑边缘的立方体。 据我所知,我有三种选择:Bezier曲线(也许,是否可能?),一个带有圆柱体的圆柱体和角落的球体,或者加载一个立方体的.3ds。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

pseduocode:

 mesh rounded_cube(int size, int edge_radius)
 {
     mesh result = sphere(edge_radius)
     vertex octants[] = result.verteces()
     for each v in octants
     {
         if (v.x != 0.0)
            v.x = size * ( v.x/abs(v.x) );
         if (v.y != 0.0)
            v.y = size * ( v.y/abs(v.y) );
         if (v.z != 0.0)
            v.z = size * ( v.z/abs(v.z) );
     }

     for i in result.vertices().size()
     {
         result.vertex[i] += octants[i]
     }

     return result;

 }

答案 1 :(得分:2)

您可以通过将法线直接从中心指向(模拟8角球)来模拟具有平滑光照的立方体。这完全取决于你究竟想做什么。使用上述方法可能非常好。

如果要定义具有弯角(立即关闭)的立方体,则必须细分立方体。事实上,如果你在角落周围强烈细分但忽略平面,你将获得良好的效果。

所有这一切都在考虑你如何细分边缘。考虑一下如何使其顺利进行,你肯定会想出一个很好的解决方案:)