- Закодить примитивный запаковщик который принимает на вход один из приложенных трех ply-файлов
- В каждом ply файле есть набор чартов-полигонов (т.е. кусочков геометрии лежащих на плоскости), они уже образуют корректный атлас, но это просто пример хорошего результата
- Предполагается что программа игнорирует глобальные координаты этих чартов и учитывает лишь форму каждого из них (т.е. можно считать что каждый полигон при считывании смещается своим центроидом в начало отсчета системы координат), иначе говоря - не предполагается использовать как подсказку взаимное расположение чартов во входном файле (т.к. оно "как есть" является уже хорошим ответом)
- На выход надо сгенерировать такой же файл, но чарты расположены так чтобы:
- никакие два чарта не пересекались (но могут касаться друг друга)
- квадратный bounding box описанный вокруг всех чартов был как можно меньшей площади (нормально что во входных примерах он будет еще меньше - там использовался достаточно сложный алгоритм)
- Посчитать размер полученного описанного bounding box и сравнить его с bounding box входного ply-файла
- Отправить мне получившиеся ply-файлы с результатами + размеры получившихся bounding box + получившийся код
- В решении ожидается достаточным грубая работа с каждым чартом - например заменив каждый из них на прямоугольный bounding box
- Каждый чарт можно поворачивать на 90 градусов, но это не требуется реализовывать
- Кроме решения нужно так же подумать (и/или найти в исходниках xatlas/thekla_atlas и понять в общих чертах) - как работать с чартами более аккуратно, учитывая их контуры (а не просто заменяя их на bounding box-ы)
- Если что - отвечу на любые вопросы
- Посмотреть на эти ply файлы можно в meshlab (правда она показывает чарты тривиальной триангуляцией - поэтому немного лажает с невыпуклыми фигурами)
Пояснение по поводу использованного формата ply файлов (наример тут 7 вершин, и два полигона - один из четырех вершин, друго из трех вершин):
Полезные ссылки:
https://github.com/jpcy/xatlas
https://github.com/Thekla/thekla_atlas
http://www.cs.tau.ac.il/~azar/2dpack.pdf
https://members.loria.fr/Bruno.Levy/papers/LSCM_SIGGRAPH_2002.pdf