Генеративные NFT-деревья, которые растут
Для Web3-игры я сделал деревья, которые растут в блокчейне. Каждая NFT получает 256-битный геном из Chainlink VRF, а мой декодер превращает его в характер дерева: длину и толщину веток, углы, провисание и изгиб, силу тяжести, густоту кроны. Дальше рекурсивный алгоритм рисует дерево в воксельной сетке, по кубикам, как в Minecraft, а трёхмерный simplex-шум задаёт форму кроны и изгибы веток. Каждый шаг роста, до десяти, — это транзакция, и у каждой ветки своё зерно, поэтому дерево именно растёт, а не перерисовывается: веточка с прошлого шага становится веткой и снова делится. В картинку попадает и мир вокруг: крона густеет или редеет вслед за ценой токена между шагами (из ценового фида Chainlink), цвет коры зависит от адреса владельца, небо меняется по часовому циклу дня и ночи, в листве горят фонарики, а у владельцев, которые только что проголосовали за проект, крона становилась золотой или розовой. Сначала картинки делал воксельный рейтрейсер, который предложила студия, приведённая моими партнёрами: я по договорённому протоколу отправлял им сетку, они ставили задачу в очередь, а я опрашивал результат. Но он умел рисовать только кубики, был платным, и я зависел от чужих серверов. Поэтому я перешёл на Blender: каждая модель экспортируется в GLTF и рендерится на сервере в Blender Cycles скриптом на Python, и теперь можно ставить любые объекты, площадки, камеры и свет — на зрелом движке с открытым кодом. Сервис метаданных отдаёт картинку каждого шага роста. Примерно месяц работы в октябре 2021 года, Polygon и BNB Chain. Рендеры ниже я сделал заново в 2026 году из исходного кода, в Blender 2.93 и с исходной сценой.
Видео
Видео
Картинки
Двенадцать случайных геномов, каждый на последнем шаге роста.