L-системи та процедурні рослини: від теорії граматик до 3D-дерев
У 1968 році біолог Арістід Ліндемаєр винайшов формалізм переписування рядків для моделювання росту водоростей. Той самий математичний апарат — нині відомий як L-система — лежить в основі процедурно згенерованих дерев у The Witcher 3, фрактальних папоротей раннього комп'ютерного мистецтва та складних моделей росту рослин, які використовуються в ботанічних дослідженнях сьогодні.
1. Переписування рядків: основна ідея
L-система (система Ліндемаєра) — це формальна граматика, що задається трьома компонентами:
- Алфавіт V: скінченна множина символів (наприклад, {F, +, −, [, ]})
- Аксіома ω: початковий рядок (наприклад, «F»)
- Правила продукції P: правила підстановки, що застосовуються одночасно до кожного символу поточного рядка
На кожному кроці генерації кожен символ у рядку одночасно замінюється на свою продукцію. Саме це паралельне переписування відрізняє L-системи від звичайних граматик (які переписують по одному символу за раз) і пояснює, чому вони так природно відтворюють самоподібний біологічний ріст.
Послідовність Фібоначчі природно виникає з двосимвольної L-системи, ілюструючи, як прості правила переписування породжують багату математичну структуру. Кількості розгалужень у філотаксисі рослин (спіральне укладання насіння в кошику соняшника, луски на сосновій шишці) підпорядковуються тій самій послідовності — L-системи дають механістичне пояснення, чому це так.
2. Інтерпретація через черепашачу графіку
Рядок символів — це лише текст, доки ми не надамо йому геометричного змісту. Черепашача графіка забезпечує таке відображення: уявіть черепашку з пером, що має позицію та напрямок. Символи керують рухом черепашки:
Символи дужок стека [ та ] — це те, що
уможливлює розгалуження: покладіть стан черепашки перед тим, як піти
вздовж гілки, потім зніміть його, щоб повернутися до точки розгалуження
й продовжити. Кожна розвилка рослини — це підрядок
[…].
3. Класичні приклади DOL-систем
DOL-система (детермінована, контекстно-вільна, з 0 попередників) — найпростіший клас: кожен символ має рівно одне правило переписування, і контекст не перевіряється. Більшість ілюстрацій фрактальних рослин використовують DOL-системи.
Сніжинка Коха
Крива дракона
Форма куща / дерева
Папороть Барнслі (через IFS — аналогічна за духом)
Папороть Барнслі генерується радше системою ітерованих функцій (IFS), ніж строгою L-системою, але втілює ту саму ідею самоподібної заміни. L-системний еквівалент використовує 4 правила для утворення структур листка, листочка та черешка в різних масштабах.
4. Стохастичні L-системи для природної варіації
Детерміновані L-системи дають геометрично досконалі, надто регулярні структури — дерева, наче відштамповані з форми. Справжні рослини мають варіацію: трохи різні кути гілок, нерівні довжини гілок, асиметричні крони. Стохастичні L-системи призначають імовірності конкуруючим правилам для одного й того самого символу:
Результати виглядають напрочуд біологічно. Кожен виклик генерації з іншим випадковим seed дає унікальне дерево, проте всі екземпляри мають однаковий загальний розмір, щільність розгалуження й характер — точно так, як дерева одного виду в лісі схожі одне на одне, не будучи ідентичними.
Для відтворюваного процедурного контенту в іграх випадковий seed зберігається для кожного об'єкта. За того самого seed та граматики завжди регенерується те саме дерево без зберігання повної геометрії — це суттєво заощаджує пам'ять для великих лісів.
5. Контекстно-залежні L-системи
У контекстно-залежній L-системі (IL-система або 2L-система) переписування символу може залежати від його сусідів у рядку. Це моделює міжклітинну сигналізацію — поширення інформації крізь біологічну структуру:
Контекстно-залежні правила дозволяють граматиці моделювати:
- Потік гормонів вздовж стебла (сигнал поширюється від верхівки вниз)
- Поглинання поживних речовин (виснаження ресурсу моделюється як значення, що проходить крізь рядок)
- Дорсивентральну диференціацію листка (клітини верхньої та нижньої поверхні реагують по-різному залежно від позиції)
Ці біологічно мотивовані моделі поєднують чисту математику та фізіологію рослин і були центральними для початкових дослідницьких цілей Ліндемаєра.
6. Параметричні L-системи
У параметричних L-системах кожен символ несе числові параметри, а правила продукції залежать від цих параметрів. Це уможливлює неперервні моделі росту рослин, де довжини й кути гілок змінюються з віком:
Це моделює апікальне домінування — верхівка гілки рослини росте енергійно, тоді як бічні гілки слабшають. Вторинна продукція могла б зменшувати параметр підпорядкованих гілок, природно утворюючи конічну форму крони ялин.
Книга Прусінкевича та Ліндемаєра 1990 року The Algorithmic Beauty of Plants (вільно доступна онлайн) каталогізує десятки параметричних L-систем, що відповідають виміряним ботанічним даним. Вона лишається визначальним довідником у цій галузі.
7. Генерація 3D-рослин
Розширення від 2D-черепашки до 3D вимагає відстеження повного 3D-репера орієнтації. Черепашка несе три ортогональні вектори: H (напрямок), L (ліворуч) та U (вгору). Команди обертання застосовують матриці обертання до цього репера:
Тропізм — згинання росту в бік стимулу або від нього — моделюється невеликою корекцією обертання, застосованою до кожного сегмента гілки. Важка гілка провисає під дією гравітації (негативний геотропізм: e × gravity_vector); черешок листка повертається до сонця (фототропізм).
Вивід геометрії та інстансинг
Для рендерингу в реальному часі сегменти черепашки малюються не як окремі лінійні примітиви, а групуються в меші:
-
Циліндри гілок: кожна команда
Fпороджує циліндр. Радіус звужується з глибиною:r(depth) = r_trunk × (2/3)^depth(трубкова модель — площа поперечного перерізу зберігається між гілками). -
Білборди листя: термінальні символи
Lвипромінюють квадратні білборди, повернені до камери, з текстурою листка. LOD зменшує кількість листя на відстані. - Інстансований рендеринг: великі ліси використовують GPU-інстансинг — рендеринг одного меша дерева N разів із різними матрицями трансформації, що зменшує кількість викликів відмалювання з N до 1.
- Рівень деталізації (LOD): ближні дерева використовують повну геометрію L-системи (5–6 поколінь). Далекі дерева переходять на імпостори (попередньо відрендерені спрайти, що переглядаються з 8 ракурсів).
8. Застосування в іграх та візуалізації
L-системи — основа процедурної генерації контенту (PCG) в іграх та програмах візуалізації:
- SpeedTree (Interactive Data Visualization): галузевий стандарт мідлвару, що використовувався в Ghost of Tsushima, The Last of Us Part II та багатьох інших. Застосовує параметричні правила у стилі L-систем у поєднанні з ручним налаштуванням художником та симуляцією вітру.
- Houdini (SideFX): його вузол «L-System» — це повноцінний геометричний оператор. Художники й технічні директори задають правила граматики у параметрах вузла й отримують оновлення 3D-геометрії в реальному часі. Використовується для лісових сцен у кіно-VFX.
- Blender (додаток «Sapling»): генерує скелети гілок з параметричних правил, потім застосовує модифікатори skin/subdivision для гладкої геометрії.
- Ботанічні дослідження: Віртуальна лабораторія (vlab) в Університеті Калгарі створює кількісні моделі рослин, що відповідають виміряним даним росту — використовуються для вивчення архітектури посівів та перехоплення світла кроною.
- Архітектура: процедурна генерація фасадів, розгалужені планування коридорів та органічні структурні форми використовують генерацію на основі граматик, аналогічну до L-систем.
Глибший урок L-систем полягає в тому, що складна, нібито спроєктована структура може виникати з дуже простих локальних правил, застосованих ітеративно. Це знаходить відгук далеко за межами ботаніки: схожі механізми формування візерунків з'являються у візерунках шкіри тварин (реакція-дифузія), мережах міських вулиць, річкових притоках та бронхіальних деревах легень — усі вони виявляють статистичну самоподібність, добре описувану варіантами того самого апарату переписування.