Триангуляция гладких математических поверхностей
От: ЫфВ Россия  
Дата: 12.11.06 14:45
Оценка:
Может, кто-нибудь сталкивался с задачей триангуляции гладкой математической поверхности, заданной бета-сплайнами (или NURBS)? Требование к триангуляции — размеры треугольников должны варьироваться, в зависимости от кривизны поверхности на участке. То есть, в пологих местах большие треугольники, на изгибах — маленькие.
Эта возможность заявлена в OpenGL Optimizer от Silicon Graphics. Но это не Open Source =(.
Какие-то готовые решения явно есть, но только вот найти их никак не удается.
Пока что мы рекурсивно бьем поверхность на прямоугольные области, пока максимальная кривизна в этой области не станет меньше некоторой заданной величины. Максимальная кривизна в области выбирается из всех кривизн точек, взятых на этом участке с каким-то шагом (довольно примитивный способ =) ). Таким образом, получается набор прямоугольных областей, вершины которых — вершины будущих треугольников-полигонов.
Способ, скажем так, не очень красивый. Один из главных недостатков — то, что при разбиении прямоугольными областями возникает избыточность (слишком много треугольников).
Интересуют более "технологичные" методы определения максимальной кривизны на участке поверхности, ну или готовый алгоритм.
Re: Триангуляция гладких математических поверхностей
От: ЫфВ Россия  
Дата: 16.11.06 10:13
Оценка:
Пока что создаем сетку вышеописанным способом, а затем применяем QEM алгоритм упрощения полигнальной сетки. Все еще ожидаются умные предложения =)
Re[2]: Триангуляция гладких математических поверхностей
От: goto Россия  
Дата: 17.11.06 02:02
Оценка:
Здравствуйте, ЫфВ, Вы писали:

ЫфВ>Пока что создаем сетку вышеописанным способом, а затем применяем QEM алгоритм упрощения полигнальной сетки. Все еще ожидаются умные предложения =)


Я, к сожалению, не могу прямо ответить на ваш вопрос. Я не эксперт в триангуляции, но думаю, что ваш метод не оптимален. Почему "средняя кривизна"? Видимо нужны экстремумы. У вас же не поверхность 9-го порядка, надеюсь?

С nurbs в комп. графике, например, люди массово работают лет 15, я так думаю.

1. Гуглится кое-что по "nurbs tesselation algorith", например, (subdivision, triangulation). Можно поискать вокруг.
2. Есть опенсорсный 3d-моделер Блендер (blender.org), умеющий nurbs. На sourceforge есть вещи для работы с nurbs и subdiv'ами. Можно поискать опенсорсные nurbs-софты/библиотеки.
3. Ранее были дорогие и немногочисленные библиотеки для работы с nurbs. Сейчас наверняка есть доступные. Это уже в играх используется.
4. что-то есть в OpenGL 1.3.
5. Поищите исходники здесь & здесь.

Может быть ошибаюсь (с nurbs имел дело давно), но не исключено, что вы изобретаете велосипед
Re[3]: Триангуляция гладких математических поверхностей
От: ЫфВ Россия  
Дата: 17.11.06 13:37
Оценка:
Здравствуйте, goto, Вы писали:

G>Я, к сожалению, не могу прямо ответить на ваш вопрос. Я не эксперт в триангуляции, но думаю, что ваш метод не оптимален. Почему "средняя кривизна"? Видимо нужны экстремумы.


Да я и не говорил, что средняя. Масимальная.
Re[4]: Триангуляция гладких математических поверхностей
От: goto Россия  
Дата: 17.11.06 14:17
Оценка:
Здравствуйте, ЫфВ, Вы писали:

ЫфВ>Здравствуйте, goto, Вы писали:


G>>Я, к сожалению, не могу прямо ответить на ваш вопрос. Я не эксперт в триангуляции, но думаю, что ваш метод не оптимален. Почему "средняя кривизна"? Видимо нужны экстремумы.


ЫфВ>Да я и не говорил, что средняя. Масимальная.


Пардон,
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.