ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 26.10.2023
Просмотров: 53
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Муниципальное автономное общеобразовательное учреждение
«Светлинская средняя общеобразовательная школа № 2»
Светлинского района, п. Светлый
«3D Моделирование »
Выполнил:
Колдаев Н.С
учащийся 10 класса
Руководитель:
Куратор:
Цепкова Е.И
Учитель химии
Введение
Глава 1: Теория
-
История 3D графики -
Основоположники -
Виды 3D графики
Воксельная графика
Полигональная графика
-
Применение
В науке
В кинематографе
В играх
Глава 2: Практика
История
Первую кафедру компьютерной графики, в Университете Юты, открыли в 1960-х годах Айван Сазерленд и Дэвид Эванс. Сазерленд создал программу, которая являлась прообразом всех современных 3D-редакторов и CAD-систем — Sketchpad. На кафедре Сазерленда и Эванса работали такие люди, как Джим Блинн (создатель многих алгоритмов текстурирования), Би Тюн Фонг и Анри Гуро, которые также приложили руку к развитию алгоритмов затенения и текстурирования (Phong shading и Gouraud shading). Студентом Сазерленда также был Эд Катмулл — впоследствии технический директор и президент Pixar Animation Studios, кинокомпании, которая подарила нам «Историю игрушек», первый полнометражный анимационный фильм, созданный в трехмерных редакторах и программах трехмерной анимации. Его сборы по миру превысили 380 миллионов долларов, его триквел стал первым анимационным фильмом, собравшим в мировом прокате более миллиарда долларов, а про славу, которую этот мультфильм принес компании Pixar, даже говорить не нужно.
Но «История игрушек» вышла на экраны в 1995 году, а премьера первого фильма с использованием отдельных элементов трехмерной графики (Futureworld) состоялась еще в 1976-м. В то же время создавались первые программы 3D-моделирования, первые алгоритмы трассировки лучей для рендеринга трехмерной сцены и активно развивался полигональный метод моделирования трехмерных объектов, который сейчас является основным.
В середине 1980-х появились первые стандарты и адаптеры для обработки двумерной графики — MGA, CGA, EGA. Сейчас это кажется странным, но в начале 1980-х палитра в 16 цветов была пределом мечтаний для любителей компьютерной графики, да и из этой палитры можно было одновременно использовать только 4 цвета для вывода изображения. А разрешения экранов вообще измерялись не пикселями, как сейчас, а строками, так как в то время еще не стояла остро задача выводить изображения на дисплей.
Но время шло, на смену видеоадаптерам пришли комбинации в виде адаптера и 3D-ускорителя, отвечающего исключительно за обработку трехмерных объектов, потом эти разные по классу устройства объединились в одно — видеокарту, обрабатывающую сразу и 2D-, и 3D-графику. К классическим обработчикам графической информации добавились специальные обработчики шейдеров — микропрограмм, которые сейчас отвечают за обработку большинства довольно сложных визуальных эффектов (бликов, дыма, отражений).
В 1998 году частоты, на которых работала память видеокарты, были в сто раз меньше, чем сейчас; объем памяти за это время вырос практически в тысячу раз. Про производительность даже говорить не приходится — видеокарты конца 90-х не могут решить и малой доли задач, которые современные видеокарты выполняют сотни раз в секунду.
Но в основе этого прогресса, да и самой идеи передачи трехмерного изображения, лежат научные открытия, сделанные даже не десятки, а сотни и тысячи лет назад. Без геометрии и функций невозможно задать поверхность в пространстве, без описания поверхности невозможно создать ее представление в компьютерной графике с помощью кривых, полигонов или вокселей. Все открытия, которые были сделаны в математике до XX века, так или иначе являются базисом современной трехмерной графики.
Создататели пространства
Евклид нам известен больше как основоположник «евклидовой геометрии», но мало кто понимает, что аксиомы, которые он ввел в своем 13-томном собрании «Начала», были многократно доработаны и формализованы, прежде чем дошли до наших дней. Однако его трактат является одним из первых действительно систематизированных собраний аксиом и теорем в области математики и геометрии.
Все (ну или почти все) знают про формулы Виета для нахождения корней квадратичного уравнения, однако многим ли известно, что именно он положил начало символьному анализу в алгебре, в результате чего все мы сейчас обозначаем неизвестные как x, y или z, а коэффициенты — как a, b, c? Без его трудов ни одна формула, отражающая функцию в трехмерном пространстве, не выглядела бы так, как она выглядит сейчас.
А что же Декарт? Из школьных учебников мы помним про декартово произведение и декартову систему координат, однако нам забывают объяснить, что свои открытия этот человек делал во времена инквизиции. Решиться на то, чтобы опубликовать труды по аналитической геометрии, когда «наградой» за научное открытие могло стать аутодафе, требовало немалого мужества. Именно исследования Декарта стали решающим шагом в переходе к понятию «функция», а без «функции» не существовало бы современной математики, программирования и многих других областей.
Спустя десятилетия после Декарта в математике наступила эпоха Эйлера. Он положил начало топологии, написал первый учебник по аналитической геометрии и основам дифференциальной геометрии. Кстати, Густав Эйлер почти полжизни прожил в России, был здесь избран академиком и даже похоронен в Санкт-Петербурге.
В истории 3D-графики не обошлось и без других российских ученых. Так, в начале XX века в России жили Борис Делоне и Георгий Вороной. Первый предложил метод триангуляции, который стал основой для создания современных методов разбиения поверхности трехмерных объектов на так называемые полигоны. Второй создал «диаграмму Вороного», которая тесно связана с триангуляцией Делоне. Прошло сто лет, а математическая составляющая этой диаграммы и сейчас применяется в анализе данных при кластеризации объектов.
Виды
-
Воксельная графика
Мы уже знаем, что в растровой графике изображение формируется с помощью всего трёх параметров пикселя – его координаты по оси X, координаты по оси Y и его цвет. Векторная визуализация оперирует исключительно строками программного кода, которые описывают тот или иной графический объект. 3D – это нечто среднее между вектором и растром, поскольку на трёхмерные объекты, которые описаны в коде, накладывается растровая текстура.
Как бы странно это не звучало, воксельная графика – это обычный растр в трёхмерном пространстве, только к стандартным для растра параметрам цвета и координатам осей X и Y здесь прибавляют ещё и ось Z, то есть глубину. Так же как и пиксель в 2D графике был той минимальной единицей из массы которых строилось изображение, воксель – это самая мелкая единица объёмного изображения.
Наверняка вы сразу вспомнили про Minсraft, как идеальный пример для понимания воксельной графики. С одной стороны всё верно – Майнкрафт дейтвительно служит отличной иллюстрацией принципов работы вокселей, но с другой стороны – это, на самом деле, самое обычное 3D с трёхмерными моделями и текстурами, которое лишь пародирует воксельную графику.
Зачем оно?
Как я уже упоминал, воксельная графика не очень-то популярна. Связанно это с её негибкостью и повышенными аппетитами до аппаратных мощностей при попытке создать что-то более-менее реалистичное. Тем не менее, сильные стороны у вокселей тоже имеются.
Если говорить про компьютерные игры, то главное достоинство воксельной технологии – это её податливость к точечным изменениям. Так как воксель сам по себе является, условно говоря, тем кирпичиком, из которого строится некий объёмный объект, то изъять этот кирпичик из общей массы будет гораздо проще, чем пытаться деформировать цельный 3D объект. Короче говоря, разрушаемость в играх на вокселях делать очень просто и приятно.
Воксельную графику используют в медицине. Все эти ваши томографии, МРТ и УЗИ визуализируют именно в вокселях.
Полигональная графика
Полигональная сетка (жарг. меш от англ. polygon mesh) — это совокупность вершин, рёбер и граней, которые определяют форму многогранного объекта в трёхмерной компьютерной графике и объёмном моделировании. Гранями обычно являются треугольники, четырёхугольники или другие простые выпуклые многоугольники (полигоны), так как это упрощает рендеринг, но сетки могут также состоять и из наиболее общих вогнутых многоугольников, или многоугольников с отверстиями.
Учение о полигональных сетках — это большой подраздел компьютерной графики и геометрического моделирования. Множество операций, проводимых над сетками, может включать булеву алгебру, сглаживание, упрощение и многие другие. Разные представления полигональных сеток используются для разных целей и приложений. Для передачи полигональных сеток по сети используются сетевые представления, такие как «потоковые» и «прогрессивные» сетки. Объёмные сетки отличаются от полигональных тем, что они явно представляют и поверхность и объём структуры, тогда как полигональные сетки явно представляют лишь поверхность, а не объём. Так как полигональные сетки широко используются в компьютерной графике, для них разработаны алгоритмы трассировки лучей, обнаружения столкновений и динамики твёрдых тел.
Объекты, созданные с помощью полигональных сеток, должны хранить разные типы элементов, такие как вершины, рёбра, грани, полигоны и поверхности. Во многих случаях хранятся лишь вершины, рёбра и либо грани, либо полигоны. Рендерер может поддерживать лишь трёхсторонние грани, так что полигоны должны быть построены из их множества, как показано на рис. 1. Однако многие рендереры поддерживают полигоны с четырьмя и более сторонами, или умеют триангулировать полигоны в треугольники на лету, делая необязательным хранение сетки в триангулированной форме. Также в некоторых случаях, таких как моделирование головы, желательно уметь создавать и трёх- и четырёхсторонние полигоны.
Вершина — это позиция вместе с другой информацией, такой как цвет, нормальный вектор и координаты текстуры. Ребро — это соединение между двумя вершинами. Грань — это замкнутое множество рёбер, в котором треугольная грань имеет три ребра, а четырёхугольная — четыре. Полигон — это набор компланарных (лежащих в одной плоскости) граней. В системах, которые поддерживают многосторонние грани, полигоны и грани равнозначны. Однако, большинство аппаратного обеспечения для рендеринга поддерживает
лишь грани с тремя или четырьмя сторонам, так что полигоны представлены как множество граней. Математически, полигональная сетка может быть представлена в виде неструктурированной сетки, или неориентированного графа, с добавлением свойств геометрии, формы и топологии.
Поверхности, чаще называемые группами сглаживания, полезны, но не обязательны для группирования гладких областей. Представьте себе цилиндр с крышками, такой как жестяная банка. Для гладкого затенения сторон, все нормали должны указывать горизонтально от центра, тогда как нормали крышек должны указывать в +/-(0,0,1) направлениях. Если рендерить как единую, затенённую по Фонгу поверхность, вершины складок имели бы неправильные нормали. Поэтому, нужен способ определения где прекращать сглаживание для того, чтобы группировать гладкие части сетки, также, как полигоны группируют трёхсторонние грани. Как альтернатива предоставлению поверхностей/групп сглаживания, сетка может содержать другую информацию для расчёта тех же данных, такая как разделяющий угол (полигоны с нормалями выше этого предела либо автоматически рассматриваются как отдельные группы сглаживания, либо по отношению к ребру между ними применяется какая-либо техника, как например разделение или скашивание). Также, полигональные сетки с очень высоким разрешением менее подвержены проблемам, для решения которых требуются группы сглаживания, так как их полигоны настолько малы, что нужда в них пропадает. Кроме того, альтернатива существует в возможности просто отсоединения самих поверхностей от оставшейся части сетки. Рендереры не пытаются сглаживать рёбра между несмежными полигонами.
Формат полигональной сетки может определять и другие полезные данные. Могут быть определены группы, которые задают отдельные элементы сетки и полезны для установления отдельных подобъектов для скелетной анимации или отдельных субъектов нескелетной анимации. Обычно определяются материалы, позволяя разным частям сетки использовать разные шейдеры при рендере. Большинство форматов сетки также предполагают UV координаты, которые являются отдельным двухмерным представлением полигональной сетки, «развёрнутым» чтобы показать какая часть двумерной текстуры применяется к разным полигонам сетки.