Генератор UV координат.

Пишу генератор UV координат. Вот первые результаты разбиения сферы.

Исходное изображение.

Как располагаются фрагменты в стандартной раскладке.

Конечно результаты пока не ахти какие, и критерии когда нужно начинать новый кусок надо тюнить и тюнить, но работает однако!

Тема простая – нужна генерация UV координат. Нам нужно эффективно использовать текстурную память. Тут надо чтобы было поменьше кусков, чтобы куски в прямоугольник вписывались, чтобы треугольники в пределах одного куска примерно одинаковый размер текселя имели. Пока что более-менее выполняется только условие про размер текселя в треугольнике. Алгоритм разбиения мрачный (никому не пожелаю с нуля писать, действительно источник багов потенциальный).
Обычно первоначальное решение делают так – проецируют на плоскость модель, выделяют связные области,  а потом адаптивными алгоритмами пытаются размер текселя сделать примерно одинаковым по области. Я же пытаюсь “распрямить”  скомканные части модели. То есть потенциально если дать на вход скомканную плоскость то она на выходе выдаст идеальную картинку. И прямой угол в модели не помешает ей линейно раскладывать UV.

Потом расскажу как дальше будут продвигаться дела в этом неблагодарном нелёгком занятии.

  • CEMEH

    Тема генератора не раскрыта!

  • shodan

    Дзен-пост: ни хрена не понятно.

  • deemetrius

    В 3дМаксе есть такой способ:
    На объект накладывается стандартный пустой материал. Делается edges renderable. Потом render to texture. Получаем каркас развёртки. Поверх этого каркаса рисуем саму текстуру и накладываем обратно на объект.

    В посте имеется ввиду что-то типо того? (только в автоматическом режиме)

  • UFOnaut

    deemetrius: чтобы отрендерить каркас в текстуру – нужно иметь настроенные текстурные координаты (сделать unwrap).
    Здесь предлагается способ автоматической развёртки, и раскладывания кластеров на текстуре оптимальным образом.