Пишу 3D Движок на Python [ Pygame + Numpy ]
Вставка
- Опубліковано 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 ахахахахаахаахаааа!!! =)))
Привет, ты просто молодец, лежу, смотрю твои видео и вспоминаю когда у тебя было 50-60 подписчиков, когда я учился питонить, думаю и ты тоже, ведь тогда ты записывал видео про змейку, которое мне понравилось, я даже в шк попытался ее написать на уроке инфы, буквально на коленке, кнш не когда учился, а совсем не давно и брал за основу твою змейку, а ведь с нее и началось все мое питонерство) Спасибо за твои видео
Рад слышать такие слова!
Привет Мир !!! Какие же классные и полезные видеоролики у тебя Главное полезные Спасибо Большое Тебе За Это лайк тебе!!!!
Случайно увидел, ваши ролики... Огонь!!! Очень приятно что есть подобный контент в таком формате! Спасибо! Отдельное, что выбрали Python (люблю его за строгий слить кода программиста). Может, не которые программисты начнут придерживаться стилю кода.
Ну годный ролик, сам раньше любил изучать 3d объекты в питоне, тебя с такими знаниями возьмут в любую game индустрию, удачи в жизни
Нет. Для современного гейм девелопмента надо знать движок unreal 4+. В нем уже реализован весь 3d рендеринг на OpenGL, direct3d, vulkan и metal. Сейчас для игр программисты уже особо не нужны, а нужны художники.
По пальцам все расскатал! Спасибо, очень круто!
большое спасибо за видеоролик!
Это супер ролик. Продолжай в том же духе!
А я жду 2 части когда можно будет накладывать текстуры)
вау, это было сделано очень элегантно.
объяснения понятные и исчерпывающие для таких задач.
спасибо за видео, ты замечательный/ая
Пфффф... Уведомление спустя два дня после выхода, спасибо любимый ютабчик
Потрясающе!
молодец я бы до такого с трудом бы додумался спасибо за видос
кстати коментарии почитал очень много людей хотят про текстуры, сделай про это видео пожалуйста
Чувак, прям оч круто. Мне очень интересно, насколько ты любишь своё дело, что дошёл до такого уровня
Какого? Это уровень... ну я бы назвал околоначальный. У него явно недостаточно знаний, чтобы написать какой-то крупный проект, особенно что касается архитектуры кода. Написать свой движок это не 20 минут видос на ютубе, это года 2, первые пол года которых даже визуала не будет, а тупо оттачивание работы с памятью и потоками, а также импутом.
@@ATtiny13a-PU почему программисты такие токсичные?
@@wickedsick1249, где токс? По фактам)
Особенно после того видео про "сравниваем скорость питона с другими ЯП" у меня знатно пригорело и я бы 100 гневных сообщений написал бы, если бы хомяки уже не схавали со словами "да, питон быстрее всех!". Мне по любому придёт какой-то малолетний дебил доказывать этим видосом что-то.
Когда ты делаешь для себя, тебя никто не имеет право критиковать без твоего согласия, а когда ты делаешь для ПУБЛИКИ, тут вся власть у народа, хоть помидорами закидать. Но больше всего я ненавижу, когда эту самую наивную часть народа обманывают и дают ложные представления.
@@ATtiny13a-PU братан, мы поняли, что ты умный. Тебе делать нечего?
@@wickedsick1249, я хочу быть умным не в одиночку (хотя в моей беседе много опытных умных программистов). А всякие отупляющие видосы на ютубе способствуют обратному (например экстрим код тот ещё дегротизм). Мне обидно просто, что так легко обманывать.
Мужик здорово у тебя получается!
Нихрена себе, ты лучший. Мне кажется всё это сложным но ты знаншь очень много.
Очень круто. Надеюсь на целую серию подобных видео. С меня лайк Кто согласен ставьте на моем комментарии лайк.
Просим видео об оптимизации!
Даже говорилка не режет слух, как бывает с ней! Отличный урок!
Сложно, но капец как интересно. Лайк однозначно.
Спасибо тебе огромное, дружище!
Ждём вторую часть!
Круто! Очень затянул канал
Это просто чудесно )
Сделай видео про отрисовку 3d моделей с гранями) Очень круто) Продолжай!
А потом текстуры натяни, добавь шейдеры и физику, потом трассировку лучей😅
Не люблю питон ,но видосы твои понравились ) Круто! Удачи !
Только начал изучать Python, понял я мало чего, но ролик был интересный.
Чуваааак ты зверь!!!!! Ты заслуживаешь большего!
Кстати , можно ускорить программу используя Cython ?
теоретически можно, попробуйте
Маэсто - это Шедевр!
Ля шо творит чудной
Просто офигенный канал, сам люблю ковыряться в 3д графике. Подписка однозначно. Что дальше? Собственный растеризатор? Или может OpenGL с шейдерами? Спасибо за видео
oh my god, wow
Жду продолжения
Амбициозненько 👍
increible compañero 👌🐢👌
Oy, надо будет попробовать
Great video 👍 👏 👌
Топ видос
Very useful, Excellent, thank you so much... Namasthe..🙏
Как рас искал 3Д. На тебя уже давно подписан
Вдохновляет)
Весьма!!!
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 - я же блять русский. По делу кстати найс, отличное видео, побольше бы таких.
Обидно конечно, но придётся, скорее всего мне, переходить с питона на с++ ради 3D. Но standalone coder тот ещё гений. Жду новых роликов по этой теме. Кто как не ты сможет выбить меня с unreal engine на приятный мозгу питон снова
лайк и просмотр)
просто класс
I dont speak russian, but this is so interesting and well explained, thank you for made this video ! :D
круто
Прикольно.
Теперь ждем настоящую 3д игру
Давай продолжение про двигло!
Про оптимизацию движка и внедрение .obj файлов.
Тоже скоро начну делать свое двигло!
Пускай простое, главное, чтобы главную роль выполняло!
Питон не про 3д движки... Тут только срр.. и это сложно.. прям очень...
@@ex-format я знаю, но код можно по проще сделать!
Глядишь движок ускорится ещё в 2 раза
@@ex-format вообще скажу, что это видео самое наглядное.
Это то, что я искал в принципе!
Показано, как импортировать .obj файлы.
чувак, ты крутой
Great video
красавчик )
I liked the video irrespective of language barrier
круто
it's cool content!
круть)))
Привет Standalone Coder! Видео - шикарное,! Поздравляю и большое спасибо за ценную информацию. С помощью какого ПО можно создать *.obj файл?
Благодарю за отзыв. Для создания можно использовать редактор Blender (он бесплатный), чтобы сохранить в obj используйте File - Export - Wavefront (*.obj)
Спасибо за Ваш оперативный ответ.
помним, скорбим
[exit() for i in pg.event.get() if i.type == pg.QUIT] # Very nice! :)
лайк, коммент
Эх если бы в школе так преподавали материал, то я бы уже был топовым программистом
рекомендации как я вас лю...
Кстати на счёт поворота объектов, я писал такой движок ещё в 7 классе и вот чтобы вращать объект вокруг своего геометрического центра (или центра масс если хотите, но там чуть сложней) нужно сначала найти координаты центра объекта (геометрический центр для каждой оси находится очень просто - это среднее значение всех точек на этой оси) затем перемещаем наш объект в цент координат поворачиваем и после возвращаем на место. Как то так)
Здравья! Спасибо за ролик, очень заинтересовало. Можешь пожалуйста разжевать, почему была введена однородная система координат и для чего там параметр w? Мб ты изучал какие-нибудь статьи или иные публикации? Было бы интересно глянуть.
www.scratchapixel.com - здесь много полезных статей на эту тему
Чувак можешь в каком-нибудь отдельном видео объяснить как ты мыслишь что бы понять что нужно использовать в данном случае синус косинус, тангенс или котангенс. А то непонятно почему у тебя где-то синус где-то косинус
кайф, вспомнил, как на курсе 2 или 3 было два семестра компьютерной графики, где мы и матрицы выводили и прочее)
А какой факультет
@@Qyrtix физико-математических и естественных наук, по кафедре информационных технологий)
Сделай видео про работу с OpenGL на питоне без pygame.
Очень годно! Какую версию python используешь?
Great video - subscribed!
Although, an English caption option might help attract a larger audience.
thank you for your attention and advice
Как всегде - круто. Можно узнать, это для само-развития или есть планы на разработку реального 3д проекта? Если на реальный 3д, может стоит глянуть на Panda 3d?
Да, это больше про то, на каких основах построена 3д графика. А на панде тоже планирую сделать несколько проектов, но чуть попозже
@@StandaloneCoder Спасибо. Ждем!
всё понятно , хотелось бы, чтоб и математику этого кто то объяснил.
ua-cam.com/video/Q9zkiOClyEo/v-deo.html&ab_channel=Vectozavr вот на этом примере она хорошо объясняется
@@Dmytro-Tsymbaliuk спасибо !
We need a video exactly like this but in english
Да уж 3D на Python - это забавно.) Хотя называть подобное движком я бы не стал.
Good Job! 😂
Отличное видео
Но почему бы не рисовать заместо линий заполненные треугольники/четырёхугольники? перед этим заранее отсортировав их порядок отрисовки от дальнего к ближнему
В добавок нужно ещё сделать подобие источника света, просто выбрать одно направление и в зависимости от того насколько близка плоскость к этому направлению менять яркость её цвета
Классно как всегда. Откуда ты берешь материал? Ты же не велосипед придумываешь. Или же нет определенного ресурса? Я вон только-только написал программу рисующею через метод хаоса Треугольник Серпинского(Тот который у тебя на аватарке канала), и у меня по этому щас будет проект. Хотелось бы узнать, откуда столько интересной информации берешь
Как правило я выкладываю видео про то, что мне самому интересно. Большая часть сюжетов я придумал сам, но на некоторые из них меня вдохновили другие, случайно увиденные вещи. Ну и конечно же никакого определенного ресурса откуда брать идеи нет)
Просто используешь имеющиеся знания для того, что бы идея заработала, а если знаний мало - то читаешь документацию. На самом деле в любом языке программирования достаточно знать лишь основной синтаксис и типы данных - остальное уже чисто с потолка можно делать. Я вот сделал себе собственную библиотеку для работы со временем, используя всего одну функцию из библиотеки для питона datetime - функция now класса datetime. Взяв текущее время я могу его использовать уже как мне захочется - сейчас я могу узнать сколько времени прошло после прошлого замера, и сколько будет времени если пройдет N времени. Вроде две банальные функции, и наверняка они есть в какой то готовой библиотеке, но я захотел это реализовать сам и у меня получилось. Теперь могу использовать это в самых разных целях. Так поступает и автор этого канала, я более чем уверен - захотел что-то -> сделал это.
Блин ты гений как можно было додуматься до этого и глааное реализовать это в ПИТОНЕ ахерено. И гланое пожалуйста записывайте на свой голос.
На питоне можно много чего сделать , большое количество библиотек , и много информации о решениях проблем в инете
для этого и нужно учить матешу)
8:48 я когда смотрю челиков которые расказывают про свой код и говорят какой он легкий
Привет. Спасибо за твое видео. Очень долго пытаюсь разобраться, почему при прохождении камерой через объект, объект озеркаливается по всем осям и мы от него как-будто отдаляемся...есть какие-то предположения по этому поводу?
А можно ли нормализовать(установить меньшие, но подходящие координаты) для точек которые не влезают в экран, например как только точка уходит за экран, она автоматом попадает на край экрана и дальше сдвинуться не может и выходит, что грань отрисовывается через весь экран.
Я просто офигел от жизни, когда увидел сколько слово "матрица" было произнесено в этом видео, и как ты через неё решал (вообще хз как это работает, только в 9 перешёл). Но выглядит круто) Но чтоб понять, надо будет класса до 11 дойти (если там вообще такое проходят) Но в общем выглядит круто! Мне нравится))))
не жди, начинай уже сейчас почитывать линейную алгебру )
@@StandaloneCoder слушай, я перехожу в 8 класс. И у меня огромные проблемы с математикой, которые начались где то в 5 - 6 классе из за плохого зрения. Как думаешь, можно ли самостоятельно повторить весь материал с 1 до 7 класса и понять его?)
@@xaosit8974 главное усердие и труд)
Ну не знаю, сам перешел в 9 класс и пишу игру на opengl c××
Не там изи я тоже так думал как только освоил один язык програмирования и после еще несколько лет ломая голову все таки пришел к этому самостоятельно и без каких либо сложных математик и матриц. Все достаточно легко оказалось я даже разочаровался (
Крутой видос! Но можете ли Вы подсказать, как закрасить куб методом Гуро/Фонга? Нигде не могу найти информации, как это сделать на Python. Так же не понимаю, как сделать освещение/лампу( Может есть возможность как-то связаться и пообщаться? Буду очень признателен за помощь!
круто, спасибо
но не могу понять что это за запись например:
variable = variable @ somefunction()
не подскажете?
или это какой-то хитрый способ использования декоратора?
это не декоратор, это оператор произведения матриц из numpy (тоже что и matmul)
Я всё видео ждал момента с правильным отсечением (когда не видно грань целиком, но она не пропадает), а ты такой: "не пацаны, это уже в следующем ролике". Вот, очень жду как раз это видео (сам пишу нечто подобное, и как раз застрял на обрезке граней. Вернее я знаю что делать, но чё то не работает)
Концовка топ
Вообще идея хоть и безумна в своем исполнении, но очень интересна в реализации. Я бы вычисления на матрицах и векторах перенес бы на тензоры из pytorch - там их можно выполнять на видеокарте с cuda toolkit. В своем роде получился бы свой directx написанный на питухоне и интеграция с нейронками была бы проще (даже dlls можно было бы запилить на сверточной нейронке, написанной на том же pytorch)
13:56 до этого момента всё как в тумане)
идея просто замечательная, а как можно сделать так, чтобы часть полигонов, которую не видит пользователь не видел и движок, а именно не прорисовывал ее. мне кажется это поможет оптимизировать сам движок, потому что сейчас даже если отвернуться от модели, то она все равно считывается и рисуется
То что нужно, То что нужно, То что нужно, То что нужно, То что нужно.
Чел, это просто АХ**ННО!
Тот самый случай, когда еле пишешь задания в code wars и говориш, что ты программист, а зашёл сюда и отпала челюсть
Standalone Coder Я смотрел твоё видео по созданию 3D игры на дум похожую и хотел бы узнать, а где ты брал все эти пушки с сайта или откуда, если с сайта скинь ссылку пж!
ссылки, к сожалению не осталось, но их можно найти по запросу "doom hd sprites pack", как-то так...
@@StandaloneCoder Спасибо тебе большое!!!!!!!!!