2014 dxdy logo

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

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




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


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

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

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


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


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

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


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

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

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


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

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


07/02/12
1431
Питер
До поколения 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-графику без изучения тонны полезной и не очень полезной литературы.

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

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



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

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


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

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