我需要使用OpenGL在C ++中制作一个具有平滑边角和光滑边缘的立方体。 据我所知,我有三种选择:Bezier曲线(也许,是否可能?),一个带有圆柱体的圆柱体和角落的球体,或者加载一个立方体的.3ds。
有什么想法吗?
答案 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角球)来模拟具有平滑光照的立方体。这完全取决于你究竟想做什么。使用上述方法可能非常好。
如果要定义具有弯角(立即关闭)的立方体,则必须细分立方体。事实上,如果你在角落周围强烈细分但忽略平面,你将获得良好的效果。
所有这一切都在考虑你如何细分边缘。考虑一下如何使其顺利进行,你肯定会想出一个很好的解决方案:)