Лекция 1. Введение. Расчёт матриц камеры и проекции

  Рет қаралды 28,380

Computer Science Center

Computer Science Center

Күн бұрын

Пікірлер: 62
@bekzhan356
@bekzhan356 6 жыл бұрын
лектор объясняет современным молодежным языком! Круто
@firiasu
@firiasu 3 жыл бұрын
Денис Александрович всё по полочкам разложил, не сравнить с тем, что я в интернете находил.
@surenbabayan3549
@surenbabayan3549 2 жыл бұрын
Курс отличный. Огромная работа. Много интересного. У меня тоже было такое "Kурс по изучению методов проецирования трёхмерных объектов на картинную плоскость C#. Часть 1", так что я понимаю какое это огромное дело и знания.
@DrollerTroller
@DrollerTroller 2 жыл бұрын
Спасибо.
@aleksanderaksenov1363
@aleksanderaksenov1363 6 жыл бұрын
Самый адекватный и полезный курс из русскоязычных, оставьте этого же лектора и расширьте курс)
@voronow3
@voronow3 5 жыл бұрын
Там следующая лекция про Direct X. Значит про OpenGL нету? Нужно дальше искать?
@andrewvsk2368
@andrewvsk2368 5 жыл бұрын
@@voronow3 вообще это даже странно, учитывая что OpenGL - стандарт (ранняя версия даже в российских ГОСТах есть), а DirectX - проприетарная поделка Microsoft, не говоря что под мобилки Андроид ещё долго будет актуален OpenGL ES. С другой стороны DirectX 11 и Modern OpenGL по своему принципу мало чем отличаются. То есть теория примерно одинаковая. Лично я кстати вообще не одобряю изучение компьютерной графики совместно с библиотеками. Для понимания лучше написать собственный PBR визуализатор на CPU (неэффективный, тормознутый, но выдающий норм картинку с самопальным растеризатором, это даёт гораздо больше реального понимания как это работает). OpenGL дофига всего берёт на себя (имея при этом свои особенности, скажем OpenGL любит mipmap'ы и без них работает хреново (а почему так, можно легко понять хорошо разбираясь в теории). Лекции можно посмотреть, но изучать рациональнее OpenGL и затем Vulkan (намного сложнее (!) с нуля не надо точно). Однако зная OpenGL и Vulkan можно портнуть графику почти на любое устройство в мире, разве что Apple традиционно плюёт на стандарты.
@voronow3
@voronow3 5 жыл бұрын
@@andrewvsk2368 Спасибо за ценную информацию. Я давно присматриваюсь к OpenGL ES в рамках проекта настольных приложений под Qt и на встраиваемой электронике. Про термин PBR ничего не знаю. Можете, акромя гугления порекомендовать материалы для просвящения?
@AbsurdStudioNEW
@AbsurdStudioNEW 6 жыл бұрын
Полезнейшая лекция!
@НаильШарипов-р3ч
@НаильШарипов-р3ч 2 жыл бұрын
Спасибо. Мне понравилось ваше объяснение, очень доступно
@JohnDoe-lw7yb
@JohnDoe-lw7yb 5 жыл бұрын
Идеальный лектор: - Написали, запустили, не работает? Допишите куда-нибуть минус или поменяйте местами аргументы и будет зашибись! (С) xD
@atlasua2021
@atlasua2021 4 жыл бұрын
Вообще видео полезное кто хочет кодить на OGL. Без понимания матриц и векторов, нет смысла писать качественные 3д игры.
@screamstream1161
@screamstream1161 3 жыл бұрын
качество игры и качество кода это разные вещи
@-________9732
@-________9732 Жыл бұрын
(копипаста из статьи на Дзене) "Если мы возьмем квадратный плоский полигон и изменим расположение одной точки, он перестанет быть плоским и выйдет из так называемой полигонной сетки. Из-за этой фичи, нужно проводить дополнительные вычисления, чтобы проверить плоский ли полигон или нет. Треугольники от этого не страдают, так как какую точку не перемести, треугольный полигон останется плоским. Профит."
@Лжеученый_Юра
@Лжеученый_Юра 6 ай бұрын
при этом 3d моделеры стараются избегать в своих моделях треугольников, только четырёхугольники.
@aviator1472
@aviator1472 2 ай бұрын
@@Лжеученый_Юра которые потом все равно бьються на треугольники
@АлександрДзюба-й9к
@АлександрДзюба-й9к 6 жыл бұрын
как часто добавляются лекции ? курс ведь давно прошел и отснят, как я понимаю ?
@CompscicenterRu
@CompscicenterRu 6 жыл бұрын
В ближайшие дни мы добавим все лекции курса.
@Shineglow
@Shineglow 10 ай бұрын
Объясните, пожалуйста, как при выведении b у нас получается FN/(F-N), а не -FN/(F-N), ведь при решении уравнения aN + b = 0, перенос aN инвертирует знак. Тогда получается, что b = -aN.a нам уже известна: F/(F-N). При подстановке должно получится -FN/(F-N). Подскажите, что я неправильно понял?
@Shineglow
@Shineglow 10 ай бұрын
Можно не отвечать, такой вопрос уже был)
@sierikov
@sierikov 6 жыл бұрын
Треугольники же вроде потому что минимальное количество точек, через которое можно провести плоскость, а больше точек незачем хранить
@DrollerTroller
@DrollerTroller 6 жыл бұрын
В 70-80 годы было очень много работ по растеризации чего угодно: кривые Безье, кривые и поверхности второго порядка, всякие NURBS, массивы вокселей и пр. То есть, мотивация "минимальное количество точек, через которое можно провести плоскость" - это не мотивация. И как это "незачем больше точек хранить"? Ещё как есть зачем. Мы же не 1 треугольник на сцене рисуем? Рисуем поверхности, а их нужно составлять из множества треугольников. И тут уже совсем не очевидно, что сетка треугольников, к примеру, в памяти займёт меньше места, чем какой-нибудь набор поверхностей 2-го порядка. Опять же к примеру, для двумерного случая нам нужно всего 4 точки для представления кубической кривой Безье. Да, это в два раза больше, чем для представления отрезка. Ну и что? Зато объект получился гладкий. Сколько вам надо отрезков что б петлю изобразить? Причём, аффинное преобразование кривой Безье не сложнее отрезка - нужно контрольные точки преобразовать. Но это мы коснулись лишь вопроса объёма памяти. Факторов сильно больше: текстурирование, нахождение пересечений, сглаживание и пр. Любопытно, что в первых версиях OpenGL даже был API для работы с NURBS. Поэтому я бы не считал вопрос "а почему треугольники" столь однозначным.
@yuriytheone
@yuriytheone 5 жыл бұрын
Треугольники - это элементарно... Только 3 точки задают гарантированно плоскость. Соответственно однозначно определяется нормаль.
@DrollerTroller
@DrollerTroller 4 жыл бұрын
Я продублирую комментарий, который уже оставлял раньше на эту тему. В 70-80 годы было очень много работ по растеризации чего угодно: кривые Безье, кривые и поверхности второго порядка, всякие NURBS, массивы вокселей и пр. То есть, мотивация «только 3 точки задают гарантированно плоскость» - это не мотивация. Мы же не плоскости рисуем? Рисуем поверхности, а их нужно составлять из множества треугольников. Или вообще не треугольников. Давайте подумаем про память. Совсем не очевидно, что сетка треугольников в памяти займёт меньше места, чем какой-нибудь набор поверхностей 2-го порядка. Опять же, к примеру, для двумерного случая нам нужно всего 4 точки для представления кубической кривой Безье. Да, это в два раза больше, чем для представления отрезка. Ну и что? Зато объект получился гладкий. Сколько вам надо отрезков что б петлю изобразить? Причём, аффинное преобразование кривой Безье не сложнее отрезка - нужно контрольные точки преобразовать. Опять же вы говорите про нормаль. Нормаль «однозначно определяется» к бесконечному кол-ву классов поверхностей. Но это мы коснулись лишь вопроса объёма памяти. Факторов сильно больше: текстурирование, нахождение пересечений, сглаживание и пр. Любопытно, что в первых версиях OpenGL даже был API для работы с NURBS. Поэтому я бы не считал вопрос «а почему треугольники» столь однозначным.
@aleksanderaksionau8555
@aleksanderaksionau8555 6 жыл бұрын
Матрица соответствует эндоморфизму кольца в себя же,или же как билинейное отображение
@КириллСудоплатов-ь1л
@КириллСудоплатов-ь1л 6 жыл бұрын
Игорь Линк фигни не скажет
@ruSSkyiHH88
@ruSSkyiHH88 5 ай бұрын
Хахаа легенда
@Ruslan__Ishmuratov
@Ruslan__Ishmuratov 5 жыл бұрын
Всегда хотел понять высшую математику и аналити́ческаю геоме́трию, в школе был отличник , в ВУЗе с первого дня матана пошло не понимание , так и в этой лекции . Ну как так то ? :( . Может кто курс посоветует доходчивый ?
@Ruslan__Ishmuratov
@Ruslan__Ishmuratov 5 жыл бұрын
Сергей Зинченко спасибо ,посмотрю
@СергейЗинченко-т2к
@СергейЗинченко-т2к 5 жыл бұрын
@@Ruslan__Ishmuratov есть ещё документ лекций по линейной алгебре
@Raspi8
@Raspi8 Жыл бұрын
Треугольник наверно потому, что 3 точки однозначно обозначают плоскость. Соответственно для плоскости и считают нормали, для расчета освещения, и т. д.
@DrollerTroller
@DrollerTroller 7 ай бұрын
Я в других комментариях уже подробно отвечал. Поэтому кратко: нормально можно посчитать, хоть к треугольнику, хоть к поверхности второго порядка, хоть к множеству, заданному неявно. А 4 точки однозначно задают, к примеру, кривую безье. А две точки - прямую. И что? Все эти рассуждения никак не отвечают на вопрос, почему исторически «победила» именно растеризация треугольников в железе.
@aviator1472
@aviator1472 2 ай бұрын
​@@DrollerTrollerмогу хрень сказать, но треугольник однозначно задаёт плоскость и это важно потому что плоскость это основа стереометрии как точка и прямая?
@Делакруа́-ы9щ
@Делакруа́-ы9щ Жыл бұрын
а как же GLSL и программирование шейдеров, что то я не понимаю, как писать графику на C++, самому с нуля написать растеризатор или трассировщик лучей, так уже все ж написано - OpenGL или Vulkan. О чем вообще эти лекции?
@ruSSkyiHH88
@ruSSkyiHH88 3 ай бұрын
Да, все с нуля, про это и курс. Про «все уже написано» вам не сюда. Лучше ищите курс про программирование конкретно шейдеров, если вам это интересно, тут больше вышмат основа
@МихаилАлтунин-у6е
@МихаилАлтунин-у6е 6 жыл бұрын
Прошу прощения, есть ли возможность где-нибудь посмотреть текст практических заданий?
@CompscicenterRu
@CompscicenterRu 6 жыл бұрын
Можно поискать на сайте курса compscicenter.ru/courses/3d-graphics/nsk/2017-autumn/
@LOKSLEKSUS
@LOKSLEKSUS 4 жыл бұрын
Будет ли этот курс читаться снова?
@DrollerTroller
@DrollerTroller 4 жыл бұрын
Нет.
@КучеренкоЄгорАндрійович
@КучеренкоЄгорАндрійович 5 жыл бұрын
т.к треугольник -единственная замкнутая фигура с минимальным количеством вершин. Круг не подходит -т.к круг - это по-определению - бесконечное множество точек - равноудаленных от данной и из этого определения нельзя явно понять минимальное количество точек для того что бы круг стал кругом, а не скругленным многоугольником.
@yuriytheone
@yuriytheone 5 жыл бұрын
Нет! Треугольник потому, что только 3 точки гарантированно задают плоскость, соответственно однозначно просто рассчитать нормаль...
@DenisShaver
@DenisShaver 4 жыл бұрын
Из множества кругов очень сложно построить треугольник, из множества треугольников построить круг легко. Само собой, в приближённом виде, достаточным для достоверного отображения на дискретной сетке монитора.
@JohnWickMovie
@JohnWickMovie 6 жыл бұрын
Пересчитал коэффицент b. Получился b = - (F*N)/(F-N). Я сделал как вы сказали что берем формулу f(z) = (a*z + b)/(z) и f(N) = 0; f(F) = 1. Ваше доказательство вырезано, поэтому возможно что я что-то упустил
@DrollerTroller
@DrollerTroller 6 жыл бұрын
Да, я на доске минус потерял где-то по дороге :) У вас правильно получилось вывести. В своё оправдание скажу, что преподаватели всё-таки не роботы и тоже иногда ошибаются ;) Причём это для студентов, с некоторой точки зрения, полезно: им приходится тщательнее прорабатывать материал и уже не выйдет просто так зазубрить и забыть после экзамена. Придётся реально разбираться в текстах. Но, в целом, конечно, лучше б лекторы всё правильно и без ошибок давали. Занятный случай на эту тему был у меня, когда сам в универе учился. Припёрлись мы как-то на досрочный экзамен по матанализу. И лектор там выдал: «У меня в лекциях в некоторых местах допущены ошибки. Ваша задача - найти их, объяснить, что там не так и исправить доказательство». Каждому досталось по две таких теоремы, сидели закуривали собственные же конспекты несколько часов %) Один человек из, по-моему, пяти пошёл сдавать обычный экзамен. Такие дела =) А вам уважуха за внимательность.
@ИльдарБулатов-т4х
@ИльдарБулатов-т4х 2 жыл бұрын
@@DrollerTroller там он ещё одну ошибку допустил когда складывал вектора
@Бендер-Задунайский
@Бендер-Задунайский Жыл бұрын
Зашел узнать почему используется f(z) = (a*z + b)/(z) и именно эта часть лекции вырезана, ну что ж за провал то. Может кто знает где можно эту информацию почерпнуть?
@bekzhan356
@bekzhan356 6 жыл бұрын
а VR на этих принципах создают?
@DrollerTroller
@DrollerTroller 5 жыл бұрын
Да, но там много своей специфики.
@JohnWickMovie
@JohnWickMovie 6 жыл бұрын
Непонятно с отсекателем. Нам надо нарисовать треугольник, если одна вершина за областью видимости, а другая нет. Тогда что?
@DrollerTroller
@DrollerTroller 6 жыл бұрын
В теории, тут можно действовать по-разному. Можно честно "отсечь" часть треугольника рамкой экрана (прямоугольником) после проецирования, разбить на треугольники получившееся и растеризовать. Можно уже в процессе растеризации сбрасывать с конвейера пиксели за границей экрана. Но в этих способах есть одна проблема - перспективное деление для вершин, оказавшихся за ближней плоскостью отсечения. Там, потенциально, мы можем и на ноль поделить. Поэтому, обычно, отсечение делается в 3D ещё до перспективного деления. Этот функционал полностью реализован на видеокарте и какие-то рычаги управления для него мне неизвестны. Разве что, в DX12 есть честный консервативный растеризатор. Но я эту тему особо не бурил.
@JohnWickMovie
@JohnWickMovie 6 жыл бұрын
Спс
@Oxyenium
@Oxyenium 4 жыл бұрын
Лекция супер! Но оператор "от Бога" - не мог показать, чтобы было видно презентацию, в итоге видно обрезанную нижнюю часть.
@Jackson-yr9ih
@Jackson-yr9ih 4 жыл бұрын
Прикольно! Только с 40 минуты стало нифига не понятно. Лаадно, пойду 2д змейку доделаю... ээх
@Kiberbrain
@Kiberbrain 6 жыл бұрын
Воот это полезно будет
@vector_razvitiya
@vector_razvitiya 2 жыл бұрын
когда вспомнил, что у тебя 3/5 по линейной алгебре и ты на 44 минуте уже не вдупляешь...
@dmitryponyatov2158
@dmitryponyatov2158 3 жыл бұрын
на Rustе надо писать а не сиси++
@DrollerTroller
@DrollerTroller 3 жыл бұрын
Есть альтернативное мнение, что надо писать на D. По крайней мере в Remedy (Control, Max Payne, Alan Wake) согласны.
@kovesik
@kovesik 3 жыл бұрын
@@DrollerTroller всех агитирую за D!
@kovesik
@kovesik 3 жыл бұрын
@@DrollerTroller прекрасный язычище
Лекция 2. Вершинный конвейер. Введение в DirectX 11
1:43:45
My scorpion was taken away from me 😢
00:55
TyphoonFast 5
Рет қаралды 2,7 МЛН
Что такое операционная система и как она работает
2:01:08
Пишем свой движок 3D-графики
19:25
Onigiri
Рет қаралды 543 М.
The Math behind (most) 3D games - Perspective Projection
13:20
Brendan Galea
Рет қаралды 429 М.
Похоже, власти готовятся к полному запрету VPN…
12:58
My scorpion was taken away from me 😢
00:55
TyphoonFast 5
Рет қаралды 2,7 МЛН