Как нарисовать ограниченную поверхность 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-библиотеки в вашем распоряжении и вам нужно все реализовать самостоятельно.