12Полевой атлас · метод

КАК ДЕЛАЕТСЯ ОБРАЗЕЦ.

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

tools/polygon-lab/facet.mjs
tools/polygon-lab/forge.mjs

01Происхождение · этюд

ОДИН ОБЩИЙ БРИФ. ТРИНАДЦАТЬ РАЗНЫХ ФОРМ.

Каждый этюд начинается с общего производственного брифа, напечатанного ниже, а затем получает отдельную постановку и анатомическую заметку для своего вида. Так коллекция говорит на одном языке сложенной бумаги, но не клонирует один силуэт тринадцать раз. Полный реестр промптов Nano Banana и выбранные PNG лежат рядом с посчитанными по ним сетками.

Форж — скрипт в том же репозитории, tools/polygon-lab/forge.mjs. Он запускается руками при добавлении образца и в сборку сайта не входит. Один и тот же этюд с тем же зерном воспроизводит ту же сетку байт в байт, поэтому новый образец приходит диффом, который можно прочитать глазами.

Общий бриф арт-дирекции

premium editorial low-poly folded-paper sculpture with crisp interlocking triangular facets, visible paper depth and small edge shadows; authentic species anatomy; saturated vermilion, orange, yellow, acid green, emerald, teal, cobalt, violet and magenta on a high-key neutral white seamless background; restrained grounding shadow only; complete subject fully inside a square composition with generous margin; no scenery, pedestal, frame, text, logo or watermark; collectible design-object quality

02Метод · конвейер

ОДИННАДЦАТЬ ШАГОВ ОТ ЭТЮДА ДО СЕТКИ.

Каждый шаг — функция в tools/polygon-lab/facet.mjs. Приведённые параметры — те, с которыми коллекция собрана на самом деле.

  1. 01

    Этюд читается

    sharp декодирует закоммиченный PNG и приводит его к 900 единицам по ширине. Все дальнейшие шаги работают в этом пиксельном пространстве, и оно же становится viewBox у SVG.

  2. 02

    Фон отрезается

    Маска по яркости оставляет каждый пиксель, чей самый тёмный канал ниже потолка: по умолчанию 244 из 255, для отдельного образца потолок ужимается в манифесте. На белой бумаге без падающей тени это одно сравнение и есть весь рез.

  3. 03

    Маска закрывается, потом открывается

    Дилатация, эрозия, эрозия, дилатация с радиусом в один пиксель. Закрытие первым заполняет проколы, которые оставляет сжатый этюд; открытие следом убирает крошку. В обратном порядке эрозия сводит лапу к нулю раньше, чем дилатация успевает её вернуть.

  4. 04

    Мелкие компоненты выбрасываются

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

  5. 05

    Обходится контур

    Каждый пиксель маски, у которого есть сосед-фон, — граничный. Их прореживают до одной точки на несколько пикселей и кладут в набор первыми, поэтому силуэт режется настоящими вершинами. Граница маски дополнительно вписывается в поле краёв на полную силу, что притягивает к очертанию и остальные точки.

  6. 06

    Внутренность засевается точками

    Точки бросаются внутри собственного ограничивающего прямоугольника маски, поэтому бюджет тратится там, где стоит образец. Поле краёв по Собелю решает судьбу кандидата: на ровном участке держится порог 0,035, на переломе он поднимается почти до единицы. В одну ячейку синего шума попадает одна точка, а размер ячейки считается от площади маски — cell = √(площадь маски / (точки · 1,15)) — и это не даёт граням слипаться. Генератор — mulberry32 с зерном из манифеста, поэтому розыгрыш повторяется в точности.

  7. 07

    Точки триангулируются

    Одна триангуляция Делоне по всему набору, контур и внутренность вместе, через Delaunator.

  8. 08

    Треугольники вне маски выбрасываются

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

  9. 09

    Грань получает цвет

    Усредняются четыре пробы: центроид и три точки на полпути от него к вершинам. Среднее садится на краски, назначенные образцу, — четыре из девяти красок логотипа на рыночной пластине и все девять на знаке студии, — где тон выбирает семейство, а светлота выбирает одну из трёх ступеней: затемнение к чернилам, сама краска, высветление к белому. Грань без выраженного тона садится на чернила или на бумагу. Форж сажает цвет на полную силу, поэтому каждая грань опубликованной сетки держит одно из этих плоских значений.

  10. 10

    Грани ранжируются вдоль оси

    Ковариация центроидов даёт главную ось образца, и ранг грани — её проекция на эту ось, записанная в полигон как --i. Развёртка идёт вдоль тела: от носа к хвосту у четвероногого, от клюва к лапам у голенастой птицы, и ручную ось не приходится держать в согласии с рисунком.

  11. 11

    SVG записывается

    Координаты округляются до целых единиц: viewBox — 900 в ширину, и десятая доля единицы это доля пикселя. Затем каждая вершина отодвигается на 0,45 единицы от центроида своей грани, соседи слегка перекрываются, и между ними не остаётся волоска бумаги. В полигоне лежат только ранг и заливка. Второй, более грубый проход на 26 процентах бюджета сливает одноцветные грани в один путь на краску — этот файл грузят ячейки сетки и марки по 64 пикселя.

03Метод · до и после

ЭТЮД И СЕТКА, КОТОРОЙ ОН СТАНОВИТСЯ.

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

Пластина 01Castor canadensis
Этюд
North American beaver — Этюд

Закоммиченный этюд, приведённый к 900 пикселям и сохранённый в WEBP.

Сетка
North American beaver — Сетка

Готовая сетка: один SVG из плоских треугольников, каждый со своим рангом вдоль оси.

North American beaver
Параметры форжа
Бюджет точек
470
Точек поставлено
470
Зерно
7
Маска
lum
Ширина расчёта
900 px
Семейства красок
teal · blue · purple · green
Граней
842
Граней в сеточной форме
356
Красок
13
Размер сетки
61 KB
Размер этюда
37 KB
Внесён
2026-09-03
04Метод · что сломалось первым

ДВЕ ОШИБКИ, ВОКРУГ КОТОРЫХ ПОСТРОЕН КОНВЕЙЕР.

Обе записаны в памятке по направлению, и обе объясняют, почему шаг выше выглядит именно так.

  1. 01

    Тяжёлая тень ломает рез

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

  2. 02

    Ячейка по кадру теряет лапы

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

05Метод · воспроизводимость

ПЕРЕСЧИТАНО И СВЕРЕНО.

node tools/polygon-lab/forge.mjs --check

Запуск форжа с --check пересобирает каждый образец из закоммиченного этюда и сверяет результат с реестром. Расхождение по числу граней, размеру файла или числу красок печатается как дрейф, и команда выходит с ненулевым кодом. Тот же прогон меряет каждую сетку по её потолкам — размер файла, число граней, размер этюда — и отказывается проходить, когда потолок превышен.

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

06Метод · лицензия

СЕТКИ ПОД CC BY 4.0.

Каждая сетка коллекции опубликована по лицензии Creative Commons Attribution 4.0 International. Их можно использовать, изменять и публиковать в коммерческих проектах; единственное условие — строка атрибуции едет вместе с файлом.

Строка атрибуции

Marketing MIX — field guide, plate 01, North American beaver. CC BY 4.0. https://mmix.biz/field-guide/plate-01-beaver/

Подставьте номер пластины, название и адрес того образца, который берёте.

Открыть текст лицензии

Следующий шаг

ГОТОВЫ СТАТЬ ВИДИМЫМИ ДЛЯ ЛЮДЕЙ И МАШИН?

Цены: аудит от 1 800 € · сопровождение от 2 400 € в месяц

Два варианта: 30-минутный звонок для определения задачи или бесплатный снимок видимости в основных AI-поисковиках.

Опишите цель · мы подтвердим полезный следующий шаг

Или свяжитесь со студией напрямую
+1 613 867 7767info@mmix.biz