Mimocake
Mimocake
  • Видео 12
  • Просмотров 171 459
Как работает 3D графика? | Написал свой 3D движок с нуля
Всем привет! Сегодня я решил рассказать вам о том, как работает 3д графика, и как написать свой небольшой 3д движок с нуля!
Туториал, которым я сам пользовался: ruclips.net/video/ih20l3pJoeU/видео.html
Github: github.com/MimocakeYT/3D-Engine
Заходи в мой телеграм: t.me/mimocaketg
Music:
massobeats - mango tea
massobeats - floral
Last Stop - Karl Casey
На момент загрузки 1776 подписчиков
Эпизоды:
0:00 Интро
0:54 Как все началось
1:51 Как нарисовать 3Д модель?
2:41 Векторы
3:38 Проецирование точки
7:33 Матрицы
10:45 Первое изображение
12:04 Повороты
13:17 Векторное и скалярное произведения
16:23 Освещение
18:04 Управление камерой
21:03 Клиппинг
23:44 Импортирование готовых моделей
27:19 Проблемы движка
29:17 Издев...
Просмотров: 27 528

Видео

АИМБОТ против ТЕСТА НА СКОРОСТЬ РЕАКЦИИ и не только | Human Benchmark
Просмотров 5 тыс.6 месяцев назад
Сегодня я решил сделать программу, которая ставит мировые рекорды на сайте humanbenchmark.com, где собраны различные тесты на скорость, реакцию, память и т.д. А именно Время реакции (Reaction time), Тренировка аима (Aim trainer), Зрительная память (Visual memory), Память последовательностей (Sequence memory) Телеграм: t.me/mimocaketg Rutube для ПАТРИОТОВ: rutube.ru/channel/38701753/ GitHub: git...
Компьютер рисует ИДЕАЛЬНЫЙ круг в игре на NEAL.FUN
Просмотров 5 тыс.6 месяцев назад
В этом видео я решил обыграть игру, где надо нарисовать идеальный круг, с помощью программирования Telegram: t.me/mimocaketg Music: massobeats - gingersweet На момент загрузки 1175 подписчиков #nealfun #python #coding #программирование
Написал НЕПОБЕДИМЫЙ ИИ для Крестиков Ноликов (на C++)
Просмотров 4,6 тыс.9 месяцев назад
В этом видео я решил написать НЕПОБЕДИМЫЙ ИИ для крестиков ноликов. Видео про минимакс: ruclips.net/video/l-hh51ncgDI/видео.html GitHub: github.com/MimocakeYT/TicTacToeAI Заходи в мой телеграм! t.me/mimocaketg Music: ruclips.net/video/Rxae3UZv_zI/видео.html На момент загрузки 726 подписчиков
Всё об указателях в C++ за 20 минут
Просмотров 37 тыс.9 месяцев назад
Сегодня я расскажу о такой важной теме языка С , как указатели. Если это видео вам понравится, то обязательно ставьте лайки и подписывайтесь на канал: вам не сложно, а мне приятно. 90% информации взято из книги Р. Лафоре Телеграм: t.me/mimocaketg #C #указатели #программирование На момент загрузки 604 подписчика
Отрицательная индексация массива в С++ как в Python?
Просмотров 2,7 тыс.Год назад
Сегодня поговорим об отрицательной индексации массива в c как в python Telegram: t.me/mimocaketg #программирование #cpp На момент загрузки ок. 200 подписчиков
ХУДШИЙ ЯЗЫК ПРОГРАММИРОВАНИЯ - Brainf**k | Обзор языка
Просмотров 12 тыс.Год назад
Как вы думаете, какой самый плохой язык программирования? Может JS из-за его странного приведения типов? Или питон из-за его медлительности? Или же С из-за его небезопасности. А что, если я вам скажу, что существуют эзотерические языки программирования, которые были созданы специально, чтобы программисты страдали во время работы с ними. Наверное самым известным таким языком является Brainf k. Н...
ИИ УЧИТСЯ ИГРАТЬ В 2048
Просмотров 4,5 тыс.Год назад
В этом видео я попробовал написать ИИ для популярной игры 2048. GitHub: github.com/Mimocake/AI-learns-to-play-2048 Статья про метод Монте-Карло: habr.com/ru/companies/edison/articles/437118/ #программирование #2048 #искусственныйинтеллект #cpp
Сделал СИМУЛЯТОР ГРАВИТАЦИИ | Программирование C++ / SFML
Просмотров 9 тыс.Год назад
В этом ролике я сделал симулятор гравитации за день на языке программирования C с помощью библиотеки SFML. Полезные ссылочки: SFML: www.sfml-dev.org/ Как я разобрался с SFML: www.sfml-dev.org/tutorials/2.5/ GitHub: github.com/MimocakeYT/GravitationSimulation Ссылки на видео Онигири и foo52ru в закрепленном комментарии #C #программирование #sfml

Комментарии

  • @diam0nddangel336
    @diam0nddangel336 22 часа назад

    Mono шрифты: просто существуют

  • @МиланаФедотова-ж2х

    Почему ты сидишь в моем левом ухе

  • @IIDRAGONBUSTII
    @IIDRAGONBUSTII 10 дней назад

    бро прощу выпускай видосы по чаще особенно про с++ туториалы по типу этого

  • @МуканнаМус
    @МуканнаМус 10 дней назад

    Только левое ухо понял

  • @Antinormanisto
    @Antinormanisto 11 дней назад

    7:25 я ничего не понимаю

  • @NS_Deathman
    @NS_Deathman 12 дней назад

    Ты мог бы проскипать множество совсем низкоуровневых тонкостей, если бы использовал в качестве графического апи DirectX, в нем уже есть готовая векторная и матричная математика, а также есть примеры написания своего движка на каждой версии апи в старом DirectX SDK и в интернете в принципе (К слову SFML не создана для 3д графики, лучше переписать движок на DX, OGL или Vulkan)

  • @Денис-ь8ь7с
    @Денис-ь8ь7с 13 дней назад

    9:05 переменная i размещается на стеке, имеет автоматическое время жизни (для статического размещения нужно добавить ключевое слово static). Еще есть неточность про статическое время жизни и невозможность записи другого значения. Пример - обычная глобальная (не const) переменная.

  • @wesnik329
    @wesnik329 14 дней назад

    Люди я не понял всё понял про ссылки и указатели

  • @HikkiAdvent
    @HikkiAdvent 21 день назад

    Сплагиатил у Айвена Сазерленда

  • @Ilg-games
    @Ilg-games 22 дня назад

    попробуй сделать загрузчик 3d моделей в формате fbx

  • @qwqw-od7ok
    @qwqw-od7ok 24 дня назад

    Попробуйте Malbolge

  • @kikigoyt
    @kikigoyt 24 дня назад

    Ура, наконец-то движок игры на котором потянет мой пк!

  • @nilmdreik
    @nilmdreik 24 дня назад

    А я покакал сегодня

  • @Эдэм22
    @Эдэм22 25 дней назад

    -Ухо

  • @zDEBRY
    @zDEBRY 25 дней назад

    А это… Как ты вычислил все эти примеры

  • @openspace-mj9px
    @openspace-mj9px 25 дней назад

    Племянник вектозавра?

  • @hopa409
    @hopa409 26 дней назад

    оказывается матеша еще как нужна в программировании...

  • @ДавидВиктаиут
    @ДавидВиктаиут 27 дней назад

    На следующий элемент и предыдущий, если я не ошибаюсь. Я про list

  • @Programmirovanie-p1t
    @Programmirovanie-p1t 27 дней назад

    2 канал вектозавра?

  • @dok.Sanger
    @dok.Sanger 29 дней назад

    Капец! мне 40+ и только сейчас я узнаю, а где использовать в жизни синусы, косинусы, матрицы.., которые преподавали в учебных заведениях, и естественно уже ничего не помнишь. Спасибо за видосики ) Большинство (95%) пользователей, открыв в браузере 3Д игрушку на юнити, или в телефончике, даже не подозревают сколько и каких вычислений производит их устроиство что бы бабочка хлопала крылышками

    • @MathPTU
      @MathPTU 20 дней назад

      я тебя шокирую, но в том же анрил энджине вообще адская математика и физика, чтобы добиться настолько реалистичной картинки и физики

  • @king_fox_3106
    @king_fox_3106 29 дней назад

    КОмментаторы, которые пишут про плагиат, дурачки, которые не шарят за программирование. С такой точки зрения игры и все программы, это ВСЕ Плагиат каких то истоков (Надеюсь они с ними не в одной комнате, эти истоки) Те же кнопки, тумблеры, скроллеры, выборы файлов... Те же буквы в коде. Не обращай внимания!

  • @femboy_advance
    @femboy_advance 29 дней назад

    6:41 можно использовать тригонометрические тождества

  • @ЕвгенийСАФОНОВ-ш5к

    Вырос с нуля

  • @mr.mirchick7672
    @mr.mirchick7672 Месяц назад

    Как же весело было делать примерно такой-же движок в mindusrty, без классов, без функций, без многомерных массивов! А какое удовольствие было писать все матричные переходы, мммм!

  • @Jelly_cup
    @Jelly_cup Месяц назад

    Превью здесь это имба

  • @Lermontov21
    @Lermontov21 Месяц назад

    не думал что 1 курс мат. анализа так пригодится)

  • @NickProkhorenko
    @NickProkhorenko Месяц назад

    Рассказать про принцип работы, но не показать поэтапно как всё работает - классика. Никто из новичков не поймёт как на практике достичь твоего результата. Спасибо я могу сказать только лишь тому англоязычному программисту, на чьё видео по созданию 3D движка я однажды как и ты наткнулся, шедевральный человек с умной головой, его гайды - лучшее что есть в ютубе и вообще в интернете.

  • @Gretanit
    @Gretanit Месяц назад

    Он скопировал онигири

  • @thqthq9999
    @thqthq9999 Месяц назад

    шешес

  • @СтепанДнепров
    @СтепанДнепров Месяц назад

    Бро, во-первых sfml не лучшая библиотека для 3d. Используй GLFW + GLEW. Также используй щейдеры на GLSL. Opengl это не конкретная библиотека, а лишь api, к нему есть разные реализации

  • @СтепанДнепров
    @СтепанДнепров Месяц назад

    Не в полной мере раскрыта тема однородных координат (векторов на 4 элемента, где ты просто единичку добавил) Идея заключается в том, что мы ставим 1 если это точка и 0 если это направление, потому что такие операции как перемещение, например нужно применять к точке но не нужно применять к направлению. В случае с растеризацией это может играть роль при работе с нормалями для создания эффектов затенения. Лучше не городить огрод, а использовать готовые матрицы из библиотеки glm

  • @all_cats_are_codders
    @all_cats_are_codders Месяц назад

    Продолжай в том же духе, у тебя отлично получается. В ютубе на русском по с++ мало кто снимает, Winderton и еще пару, но ты делаешь лучше их в плане визуализации, с такими примерами как этот 2:32, наааа много лучше понять.👍

  • @victorromaniuk
    @victorromaniuk Месяц назад

    Спасибо за видео, классно объяснил👏🏻

  • @Xtonior
    @Xtonior Месяц назад

    Как-то писал свой софтверный рендер на SDL + C, могу скинуть репу если нужно. В целом у тебя получилось намного лучше, у меня же какие-то траблы с растеризацией и попиксельной заливкой SDL, из-за чего фпс падает до пары единиц) Изменено: а ну да, ещё загрузку моделей не делал, только одинокий кубик

  • @СергейСикоренко-р4щ

    Братан, го на Vulkan как и я

  • @SwordMachine_PX214
    @SwordMachine_PX214 Месяц назад

    А Дум уже запускали в консоли🧐

  • @пиздалис
    @пиздалис Месяц назад

    Типичные фанаты онигири: нифига не шарят в коде и технической составляющей как таковой, а сравнивают лишь по обложке

  • @weenaugrad
    @weenaugrad Месяц назад

    музыка в интро: kupla - lavender

  • @SvaytsaLaytback-q1b
    @SvaytsaLaytback-q1b Месяц назад

    Блин, здесь если на x2 смотреть непонятно ничего(

  • @RenyaTheShroom
    @RenyaTheShroom Месяц назад

    ты моооооооооооооощь!!

  • @aikaid1899
    @aikaid1899 Месяц назад

    Здравствуйте, @Mimocake! У меня возник следующий вопрос: в приложении microsoft visual studio я создал проект на с++ с использование библиотеки SFML; как мне скомпилировать данный проект в EXE файл, чтобы он работал на других ПК под управлением Windows.В моем случае, если я переношу этот EXE на другой ПК, то при запуске этого файла на экране выходят множества ошибок типа: не хватает файлов dll для дальнейшей работы...

    • @Maximuser_play
      @Maximuser_play Месяц назад

      Как логичный вариант: попробуй упаковать .exe файл вместе с .dll файлами относящимися к sfml, однако тут надо подумать Изменено: но тип я за c++ не очень шарю

    • @mimocake
      @mimocake Месяц назад

      Тут надо либо линковать библиотеку статически, то есть без dll'ов, либо надо вместе с ехе и dll скопировать в ту же папку. А сами длл можно скачать вместе с библиотекой. Можете в интернете и почитать, как эту библиотеку подключить, там буквально первая статья на хабре хорошая

    • @rubiks7196
      @rubiks7196 Месяц назад

      Почитай про динамическую и статическую линковку библиотек

    • @aikaid1899
      @aikaid1899 Месяц назад

      @@rubiks7196 огромное спасибо!!!

    • @aikaid1899
      @aikaid1899 Месяц назад

      @mimocake огромное спасибо!!!

  • @fuggy42
    @fuggy42 Месяц назад

    О я тоже делал решатель для этой игры. Только я делал на rust и использовал алгоритм минимакс с альфа-бета отсечением. Без этих ваших новомодных нейросетей. Я тоже придумал делать слияние к одной стороне, только использовал лево. Ведь тогда операция делится на элементарные транспонирование матрицы, отзеркаливание и сталкивания массива из 4 всегда влево. Тогда можно обойтись только комбинацией из 2х операций, а не несколькими последовательными поворотами. А таких комбинаций массивов ограниченное количество и их тоже можно закешировать. Ещё одной особенностью является то что все числа представляют собой степени двойки, а значит можно хранить не сами числа, а только их степени, что позволяет в один int64 положить всю позицию доски. Ты про это я так вижу ничего не упомянул. Зачем мучаться с графикой, если можно было написать просто на ncurses в консоли. Хотя было весело послушать твои приключения. Я хотел написать идеальный алгоритм, а не стохастический монте-карло. Дальше я так понял у тебя возникли трудности с evaluation функцией. Так нужно подобрать правильные коэффициенты для монотонности, максимального счёта, максимальной плитки и других факторов. Я подобрал на глаз и оно не плохо справлялось, доходило до 8 и 16 тысяч уже сейчас не помню точно, но зависит от рандома иногда и до 1 не доходит. Но проблема в том что граф растёт очень быстро. Может занимать несколько гигабайт даже не не очень глубоких полуходах. И в один поток, потому что минимакс плохо параллелится. На каждый рандомный ход это может быть до 30 ветвлений, если учитывать все двойки и четвёрки. Поэтому без альфа-бета отсечения память ПК кончается очень быстро. И тут даже не особо помогает оптимизация хранения доски в видел int64. Потом, так как позиции бывают повторяются, я ещё хотел сделать LRU Cache и даже сравнить какой лучше подходит FIFO или LIFO. Чтобы хранить в нём вычисленные значения функции и не пересчитывать заново. Дальше я хотел подобрать параметры используя генетический алгоритм для поиска градиентного спуска. Так же запускать несколько игр, находить лучшие их скрещивать и мутировать их коэффициенты. Но это уже не дописал, так как сначала были другие дела, а потом уже и забыл. По всему этому даже хотел написать статью на хабр. Но я подзабросил на этапе с генетическим алгоритмом и поэтому не стал делать. Так как не люблю не причёсанный код показывать. Но первая версия с постоянным коэффициентом есть на гитхабе.

  • @dvl0per
    @dvl0per Месяц назад

    9:58 матрицы используют для ускорения расчетов. Тригонометрические функции sin , cos, tg и т.д вычисляются на порядок медленнее, чем сложение с умножением, поэтому с помощью тригонометрии один раз вычисляется матрица трансформации, а потом она умножается на вектора любого нужного количества точек. Умножение вектора на матрицу - это всего лишь десяток умножений и сложений, что вычисляется очень быстро. А на современных GPU такие операции еще и можно делать одновременно для нескольких точек.

    • @weenaugrad
      @weenaugrad Месяц назад

      прекарсное объяснение применения на практике

    • @H1tARun
      @H1tARun 27 дней назад

      А реально ли как-то выкинуть 4 измерение в матричном умножении?

  • @fuggy42
    @fuggy42 Месяц назад

    Почему не понятно, всё же понятно. Особенно когда добавить переносы строк. Машина Тьюринга, а поверх можно написать код чтобы там были и переменные и функции. А поверх построить любой язык программирования. Я видел это язык даже реально применяют, один известный любитель который сам создал свой компьютер на электромагнитных реле. Да и у тебя вышел интерпретатор, а не компилятор.

  • @fuggy42
    @fuggy42 Месяц назад

    То что сортировка граней в чайнике глючит может потому что нужно для сортировки использовать центр треугольника или в сортировку попадают треугольники которые надо скрыть из-за нормали больше 90. Может попробовать сделать отрисовку и векторную математику на OpenGL или даже лучше Vulkan для скорости. Ведь мы из всей библиотеки я так понял используем только функции отрисовки линий и полигонов. Так же вот эти деления, нормализации и пропорции выглядят страшно их бы как-нибудь в функции вынести из основного кода. Ещё одна особенность движка, это то что предметы на границе поле зрения вытягиваются. Да это всё точно верно по векторным проекциям, но человеческий глаз видит не так. Там нужно делать какую-то поправку на это, я видел в другом видео. Иначе, например, забор из панелей вытянутый вдоль горизонта будет выпуклый, хотя все линии в нём прямые. То есть получается вроде эффекта камеры рыбьего глаза. То же интересно понять математику этой поправки.

  • @Alemorf
    @Alemorf Месяц назад

    Я таким баловался, когда читал книгу Е.В.Шикин, А.В.Боресков. Компьютерная графика. Динамика, реалистические изображения. Там даже ray-tracing есть.

  • @rudisilva7247
    @rudisilva7247 Месяц назад

    Брат, контент пушка, но ты хотя бы музыку поменяй, а то у вас одинаковые с онигири)

    • @mimocake
      @mimocake Месяц назад

      это так было задумано))

  • @BadCoub
    @BadCoub Месяц назад

    Очень круто, ждем движок на DirectX))

  • @brosigor
    @brosigor Месяц назад

    По OpenGL мне очень помог плейлист одного американца на Ютубе- Jamie King 3D Computer Graphics Using OpenGL. Несмотря на английский (можно включить автоперевод) очень доступно и понятно. И OpеnGL рассматривается версии > 3, что уже похоже на современное программирование графики.

    • @mimocake
      @mimocake Месяц назад

      спасибо за рекомендации. Я еще начинал смотреть плейлист The Cherno, но забил потом, у него тоже все понятно, и еще на сайте learnopengl много инфы есть.

    • @brosigor
      @brosigor Месяц назад

      @mimocake Тут немного другое. Он бубнит, рычит, иногда что-то невнятно и колоритно рассказывает, но.... Прям при тебе все рисует, на уровне первого класса показывает. Как-то зашло )))

  • @АлександраКомарова-х1н

    Всё-таки использование для решения дифференциальных уравнений метода Эйлера первого порядка будет давать не самый точный результат. Лучше использовать хотя бы метод второго порядка, также известный как метод средней точки. Или использовать альтернативные способы повышения точности, вроде метода прыгающей лягушки.