Planet Python на русском
Подписаться
Майк К. Флетчер: Экструзии OpenGL (и Тесселяция)
Я выпустил новую библиотеку opengl_extrusions, которая представляет собой библиотеку на Numpy и Cython, выполняющую 3D-выдавливания (подобно библиотеке GLE) и тесселяцию (одна из функций библиотеки GLU). Мотивация заключается в том, что библиотека GLE ограничена контекстами совместимости (представьте себе "устаревший OpenGL"), поэтому она не работает в современных контекстах основного профиля. Библиотека имеет совершенно другой API по сравнению с GLE, но выполняет те же задачи и имеет набор тестов соответствия, который проверяет, что она создает те же конечные формы для заданного ввода, хотя и с (надеюсь, более чистым) API. С новым API вы получаете структуру, которая выглядит точно так же, как та, которую вы используете для создания объекта glTF: массивы точек и указатели на индексы.Тесселяция обрабатывается алгоритмом CDT, который не используется тесселятором GLU. GLU устарел на некоторых платформах (Mac), поэтому нам придется от него отказаться. Это лишь одна часть этого процесса, но она полезна. Главное преимущество CDT заключается в том, что он может избегать длинных и острых треугольников, которые склонны вызывать артефакты рендеринга.Библиотека полностью написана с помощью LLM, хотя я немного подправил документацию здесь и там.