2015-09-23 5 views
0

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

image

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

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

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

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

ответ

0

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

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

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

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

+0

Спасибо за ваш ответ ~~, это очень помогает мне. Кстати, у вас есть рекомендованная библиотека 3D? Я надеюсь, что библиотека с открытым исходным кодом и на C++, я рад проследить исходный код. –

+0

Извините. Я не знаком с 3D-библиотеками с открытым исходным кодом. – fang

+0

Довольно старый вопрос, но я бы предложил вам взглянуть на OPENCASCADE (www.opencascade.com) - он мощный и широко используется в промышленности. Если вы хотите начать быстро, то вы можете проверить, что это привязки python: http://www.pythonocc.org/ Кстати, он поддерживает файлы STEP. – Fernando