Пишу 3D Движок на Python [ Pygame + Numpy ]
HTML-код
- Опубликовано: 6 окт 2020
- В этом видео вы узнаете как при помощи языка Python (Питон) написать простой, но функциональный программный 3D движок, используя библиотеки Pygame и Numpy.
Будет объяснятся теория 3D графики, затронем фундаментальные вещи, реализуем передвижение, вращение и масштабирование трёхмерных объектов. А также создадим камеру, при помощи которой можно будет осматривать 3D объекты со всех сторон.
При помощи этого движка можно будет загружать и отображать полигональную сетку реальных 3D моделей *.obj формата, которые содержат до 10к полигонов.
Код проекта:
github.com/StanislavPetrovV/S...
#standalonecoder
Дружище, ты красавчик, пересмотрел все твои видосы уже.
Расскажи, почему ты в принципе выбрал Питон для такого вида деятельности? Неужели Намба ускоряет его до уровня компилируемых языков?
Для меня, это своего рода челендж и увлечение (развлечение), я не сравниваю Python с другими языками и не ставлю его лучше других, но мне нравится этот язык, и больше всего подкупает скорость разработки проектов на нем
@@StandaloneCoder привет. Видосы правда годные, но очень сложно слушать язык робота.
Записывай своим голосом, пожалуйста
numpy действительно очень быстрый и эффективный. Он/она написан на си.
И вообще numpy маст-хев для всего что связано с математикой
Как по моему, питон занимает меньше оперативки, да и проще он.
@@mcomponent он проще, но по еффективности использования оперативной памяти с с/с++ не сравнится
Мне жаль, что я не знал русский язык, чтобы получать шутки. (Переведено на гугл переводчике с английского) (ps. Спасибо за английские субтитры.)
Do you speak English?
not "получать шутки", you must speak "понимать шутки"
@@user-uy2gg8mm6s you must speak значит ты обязан разговаривать
Hello
Is the English audience watching Russian-speaking content? I'm also sorry I don't know English. Fortunately, in Russian schools it is studied. (Google Translate)
Клаааас, давно ждал этот ролик! Ты просто лучший, продолжай развивать этот проект, мы все в тебя верим)
Чел это очень годно! Я пытаюсь учить питон, но устаю в рутине, но когда посмотрю, что ты вытворяешь во мне просыпается мотивация. Это правда круто, спасибо.
Крутой канал! Хорошо, что ваш ролик в рекомендации мне попал))
Годнота прям вообще, лайк с ноги:)
Твои уроки очень интересные, давно подписан, всегда интересно и понятно, вообщем, продолжай в том же духе:)
Ого! Ничего себе, как круто!
Очень сильно.
Я понимаю процентов 10 из материала, но смотрю его от и до )
Автор, у тебя талант не только программера, но и учителя.
Спасибо!
Я понимаю только 10% материала -> у тебя талант преподавателя
@@user-zl5zs9wq8g ахахахахаахаахаааа!!! =)))
По пальцам все расскатал! Спасибо, очень круто!
Привет Мир !!! Какие же классные и полезные видеоролики у тебя Главное полезные Спасибо Большое Тебе За Это лайк тебе!!!!
Ну годный ролик, сам раньше любил изучать 3d объекты в питоне, тебя с такими знаниями возьмут в любую game индустрию, удачи в жизни
Нет. Для современного гейм девелопмента надо знать движок unreal 4+. В нем уже реализован весь 3d рендеринг на OpenGL, direct3d, vulkan и metal. Сейчас для игр программисты уже особо не нужны, а нужны художники.
Привет, ты просто молодец, лежу, смотрю твои видео и вспоминаю когда у тебя было 50-60 подписчиков, когда я учился питонить, думаю и ты тоже, ведь тогда ты записывал видео про змейку, которое мне понравилось, я даже в шк попытался ее написать на уроке инфы, буквально на коленке, кнш не когда учился, а совсем не давно и брал за основу твою змейку, а ведь с нее и началось все мое питонерство) Спасибо за твои видео
Рад слышать такие слова!
Это супер ролик. Продолжай в том же духе!
большое спасибо за видеоролик!
Случайно увидел, ваши ролики... Огонь!!! Очень приятно что есть подобный контент в таком формате! Спасибо! Отдельное, что выбрали Python (люблю его за строгий слить кода программиста). Может, не которые программисты начнут придерживаться стилю кода.
вау, это было сделано очень элегантно.
объяснения понятные и исчерпывающие для таких задач.
спасибо за видео, ты замечательный/ая
Нихрена себе, ты лучший. Мне кажется всё это сложным но ты знаншь очень много.
Чувак, прям оч круто. Мне очень интересно, насколько ты любишь своё дело, что дошёл до такого уровня
Какого? Это уровень... ну я бы назвал околоначальный. У него явно недостаточно знаний, чтобы написать какой-то крупный проект, особенно что касается архитектуры кода. Написать свой движок это не 20 минут видос на ютубе, это года 2, первые пол года которых даже визуала не будет, а тупо оттачивание работы с памятью и потоками, а также импутом.
@@ATtiny13a-PU почему программисты такие токсичные?
@@wickedsick1249, где токс? По фактам)
Особенно после того видео про "сравниваем скорость питона с другими ЯП" у меня знатно пригорело и я бы 100 гневных сообщений написал бы, если бы хомяки уже не схавали со словами "да, питон быстрее всех!". Мне по любому придёт какой-то малолетний дебил доказывать этим видосом что-то.
Когда ты делаешь для себя, тебя никто не имеет право критиковать без твоего согласия, а когда ты делаешь для ПУБЛИКИ, тут вся власть у народа, хоть помидорами закидать. Но больше всего я ненавижу, когда эту самую наивную часть народа обманывают и дают ложные представления.
@@ATtiny13a-PU братан, мы поняли, что ты умный. Тебе делать нечего?
@@wickedsick1249, я хочу быть умным не в одиночку (хотя в моей беседе много опытных умных программистов). А всякие отупляющие видосы на ютубе способствуют обратному (например экстрим код тот ещё дегротизм). Мне обидно просто, что так легко обманывать.
Мужик здорово у тебя получается!
Сложно, но капец как интересно. Лайк однозначно.
Пфффф... Уведомление спустя два дня после выхода, спасибо любимый ютабчик
Спасибо тебе огромное, дружище!
Даже говорилка не режет слух, как бывает с ней! Отличный урок!
Потрясающе!
молодец я бы до такого с трудом бы додумался спасибо за видос
кстати коментарии почитал очень много людей хотят про текстуры, сделай про это видео пожалуйста
Ждём вторую часть!
Чуваааак ты зверь!!!!! Ты заслуживаешь большего!
Кстати , можно ускорить программу используя Cython ?
теоретически можно, попробуйте
Очень круто. Надеюсь на целую серию подобных видео. С меня лайк Кто согласен ставьте на моем комментарии лайк.
Сделай видео про отрисовку 3d моделей с гранями) Очень круто) Продолжай!
А потом текстуры натяни, добавь шейдеры и физику, потом трассировку лучей😅
Круто! Очень затянул канал
Это просто чудесно )
Только начал изучать Python, понял я мало чего, но ролик был интересный.
А я жду 2 части когда можно будет накладывать текстуры)
Жду продолжения
Маэсто - это Шедевр!
Не люблю питон ,но видосы твои понравились ) Круто! Удачи !
Амбициозненько 👍
Просим видео об оптимизации!
Oy, надо будет попробовать
Весьма!!!
Топ видос
increible compañero 👌🐢👌
просто класс
Very useful, Excellent, thank you so much... Namasthe..🙏
Great video 👍 👏 👌
Вдохновляет)
Ля шо творит чудной
лайк и просмотр)
Прикольно.
oh my god, wow
Как рас искал 3Д. На тебя уже давно подписан
Просто офигенный канал, сам люблю ковыряться в 3д графике. Подписка однозначно. Что дальше? Собственный растеризатор? Или может OpenGL с шейдерами? Спасибо за видео
I dont speak russian, but this is so interesting and well explained, thank you for made this video ! :D
круто
I liked the video irrespective of language barrier
круто
Обидно конечно, но придётся, скорее всего мне, переходить с питона на с++ ради 3D. Но standalone coder тот ещё гений. Жду новых роликов по этой теме. Кто как не ты сможет выбить меня с unreal engine на приятный мозгу питон снова
It was just a normal day in my life when youtube recommended me this vidya and I be like, damn gotta watch this shit - sounds interesting af. The title and description were in english but then the synthesized voice proved me wrong. I was about to cry, realising that youtube fucking recommends me non-english videos but then I remembered - я же блять русский. По делу кстати найс, отличное видео, побольше бы таких.
чувак, ты крутой
Great video
[exit() for i in pg.event.get() if i.type == pg.QUIT] # Very nice! :)
красавчик )
it's cool content!
помним, скорбим
лайк, коммент
Теперь ждем настоящую 3д игру
Давай продолжение про двигло!
Про оптимизацию движка и внедрение .obj файлов.
Тоже скоро начну делать свое двигло!
Пускай простое, главное, чтобы главную роль выполняло!
Питон не про 3д движки... Тут только срр.. и это сложно.. прям очень...
@@ex-format я знаю, но код можно по проще сделать!
Глядишь движок ускорится ещё в 2 раза
@@ex-format вообще скажу, что это видео самое наглядное.
Это то, что я искал в принципе!
Показано, как импортировать .obj файлы.
круть)))
рекомендации как я вас лю...
Эх если бы в школе так преподавали материал, то я бы уже был топовым программистом
Очень годно! Какую версию python используешь?
Сделай видео про работу с OpenGL на питоне без pygame.
We need a video exactly like this but in english
Good Job! 😂
всё понятно , хотелось бы, чтоб и математику этого кто то объяснил.
ruclips.net/video/Q9zkiOClyEo/видео.html&ab_channel=Vectozavr вот на этом примере она хорошо объясняется
@@Dmytro-Tsymbaliuk спасибо !
Чел, это просто АХ**ННО!
Great video - subscribed!
Although, an English caption option might help attract a larger audience.
thank you for your attention and advice
Концовка топ
Кстати на счёт поворота объектов, я писал такой движок ещё в 7 классе и вот чтобы вращать объект вокруг своего геометрического центра (или центра масс если хотите, но там чуть сложней) нужно сначала найти координаты центра объекта (геометрический центр для каждой оси находится очень просто - это среднее значение всех точек на этой оси) затем перемещаем наш объект в цент координат поворачиваем и после возвращаем на место. Как то так)
Привет Standalone Coder! Видео - шикарное,! Поздравляю и большое спасибо за ценную информацию. С помощью какого ПО можно создать *.obj файл?
Благодарю за отзыв. Для создания можно использовать редактор Blender (он бесплатный), чтобы сохранить в obj используйте File - Export - Wavefront (*.obj)
Спасибо за Ваш оперативный ответ.
Чувак можешь в каком-нибудь отдельном видео объяснить как ты мыслишь что бы понять что нужно использовать в данном случае синус косинус, тангенс или котангенс. А то непонятно почему у тебя где-то синус где-то косинус
кайф, вспомнил, как на курсе 2 или 3 было два семестра компьютерной графики, где мы и матрицы выводили и прочее)
А какой факультет
@@Qyrtix физико-математических и естественных наук, по кафедре информационных технологий)
Да уж 3D на Python - это забавно.) Хотя называть подобное движком я бы не стал.
Отличное видео
Но почему бы не рисовать заместо линий заполненные треугольники/четырёхугольники? перед этим заранее отсортировав их порядок отрисовки от дальнего к ближнему
В добавок нужно ещё сделать подобие источника света, просто выбрать одно направление и в зависимости от того насколько близка плоскость к этому направлению менять яркость её цвета
Блин ты гений как можно было додуматься до этого и глааное реализовать это в ПИТОНЕ ахерено. И гланое пожалуйста записывайте на свой голос.
На питоне можно много чего сделать , большое количество библиотек , и много информации о решениях проблем в инете
для этого и нужно учить матешу)
Спасибо. Можно ли убрать невидимые точки и покрасить модель?
Привет. Спасибо за твое видео. Очень долго пытаюсь разобраться, почему при прохождении камерой через объект, объект озеркаливается по всем осям и мы от него как-будто отдаляемся...есть какие-то предположения по этому поводу?
Здравья! Спасибо за ролик, очень заинтересовало. Можешь пожалуйста разжевать, почему была введена однородная система координат и для чего там параметр w? Мб ты изучал какие-нибудь статьи или иные публикации? Было бы интересно глянуть.
www.scratchapixel.com - здесь много полезных статей на эту тему
То что нужно, То что нужно, То что нужно, То что нужно, То что нужно.
Как всегде - круто. Можно узнать, это для само-развития или есть планы на разработку реального 3д проекта? Если на реальный 3д, может стоит глянуть на Panda 3d?
Да, это больше про то, на каких основах построена 3д графика. А на панде тоже планирую сделать несколько проектов, но чуть попозже
@@StandaloneCoder Спасибо. Ждем!
Привет можешь сказать как накладывать текстуры на 3D модели из этого видео?
А можно ли нормализовать(установить меньшие, но подходящие координаты) для точек которые не влезают в экран, например как только точка уходит за экран, она автоматом попадает на край экрана и дальше сдвинуться не может и выходит, что грань отрисовывается через весь экран.
3d:)
Я просто офигел от жизни, когда увидел сколько слово "матрица" было произнесено в этом видео, и как ты через неё решал (вообще хз как это работает, только в 9 перешёл). Но выглядит круто) Но чтоб понять, надо будет класса до 11 дойти (если там вообще такое проходят) Но в общем выглядит круто! Мне нравится))))
не жди, начинай уже сейчас почитывать линейную алгебру )
@@StandaloneCoder слушай, я перехожу в 8 класс. И у меня огромные проблемы с математикой, которые начались где то в 5 - 6 классе из за плохого зрения. Как думаешь, можно ли самостоятельно повторить весь материал с 1 до 7 класса и понять его?)
@@xaosit8974 главное усердие и труд)
Ну не знаю, сам перешел в 9 класс и пишу игру на opengl c××
Не там изи я тоже так думал как только освоил один язык програмирования и после еще несколько лет ломая голову все таки пришел к этому самостоятельно и без каких либо сложных математик и матриц. Все достаточно легко оказалось я даже разочаровался (
Я всё видео ждал момента с правильным отсечением (когда не видно грань целиком, но она не пропадает), а ты такой: "не пацаны, это уже в следующем ролике". Вот, очень жду как раз это видео (сам пишу нечто подобное, и как раз застрял на обрезке граней. Вернее я знаю что делать, но чё то не работает)
8:48 я когда смотрю челиков которые расказывают про свой код и говорят какой он легкий
Крутой видос! Но можете ли Вы подсказать, как закрасить куб методом Гуро/Фонга? Нигде не могу найти информации, как это сделать на Python. Так же не понимаю, как сделать освещение/лампу( Может есть возможность как-то связаться и пообщаться? Буду очень признателен за помощь!
бро , почему у тебя нет 1🍋 подписчиков ?
Матрица Родвига
Классно как всегда. Откуда ты берешь материал? Ты же не велосипед придумываешь. Или же нет определенного ресурса? Я вон только-только написал программу рисующею через метод хаоса Треугольник Серпинского(Тот который у тебя на аватарке канала), и у меня по этому щас будет проект. Хотелось бы узнать, откуда столько интересной информации берешь
Как правило я выкладываю видео про то, что мне самому интересно. Большая часть сюжетов я придумал сам, но на некоторые из них меня вдохновили другие, случайно увиденные вещи. Ну и конечно же никакого определенного ресурса откуда брать идеи нет)
Просто используешь имеющиеся знания для того, что бы идея заработала, а если знаний мало - то читаешь документацию. На самом деле в любом языке программирования достаточно знать лишь основной синтаксис и типы данных - остальное уже чисто с потолка можно делать. Я вот сделал себе собственную библиотеку для работы со временем, используя всего одну функцию из библиотеки для питона datetime - функция now класса datetime. Взяв текущее время я могу его использовать уже как мне захочется - сейчас я могу узнать сколько времени прошло после прошлого замера, и сколько будет времени если пройдет N времени. Вроде две банальные функции, и наверняка они есть в какой то готовой библиотеке, но я захотел это реализовать сам и у меня получилось. Теперь могу использовать это в самых разных целях. Так поступает и автор этого канала, я более чем уверен - захотел что-то -> сделал это.
это очень круто, но как в этом разобраться? как это написать самому, с головы?! это на сколько котелок варит то! =))