Создаем математический видеоэффект на Python (Manim)
Научись создавать сайты и приложения на Python в SkillFactory: go.skillfactory.ru/K2WHqA
Возврат денег за курс, если не нашли работу после обучения (подробнее с условиями акции можно ознакомиться на сайте) + скидки 45% по промокоду WILD до 31.05.2023 г.
Рекламный токен: Kra242bxL
Поддержать канал и получить бонусы: boosty.to/wildmathing (либо по кнопке «Спонсировать» под видео)
Отзывы о SkillFactory: otzovik.com/reviews/kursi_pro...
Библиотека Manim (установка и прочее): • Как создавать математи...
Урок по LaTeX: vk.com/wall-201568161_213
ИСХОДНЫЙ КОД
1) За символическую цену: boosty.to/wildmathing/posts/5...
2) Бесплатно для участников рассылки-VK. Напишите слово MANIM сюда: vk.com/wm_teachers (когда бот проснется, скинет уроки и файлы)
О музыке в видео: boosty.to/wildmathing/posts/1...
Олимпиадная математика: vk.com/wall-135395111_24068
ЕГЭ: vk.com/wall-135395111_24068
Преподавателям: vk.com/wildmathing?w=product-...
VK: vk.com/wildmathing
Задачник: vk.com/topic-135395111_35874038
СОДЕРЖАНИЕ
0:00 - Что и как будем создавать?
0:41 - Создаем сцену и слова
2:24 - Случайное расположение
4:14 - Как изучать Python для работы?
6:04 - Перемешиваем и трансформируем слова
8:00 - Корректируем положение слов
8:50 - Характер анимации
9:34 - Избавляем от пересечений
12:31 - Шлифуем и экспериментируем
БОЛЬШЕ КРУТЫХ ВИДЕО О МАТЕМАТИКЕ
1. Зачем нужна математика: • #200. ЗАЧЕМ НУЖНА МАТЕ...
2. Революционер в математике: • ГАЛУА. Революционер в ...
3. Проблемы Гильберта: • ГИЛЬБЕРТ. Величайшие п...
4. Теоремы XX века: • Теоремы XX века!
5. Красивейшие фракталы: • 10 фракталов, которые ...
Смело задавайте вопросы по Manim отдельным комментарием! А если хотите скидку 45% на курс по Python, скорее переходите сюда: go.skillfactory.ru/K2WHqA
Спасибо! Так поместить в ячейку таблицы формулу? А то принимает только строку (выдает ошибку TypeError: sequence item 0: expected str instance, MathTex found)
@Stas , это всегда пожалуйста! Нужно в аргументах экземпляра Table Добавить element_to_mobject=MathTex. Тем самым строки, которые мы указываем для значений ячеек, будут проходить не через Text (Paragraph), а через MathTex
@@WildMathing Спасибо!
Вы всегда мотивируете меня познавать математику. Хочу так же изучить python и делать красоту как вы. Спасибо!!
Поздравляем с галочкой, Вайлд! Я хоть и не информатик, но было очень любопытно послушать туториал! ❤
Ура, автор сможет покушать с помощью рекламы!
Интересное "окно" в творческий процесс создателя контента. Спасибо, Wild. Только мне кажется у многих людей может сложиться впечатление, что такой код пишется действительно всего за 10 минут.
Спасибо за обратную связь! Все приходит с опытом: для своего ролика минут за 20-30 управился. Но главное то, что Manim для этих целей все равно быстрее и удобнее, чем видеоредактор!
@@WildMathing Согласен, manim великолепен, и чем больше опыта тем быстрее пишется код.
@@WildMathing боже... Что это вообще такое? Я ничего из видео не понял 🥲
@@allayar7, kzhead.info/sun/gdeCkc97nIR7h3k/bejne.html
за 10 минут, но для меня не на питоне
Wild постепенно становится каналом по прогоаммированию
Мыслите критически, занимайтесь всем на свете, щи слива😉
Чем богаты, тем и рады!
Я еще Onigi @OnigiriScience и ТехноШаман @foo52ru - смотрю... (вот хороший ролик "Роевой интеллект. Муравьиный алгоритм.")
Прекрасное видео с чудесной анимацией.
Можно еще добавить, чтобы команда выполнялась при сохранении файла, тогда можно просматривать результат не открываясь от кода при ctrl+S
Как же здорово наблюдать за ростом Вашего канала :) Спасибо за безумно полезные и красивые уроки!
Красота!
Классно! Кстати, пересечения прямоугольников на плоскости можно считать и за O(NlogN), если использовать какой-нибудь умный алгоритм типа сортировки по координате или partitioning.
У меня мало информации по библиотеки Manim, но для решения проблемы накладывающих формул можно сделать такую вещь: пусть у нас будет список координат прямоугольника (площади) текста формулы (достаточно левого верхнего и правого нижнего), и каждый раз при попытке разместить объект проверять входит ли хоть какая-либо часть прямоугольника в одну из координат уже занятых (типо old_object_x < new_object_x < old_object_y, аналогично будет и для y координаты). Если не входит, то мы вставляем нашу формулу, иначе заново создаем предполагаемую позицию и так пока не найдем место. В связи с последней мыслей возникает проблема бесконечного цикла, мы можем обозначить счетчик наших попыток в расставление объекта и если установленная нами пороговое значение этого счетчика будет превышено, то мы убиваем цикл при помощи brake и пишем, что не получилось расставить объекты. Можем в таком случае начать весь процесс расстановки формул заново.
Офигенно! И так просто...
Супер!
Тот случай, когда рад, что у вас появилась реклама, так как это сильно поможет развитию канала)
Приблизительно представляю, сколько это работы. Чудесное видео! Очень полезное
Вы невероятны! Спасибо за популяризацию всего самого хорошего и интересного!
Как вариант использовать метод отжига для избежания пересечения объектов в кадре, более того он сам подразумевает случайное их расположение
Как всегда все на высоте! Каждый урок - произведение математического искусства. Wild первопроходец в этой теме на русском ютубе.
С 200.000 подписчиков!
Большое спасибо, приятно!
Тут бы подошёл метод bubbles relaxation, вместо раздвигания формул.. там короче точки - центры формул, эти точки двигаются под действием сил, возникающих между точками, силы эти вандервальсового типа, только тут вместо обычных кругов, (радиус действия) можно применять эллипсы, типа анизотропия. Хотя можно и соорудить функцию именно в форме коробки. Короче говоря решать диффуры придется, тобишь тоже итеративно, задача упаковки... Если слишком много объектов, тогда целесообразно квадродерево применять, шоб попарно силы не считать, дофига. Но тут можно и так, либо вариант полегче, сначала вычислять какие объекты поблизости, потом сами силы для них. В общем как-то так.
😍
Вопрос про центр кадра, обычно же при графической отрисовке нули системы координат в верхнем левом углу, координаты рассчитываются относительно центра автоматически или нужно поправку задавать?
Отсчет от левого верхнего угла действительно часто встречается, и, как по мне, это просто кошмар. К счастью, в Manim координаты узлов векторных объектов пересчитываются, а центр системы координат совпадает с центром отсчета. Показал в момент 2:55
@@WildMathing+/-7 это для любого экрана ограничение или есть связь с пикселями?
@@artem031294 Это для любого экрана, но можно и в пикселях
@@artem031294, это все-таки не пиксели, а относительные единицы измерения. Благодаря этому, в каком бы формате не происходил рендер (720p, 1080p, 2160p), композиция всякий раз будет выглядеть одинаково
Хотелось бы когда-нибудь у вас на канале увидеть ролик о Курте Гёделе и его теоремах. Планируете снимать что-нибудь о личностях в ближайшее время?
Как раз благодаря рекламе летом будет возможность пригласить помощников и сделать биографическое видео. Но о ком - пока точно не знаю
@@WildMathing Отлично, тогда Гёделя на заметку можно взять:) Спасибо богам рекламы и денег, как говорится
6 минут назад! Добрый день!
откровения великого серпентолога:)
4:21 пишу бэкенд в Авито и спешу вас поправить, больше половины бэкенда у нас на Go, а не на python )
спасибо за интересный разбор! каждый ролик мотивирующий и очень интересный, спасибо вам за ваш труд!
@@user-ir8rv7zf6y, спасибо за правку и просмотр!
Вы не могли бы подсказать, как провести биссектрису угла треугольника в manim?
В Manim нет встроенной функции для этого, но можно написать свою, припомнив школьные признаки биссектрисы. Для поиска длины отрезка используйте функцию np.linalg.norm. Если буду создавать курс Manim для продвинутых, покажу, как можно управиться в 2-3 строчки
@@WildMathing Спасибо!
Отличное видео , как и впрочем все ваше остальное творчество! Обращаюсь к вам таким предложением: Как думаете насчет того, чтобы сделать платную подписку в обмен на исходный код за каждое ваше видео которое вышло и будет выходит в дальнейшем?)
Спасибо за добрые слова и предложение! Конкретно к этому видео код как раз доступен, детали в описании. А так я делюсь со спонсорами не кодом к видео, а наиболее полезными (самодостаточными) фрагментами с методами и классами, полезными приемами из библиотеки и Python в целом. Таких образцов уже набралось 100+: boosty.to/wildmathing?postsTagsIds=117711
@@WildMathing спасибо за ответ! Думаю, в ближайшее время пополню состав спонсоров!)
Добрый день. У меня PyCharm показывает ошибку в строке: def construct (self): => File "C:\Users\user\PycharmProjects\pythonProject1\main.py", line 4 def construct(self): IndentationError: expected an indented block after function definition on line 4
День добрый, Степан! У тебя проблема с отступами в четвертой строке. После объявления класса, когда определяешь метод (def construct(self)) нужен отступ в 4 пробела, который в современных редакторах делается одним нажатием клавиши Tab
Здравствуйте! Можно узнать насколько долго вы учили Python? И как вы его учили?
День добрый! Python "изучаю" более 2 лет, в первую очередь для создания математических видео с помощью Manim. Но для первых результатов достаточно было 2-3 недель: kzhead.info/sun/h8qSY9SdimiFp30/bejne.html Наиболее полезным оказался этот бесплатный курс: stepik.org/course/58852/promo
а что за среда разработки? кажется удобной)
Это PyCharm
@@WildMathing спасибо!
А что за музыка на фоне?
Здесь несколько композиций, какой момент интересует?
13:00
@@user-iv2uf7nq5z, конкретно эта, увы, секрет: boosty.to/wildmathing/posts/102511b8-fd51-40e2-8e44-807c8f5aadb0 Но до нее было много бесплатных из творческой студии KZhead, так что при желании укажите еще один тайм-код
Спасибо
Здравствуйте, можно итоговый код
День добрый! Загляни в описание
можно ж ведь и ручками набрать. Хотя у меня всё равно он не работал...
почему питон такой сложный... если бы было на C++, я бы уже давно такие абстракции понастраивал бы.
Что то упускаю? в целом анимации из доки пашут, все норм, а повторяю код за автором, вот такую ошибку ловлю: RuntimeError: latex failed but did not produce a log file. Check your LaTeX installation.
Вы поставили MikTeX? miktex.org/download У вас работает этот пример? docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html?highlight=MathTex#formula
@@WildMathing Спасибо! Помогло! Не был установлен MikTex )
@@mtigames188, бывает, всегда пожалуйста!
Cyrillic comments 🥰😆
А что это за видеоплеер, в котором вы смотрите то, что получается?
Это Light Alloy, давно пользуюсь
@@WildMathing Light Alloy one love :)
Какой шрифт у Manim?
Для формул Manim обращается к LaTeX'у (например, MikTex), они отрисовываются, а затем захватываются svg-изображения. По умолчанию в системе верстки LaTeX используется шрифт CMU Serif
@@WildMathing Спасибо большое, давным-давно искал его, но не нашёл, а тут как раз момент появился благодаря вашему ролику)
Это всегда пожалуйста!
на c# такое можно накалякать?
Библиотека Manim, к сожалению, только для Python. Если на c# есть какой-нибудь фреймворк для анимации svg-изображений, то дело в шляпе: автоматизировать процесс создания формул несложно. Если же нет, то придется самому повозиться с FFmpeg или аналогичным инструментом
мужик, это ахуенно!
Аллилуйя!!! И не важно что это реклама!!! Наконец то, хоть кто то показал на деле, что такое ваш: войти в IT ))
1
Делаю всё в точности как в видео, но в строке объявления класса "class Cloud(Scane):" подчёркивает Scene и, конечно же, при запуске выдаёт следующую ошибку: Traceback (most recent call last): File "cloud.py", line 26, in class Cloud(Scane): NameError: name 'Scane' is not defined Так же в строке "boxes = [SurroundingRectangle(w, buff = 0.03), for w in words]" в функции def get_intersections(words) ругается что не знает переменную w Все нужные библиотеки импортированы, с ними проблем нет
У вас опечатка в слове Scene: "class Cloud(Scane)". Если после исправления возникнут новые, дайте знать! Напомню, что можно получить (в том числе бесплатно) исходный код, чтобы избежать опечаток
@@WildMathing ох.. вот в чём дело 😅 Я лучше руками буду набирать, так хоть какое-то понимание возникает что вообще происходит. Благодарю, вечером доберусь до компа, попробую снова
@@alexandrponomarenko4127, да, для понимания это полезно + на ошибках учатся! Коли будут новые, пишите. А свой код при необходимости можно загружать сюда: pastebin.com
@@WildMathing для работы требуется дополнительно установить ffmpeg и латекс. Первое я установил, со вторым возникли проблемы. Дистрибьютива латекса на вин 7 нет (а у меня она стоит, да-да....), так что придётся ставить что-нибудь линуксоидное, устанавливать всё туда и пробовать снова. p.s. Хорошо, когда как у автора уже всё настроено для работы и он просто берёт, делает и всё у него сразу работает😁
@@alexandrponomarenko4127, системе верстке TeX уже 45 лет, и она распространяется бесплатно. Она есть даже для Windows XP (может, и для 95, 98, не помню), чего уж говорить про 7-ку. miktex.org/download - попробуйте сначала MikTeX для Windows. Желательно из вкладки All Downloads (Net Installer). Если не получится, просто поищите более старую версию
Это все, конечно, здорово, но вернется ли канал к математике?
Да, обязательно! Да и урок, если присмотреться, полезен тем, кто создает математические видео: одно дело делаем
Несколько дней назад я вам прилылал видео с идеей для ролика Так как manimCE на телефон не подключается, видео получилось ужасным Я вам обещал пдф файл. Кое что пошло не так Поэтому ждите не pdf, а html файл p.s я умею писать код веб страницы на HTML p.s2 я подписан на рассылку
Ты можешь просто разборчиво от руки написать свое решения - постараюсь прокомментировать. При этом комплексные числа нельзя сравнивать в привычном смысле, но можно сравнить их модули (длины соответствующих векторов). Пока что видео по комплексному анализу не планируются, так что интересуюсь, чтобы уважить труд, нежели написать новый сценарий. Но в любом случае спасибо, что предложил материал! Это очень круто, что ты сам одолел эту непростую тему
извините пожалуйста, а можете со мной тоже поделиться, мне невероятно интересно!
Как насчёт попробовать себя в спортивном программировании
Нужно больше рекламы! Даешь денюжку Вайлду!
Перфект инглиш
Товарищи, кто-нибудь повторял то, что показано в этом видео? У кого-нибудь получилось?
Можете не сомневаться, что у 100% людей, у которых полностью работает Manim, работает и приведенный код, которым я уже поделился с огромным количеством людей (ни одной жалобы не поступило). О библиотеке уже давно рассказывал: kzhead.info/sun/gdeCkc97nIR7h3k/bejne.html Напоминаю про самый простой пример для тестирования: docs.manim.community/en/stable/examples.html#movingframebox Если он не работает, то нет смысла тестировать более сложные примеры на 100+ строк
@@WildMathing "ни одной жалобы не поступило" - получается я первый с проблемами....🙄
@@WildMathing мне действительно тоже хочется хотя бы повторить то что предложено здесь, раз у всех получается... Хотя бы повторить и чтоб оно работало. Хорошо бы потом с этим чуть подробнее разобраться и делать уже что-то самому потом когда-нибудь
@@alexandrponomarenko4127, я делился исходным кодом со спонсорами и не только. У них уже установлен Manim корректно, поэтому у них работает код, который я демонстрирую. Вас же прекрасно понимаю! Но нет смысла тестировать показанный код, если библиотека еще не установлена корректно. Сначала убедитесь, что у вас работает эта сцена: docs.manim.community/en/stable/examples.html#movingframebox
@@WildMathing понятно....😔продолжу дальше пробовать как-то наладить всё, чтобы работало. Пока я не могу понять, что я делаю не так и почему у меня не работает LaTex. Если уж даже эти библиотеки не смогу корректно поставить в разумное время, то наверно вообще не стоит трогать программирование. Спасибо большое за советы и стремление помогать!! Правда, не ожидал что получу такой отклик. Но буду пробовать дальше пытаться каким-либо способом установить этот злосчастный латекс
Заклинаю вас не использовать * при импорте! Вы учите детей плохому!
У нас так принято в сообществе Manim, и это действительно удобно. С самого начала ролика об этом сказал: github.com/3b1b/videos Мы же пишем сцены для видео, а не модуль с видеоэффектами, который прямо в таком виде будем использовать дальше в библиотеке
бесят эти питонские отступы без фигурных скобок
А еще точек с запятыми нет - это же какой злодей придумал настолько упростить синтаксис!
@@WildMathing Кстати, в Пайтоне точки с запятыми есть. Если очень хочется, то можно использовать без проблем.
Тот случай, когда рад, что у вас появилась реклама, так как это сильно поможет развитию канала)