L-система. Создание деревьев. (Python)
HTML-код
- Опубликовано: 24 окт 2020
- В этом ролике пишу код (Python) для генерации деревьев, на основе L-системы.
Также разбор одной из книг про L-системы.
Можно поиграть в браузере:
repl.it/@foo52ru/greenLeafs
repl.it/@foo52ru/notLeafs
Архив:
yadi.sk/d/IDW64UW8QYF9oA
Книги:
yadi.sk/d/_hDV-ndgv78g5A
Выражаю благодарность тем, кто поддерживает меня финансами.
Реквизиты для финансовой поддержки можно найти в
/ foo52ru Наука
Осталось теперь добавить эволюцию этих деревьев)
да, да )) так через 10 лет свою вселенную вырастим )
было бы еще прикольно сделать несколько биомов, чтобы в каждой из них были свои климатические условия и наблюдать в какую сторону развиваются растения в каждом биоме :)
Aishuak Sovetov очень интересная идея
@@aishuaksovetov думаю, также можно добавить времена года, которые бы (несильно, но ощутимо) меняли бы условия в биомах. Также можно сделать так, чтобы помимо обычных биомов были бы переходные, которые имеют смешанные черты своих соседей (как основные и переходные климатические пояса).
@@aishuaksovetov на одной карте сразу несколько, или просто как тогда при моделировании эволюции менять условия в которых находится растение при развитии?
Да уж! Красивые вы вырастили "цифровые деревья")))
Осталось воспитать цифрового сына(нейросеть)
Математика как искусство! Спасибо, что показал эту красоту и объяснил простым языком👍 Твердые 🌿🌿🌿🌿🌿 с плюсом из пяти.
Очень крутые видео про L-системы, тк если заглянуть в книжку - там не всё так просто и понятно)
Спасибо, ждём ещё
А книжки пишут для ботанов...
@@user-cn1vl6ol1j местами да)
Магия программирования. Красиво получилось, спасибо)
Любой программист ответит: магии не существует
Вся магия и красота появляется после введения случайных чисел
@@user-eh6tf9cn3m ха, не соглашусь. При компиляции происходит та ещё магия, запуск - ошибка, повторный запуск - компилировано...
Магия в авторе.
Как найти коды для того чтоб построить дерево который под конец видео?
Приятного просмотра всем!
Всего 70, а какая красота. И танцующий цветок прикольный, хочу себе такой на рабочий стол.
это 70 питоновских. а сколько там кода внутри библиотек!
@@DiamondSane а сколько кода в самом питоне... может и проводки компьютера считать, и силу китайцев которые его собрали?!
@@maximkorpusov да, посчитайте, если можно.
8:43 эти звуки и растения... мне вспомнилась игра Age of Empires, те миссии которые были в цивилизации Майа.
Опа-на!!)) Ждем альбом))
Спасибо за труды. Ролики становятся всё лучше и лучше.
13:55 самый офигенный момент)
Мне рекламу выдало 👍
Это потрясающе! Здоровья автору и продолжения работ - это очень крутая штука и в будущем пригодится для расчета биом в играх-симуляциях. Невероятно важная, хоть и неочевидная работа!
Интереснейшая работа!
С нетерпением ждём новых видео.
Контент становится более красочным, захватывающим, а главное - наукоёмким!
9:48 блин, сначала подумал там написано "арех" по русски (типа "орех" с ошибкой) xD
Просто охренительно интересно!!!! Пожалуйста продолжай!!! Очень сложно для моего уровня знаний, но оооочень интересно все что ты делаешь!!! Ты вдохновил заняться изучением и программирования и нейросетей!!
Приятные деревья получились! А за танцующий куст отдельно спасибо - засмеялся в голос!
Ооо! Наконец-то! Отличное завершение выходных)
Ещё не успел посмотреть видео а я уже лайк поставил )
Очень здорово у Вас получается. И рассказываете доходчиво. Жду с нетерпением следующих выпусков.
Круто жду продолжения, надеюсь скоро
Смотрю и улыбаюсь. Приятные и полезные видео! А ещё эта песенка в конце... оппа на))
Крайней приятно видеть, как повышабтся качество и сложность каждого нового видео
Нууу, ещё немного и можно создать автономный процедурно генерируемый мир )
Ага, получается генерация деревьев есть, пещеры можно генерировать через игру "жизнь", ещё надо генератор карты биомов
Танцующий под "Оппа-на!"
Ждём алгоритм генерации большого взрыва с последующей эволюцией.
@@itTchin идея достойная реализации
Спасибо за этот прекрасный урок!
Ля, круто! Интересно, как запилить аналогичную штуку в 3D...
//Тусовый куст вообще огонь!😂
Во многих продуктах л системы есть, в том же гудини.
Господи какой же годный контент
Крутые звуковые эффекты! Особенно в начале.
Очень круто, красиво и интересно!!!!
Балдееееееж, очень крутые получаются деревья 👍🏽🔥
Блин, походу автор канала какой-то учитель математики. Мало того что сам всё понимает, так ещё и другим всё понятным языком объясняет. Респект)
Большое спасибо за видео! Было очень интересно, насколько я знаю фракталы часто используют для рендеринга локаций в играх: деревья, горы, ...
Хотелось бы увидеть бы еще такого :)
Спасибо большое за труд!
С каждым видео всё качественнее и качественнее. Продолжай в том же духе!
Конец особенно крут
Лайк за танцующий цветок со спецэффектами!
Спасибо, очень ждём эволюцию фрактальных деревьев.
Красота какая ну ты солнце
Спасибо за урок)
Вау, мега мощный материал!🔥🔥🔥
Спасибо за отличное видео.
2:25 есть такая задачка - турист шёл по лесной тропинке, остановился отдохнуть, снял кепку и повесил на сучок молодого деревца. Позанимался какими-то своими делами, пошёл дальше, кепку забыл. N лет спустя, проходя по тому же лесу, вспомнил про кепку и стал искать то дерево. На какую высоту поднялась кепка и сможет ли он её достать? Правильный ответ - кепка осталась на той же высоте. Вообще, деревья растут иначе, чем в этом фрагменте видео. Сначала растёт прутик, дорастает до определённой высоты, начинается ветвление. Веточки тоже растут аналогично. Старые маленькие веточки обычно не вырастают огромными, они стареют, усыхают и обламываются. В отличие от них, основные ростовые стволы гораздо более долговечны и, подозреваю, это связано с углом наклона побега. Чем вертикальнее, тем, можно предположить, долговечность больше. Но не факт, что для всех деревьев это одинаково. И, наверно, в компьютерной модели это будет очень сложно воспроизвести.
Охренеть, взрыв мозга, автор, вы гений!
Реально тот случай, когда нчего не понял, но очень интересно, и удивительно, что в данном слчае это не шутка
Что правда - то правда
Никто не запрещает разобраться)
Спасибо. Интересно
Вот он, один из авторов Матрицы)
Красота за окном!
Опана! Тема мне сильно менее интересна нежели предшествующе, но качество подачи заставило с удовольствием посмотреть весь ролик. Приятно наблюдать не только за ростом деревьев, но и за ростом автора материалов. Такие скучные вещи так увлекательно подать - это мастерство!
Обожаю тебя смотреть
Очень круто!
Тут напрашивается зависимость скорости роста + вероятность отмереть у веток, в зависимости от освещенности (или просто количества соседей), ибо почти все деревья по центру неестесственно гуще чем по краям.
Супер! Наблюдал за реальными деревьями. Более 10 итераций (колен) не видел (рассматривал тополь, клен, ясень, осину, дуб)
Эти системы используются в аллометрии - изучении относительного роста различных организмов или частей организма (изменение пропорция с ростом организма). Это называют гетерохронией развития.
G.T.Herman, G.Rozenberg - Developmental systems and languages, 1975, страницы 1-40.
Почитай про гетерогонию. Блин, слово такое, постоянно забываю его. Законы аллометрического роста сформулировал Гексли (Huxley J. - Problems of relative growth. London, 1932).
Можно, в принципе, пользоваться и термином гетерохронии. Я почему вспомнил? Просто в статье (Г.Н.Поваров - К познанию научно-технического прогресса) автор рассуждает о рассинхронизированности. Да и вообще в ежегоднике "Системные исследования" публиковались статьи о развитии науки. Уже в более поздней статье (В.А.Межжерин - Этюды по теории биологических систем) на фоне предыдущих размышлений автор обобщает эти сведения.
Вообще я лично считаю, что терминология "развитие", "рост", "развитие" в принципе не применима к нематериальным "явлениям" типа культуры, науки и обществу как таковому. Есть только эволюция, в ходе которой повышается или понижается специализация организма. Короче говоря,
Между последовательностью мыслей нет каких-то четких связей, чтобы можно было бы сказать о "развитии мысли" или "развитии концепции". С точки зрения динамических систем. Может понятие аттрактора как какой-то целевой мысли и каскада отображений к этой мысли... Как-то подошло бы. Но каскад не описывает преемственность. Может полисиллогизмы, импликация как-то бы описывала преемственность. Но это не динамическая система, описываемая дифференциальными уравнениями. Потому что не понятно: как в такой системе задать критерий развития в противовес критерию деградации. Проблема в определении того, что есть развитие, а что деградация. Из самой информации нельзя извлечь ценность одних утверждений и вредность других, если это никак не относится к практике. Поэтому в биологии хотя бы понятие специализации возникает. Когда орган как в посадочное место "садится" в среду обитания. И исходя из его существования в этой среде можно понять как и зачем он формировался. С культурой такого не происходит, потому что выдумывать можно что угодно. Единственное - это хорошо что завязали с каннибализмом. Может развитие в том, что стали менее дикими. Хотя это не точно.
Не совсем понятно что такое развитие в социокультурном плане. Что такое развитие общества? Есть конкретные эволюционные механизмы. Часто, применяя определенный инсектицид, получают среди уничтожаемых насекомых расу, к нему устойчивую. Тогда приходится переходить к другому инсектициду и т. д. Таким образом, идет бесконечная борьба с перевесом, пожалуй, на стороне не человека, а его врага (А.А.Малиновский - Теория структур и её место в системном подходе). Интересно как в этом плане действуют анельгезирующие средства на людей. Та же ацетилсалициловая кислота - уже не так популярна, как раньше (и не из-за кератинопластического действия). Приспособление к анальгетикам - вопрос интересный. Частенько говорят об эволюции обезболивающих средств.
Короче это я уже отошёл от темы и ушел в какие-то другие рассуждения. Но полезно поразмышлять о значении понятий "рост" и "развитие" в социокультурном контексте. Многие люди говорят о развитии и росте... Культуры, науки и мысли. Но переход от неправильной мысли к правильной - это не четкая преемственная связь. Предыдущая мысль забывается, уничтожается, а на ее место приходит новая, для которой существование предыдущей и не нужно - она могла возникнуть и без неё, сама по себе. Доказать преемственность нельзя. Потому что в общем случае познание нелинейно.
Я обожаю процессинг!
Это невероятно!
Начало прикольное
Оппанааа) спасибо!
Результат завораживает
Понравилось "Слишком симметрично. Нужно добавить случайностей". И в итоге получилась реальность))))
Топ. Продолжай)
Класс, неожиданно) Поздр с интро
Это невероятно красиво, теперь надо освоить хвойные деревья.
3д деревья будут куда естественнее, думаю если добавить вероятность по которой ветка станет листком досрочно, и потом можно будет считать "вес" кол-во отростков и изгибать (делать дугой) ветку в ту или иную сторону.
Интересно... Но сложно
Круто, сам точно такое же делал, только другим способом.
каким?
@@isamiwind438 на Lua рекурсивными ветками. Каждая ветка - таблица с детьми и параметрами длины и угла. Толщину менял в момент рисования. Получал точно такие же деревья. С рандомом и без.
Крутое видео. Недавно я изучил работу алгоритма минимакс. Кстати даже на основе этого алгоритма сделал ИИ для игры в шашки. Я думаю будет круто если ты осветишь эту тему на канале и сделаешь например ИИ для крестиков ноликов.
Прекрасно
Мэн, ты реально крутбл!!!
Respect!
Крутая заставка
Перематываю в конец, чтобы сразу услышать "опана!!" ))
СПАСИБО
шикарно растёт!
Отличное видео. Про клетку эмбриона хорошая идея. Я когда прочитал книгу по онтогенезу, сразу подумал - а почему никто не напишет виртуальную клетку, раз многие механизмы развития понятны. Скорее всего это неберучка..
Круто
Код на питона не похож чёт совсем) Но видос шикарный, особенно доставил танцующий цветок))) Жду новых видосов, надеюсь с продолжением этого. например эволюцию таких деревьев. Конечно если железо позволит.
Оп оп оп оп-па
Although i don't understand a single word you said, but the demo was super cool.
ого! бесплатное видео! ням-ням )
Красота
Ура, мой совет сработал!
Я делал расчет системы отопления и водоснабжения используя такие структуры, стояла задача нумерации участков сети чтоб можно было найти участок на чертеже однозначно. Оказалось что номер участка после ответвления равен удвоенному значению исходного участка плюс один или плюс два, в зависимости от того правое или левое ответвление. Начальный участок (ствол) имеет номер 0. При такой нумерации можно полностью восстановит всё дерево используя только номера конечных участков. Допустим указываем номера участков на которых установлены краны и их расход. По этим данным можно полностью повторить сеть и узнать расход воды на всех участках.
П.С. Может это натолкнет автора на новые исследования деревьев.
Хотелось бы отметить, в питоне когда более 5 кейсов и в них не по одной действующей команде, а условие простое, лучше делать несколько функций и словарь из них, к примеру ...
def if_1():
print(1)
def if_2():
print(2)
def if_3():
print(3)
def if_4():
print(4)
case = {
'1': if_1,
'2': if_2,
'3': if_3,
'4': if_4,
}
a = '1'
case[a]()
Ну или более простой вариант
case = {
'1': lambda: print(1),
'2': lambda: print(2),
'3': lambda: print(3),
'4': lambda: print(4),
}
a = '1'
case[a]()
Это мой первый проект на питон, пока ещё не освоился :)
@@foo52ru Понимаю, все приходит с опытом )
1) Если делать ленту из if elif .. очевидно что те условия которые встречаются чаще, нужно писать в начале, но не всегда это можно определить.
2) Также словарь не хранит просто соответствие индексного элемента в элемент значения, он делает для эл. индекса hash(эл. индекса), получает число и хранит соответствие этого числа и эл. значения, что позволяет ему иметь b-tree индекс(как в базе данных) и не перебирать все значения для поиска элемента.
Суммируя 1 и 2, вариант со словарем, позволяет всегда делать меньше сравнений.
Этот case можно делать в виде класса.
И еще, попробуйте писать код в PyCharm Community, она бесплатная и намного удобней стандартной IDE.
Милая био-информатика)
Даёшь лес деревьев!
Мужик ты крут! 😎👍
Прикольно ещё будет запилить анимацию шевеления и наклона дерева при ветре. Ветер конечно же может быть с переменной скоростью и углом, а физика стволов дерева крепче к шевелению и наклону по мере утолщения
Опа-на!
Смотрю вас давно. Все как всегда отлично! Но без фоновой музыки в некоторых местах сложновато)
Спасибо, что продолжаете вести свои дневники исследований
Мой лайк 1000ый!!!
было бы супер если бы можно было начало роста дерева (основание)
задать не кругом, а квадратом или трапецией, чтобы
так же было бы неплохо сделать так чтобы начало сегмента было
одной толщины, а конец другой, меньше чем вначале, а
толщина нового сегмента соответствовала толщине конца предыдущего
(чтобы они совпадали по диаметру)
так же было бы неплохо если бы первый сегмент не рос вертикально вверх,
а начинался под любым произвольным углом, поскольку не бывает таких
деревьев которые начинают расти строго под углом 90 градусов
ещё было бы не плохо создать такую функцию
которая задавала бы толщину последних сегментов независимо от
толщины первого сегмента, чтобы можно было делать деревья со стволами
разной толщины... что-то я разфантазировался тут )
.
а так урок конечно норм, правда непонятно как он может
в жизни пригодиться, разве что просто побаловаться
.
код у меня изначально не шёл, сложно сказать что за ошибки были,
но если скачать с яндекс диска (в описании видео), то там код полностью
рабочий.
Остаётся только ещё немножко углубится в понимание, физико химических процессов, роста и развития клеток живых организмов. После чего можно будет посмотреть процесс роста чего угодно. Подсказка на будущие: Начни использовать векторы, дополнительные константы к примеру такие как "Ф" "F(n)". эти две последовательности цифр взаимосвязаны с жизнью какая она есть...
Если настанет конец света, спасите автора этого канала. Дайте ему лабораторию с ген материалом и мощный компуктер. Он создаст всё заново.
👌
В общем, как сказано у нас в учебнике биологии за, кажется, шестой класс, междоузлие это расстояние между основаниями черенков листьев (узлами).
Гений
"Вторая клетка, получив гармон, поняла, что ей суждено быть попой"..
и через минуту началась песня пОПы)))
просто коммент для поддержки.)немного не понял, что не получилось со скобками.может нужна была рекурсия?
И ничего слово междуузлие не непонятно. Междуузлие - растояние между двумя узлами. Узел, насколько я помню, это угол между побегом и стеблем(почка тоже считается побегом).
И идея делать случайные побеги в центре дерева кажется странной. У деревьев там растут побеги только если ветки обломать. Это обусловлено тем что почти весь свет забирает крона, и листья там будут бесполезны. В 3d это пустое место закроет крона.
5G - Антенны ? 😆🙋🏼♂️
Можно ещё добавить координату z и будет 3х мерная эволюция деревьев, лес где можно бегать и наблюдать
Лайк за оппа на)
Анимация про то как растёт и танцует "мариванна" имела бы успех
Дерево напомнило игру Eufloria
Бог создал человека, человек оцифровал растение деревьев👍
1 из способов сохранить в Python изображение в файл это использовать модуль OpenCV с помощью команды cv2.imwrite("изображение.png", image)
где image - переменная, в которой лежит нужное изображение