лектор объясняет современным молодежным языком! Круто
@firiasu3 жыл бұрын
Денис Александрович всё по полочкам разложил, не сравнить с тем, что я в интернете находил.
@surenbabayan35492 жыл бұрын
Курс отличный. Огромная работа. Много интересного. У меня тоже было такое "Kурс по изучению методов проецирования трёхмерных объектов на картинную плоскость C#. Часть 1", так что я понимаю какое это огромное дело и знания.
@DrollerTroller2 жыл бұрын
Спасибо.
@aleksanderaksenov13636 жыл бұрын
Самый адекватный и полезный курс из русскоязычных, оставьте этого же лектора и расширьте курс)
@voronow35 жыл бұрын
Там следующая лекция про Direct X. Значит про OpenGL нету? Нужно дальше искать?
@andrewvsk23685 жыл бұрын
@@voronow3 вообще это даже странно, учитывая что OpenGL - стандарт (ранняя версия даже в российских ГОСТах есть), а DirectX - проприетарная поделка Microsoft, не говоря что под мобилки Андроид ещё долго будет актуален OpenGL ES. С другой стороны DirectX 11 и Modern OpenGL по своему принципу мало чем отличаются. То есть теория примерно одинаковая. Лично я кстати вообще не одобряю изучение компьютерной графики совместно с библиотеками. Для понимания лучше написать собственный PBR визуализатор на CPU (неэффективный, тормознутый, но выдающий норм картинку с самопальным растеризатором, это даёт гораздо больше реального понимания как это работает). OpenGL дофига всего берёт на себя (имея при этом свои особенности, скажем OpenGL любит mipmap'ы и без них работает хреново (а почему так, можно легко понять хорошо разбираясь в теории). Лекции можно посмотреть, но изучать рациональнее OpenGL и затем Vulkan (намного сложнее (!) с нуля не надо точно). Однако зная OpenGL и Vulkan можно портнуть графику почти на любое устройство в мире, разве что Apple традиционно плюёт на стандарты.
@voronow35 жыл бұрын
@@andrewvsk2368 Спасибо за ценную информацию. Я давно присматриваюсь к OpenGL ES в рамках проекта настольных приложений под Qt и на встраиваемой электронике. Про термин PBR ничего не знаю. Можете, акромя гугления порекомендовать материалы для просвящения?
@AbsurdStudioNEW6 жыл бұрын
Полезнейшая лекция!
@НаильШарипов-р3ч2 жыл бұрын
Спасибо. Мне понравилось ваше объяснение, очень доступно
@JohnDoe-lw7yb5 жыл бұрын
Идеальный лектор: - Написали, запустили, не работает? Допишите куда-нибуть минус или поменяйте местами аргументы и будет зашибись! (С) xD
@atlasua20214 жыл бұрын
Вообще видео полезное кто хочет кодить на OGL. Без понимания матриц и векторов, нет смысла писать качественные 3д игры.
@screamstream11613 жыл бұрын
качество игры и качество кода это разные вещи
@-________9732 Жыл бұрын
(копипаста из статьи на Дзене) "Если мы возьмем квадратный плоский полигон и изменим расположение одной точки, он перестанет быть плоским и выйдет из так называемой полигонной сетки. Из-за этой фичи, нужно проводить дополнительные вычисления, чтобы проверить плоский ли полигон или нет. Треугольники от этого не страдают, так как какую точку не перемести, треугольный полигон останется плоским. Профит."
@Лжеученый_Юра6 ай бұрын
при этом 3d моделеры стараются избегать в своих моделях треугольников, только четырёхугольники.
@aviator14722 ай бұрын
@@Лжеученый_Юра которые потом все равно бьються на треугольники
@АлександрДзюба-й9к6 жыл бұрын
как часто добавляются лекции ? курс ведь давно прошел и отснят, как я понимаю ?
@CompscicenterRu6 жыл бұрын
В ближайшие дни мы добавим все лекции курса.
@Shineglow10 ай бұрын
Объясните, пожалуйста, как при выведении b у нас получается FN/(F-N), а не -FN/(F-N), ведь при решении уравнения aN + b = 0, перенос aN инвертирует знак. Тогда получается, что b = -aN.a нам уже известна: F/(F-N). При подстановке должно получится -FN/(F-N). Подскажите, что я неправильно понял?
@Shineglow10 ай бұрын
Можно не отвечать, такой вопрос уже был)
@sierikov6 жыл бұрын
Треугольники же вроде потому что минимальное количество точек, через которое можно провести плоскость, а больше точек незачем хранить
@DrollerTroller6 жыл бұрын
В 70-80 годы было очень много работ по растеризации чего угодно: кривые Безье, кривые и поверхности второго порядка, всякие NURBS, массивы вокселей и пр. То есть, мотивация "минимальное количество точек, через которое можно провести плоскость" - это не мотивация. И как это "незачем больше точек хранить"? Ещё как есть зачем. Мы же не 1 треугольник на сцене рисуем? Рисуем поверхности, а их нужно составлять из множества треугольников. И тут уже совсем не очевидно, что сетка треугольников, к примеру, в памяти займёт меньше места, чем какой-нибудь набор поверхностей 2-го порядка. Опять же к примеру, для двумерного случая нам нужно всего 4 точки для представления кубической кривой Безье. Да, это в два раза больше, чем для представления отрезка. Ну и что? Зато объект получился гладкий. Сколько вам надо отрезков что б петлю изобразить? Причём, аффинное преобразование кривой Безье не сложнее отрезка - нужно контрольные точки преобразовать. Но это мы коснулись лишь вопроса объёма памяти. Факторов сильно больше: текстурирование, нахождение пересечений, сглаживание и пр. Любопытно, что в первых версиях OpenGL даже был API для работы с NURBS. Поэтому я бы не считал вопрос "а почему треугольники" столь однозначным.
@yuriytheone5 жыл бұрын
Треугольники - это элементарно... Только 3 точки задают гарантированно плоскость. Соответственно однозначно определяется нормаль.
@DrollerTroller4 жыл бұрын
Я продублирую комментарий, который уже оставлял раньше на эту тему. В 70-80 годы было очень много работ по растеризации чего угодно: кривые Безье, кривые и поверхности второго порядка, всякие NURBS, массивы вокселей и пр. То есть, мотивация «только 3 точки задают гарантированно плоскость» - это не мотивация. Мы же не плоскости рисуем? Рисуем поверхности, а их нужно составлять из множества треугольников. Или вообще не треугольников. Давайте подумаем про память. Совсем не очевидно, что сетка треугольников в памяти займёт меньше места, чем какой-нибудь набор поверхностей 2-го порядка. Опять же, к примеру, для двумерного случая нам нужно всего 4 точки для представления кубической кривой Безье. Да, это в два раза больше, чем для представления отрезка. Ну и что? Зато объект получился гладкий. Сколько вам надо отрезков что б петлю изобразить? Причём, аффинное преобразование кривой Безье не сложнее отрезка - нужно контрольные точки преобразовать. Опять же вы говорите про нормаль. Нормаль «однозначно определяется» к бесконечному кол-ву классов поверхностей. Но это мы коснулись лишь вопроса объёма памяти. Факторов сильно больше: текстурирование, нахождение пересечений, сглаживание и пр. Любопытно, что в первых версиях OpenGL даже был API для работы с NURBS. Поэтому я бы не считал вопрос «а почему треугольники» столь однозначным.
@aleksanderaksionau85556 жыл бұрын
Матрица соответствует эндоморфизму кольца в себя же,или же как билинейное отображение
@КириллСудоплатов-ь1л6 жыл бұрын
Игорь Линк фигни не скажет
@ruSSkyiHH885 ай бұрын
Хахаа легенда
@Ruslan__Ishmuratov5 жыл бұрын
Всегда хотел понять высшую математику и аналити́ческаю геоме́трию, в школе был отличник , в ВУЗе с первого дня матана пошло не понимание , так и в этой лекции . Ну как так то ? :( . Может кто курс посоветует доходчивый ?
@Ruslan__Ishmuratov5 жыл бұрын
Сергей Зинченко спасибо ,посмотрю
@СергейЗинченко-т2к5 жыл бұрын
@@Ruslan__Ishmuratov есть ещё документ лекций по линейной алгебре
@Raspi8 Жыл бұрын
Треугольник наверно потому, что 3 точки однозначно обозначают плоскость. Соответственно для плоскости и считают нормали, для расчета освещения, и т. д.
@DrollerTroller7 ай бұрын
Я в других комментариях уже подробно отвечал. Поэтому кратко: нормально можно посчитать, хоть к треугольнику, хоть к поверхности второго порядка, хоть к множеству, заданному неявно. А 4 точки однозначно задают, к примеру, кривую безье. А две точки - прямую. И что? Все эти рассуждения никак не отвечают на вопрос, почему исторически «победила» именно растеризация треугольников в железе.
@aviator14722 ай бұрын
@@DrollerTrollerмогу хрень сказать, но треугольник однозначно задаёт плоскость и это важно потому что плоскость это основа стереометрии как точка и прямая?
@Делакруа́-ы9щ Жыл бұрын
а как же GLSL и программирование шейдеров, что то я не понимаю, как писать графику на C++, самому с нуля написать растеризатор или трассировщик лучей, так уже все ж написано - OpenGL или Vulkan. О чем вообще эти лекции?
@ruSSkyiHH883 ай бұрын
Да, все с нуля, про это и курс. Про «все уже написано» вам не сюда. Лучше ищите курс про программирование конкретно шейдеров, если вам это интересно, тут больше вышмат основа
@МихаилАлтунин-у6е6 жыл бұрын
Прошу прощения, есть ли возможность где-нибудь посмотреть текст практических заданий?
@CompscicenterRu6 жыл бұрын
Можно поискать на сайте курса compscicenter.ru/courses/3d-graphics/nsk/2017-autumn/
@LOKSLEKSUS4 жыл бұрын
Будет ли этот курс читаться снова?
@DrollerTroller4 жыл бұрын
Нет.
@КучеренкоЄгорАндрійович5 жыл бұрын
т.к треугольник -единственная замкнутая фигура с минимальным количеством вершин. Круг не подходит -т.к круг - это по-определению - бесконечное множество точек - равноудаленных от данной и из этого определения нельзя явно понять минимальное количество точек для того что бы круг стал кругом, а не скругленным многоугольником.
@yuriytheone5 жыл бұрын
Нет! Треугольник потому, что только 3 точки гарантированно задают плоскость, соответственно однозначно просто рассчитать нормаль...
@DenisShaver4 жыл бұрын
Из множества кругов очень сложно построить треугольник, из множества треугольников построить круг легко. Само собой, в приближённом виде, достаточным для достоверного отображения на дискретной сетке монитора.
@JohnWickMovie6 жыл бұрын
Пересчитал коэффицент b. Получился b = - (F*N)/(F-N). Я сделал как вы сказали что берем формулу f(z) = (a*z + b)/(z) и f(N) = 0; f(F) = 1. Ваше доказательство вырезано, поэтому возможно что я что-то упустил
@DrollerTroller6 жыл бұрын
Да, я на доске минус потерял где-то по дороге :) У вас правильно получилось вывести. В своё оправдание скажу, что преподаватели всё-таки не роботы и тоже иногда ошибаются ;) Причём это для студентов, с некоторой точки зрения, полезно: им приходится тщательнее прорабатывать материал и уже не выйдет просто так зазубрить и забыть после экзамена. Придётся реально разбираться в текстах. Но, в целом, конечно, лучше б лекторы всё правильно и без ошибок давали. Занятный случай на эту тему был у меня, когда сам в универе учился. Припёрлись мы как-то на досрочный экзамен по матанализу. И лектор там выдал: «У меня в лекциях в некоторых местах допущены ошибки. Ваша задача - найти их, объяснить, что там не так и исправить доказательство». Каждому досталось по две таких теоремы, сидели закуривали собственные же конспекты несколько часов %) Один человек из, по-моему, пяти пошёл сдавать обычный экзамен. Такие дела =) А вам уважуха за внимательность.
@ИльдарБулатов-т4х2 жыл бұрын
@@DrollerTroller там он ещё одну ошибку допустил когда складывал вектора
@Бендер-Задунайский Жыл бұрын
Зашел узнать почему используется f(z) = (a*z + b)/(z) и именно эта часть лекции вырезана, ну что ж за провал то. Может кто знает где можно эту информацию почерпнуть?
@bekzhan3566 жыл бұрын
а VR на этих принципах создают?
@DrollerTroller5 жыл бұрын
Да, но там много своей специфики.
@JohnWickMovie6 жыл бұрын
Непонятно с отсекателем. Нам надо нарисовать треугольник, если одна вершина за областью видимости, а другая нет. Тогда что?
@DrollerTroller6 жыл бұрын
В теории, тут можно действовать по-разному. Можно честно "отсечь" часть треугольника рамкой экрана (прямоугольником) после проецирования, разбить на треугольники получившееся и растеризовать. Можно уже в процессе растеризации сбрасывать с конвейера пиксели за границей экрана. Но в этих способах есть одна проблема - перспективное деление для вершин, оказавшихся за ближней плоскостью отсечения. Там, потенциально, мы можем и на ноль поделить. Поэтому, обычно, отсечение делается в 3D ещё до перспективного деления. Этот функционал полностью реализован на видеокарте и какие-то рычаги управления для него мне неизвестны. Разве что, в DX12 есть честный консервативный растеризатор. Но я эту тему особо не бурил.
@JohnWickMovie6 жыл бұрын
Спс
@Oxyenium4 жыл бұрын
Лекция супер! Но оператор "от Бога" - не мог показать, чтобы было видно презентацию, в итоге видно обрезанную нижнюю часть.
@Jackson-yr9ih4 жыл бұрын
Прикольно! Только с 40 минуты стало нифига не понятно. Лаадно, пойду 2д змейку доделаю... ээх
@Kiberbrain6 жыл бұрын
Воот это полезно будет
@vector_razvitiya2 жыл бұрын
когда вспомнил, что у тебя 3/5 по линейной алгебре и ты на 44 минуте уже не вдупляешь...
@dmitryponyatov21583 жыл бұрын
на Rustе надо писать а не сиси++
@DrollerTroller3 жыл бұрын
Есть альтернативное мнение, что надо писать на D. По крайней мере в Remedy (Control, Max Payne, Alan Wake) согласны.