Лучший способ нарисовать куб с гладкими краями?Кривая Безье, загрузить .3ds или другое? - PullRequest
5 голосов
/ 23 ноября 2010

Мне нужно сделать куб с гладкими углами и гладкими краями в C ++ с OpenGL.Насколько я знаю, у меня есть три варианта: кривые Безье (возможно, возможно ли это?), Куб с цилиндрами для краев и сферы для углов или загрузка 0,3 куба.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 23 ноября 2010

псевдокод:

 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;

 }
2 голосов
/ 23 ноября 2010

Вы можете смоделировать куб с плавным освещением, направив нормали прямо из центра (имитируя 8-угольную сферу). Это полностью зависит от того, что именно вы пытаетесь сделать. Использование вышеуказанного метода может быть достаточно хорошим.

Если вы хотите определить куб с изогнутыми углами (близко), вам придется разделить куб. Фактически, если вы сильно поделите угол, но проигнорируете плоские грани, вы получите хороший эффект.

Все, что сводится к размышлению о том, как вы разбиваетесь по краям. Подумайте, как вы могли бы это сгладить, и вы, конечно же, придумаете отличное решение:)

...