2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Математические основы 3D-графики
Сообщение26.07.2024, 18:17 


23/11/15
45
Сабж.
Книги, сайты...

зы Вы не подумайте.
Я не собираюсь писать свой движек. :)
Я хочу разобраться, как это работает.
С самых азов.

 Профиль  
                  
 
 Re: Математические основы 3D-графики
Сообщение26.07.2024, 18:26 


10/03/16
4444
Aeroport
torsar в сообщении #1647448 писал(а):
Вы не подумайте.
Я не собираюсь писать свой движек.


Здесь не Гамедьев: половина пользователей не знает вообще, что такое движЁк

 Профиль  
                  
 
 Re: Математические основы 3D-графики
Сообщение28.07.2024, 11:56 


15/11/15
1088
torsar в сообщении #1647448 писал(а):
Математические основы 3D-графики

Думается, основы 3D-графики и, например, модель трехмерной фигуры не является чисто математическими, они привязаны к конкретному программному обеспечению или платформе, есть разница в представлении и реализации. OpenGL оперируют одними понятиями, WebGL немножко другими, Blender еще какими-то, пусть и имеющими много общего. Поэтому нужно выбрать ПО и вперед ).
________________________________
Хотя основа может и единая. Трехмерная фигура (примитив) - это набор вершин, граней (полигонов), и нормалей. Полигон - это набор вершин, обычно трех. Нормали (которые часто, но не всегда - обычные нормали), нужны для учета освещения. Для установки цветов или текстур, а также особых эффектов (вода), пишутся директивы для видеокарты - шейдеры.

 Профиль  
                  
 
 Re: Математические основы 3D-графики
Сообщение06.08.2024, 14:34 
Аватара пользователя


07/02/12
1440
Питер
Гордон, Курс начертательной геометрии.
Страуструп, С++
Direct3D 11 или OpenGL 4 или WebGL 2

 Профиль  
                  
 
 Re: Математические основы 3D-графики
Сообщение06.08.2024, 16:15 
Аватара пользователя


07/02/12
1440
Питер
До поколения Direct3D 11 графика развивалась в сторону роста количества расширений, что б покрыть растущие требования разработчиков. Расширения опционально поддерживались видеокартами, а 3D-движки смотрели имеющийся арсенал и пытались с ним работать - их сложность росла в ширину. D3D11 API сильно упростили, мандаторно передав разработчикам обязанность самим считать координаты полигонов и цвета пикселей. Заодно отправив в мусорку тонны теперь уже ненужной информации и кучу веток в 3D-движках.

Координаты вершин полигонов на проекциях и в исходных текстурах всегда вручную считаются маленькими функциями - vertex-шейдерами (в самом простом случае вся функция - это умножение суммарной матрицы линейных преобразований 4x4 на 3d-вектор - координату вершины в объекте), цвет пикселей всегда вручную считается маленькими функциями - pixel/sample-шейдерами (в самом простом случае функция просто берет значение из текстуры). Из текстур цвета вытаскиваются встроенными семплерами с готовой интерполяцией. В текстуры пиксели подмешиваются встроенными блендерами с готовыми режимами объединения. Ну и еще есть Z-буфер и Stencil-буфер для отсечений. Отрисованные текстуры можно использовать как исходные. Экран - финальная отрисованная текстура. Порог входа - достаточно низкий, а предоставляемые возможности - огромные.

OpenGL 4 и WebGL 2 - с этой точки зрения принципиально приблизительно то же самое, что и D3D11.

А вот Direct3D 12 и Vulkan - еще более низкоуровневые API, но не в математическую сторону графики, а в сторону ручного программирования конвейеров видеокарты, что значительно увеличивает порог входа. С поправкой, что параллельно в них появился ray-tracing, совершенно другой способ отрисовки 3D-графики, нежели полигональный рендеринг (это совпадение, ray-tracing мог появиться и раньше, просто мощности видеокарт до него как раз доросли). Это вам пока не нужно.

Разберитесь с понятием проекций из начертательной геометрии, как пересчитывать трехмерные координаты объектов в двухмерные координаты их проекций на экране с помощью линейной алгебры. Дальше, умея программировать на C, и имея достаточное воображение, с помощью D3D11 вы сами вручную сможете рисовать достаточно богатую 3D-графику без изучения тонны полезной и не очень полезной литературы.

 Профиль  
                  
 
 Re: Математические основы 3D-графики
Сообщение30.12.2024, 02:55 
Заслуженный участник


31/12/15
954
Если рисовать уже умеете, почитайте какой-нибудь ликбез по проективной геометрии (попробуйте сначала по этой книжке)
https://elib.kstu.kz/fulltext/Skan/aleksandrov_p_s__kurs_analiticheskoi_geometrii_i_lineinoi_al.pdf
И про барицентрические координаты (есть популярное изложение в одной из глав в книге Фрейденталь "Математика в науке и вокруг нас"), чтоб понять, как работает видеокарта. Если мы рисуем шарик, мы его триангулируем (приближаем многогранником с треугольными гранями). Если мы хотим нарисовать глобус, надо наложить на этот шарик картинку карты полушарий (текстуру). Для каждой вершины каждого треугольника мы вычисляем соответствующую точку на картинке (тут простая тригонометрия) и весь массив координат вершин треугольников и соответствующих им координат точек текстуры отправляем на видеокарту рисовать. И видеокарта сама вычисляет для каждой точки любого треугольника (не только вершины, а каждой) координаты соответствующей точки текстуры. С помощью барицентрических координат. Делать эти вычисления можно одновременно (параллельно) для многих треугольников сразу, что и делает видеокарта (представляющая собой набор многих маленьких процессоров-ядер, способных работать параллельно). Если же вдруг рисовать ещё не умеете, найдите на Habr курс OpenGl.

 Профиль  
                  
 
 Re: Математические основы 3D-графики
Сообщение09.01.2025, 20:27 
Аватара пользователя


12/10/16
654
Almaty, Kazakhstan
Раньше из математики в 3D графике использовали кватернионы, сейчас используют ли ... не знаю.

 Профиль  
                  
 
 Re: Математические основы 3D-графики
Сообщение10.01.2025, 01:05 
Заслуженный участник
Аватара пользователя


26/01/14
4891
Боресков. Программирование компьютерной графики

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group