Как нарисовать ограниченную поверхность b-сплайна в OpenGL?

Я хочу нарисовать ограниченную поверхность b-сплайна с 26 граничными кривыми b-сплайна.

образ

Я могу нарисовать поверхность b-сплайна (без какой-либо границы) в OpenGL, но мне слишком сложно нарисовать поверхность и подогнать граничные кривые.

Любые предложения или идеи приветствуются.

https://drive.google.com/file/d/0ByjklWbi44oBZDhocGdNLWNvUWM/view?usp=sharing

PS: файлы являются образцом в формате.stp

1 ответ

Решение

Поверхности B-сплайна естественно ограничены. Поэтому, когда вы говорите, что поверхность B-сплайна не имеет границ, я думаю, что вы говорите о необрезанных поверхностях B-сплайна, и вы хотите рисовать обрезанные поверхности B-сплайна.

Рисование поверхности обычно включает тесселяцию, которая превращает непрерывную поверхность в треугольную сетку, состоящую из множества маленьких треугольников. Поэтому вам нужно будет сделать следующее:

  • Найти кривую параметров поверхности (кривая SP) граничных кривых. Кривая SP является двухмерной кривой, определенной в параметрической области поверхности B-сплайна.
  • Тесселяйте 2D-область в параметрической области, окруженной всеми SP-кривыми.
  • Отобразите 2D тесселяцию в параметрической области обратно в трехмерное пространство, чтобы найти трехмерную треугольную сетку.

Шаг 1 и шаг 2 оба нетривиальны. Так что, действительно, это будет большая задача, если у вас нет 3D-библиотеки в вашем распоряжении и вам нужно все реализовать самостоятельно.

Другие вопросы по тегам