image

В 1999 году Эрик Демейн (Erik Demaine), тогда еще 18-летний аспирант Университета Уотерлу в Канаде описал алгоритм, который мог бы определить, как свернуть лист бумаги в любую мыслимую трехмерную форму. Это была значимая веха в области вычислительных оригами, но алгоритм не мог создать схемы для складывания, которые можно было бы действительно применить на практике.

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

В 1999 году Демейн доказал, что можно сложить любой полиэдр, но способ, которым этого можно достичь, оказался не самым эффективным. Предложенный метод работает, если исходный лист бумаги длинный и узкий. Но если нужно работать, например, с квадратным листом, то алгоритм все равно будет сначала складывать бумагу до тонкой полосы, растрачивая весь материал почем зря.

Теперь профессор электротехники и информатики Массачусетского технологического института Эрик Демейн и его коллега Томохиро Тачи из Токийского университета готовы объявить о завершении квеста, который начался с работы 1999 года: в июле 2017 года на симпозиуме по вычислительной геометрии они представят алгоритм для создания оригами, который гарантирует минимально возможное количество швов. Демейн и Тачи также работают над внедрением алгоритма в новой версии Origamizer — бесплатного ПО для генерации рисунков с оригами. Первая версия была выпущена Тачи в 2008 году.

Алгоритм исследователей разрабатывает шаблоны сгибов для создания любого многогранника, то есть трехмерной поверхности, состоящей из многих плоскостей. Программное обеспечение для создания компьютерной графики моделирует трехмерные объекты как многогранники, состоящие из множества крошечных треугольников.



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

В этом случае граница чашки — ее обод — такая же, как граница развернутой окружности — ее внешний край. То же самое делал предыдущий алгоритм Демейна: чаша, которую он предлагал, складывалась из тонкой полоски бумаги, завернутой в катушку, и, вероятно, не смогла бы удерживать воду.

Математическое свойство, различающее оба метода, ученые называют «водонепроницаемостью». Так новый алгоритм сохраняет границу оригинального листа бумаги на границе поверхности, которую пользователь пытается сделать. Закрытая поверхность, такая как сфера, не имеет границы, поэтому оригами потребует шва, где встретятся эти границы. Мы не можем получить полностью замкнутую поверхность, но можем выбрать, где поставить границу.


Складывание поверхности по предыдущему алгоритму Демейна (слева) и «водонепроницаемому» (справа). Граница листа обозначена толстой линией.

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


Схема Orgamizer для складывания кролика

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

Диаграмма Вороного, названная в честь российского ученого XIX века Геория Вороного, описывается как место, где установлены огни, так и границы, с которыми встречаются прилегающие огни. В алгоритме Демейна и Тачи границы диаграммы Вороного определяют места сгиба бумаги.

Работа ученых получила весьма благосклонные отзывы от других экспертов в этой области. Роберт Ланг (Robert Lang), один из пионеров вычислительных оригами и член Американского математического общества, который в 2001 году отказался от успешной карьеры в области оптической техники чтобы стать полноправным оригамистом, отметил, что это очень впечатляющий материал.

Ланг считает, что ученым удалось удачно завершить долгий путь по созданию вычислительного метода для эффективного сгибания листа бумаги любой заданной формы, который начался 20 лет назад. По пути некоторым исследователям удавалось продемонстрировать несколько вариантов решения проблемы, которые нельзя было назвать универсальными. Были разработаны алгоритмы складывания бумаги любой формы, которые оказались не очень эффективными, а также алгоритм складывания древовидных форм, но не поверхностей. По его мнению, алгоритм Демейна и Точи довольно сложен, но это связано в большей степени с тем, что он является и всеобъемлющим.

doi: 10.4230/LIPIcs.SoCG.2017.34
Поделиться с друзьями
-->

Комментарии (12)


  1. GeMir
    24.06.2017 11:35
    +1

    Интересующимся тематикой стоит посмотреть: Robert Lang — «The math and magic of origami».


  1. Slavik_Kenny
    24.06.2017 16:36
    +3

    Мне кажется, или побочный эффект применения алгоритма — генерация текстурных разверток для 3д моделей которая лучше, чем любой из существующих пакетов может предоставить?


    1. mwizard
      24.06.2017 20:22
      +1

      Именно! Причем автоматическая, судя по всему!


    1. 6opoDuJIo
      24.06.2017 23:58
      +2

      Это не побочный эффект алгоритма «оригамирования» — это и есть авторазвёртка. Но для автоматической генерации развёрток этот алгоритм все-равно не подойдёт — для удобства рисования и рационализации использования места в UV-пространстве на модели делается несколько замкнутых швов, не считая того, что на UV-пространстве некоторые участки могут быть в совершенно другом масштабе или перекрывать друг друга. От ручной работы вы тут никуда не денетесь. Да и рисовать по тому, во что превратился кролик, должно быть сплошным мучением, так что не пытайтесь дать такую развёртку художнику — он вас побьёт.


      1. Slavik_Kenny
        25.06.2017 06:22

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


        1. 6opoDuJIo
          25.06.2017 21:55

          На развёртке кролика куча пустого места — если я такую развёртку дам художнику, он меня побьёт ржавыми трубами.


        1. makufulai
          26.06.2017 20:19
          +1

          >только лучшая по сравнению с другими автоматическими
          И тут тоже мимо. Если обратите внимание на самое последнее изображение развертки, то что справа от кролика, то увидите розовые (фиолетовые?) линии. Это дополнительные линии, которые алгоритм добавляет для создания оригами. В 3д же, такой возможности нет, там работают только с теми гранями, которые имеет модель, не больше и не меньше.

          Как 3дшник скажу, что развертки не являются проблемой, инструментов хороших написано много. Сложнее текстуры по ним рисовать.


          1. Slavik_Kenny
            27.06.2017 14:39

            И тут тоже мимо… развертки не являются проблемой, инструментов хороших написано много.

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

            Так что дополнительные лини это меньшее зло, чем пазл из миллиона разрозненных полигонов :)
            Темболее мне кажется, что стянуть в ноль эти розовые/фиолетовые линии теоретически вполне возможно, и получить всю текстуру единым куском…


            1. makufulai
              27.06.2017 14:53

              Буду благодарен, если огласите хотябы парочку, которые хорошие развертки текстур умеют делать в автоматическом режиме.
              Если бы они существовали)
              На 100% ничего автоматического с кнопкой вида «сделайте мне развертку» я не знаю.
              Точнее знаю, но результат меня никогда не устраивал. Например Unwrella.
              Границы моей безответственности заканчиваются максом с XRayUnwrap, TexTools, PolyBoost (да я ретроград) и прочей мелочевкой. Хочешь сделать хорошо, сделай это сам.
              Так что дополнительные лини это меньшее зло, чем пазл из миллиона разрозненных полигонов :)
              А вот тут я не понял фразу. Представленный в статье алгоритм, если его применить к 3д, именно что и может делать «пазл из миллиона разрозненных полигонов». Потому что для объекта, который представляет из себя треугольник, развертка тоже будет представлять треугольник. Никаких «дополнительных линий» там быть не может по определению.


              1. Slavik_Kenny
                27.06.2017 15:32

                Здесь полигоны не настолько разрозненны, они все расположены рядом с теми, с которыми и на модели соседствуют (за исключением краев развертки конечно). А если алгоритм покрутить в сторону именно развертки, то все эти промежуточные линии сгибов прекрасно можно свети к нулевой длине, и в результате будет максимально эффективно использоваться площадь битмапа. Все имеющиеся на данный момент автоматические инструменты делают если не кучу, то много разрозненных кусков, один из значительных недостатков чего и является куча неиспользуемого места на текстуре…

                Хочешь сделать хорошо, сделай это сам.

                Не хочу сам и хорошо мне не особо требуется, мне надо автоматически, чем адекватней, тем лучше :)
                И данная развертка мне показалась более адекватна чем многие другие, тем более, повторюсь, если алгоритм для этого дела заточить специально. Ну или подкрутить его параметры… например задать размер листа на порядок больше — размеры этих линий линий сгибов станут весьма незначительными…


  1. kengur8
    26.06.2017 20:19

    если я правильно понял, то все что этот алгоритм делает это «заворачивает» под поверхность модели все лишние поверхности развертки? и при этом с реальностью не дружит, потому что не учитывает плотность листа на сгибах.


    1. Am0ralist
      04.07.2017 17:03

      Плотность какого именно листа?
      Бумага бывает сильно разной и много схем оригами практически невозможно собрать из обычной бумаги, а вот из специальных получаются красивые ажурные фигурки (пример — насекомые с тонкими лапками).