Какой самый удобный способ получить кубики OpenGL с закругленными углами? - PullRequest
0 голосов
/ 12 сентября 2010

Всегда в контексте приложения кубика Рубика в Java / Opengl с lwjgl, я хочу улучшить свой рисунок (http://manuelselva.files.wordpress.com/2010/09/cube.gif), чтобы иметь закругленные края для каждого из 27 маленьких кубиков? Что бы я хотел хотел бы, чтобы в конце так же, как изображение куба Википедии: http://fr.wikipedia.org/wiki/Fichier:Rubik%27s_cube.svg

Какое самое простое решение для этого?

Ответы [ 3 ]

2 голосов
/ 12 сентября 2010

Возможно, проще всего нарисовать модель закругленного куба в одной из многочисленных программ трехмерного моделирования (например, Maya , Blender ) и загрузить 27 экземпляровмодель в вашем коде.Научиться использовать такую ​​программу, как одна из них, не тривиально, так что, хотя это общий подход, используемый в большинстве игр и тому подобное, для чего-то такого простого это может быть излишним - может потребоваться больше времени, чтобы понять, какчтобы выполнить что-нибудь в программе, чем то, что нужно сделать по-другому.

Очевидной альтернативой будет создание модели в вашем коде.Основная идея довольно проста, хотя собрать все это может быть несколько нетривиально.Вы начинаете с выбора радиуса, который хотите использовать для углов.Когда вы генерируете свои лица, вы оставляете достаточно пространства между ними, чтобы поместиться в квадрант круга с таким радиусом (т. Е. Каждая грань заканчивается на один радиус меньше, чем они пересекаются).Вы связываете их с набором вершинных координат / нормалей, которые следуют за квадрантом круга - в основном, пишите небольшой цикл, который генерирует несколько десятков точек (или около того) под равномерно расположенными углами.Угол в каждой точке будет нормальным, а синус / косинус даст координаты.В углах (в отличие от краев) вам нужно генерировать точки на сфере с одним квадрантом сферы на каждый угол.

0 голосов
/ 21 ноября 2010

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

0 голосов
/ 14 сентября 2010

Некоторое умное текстурирование и правильно созданная карта нормалей в большинстве случаев имитируют вид округления без редактирования модели.Окончательный рендеринг будет заштрихован, как если бы отдельные стороны были закруглены.

К сожалению, при таком подходе иллюзия разваливается, если смотреть на нее с края.

...