Разное

3 д графика – Трёхмерная графика — Википедия

Содержание

3D графика. Теория

Мы все играли в Quake (если вы не играли в Quake, поиграйте, пожалуйста, при первой же возможности). Многие из нас играли в него на каком-либо ускорителе трехмерной графики. Некоторые, поиграв или понаблюдав за играющими, решили купить этот самый "ускоритель", подвергая себя мучительному интеллектуальному труду, который хорошо знаком современному жителю крупного города: поиску товара по устраивающей его цене, и обладающего при этом оптимальными для него характеристиками. В большинстве случаев именно этот процесс способен неожиданно расширить познания человека в области, рассматриваемой им ранее лишь с потребительской точки зрения. Избежать такие проблемы я сейчас и попытаюсь помочь.

3D-конвейер

Большинство игр, а также множество более серьезных приложений следуют довольно стандартной схеме построения трехмерных изображений (далее мы будем называть этот процесс конвейером). Причем некоторые программы реализуют все стадии этого конвейера, некоторые же перекладывают часть работы на плечи аппаратных устройств, специальных библиотек программ (API), другие программы или даже на пользователя. Итак, конвейер состоит из следующих стадий:

  1. Определение состояния объектов (Situation modeling) — эта часть программы не имеет прямого отношения к компьютерной графике, она моделирует тот мир, который будет отображаться в дальнейшем. Например в случае Quake это — правила игры и физические законы перемещения игрока, искусственный интеллект монстров и т.д.
  2. Определение соответствующих текущему состоянию геометрических моделей (Geometry generation) — эта часть конвейера создает геометрическое представление текущего момента нашего маленького "виртуального мира".
  3. Разбиение геометрических моделей на примитивы (Tesselation) — эта первая действительно зависимая от "железа" стадия. На ней создается внешний вид объектов в виде набора определенных примитивов, разумеется, на основе информации из предыдущего шага конвейера. Наиболее распространенным примитивом в наше время является треугольник, и большинство современных программ и ускорителей работают именно с треугольниками. Не вдаваясь в математические подробности скажу, что на треугольники всегда можно разбить любой плоский многоугольник, и именно тремя точками можно однозначно задать плоскость в пространстве. К тому же, все мы знаем, что у Царя было три сына, а у Горыныча — три головы.
  4. Привязка текстур и освещения (Texture and light definition) — на этой стадии определяется, как будут освещены геометрические примитивы (треугольники), а также какие и как на них в дальнейшем будут наложены текстуры (Textures: изображения, передающие внешний вид материала объекта, т.е. негеометрическую визуальную информацию. Хороший пример текстуры — песок на абсолютно ровном пляже). Как правило, на этой стадии информация вычисляется только для вершин примитива.
  5. Видовые геометрические преобразования (Projection) — здесь определяются новые координаты для всех вершин примитивов исходя из положения наблюдателя и направления его взгляда. Сцена как бы проецируется на поверхность монитора, превращаясь в двухмерную, хотя информация о расстоянии от наблюдателя до вершин сохраняется для последующей обработки.
  6. Отбрасывание невидимых примитивов (Culling) — на этой стадии из списка примитивов исключаются полностью невидимые (оставшиеся позади или сбоку от зоны видимости).
  7. Установка примитивов (Setup) — здесь информация о примитивах (координаты вершин, наложение текстур, освещение и т.д.) преобразуется в вид, пригодный для последующей стадии. (Например: координаты точек буфера экрана или текстур — в целые числа фиксированного размера, с которыми работает аппаратура).
  8. Закраска примитивов (Fill) — на этой стадии, собственно, и происходит построение в буфере кадра (памяти, отведенной под результирующее изображение) картинки на основе информации о примитивах, сформированной предыдущей стадией конвейера, и прочих данных. Таких, как текстуры, таблицы тумана и прозрачности и пр. Как правило, на этой стадии для каждой точки закрашиваемого примитива определяется ее видимость, например, с помощью буфера глубин (Z-буфера) и, если она не заслонена более близкой к наблюдателю точкой (другого примитива), вычисляется ее цвет. Цвет определяется на основе информации об освещении и наложении текстур, определенной ранее для вершин этого примитива. Большинство характеристик ускорителя, которые можно почерпнуть из его описания, относятся именно к этой стадии, так как в основном именно эту стадию конвейера ускоряют аппаратно (в случае недорогих и доступных плат).
  9. Финальная обработка
    (Post processing) — обработка всей результирующей картинки как единого целого какими-либо двумерными эффектами.

Теоретически мы подковались, теперь попробуем разобраться, как все обстоит на самом деле. Во-первых, некоторые стадии этого конвейера могут быть переставлены местами, разбиты на части или совмещены. Во-вторых, они могут отсутствовать вообще (редко) или могут появится новые (часто). И, в-третьих, результат работы каждой из них может быть послан (в обход других стадий) обратно. Например, картинку, полученную на последней стадии, можно использовать как новую текстуру для 8-ой, реализуя таким образом эффект отражающих поверхностей (зеркал). Таких, как мраморный пол в игре Unreal.

3D API

Хорошо, теперь у нас есть последовательность действий. Но для получения результата надо определится с двумя вещами — кто какие стадии будет выполнять и как он это будет делать. У нас есть три основных кандидата на работу — сама программа (как правило, начальные стадии конвейера), библиотека прикладного программирования (интерфейс, API) и сам ускоритель. Впрочем, программы, не использующие ускоритель (Doom, Quake в программном режиме и т.д.), все стадии конвейера выполняют самостоятельно. В понятие библиотеки в данном контексте можно (без особого зазрения совести) поместить драйвера данного ускорителя, т.к., с точки зрения программы, они становятся частью библиотеки. Программ и ускорителей существует великое множество, а вот число общепризнанных библиотек весьма ограничено. Наиболее часто игры используют следующие библиотеки

  • OpenGL — созданная первоначально для профессиональных графических станций и программ трехмерного моделирования библиотека. Постепенно она пришла на платформу PC, в основном благодаря стремительному прогрессу в области "железа" и игре Quake, использовавшей урезанный вариант этой библиотеки. Наличие поддержки этой библиотеки у ускорителя крайне желательно из-за большого числа новых игр, ориентированных на нее. Библиотека является в некотором роде высокоуровневой, так как берет на себя все действия, начиная с середины 4-ой ступени нашего конвейера. С одной стороны, это здорово облегчает работу программистам, с другой — способно несколько осложнить ее же, особенно при реализации нестандартных эффектов или необходимости использовать новые возможности ускорителя, выходящие за рамки OpenGL. Хороший пример полезности подобного подхода — возможность выпустить версию OpenGL, значительно ускоряющую (конкретно — геометрические преобразования) работу игр на новых процессорах с SIMD наборами команд — AMD 3Dnow! и Intel Katmai New Instructions (MMX2). Очевидным достоинством также является переносимость программ на другие, не Wintel-платформы. Существенным, но быстро исправляемым недостатком — отсутствие ее полного варианта для некоторых распространенных ускорителей.
  • Direct3D — библиотека, являющаяся частью Microsoft DirectX и поддерживаемая сейчас практически всеми ускорителями. Фактически представляет собой две библиотеки — низкоуровневую (начиная с 7 стадии) и высокоуровневую (с 5-ой). Результат — большая гибкость для программиста в реализации его идей и, как следствие, головная боль для него же из-за множества связанных с конкретной реализацией ускорителя параметров. Сейчас идет бурное развитие этого продукта Microsoft, и, судя по всему, версия 6 Direct3D (которая уже официально вышла) будет вполне достойным конкурентом OpenGL по своим возможностям и скорости.
  • Glide — собственная низкоуровневая библиотека (стадия 7 конвейера и далее) фирмы 3Dfx, добившаяся популярности благодаря большому распространению первых, действительно успешных ускорителей (на базе набора чипов Voodoo). Но, скорее всего, эта библиотека уйдет со сцены в ближайшие несколько лет. Она не поддерживается другими ускорителями и не будет ими поддерживаться (без разрешения 3Dfx это является незаконным), к тому же все новые игры, рассчитанные на нее, работают, как минимум, еще с одной из ранее описанных библиотек. Создатели неприятного исключения из этого правила (а именно, игры Unreal) уже анонсировали дополнение к игре с поддержкой Direct3D и OpenGL.

Еще существует около 10 библиотек низкого уровня, созданных разработчиками различных ускорителей; таких как: R-Redline фирмы Rendition, S3D Toolkit фирмы S3 и т.д. Как и следовало ожидать, программы, написанные специально для них, постепенно исчезают.

Хотя большинство современных ускорителей берут на себя лишь две-три последние стадии конвейера, существует важное и быстро прогрессирующие исключение из этого правила: появились первые доступные чипы с поддержкой геометрических преобразований, способные значительно увеличить скорость построения изображения на компьютерах с недостаточной вычислительной мощностью (а она, мощность, недостаточна по определению — иначе не было бы потребности в ускорителях вообще).

3D акселерация

Итак, самый общий ускоритель состоит из геометрического процессора (Geometry Processor, пока практически всегда отсутствует), механизма установки (Setup engine, стадия 7 конвейера) и механизма отрисовки примитивов — закраски (Fill engine, стадии 8 и 9), который при детальном рассмотрении оказывается комбинацией двух блоков — обработки текстур (Texel engine) и обработки буфера кадра (Pixel engine). Производительность ускорителя зависит от процессора, производительности памяти, шины и самих обрабатывающих блоков. Как правило, приводятся два числа — максимальная пропускная способность (треугольников в секунду, triangle throughput) и максимальная производительность закраски (точек в секунду, fill rate). Такой подход возможен, но не очень корректен. Да и все мы знаем, что лучшим тестом является скорость игры, в которую мы любим играть (fps, кадров в секунду на каком-то стандартном наборе действий) и качество изображения (в цифрах не измерить). Именно эти параметры и необходимо узнать в первую очередь в Internet или, может быть, у соседа в подъезде, но не стоит при этом забывать о сильной зависимости числа кадров от объема памяти и мощности процессора компьютера этого самого соседа.

Если не вдаваться в глубокие технические подробности, закраска происходит следующим образом: блок обработки буфера кадра определяет, видна ли закрашиваемая точка, например, с помощью буфера глубин (Z Buffer). Если она видна, блок обработки текстур вычисляет цвет текстуры, соответствующий этой точке примитива. Здесь есть несколько важных моментов — интерполяция (filtering, сглаживание) и выбор уровня текстуры (mip-mapping). Первый обеспечивает изображение без резких прямоугольных пикселей, даже когда вы находитесь вблизи предмета и разрешение текстуры явно недостаточное. Второй устраняет искажения (странные узоры), возникающие при чрезмерном удалении от текстуры, выбирая аналог текстуры с меньшим разрешением. Фактически, существует несколько режимов комбинирования этих двух методов. Сейчас наиболее распространены билинейная фильтрация (bilinear filtering — вначале определяется необходимая для этого расстояния текстура, а затем значение цвета линейно интерполируется между четырьмя соседними точками текстуры, по каждой из координат на поверхности выбранной текстуры) и трилинейная (trilinear — две билинейных для двух текстур, с меньшим и большим разрешениями, затем результат интерполируется между ними). Последняя выглядит более приятно, но и требует больших затрат, так как не реализуется за один такт на современных ускорителях с одним блоком обработки текстур и, в результате, вдвое понижает скорость закраски. Сейчас появились первые ускорители с анизотропной (anisotropic — внутри куба, из двух наборов по 4 соседних точки текстур, итого по 8 точкам) фильтрацией, которая выглядит совсем хорошо, но и занимает еще вдвое больше времени. Затем вычисленный с помощью одного из вышеописанных методов цвет текстуры помещается в буфер кадра, заменяя находившееся там ранее значение, либо комбинируется с ним по какому-либо правилу (combination, blending, alpha-blending). Как минимум, ускоритель должен поддерживать режимы Источник*Приемник (Src*Dest) и Источник+Приемник (Src+Dest). Подобные возможности позволяют реализовать цветное освещение, эффекты типа металла или отражения, реализовывать трилинейную фильтрацию там, где она не поддерживается аппаратно и т.д. (так называемое многопроходное построение изображения, multipass rendering).

Как правило, для каждой точки текстуры, кроме RGB цвета, можно задать степень ее прозрачности (alpha, RGBA формат текстуры), которая будет использоваться ускорителем для регулирования воздействия источника на приемник. Подобным образом закрашиваются, например, полупрозрачные по краям взрывы и ореолы вокруг источников света в Unreal.

Не является жизненно необходимой, но очень ускоряет работу программ, использующих многопроходное построение изображения (например, Quake2 или Unreal), возможность мультитекстурирования (multitexturing). Фактически, это наличие двух (или даже более) блоков обработки текстур, способных одновременно вычислять два цвета по двум текстурам для одной точки примитива, а затем комбинировать их между собою. Подобной возможностью обладает Vоodoo2, RivaTNT и еще несколько пока "недоделанных" чипов.

Важны также точность представления цветов (16 бит — Hi-Color или 32 бита — True-Color, последний гораздо лучше) и точность буфера глубин (Z-Buffer, 16 бит хуже, 24 и 32 лучше), используемого для определения видимости отдельных точек примитива. Ошибки в определении глубины способны приводить к странным эффектам, например, к проглядывающим сквозь постамент ногам статуи в игре Unreal.

И последнее действие блока обработки буфера кадра — наложениие глобальных эффектов на готовую картинку. Например, туман, дымка или темнота (с точки зрения ускорителя это одно и то же), т.е. эффект, известный как fogging. Или используемый в RivaZX метод полноэкранного сглаживания (full screen antialiasing), когда изображение рассчитывается с большим разрешением, чем показывается пользователю, причем соседние точки изображения суммируются, и именно суммарное значение демонстрируется пользователю как одна точка. Подобным образом устраняются резкие границы между полигонами, изображению придается приятный "монолитный" вид. Существует также краевое сглаживание примитивов, приводящее к практически идентичному (чуть хуже) результату (edge antialiasing), но требующее гораздо меньше затрат на построение изображения.

Резюме

Займемся подведением итогов. Хороший ускоритель на ближайшее будущее это:

  • Поддержка OpenGL и Direct3D 5.X и 6.0
  • Достаточно большой fill rate (около 100 миллионов точек в секунду)
  • Достаточно большой triangle throughput (около 1 миллиона треугольников в секунду)
  • Аппаратная трилинейная фильтрация (tri-linear filtering)
  • Режимы alpha-blending, Src*Dest, Src+Dest
  • Хорошая глубина цвета — True-Color 32 бита
  • Хорошая точность Z-Buffer — 32 бита
  • Желателен multitexturing
  • Желательно сглаживание — antialiasing, full screen или edge
  • Достаточное количество памяти — не менее 8 Мб для карты на шине PCI или не менее 4 Мб на шине AGP

И самое главное: приятное для вас изображение и скорость в распространенных играх.

www.ixbt.com

Что такое 3D графика?

Вступление

Вопрос о том, что же является двигателем всей компьютерной индустрии, давно заботит многих пользователей. То ли это фирма Intel, которая, не переставая, выпускает и выпускает новые процессоры. Но кто тогда заставляет их покупать? Может, во всем виноват Microsoft, который непрерывно делает свои окна больше и краше? Да нет, можно ведь довольствоваться старыми версиями программ — тем более спектр их возможностей практически не изменяется. Вывод напрашивается сам собой — во всем виноваты игры. Да, именно игры стремятся все более и более уподобиться реальному миру, создавая его виртуальную копию, хотят все более мощных ресурсов.

Вся история компьютерной графики на PC является тому подтверждением. Вспомните, в начале были тетрисы, диггеры, арканоиды. Вся графика заключалась в перерисовке небольших участков экрана, спрайтов, и нормально работала даже на XT. Но прошли те времена. Взошла звезда симуляторов.

С выходом таких игр, как F19, Formula 1 и т.п., в которых приходилось уже перерисовывать весь экран, предварительно заготавливая его в памяти, всем нам пришлось обзавестись, по крайней мере, 286 процессором. Но прогресс на этом не остановился. Желание уподобить виртуальный мир в игре реальному миру усилилось, и появился Wolf 3D.

Это, можно сказать, первая 3D-игра, в которой был смоделирован какой-никакой, но все же реалистичный мир. Для его реализации пришлось использовать верхнюю (более 640 Кб) память и загнать программу в защищенный режим. Для полноценной игры пришлось установить процессор 80386. Но и мир Wolf 3D страдал недостатками. Хотя стены и были не просто одноцветными прямоугольниками, но для их закраски использовались текстуры с небольшим разрешением, поэтому поверхности смотрелись прилично лишь на расстоянии. Конечно, можно было пойти по пути наращивания разрешения текстур, вспомним, например, DOOM. Тогда нам пришлось снова перейти на более новый процессор и увеличить количество памяти. Правда, все равно, хотя изображение и улучшилось, но ему были присущи все те же недостатки. Да и плоские объекты и монстры — кому это интересно. Тут то и взошла звезда Quake. В этой игре был применен революционный подход — z-буфер, позволивший придать объемность всем объектам. Однако вся игра все равно работала в невысоком разрешении и не отличалась высокой реалистичностью.

Назревало новое аппаратное решение. И решение это оказалось, в общем-то, лежащим на поверхности. Раз пользователи хотят играть в трехмерном виртуальном мире, то процесс его создания (вспомним минуты ожидания, проведенные за 3D Studio перед появлением очередной картинки) надо кардинально ускорить. А раз центральный процессор с этой задачей справляется из рук вон плохо, было принято революционное решение — сделать специализированный.

Тут то и вылез производитель игровых автоматов 3Dfx, сделавший эту сказку былью с помощью своего графического процессора Voodoo. Человечество сделало еще один шаг в виртуальный мир.

А поскольку операционной системы на PC с текстурными окнами, уплывающими назад, в туман, пока нет, и не предвидится, весь аппарат трехмерной графики можно пока применить только к играм, что успешно делает все цивилизованное человечество.

Модель

Для изображения трехмерных объектов на экране монитора требуется проведение серии процессов (обычно называемых конвейером) с последующей трансляцией результата в двумерный вид. Первоначально, объект представляется в виде набора точек, или координат, в трехмерном пространстве. Трехмерная система координат определяется тремя осями: горизонтальной, вертикальной и глубины, обычно называемых, соответственно осями x, y и z. Объектом может быть дом, человек, машина, самолет или целый 3D мир и координаты определяют положение вершин (узловых точек), из которых состоит объект, в пространстве. Соединив вершины объекта линиями, мы получим каркасную модель, называемую так из-за того, что видимыми являются только края поверхностей трехмерного тела. Каркасная модель определяет области, составляющие поверхности объекта, которые могут быть заполнены цветом, текстурами и освещаться лучами света.


Рис. 1: Каркасная модель куба

Даже при таком упрощенном объяснении конвейера 3D графики становится ясно, как много требуется вычислений для прорисовки трехмерного объекта на двумерном экране. Можно представить, насколько увеличивается объем требуемых вычислений над системой координат, если объект движется.


Рис. 2: Модель самолета с закрашенными поверхностями

Роль API

Программируемый интерфейс приложений (API) состоит из функций, управляющих 3D конвейером на программном уровне, но при этом может использовать преимущества аппаратной реализации 3D, в случае наличия этой возможности. Если имеется аппаратный ускоритель, API использует его преимущества, если нет, то API работает с оптимальными настройками, рассчитанными на самые обычные системы. Таким образом, благодаря применению API, любое количество программных средств может поддерживаться любым количеством аппаратных 3D ускорителей.

Для приложений общего и развлекательного направления, существуют следующие API:

  • Microsoft Direct3D
  • Criterion Renderware
  • Argonaut BRender
  • Intel 3DR
Компания Apple продвигает свой собственный интерфейс Rave, созданный на основе их собственного API Quickdraw 3D.

Для профессиональных приложений, работающих под управлением WindowsNT доминирует интерфейс OpenGL. Компания Autodesk, крупнейший производитель инженерных приложений, разработала свой собственный API, называемый Heidi.
Свои API разработали и такие компании, как Intergraph — RenderGL, и 3DFX — GLide.

Существование и доступность 3D интерфейсов, поддерживающих множество графических подсистем и приложений, увеличивает потребность в аппаратных ускорителях трехмерной графике, работающих в режиме реального времени. Развлекательные приложения, главный потребитель и заказчик таких ускорителей, но не стоит забывать и о прфессиональных приложениях для обработки 3D графики, работающих под управлением Windows NT, многие из которых переносятся с высокопроизводительных рабочих станций, типа Silicon Graphics, на PC платформу. Интернет приложения сильно выиграют от невероятной маневренности, интуитивности и гибкости, которые обеспечивает применение трехмерного графического интерфейса. Взаимодействие в World Wide Web будет гораздо проще и удобнее, если будет происходить в трехмерном пространстве.

Графический ускоритель

Рынок графических подсистем до появления понятия малтимедиа был относительно прост в развитии. Важной вехой в развитии был стандарт VGA (Video graphics Array), разработанный компанией IBM в 1987 году, благодаря чему производители видеоадаптеров получили возможность использовать более высокое разрешение (640х480) и большую глубину представления цвета на мониторе компьютера. С ростом популярности ОС Windows, появилась острая потребность в аппаратных ускорителях двумерной графики, чтобы разгрузить центральный процессор системы, вынужденный обрабатывать дополнительные события. Отвлечение CPU на обработку графики существенно влияет на общую производительность GUI (Graphical User Interface) - графического интерфеса пользователя, а так как ОС Windows и приложениям для нее требуется как можно больше ресурсов центрального процессора, обработка графики осуществлялась с более низким приоритетом, т.е. делалась очень медленно. Производители добавили в свои продукты функции обработки двумерной графики, такие, как прорисовка окон при открытии и свертовании, аппаратный курсор, постоянно видимый при перемещении указателя, закраска областей на экране при высокой частоте регенерации изображения. Итак, появился процессор, обеспечивающий ускорение VGA (Accelerated VGA — AVGA), также известный, как Windows или GUI ускоритель, который стал обязательным элементом в современных компьютерах.

Внедрение малтимедиа создало новые проблемы, вызванные добавлением таких компонентов, как звук и цифровое видео к набору двумерных графических функций. Сегодня легко заметить, что многие продукты AVGA поддерживают на аппаратном уровне обработку цифрового видео. Следовательно, если на Вашем мониторе видео проигрывается в окне, размером с почтовую марку — пора установить в Вашей машине малтимедиа ускоритель. Малтимедиа ускоритель (multimedia accelerator) обычно имеет встроенные аппаратные функции, позволяющие масштабировать видеоизображение по осям x и y, а также аппаратно преобразовывать цифровой сигнал в аналоговый, для вывода его на монитор в формате RGB. Некоторые малтимедиа акселлераторы могут также иметь встроенные возможности декомпресси цифрового видео.

Разработчики графических подсистем должны исходить из требований, частично диктуемых размерами компьютерного монитора, частично под влиянием GUI, и частично под влиянием графического процессора. Первичный стандарт VGA с разрешением 640х480 пикселов был адекватен 14" мониторам, наиболее распространенных в то время. Сегодня наиболее предпочтительны мониторы с размером диагонали трубки 17", благодаря возможности выводить изображения с разрешением 1024х768 и более.

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

Игровые двигатели (Games engines)

Первое правило компьютерных игр — нет никаких правил. Традиционно, разработчики игр больше заинтересованы в крутой графике своих программ, чем следованию рекомендаций технарей. Не взирая на то, что в распоряжении разработчиков имеется множество трехмерных API, например — Direct3D, некоторые программисты идут по пути создания собственного 3D игрового интерфейса или двигателя. Собственные игровые двигатели — один из путей для разработчиков добиться невероятной реалистичности изображения, фактически на пределе возможностей графического программирования.

Нет ничего более желанного для разработчика, чем иметь прямой доступ к аппаратным функциям компонентов системы. Несколько известных разработчиков создали свои собственные игровые двигатели, работающие с оптимальным использованием аппаратных ускорителей графики, которые принесли им известность и деньги. Например, двигатели Interplay для Descent II и id Software для Quake, обеспечивают истинную трехмерность действия, используя наполную аппаратные функции 3D, если они доступны.

Графика без компромисов

Разговоры, ведущиеся уже довольно долгое время, о перспективах применения трехмерной графики в таких областях, как развлечения и бизнес, допредела подогрели интерес потенциальных пользователей, на рынке уже появился новый тип продуктов. Эти новые технологические решения, совмещают в себе великолепную поддержку 2D графики, соответствующую сегодняшним требованиям к Windows акселлераторам, аппаратную поддержку функций 3D графики и проигрывают цифровое видео с требуемой частотой смены кадров.
В принципе, эти продукты можно смело отнести к новому поколению графических подсистем, обеспечивающих графику без компромиссов, занимающих достойное место стандартного оборудования в настольных вычислительных системах.
Среди представителей нового поколения можно назвать, в качестве примера, следующие продукты:

  • процессор Ticket-To-Ride компании Number Nine Visual Technologies
  • серия процессоров ViRGE компании S3 Inc.
  • процессор RIVA128, разработанный совместно компаниями SGS Thomson и nVidia

Технология 3D-графики

Пусть нам все-таки удалось убедить Вас попробовать трехмерную графику в действии (если Вы до сих пор не сделали это), и Вы решили сыграть в одну из трехмерных игр, предназначенных для применения 3D-видеокарты.
Допустим, такой игрой оказался симулятор автомобильных гонок, и Ваша машина уже стоит на старте, готовая устремиться к покорению новых рекордов. Идет предстартовый обратный отсчет, и Вы замечаете, что вид из кабины, отображаемый на экране монитора, немного отличается от привычного.
Вы и прежде участвовали в подобных гонках, но впервые изображение поражает Вас исключительным реализмом, заставляя поверить в действительность происходящего. Горизонт, вместе с удаленными объектами, тонет в утренней дымке. Дорога выглядит необычайно ровно, асфальт представляет собой не набор грязно-серых квадратов, а однотонное покрытие с нанесенной дорожной разметкой. Деревья вдоль дороги действительно имеют лиственные кроны, в которых, кажется, можно различить отдельные листья. От всего экрана в целом складывается впечатление как от качественной фотографии с реальной перспективой, а не как от жалкой попытки смоделировать реальность.

Попробуем разобраться, какие же технические решения позволяют 3D-видеокартам передавать виртуальную действительность с такой реалистичностью. Каким образом изобразительным средствам PC удалось достигнуть уровня профессиональных студий, занимающихся трехмерной графикой.

Часть вычислительных операций, связанных с отображением и моделированием трехмерного мира переложено теперь на 3D-акселератор, который является сердцем 3D-видеокарты. Центральный процессор теперь практически не занят вопросами отображения, образ экрана формирует видеокарта. В основе этого процесса лежит реализация на аппаратном уровне ряда эффектов, а также применение несложного математического аппарата. Попробуем разобраться, что же конкретно умеет графический 3D-процессор.

Возвращаясь к нашему примеру с симулятором гонок, задумаемся, каким образом достигается реалистичность отображения поверхностей дороги или зданий, стоящих на обочине. Для этого применяется распространенный метод, называемый текстурирование (texture mapping).
Это самый распространенный эффект для моделирования поверхностей. Например, фасад здания потребовал бы отображения множества граней для моделирования множества кирпичей, окон и дверей. Однако текстура (изображение, накладываемое на всю поверхность сразу) дает больше реализма, но требует меньше вычислительных ресурсов, так как позволяет оперировать со всем фасадом как с единой поверхностью. Перед тем, как поверхности попадают на экран, они текстурируются и затеняются. Все текстуры хранятся в памяти, обычно установленной на видеокарте. Кстати, здесь нельзя не заметить, что применение AGP делает возможным хранение текстур в системной памяти, а ее объем гораздо больше.

Очевидно, что когда поверхности текстурируются, необходим учет перспективы, например, при отображении дороги с разделительной полосой, уходящей за горизонт. Перспективная коррекция необходима для того, чтобы текстурированные объекты выглядели правильно. Она гарантирует, что битмэп правильно наложится на разные части объекта — и те, которые ближе к наблюдателю, и на более далекие.
Коррекция с учетом перспективы очень трудоемкая операция, поэтому нередко можно встретить не совсем верную ее реализацию.

При наложении текстур, в принципе, также можно увидеть швы между двумя ближайшими битмэпами. Или, что бывает чаще, в некоторых играх при изображении дороги или длинных коридоров заметно мерцание во время движения. Для подавления этих трудностей применяется фильтрация (обычно Bi- или tri-линейная).

Билинейная фильтрация — метод устранения искажений изображения. При медленном вращении или движении объекта могут быть заметны перескакивания пикселов с одного места на другое, что и вызывает мерцание. Для снижения этого эффекта при билинейной фильтрации для отображения точки поверхности берется взвешенное среднее четырех смежных текстурных пикселов.

Трилинейная фильтрация несколько сложнее. Для получения каждого пиксела изображения берется взвешенное среднее значение результатов двух уровней билинейной фильтрации. Полученное изображение будет еще более четкое и менее мерцающее.

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

Для того, чтобы избежать непредвиденных изменений, большинство управляющих графикой процессов создают серии предфильтрованных битмэпов текстур с уменьшенным разрешением, этот процесс называется mip mapping. Затем, графическая программа автоматически определяет, какую текстуру использовать, основываясь на деталях изображения, которое уже выведено на экран. Соответственно, если объект уменьшается в размерах, размер его текстурного битмэпа тоже уменьшается.

Но вернемся в наш гоночный автомобиль. Сама дорога уже выглядит реалистично, но проблемы наблюдаются с ее краями! Вспомните, как выглядит линия, проведенная на экране не параллельно его краю. Вот и у нашей дороги появляются "рваные края". И для борьбы с этим недостатком изображения применяется anti-aliasing.

 
Рваные края Ровные края
Это способ обработки (интерполяции) пикселов для получения более четких краев (границ) изображения (объекта). Наиболее часто используемая техника — создание плавного перехода от цвета линии или края к цвету фона. Цвет точки, лежащей на границе объектов определяется как среднее цветов двух граничных точек. Однако в некоторых случаях, побочным эффектом anti-aliasing является смазывание (blurring) краев.

Мы подходим к ключевому моменту функционирования всех 3D-алгоритмов. Предположим, что трек, по которому ездит наша гоночная машина, окружен большим количеством разнообразных объектов — строений, деревьев, людей.
Тут перед 3D-процессором встает главная проблема, как определить, какие из объектов находятся в области видимости, и как они освещены. Причем, знать, что видимо в данный момент, недостаточно. Необходимо иметь информацию и о взаимном расположении объектов. Для решения этой задачи применяется метод, называемый z-буферизация. Это самый надежный метод удаления скрытых поверхностей. В так называемом z-буфере хранятся значения глубины всех пикселей (z-координаты). Когда рассчитывается (рендерится) новый пиксел, его глубина сравнивается со значениями, хранимыми в z-буфере, а конкретнее с глубинами уже срендеренных пикселов с теми же координатами x и y. Если новый пиксел имеет значение глубины больше какого-либо значения в z-буфере, новый пиксел не записывается в буфер для отображения, если меньше — то записывается.

Z-буферизация при аппаратной реализации сильно увеличивает производительность. Тем не менее, z-буфер занимает большие объемы памяти: например даже при разрешении 640x480 24-разрядный z-буфер будет занимать около 900 Кб. Эта память должна быть также установлена на 3D-видеокарте.

Разрешающая способность z-буфера — самый главный его атрибут. Она критична для высококачественного отображения сцен с большой глубиной. Чем выше разрешающая способность, тем выше дискретность z-координат и точнее выполняется рендеринг удаленных объектов. Если при рендеринге разрешающей способности не хватает, то может случиться, что два перекрывающихся объекта получат одну и ту же координату z, в результате аппаратура не будет знать какой объект ближе к наблюдателю, что может вызвать искажение изображения.
Для избежания этих эффектов профессиональные платы имеют 32-разрядный z-буфер и оборудуются большими объемами памяти.

Кроме вышеперечисленных основ, трехмерные графические платы обычно имеют возможность воспроизведения некоторого количества дополнительных функций. Например, если бы Вы на своем гоночном автомобиле въехали бы в песок, то обзор бы затруднился поднявшейся пылью. Для реализации таких и подобных эффектов применяется fogging (затуманивание). Этот эффект образуется за счет комбинирования смешанных компьютерных цветовых пикселов с цветом тумана (fog) под управлением функции, определяющей глубину затуманивания. С помощью этого же алгоритма далеко отстоящие объекты погружаются в дымку, создавая иллюзию расстояния.

Реальный мир состоит из прозрачных, полупрозрачных и непрозрачных объектов. Для учета этого обстоятельства, применяется alpha blending — способ передачи информации о прозрачности полупрозрачных объектов. Эффект полупрозрачности создается путем объединения цвета исходного пиксела с пикселом, уже находящимся в буфере.
В результате цвет точки является комбинацией цветов переднего и заднего плана. Обычно, коэффициент alpha имеет нормализованное значение от 0 до 1 для каждого цветного пиксела. Новый пиксел = (alpha)(цвет пиксела А) + (1 — alpha)(цвет пиксела В).

Очевидно, что для создания реалистичной картины происходящего на экране необходимо частое обновление его содержимого. При формировании каждого следующего кадра, 3D-акселератор проходит весь путь подсчета заново, поэтому он должен обладать немалым быстродействием. Но в 3D-графике применяются и другие методы придания плавности движению. Ключевой — Double Buffering.
Представьте себе старый трюк аниматоров, рисовавших на уголках стопки бумаги персонаж мультика, со слегка изменяемым положением на каждом следующем листе. Пролистав всю стопку, отгибая уголок, мы увидим плавное движение нашего героя. Практически такой же принцип работы имеет и Double Buffering в 3D анимации, т.е. следующее положение персонажа уже нарисовано, до того, как текущая страница будет пролистана. Без применения двойной буферизации изображение не будет иметь требуемой плавности, т.е. будет прерывистым. Для двойной буферизации требуется наличие двух областей, зарезервированных в буфере кадров трехмерной графической платы; обе области должны соответствовать размеру изображения, выводимого на экран. Метод использует два буфера для получения изображения: один для отображения картинки, другой для рендеринга. В то время как отображается содержимое одного буфера, в другом происходит рендеринг. Когда очередной кадр обработан, буфера переключаются (меняются местами). Таким образом, играющий все время видит отличную картинку.

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

Конвейер рендеринга может быть разделен на 2 стадии: геометрическая обработка и растеризация.

На первой стадии геометрической обработки выполняется преобразование координат (вращение, перенос и масштабирование всех объектов), отсечение невидимых частей объектов, расчет освещения, определение цвета каждой вершины с учетом всех световых источников и процесс деления изображения на более мелкие формы. Для описания характера поверхности объекта она делится на всевозможные многоугольники.
Наиболее часто при отображении графических объектов используется деление на треугольники и четырехугольники, так как они легче всего обсчитываются и ими легко манипулировать. При этом координаты объектов переводятся из вещественного в целочисленное представление для ускорения вычислений.

На второй стадии к изображению применяются все описанные эффекты в следующей последовательности: удаление скрытых поверхностей, наложение с учетом перспективы текстур (используя z-буфер), применение эффектов тумана и полупрозрачности, anti-aliasing. После этого очередная точка считается готовой к помещению в буфер со следующего кадра.

Из всего вышеуказанного можно понять, для каких целей используется память, установленная на плате 3D-акселератора. В ней хранятся текстуры, z-буфер и буфера следующего кадра. При использовании шины PCI, использовать для этих целей обычную оперативную память нельзя, так как быстродействие видеокарты существенно будет ограничено пропускной способностью шины. Именно по этому для развития 3D-графики особенно перспективно продвижение шины AGP, позволяющее соединить 3D-чип с процессором напрямую и тем самым организовать быстрый обмен данными с оперативной памятью. Это решение, к тому же, должно удешевить трехмерные акселераторы за счет того, что на борту платы останется лишь немного памяти собственно для кадрового буфера.

Заключение

Повсеместное внедрение 3D-графики вызвало увеличение мощности компьютеров без какого-либо существенного увеличения их цены. Пользователи ошеломлены открывающимися возможностями и стремятся попробовать их у себя на компьютерах. Множество новых 3D-карт позволяют пользователям видеть трехмерную графику в реальном времени на своих домашних компьютерах. Эти новые акселераторы позволяют добавлять реализм к изображениям и ускорять вывод графики в обход центрального процессора, опираясь на собственные аппаратные возможности.

Хотя в настоящее время трехмерные возможности используются только в играх, думается, деловые приложения также смогут впоследствии извлечь из них выгоду. Например, средства автоматизированного проектирования уже нуждаются в выводе трехмерных объектов. Теперь создание и проектирование будет возможно и на персональном компьютере благодаря открывающимся возможностям. Трехмерная графика, возможно, сможет также изменить способ взаимодействия человека с компьютером. Использование трехмерных интерфейсов программ должно сделать процесс общения с компьютером еще более простым, чем в настоящее время.

При подготовке материала использовалась информация из Diamond White Papers

www.ixbt.com

Где используется 3D графика? | CreativeTuts.ru

В этой статье мы рассмотрим где же применяется 3D графика, и как нам помогут знания Cinema 4D. Прочитав эту статью вы поймете что 3D графика используется практически везде.

1. Интерьер, экстерьер, архитектура

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

2. 3D Дизайн (журналы, реклама, печать, полиграфия)

Также 3D графика широко применяется в дизайне, изданиях, рекламе, афишах, полиграфии.

3. Компьютерные игры

3D графика используется во всех современных компьютерных играх, для создания и моделирования персонажей, объектов, предметов, окружения, а также для анимации персонажей.

4. 3D моделинг и скульптинг

Некоторые хорошо зарабатывают моделируя самые различные фигурки, предметы, сувениры а затем печатая их на 3D принтере.

5. Видеоролики, моушн дизайн, анимация

Также 3D Графика, особенно в Cinema 4D, широко используется при создании видеороликов и анимации для ТВ, проектов, фильмов, мультфильмов, рекламы.

6. 3D мультфильмы

Сейчас все чаще и чаще мультфильмы делают используя 3D графику

7. Проектирование

3D графика также используется в промышленных целях и при проектировании разных проектов, механизмов, сооружений и систем.

8. Телевидение и видео

Практически всегда на тв, в рекламе, в видео роликах участвует 3D графика.

Хотите изучить 3D графику, в одной из лучших и популярных программ? Узнайте подробнее по ссылке ниже:

Полноценный видеокурс по Cinema 4D

creativetuts.ru

Популярно о 3D графике. Часть 2. Игры и 3D / Habr


Прошу прощение за столь большой перерыв между первой и второй частью, но на то были как объективные, так и субъективные причины. Итак, часть вторая, про компьютерные игры и 3D.
И, да, статья рассчитана на тех, кто не имеет вообще представления о данном вопросе.

3D графика в компьютерных играх
Когда я на заработанные летом деньги в старших классах купил себе свой первый компьютер — ZX Spectrum и научился загружать с кассеты игры, меня сразу начал интересовать вопрос: как это все программируется? Ответ на этот вопрос я получил из книги по программированию игр для ZX Spectrum. Когда у меня появился РС-совместимый компьютер я уже представлял как делаются игры. Но прошло совсем немного времени и появились игры которые были непохожи на другие — игры с 3D персонажами. Одной из ярких представителей таких игр была Tomb Raider. И с каждым годом количество таких игр росло. Мне всегда было интересно: а как же они создаются? Но вразумительного ответа (Интернет тогда был экзотикой) я не нашел. Если бы мне в то время попалась подобная статья, то я бы получил ответы на некоторые вопросы. Надеюсь, что нижеприведенный текст поможет дать представление о том как в 3D играх появляются окружение и персонажи.



Но сначала немного о полигонах. В прошлой статье Популярно о 3D графике, часть 1 были упомянуты полигоны. Но, судя по комментариям, цель статьи была не совсем достигнута. Поэтому хочу немного остановиться на тесселяции и сглаживании. Представьте, что у вас есть лист бумаги. Это и будет полигон. Разделите его пополам по горизонтали и вертикали. Получим 4 части. Это и есть тесселяция. Зачем нам это нужно в 3D графике? Все дело в том, что полигон является базовой единицей поверхности (в полигональном моделировании) и им можно смоделировать разве что плоскость. Вспомните, что для того, чтобы изготовить бумажный самолетик необходимо лист бумаги несколько раз согнуть. Так и с полигонами — разбивая исходные полигоны на части, располагая их под нужными углами друг к другу и сглаживая можно получать те или иные формы. Сглаживание, как уже упоминалось в прошлой части, это разбиение полигонов с изменением углов между полигонами. Это означает, что если у нас есть квадрат, у которого, как известно, прямые углы 90 градусов, то после сглаживания эти углы будут уже примерно 135 градусов. Как операция сглаживания преображает заготовку модели можно увидеть на видео ниже.

В данном случае применено две итерации сглаживания. Видно, как увеличивается количество полигонов и модель приобретает плавные формы.

Но вернемся к играм.

На заре персональных компьютеров графические (были и текстовые, да, да, текстовые! игры) игры были двумерными во всех смыслах: персонажи были рисованными в проекции и двигаться могли только по осям X и Y. Для имитации, к примеру, ходьбы отрисовывались положения ног в разный период времени и эти кадры просто пускались по кругу. Классический пример двумерной игры — Тетрис. На приведенном ниже видео кадры из двумерной игры Nebulus для необыкновенно популярной в 80-х годах (а в СНГ и в 90-х) прошлого века платформы ZX Spectrum.

Но компьютеры росли и в последнее время большинство игр являются трехмерными. Что же нам дает трехмерность? (кстати, итоговая картинка для обычных мониторов все равно псевдохтрехмерная, но за счет размещения объектов в перспективе и возможности двигаться в трех измерениях, появляется иллюзия трехмерности). Трехмерность нам дает больше свободы и реалистичности. Взгляните на эти шахматы, одни из которых двумерные, а вторые — трехмерные. Какие из них смотрятся реалистичнее?

Каким же образом в игре появляется трехмерный персонаж? Для начала моделер изготавливает высокополигональную модель необходимого объекта или персонажа в одной из программ трехмерного моделирования (например, 3ds Max или Maya, возможна доработка в ZBrush или Mudbox). Затем строится развертка — представление рисунка трехмерного объекте на плоскости. По развертке художник рисует текстуры, т.е., грубо говоря, раскрашивает модель, затем настраиваются материалы, включающие нарисованные текстуры. Материалы позволяют придать текстурам реалистичности. Модель готова. Но для игры необходима низкополигональная модель. Ее получают из высокополигональной или копируют на определенном этапе моделирования высокополигональной. Зачем нужна высокополигональная модель? Она дает возможность получить более реалистичную картинку, смоделировать мелкие детали, тени, которые затем будут присутствовать в игре в виде текстуры. Многое, что мы в играх воспринимаем как мелкие объекты (углубления, коррозия, трещины, шпингалеты и многое-многое другое) на самом деле нарисовано с учетом теней, что при не очень детальном рассмотрении воспринимается как трехмерный объект. Из высокополигональной модели получают вспомогательные текстуры. Как правило, кроме текстуры цвета и рисунка применяют текстуры рельефа (bump) и отражений (specular), карту нормали. Накладываясь на текстуру рисунка (diffuse) они делаю модель более реалистичной. Все это позволяет снизить требования к аппаратному обеспечению до доступного для современного железа уровеня.
Затем низкополигональная модель и текстуры экспортируется в так называемый игровой движок который позволяет, как правило, симулировать некоторый мир. Игровой движок ответственен за сам игровой процесс: взаимодействие героя с окружающим миром, визуализацию изображения в реальном времени, за искусственный интеллект компьютерных персонажей. Игровые 3D движки бывают разные: как платные, так и бесплатные, бесплатные при некоммерческом использовании, сложные и трудные в освоении, для различных платформ и т.п. Если вы решите поэкспериментировать с экспортом собственных моделей в игровой движок главное, чтобы была возможность конвертировать модель в формате вашего 3D редактора в формат игрового движка и последний работал на вашей платформе.
Чтобы не быть голословным я в представленном ниже видео кратко покажу как модель вставляется в игровой движок. Для примера я взял CryEngine 3. Почему именно его? Потому, что на нем «бегает» широко известный шутер Crysis 3, к тому же сам движок доступен для свободного скачивания и бесплатен для не коммерческого использования. Для CryEngine 3 доступна документация как на английском, так и на русском, присутствует расширение для 3ds Max.

На этом пока все.

Предыдущие статьи данного цикла:
Популярно о компьютерной графике. Часть 1 Введение и полигоны.

habr.com

10. Трехмерная (3D) графика

Наряду с программами традиционной 2D-графики в последнее десятилетие широчайшее распространение и популярность получили программы 3Dмоделирования, анимации и визуализации. При этом такие известные программные решения, как 3D Studio MAX или Maya, являются, по сути, гибридными графическими пакетами. С одной стороны, они предоставляют дизайнеру возможность манипулирования 2D- и 3D-векторными объектами, с другой, результатом работы (финальной визуализации) является пиксельное (растровое) изображение — отдельный кадр или видеоролик.

В силу специфики 3D-моделирования и возможности работать с анимацией такие программы занимают особое место в линейке графических программ. Если попытаться позиционировать пакеты 3D-графики с точки зрения их целевой функции, можно выделить следующие занимаемые ими сегменты рынка.

o Визуальные спецэффекты для кино- и видеоиндустрии.

o Телевизионная реклама.

o Интерактивные игры.

o Промышленный и архитектурный дизайн.

o Научная, медицинская и судебная визуализация.

o Компьютерные тренажеры и обучающие программы.

Следует отметить, что использование пакетов трехмерной графики предъявляет повышенные требования как к аппаратно-программным средствам используемого компьютера, так и к уровню знаний работающего с ними дизайнера.

79

Все программы 3D-графики, прежде всего, позволяют использовать декартову (картезианскую) систему координат.

10.1. Типы пространств

В зависимости от задачи и этапа работы можно выбирать различные типы пространств и связанных с ними координатных систем.

Чаще всего программы трехмерного моделирования предоставляют следующие варианты пространств.

oПространство объекта – предназначено для моделирования (описания) формы объекта в его собственной (локальной) системе координат безотносительно того, где он будет размещен на сцене, как ориентирован или масштабирован. У каждого объекта существует своя собственная система координат.

o Мировое пространство используется для размещения объектов на сцене, осуществления аффинных трансформаций (перемещения, поворота и масштабирования объектов), описания освещения сцены, вычисления столкновений между объектами при моделировании динамики их движения и т. п. Это единое пространство для всех объектов сцены.

o Видовое пространство ассоциировано с виртуальным наблюдателем (обычно камерой) или определенной проекцией сцены (например, фронтальным видом) и описывает ту часть сцены, которая доступна для просмотра и работы в видовом окне.

oЭкранное пространство – это пространство (плоскость), в котором отображаются аксонометрические или перспективные проекции объектов на плоскость поверхности монитора.

o UVW-параметрическое пространство используется при математическом моделировании сложных кривых и поверхностей (например, NURBS-объектов) или для задания UVW-координат текстурирования поверхностей.

10.2. Моделирование объектов

В первом приближении все создаваемые трехмерные объекты можно разделить на геометрические и негеометрические.

o Первые из них используются для моделирования объектов вещественного мира (персонажей, предметов).

o Вторые же применяются для придания сцене реалистичности (например, правильного освещения), для моделирования физических сил, действующих на объекты (например, гравитации или порывов ветра).

Другими словами, геометрические объекты будут присутствовать в визуализированном кадре явно (как кривые или поверхности), а негеометрические — опосредствованно (в виде бликов, теней, ускорений).

Геометрические объекты

Вот краткий перечень типов геометрических объектов:

o Сплайн – гладкая кривая, которая проходит через две или более контрольных точек, управляющих формой сплайна. Два из наиболее общих типов сплайнов - кривые Безье (Bezier curves) и В -сплайны (B- spline curves). Типичным примером сплайнов являются также неоднородные рациональные B-сплайны (Non-Uniform Rational B- Spline - NURBS).

Сплайны состоят из вершин (vertices) и сегментов (segments).

81

Каждая вершина сплайна имеет касательные векторы (tangents), снабженные на концах управляющими точками, или маркерами (handels). Маркеры касательных векторов управляют кривизной сегментов сплайна при входе в вершину, которой принадлежат касательные векторы, и выходе из нее. В зависимости от свойств касательных векторов различают следующие типы вершин: С изломом

(Corner), Сглаженная (Smoos), Безье (Bezier) и Безье с изломом (Bezier Corner).

Сплайны могут служить заготовками для построения поверхностей или их можно использовать в качестве траектории движения.

o Полигональные объекты – это полигональные примитивы, описываемые набором динамически изменяемых параметров (например, длин, радиусов), или полигональные сетки, определяемые как набор граней, ограниченных ребрами, попарно соединяющими вершины.

Polygon (многоугольник) – плоская фигура, ограниченная со всех сторон ломаной линией. Треугольники, то есть простые трехсторонние многоугольники формируют основу, каркас объектов в трехмерной среде.

o Поверхности Безье – это математически гладкие поверхности, описываемые расположением вершин Безье. Эти вершины определяют их кривизну при помощи дополнительных управляющих точек на концах касательных к поверхности векторов.

oNURBS-поверхности – это наиболее универсальный и эффективный способ моделирования неоднородных криволинейных поверхностей. Такие поверхности описываются в особом четырехмерном гомогенном (однородном) пространстве, в котором каждая управляющая вершина,

кроме трех координат х, у и z, имеет еще и дополнительную весовую

характеристику.

oСоставные объекты – представляют собой комбинацию двух или более смоделированных заранее заготовок. В зависимости от того, какое именно составное тело создается, заготовками могут служить кривые или объемы (поверхности).

oСистемы частиц – это объекты, генерирующие по заданному алгоритму частицы с определенной формой, начальной скоростью, сроком жизни и другими характеристиками. Такие анимационные объекты используются для моделирования дождя, пузырьков газа в жидкости, осколков взрывающихся снарядов и тому подобных образцов объективной реальности.

o Динамические объекты – позволяют моделировать объекты, реагирующие на приложенные к ним внешние силы: пружины и амортизаторы. Используются при моделировании динамики движения объектов.

Негеометрические объекты

o Источники света – используются при моделировании наружного и интерьерного освещения. Различные типы источников реализуют различные алгоритмы распространения света.

oКамеры – позволяют полностью контролировать отображение объектов в плоскости кадра. Важнейшей характеристикой является фокусное расстояние объектива камеры, определяющее ее поле зрения. Оба этих параметра взаимосвязаны и измеряются в миллиметрах и градусах соответственно. Еще одной важной характеристикой камеры являются плоскости отсечения, ограничивающие видимую по глубине (расстоянию от наблюдателя) часть сцены.

oСистемы сочленений – это структуры, состоящие из иерархически связанных «костей», описывающих сложную кинематику движения моделируемого объекта (например, человека).

o Искривители пространства – реализуют динамические воздействия внешних сил на объекты, это – своеобразные силовые поля, влияющие на определенные объекты. Примерами могут служить волновая деформация поверхности или ударная волна, разбрасывающая фрагменты объекта в пространстве.

Материалы и карты

Материалы определяют визуальные свойства поверхностей, т. е. описывают то, как поверхность объекта взаимодействует с освещением сцены.

Следующие свойства поверхностей определяют взаимодействие материала со светом:

o цвет;

o прозрачность;

o глянцевость;

o коэффициент преломления.

Важно помнить, что для получения финальной визуализации фотореалистического качества нужно, помимо прочего, очень корректно задавать свойства материала.

Текстурирование материалов

Использование текстурных карт (декоративных узоров, maps) позволяет придать материалам дополнительную реалистичность (например, вид мощенной плиткой мостовой или портмоне из крокодиловой кожи).

В качестве карт могут быть использованы изображения, сохра-

ненные в файлах различных форматов (BMP, TIP, JPG, EPS), либо процедурные текстуры, являющиеся наборами правил быстрого построения нужного узора.

Текстурирование – основной метод моделирования поверхностей наложением на них изображений, называемых текстурой.

Текстура – побитовое отображение поверхностей, отсканированное или нарисованное, придающее поверхности реалистичный вид.

Дополнительные свойства материалов

В зависимости от конкретной программы трехмерного моделирования предлагается различная совокупность дополнительных свойств материалов. Например, пакет 3D Studio MAX позволяет моделировать динамику твердых тел, что приводит в этом случае к необходимости задать коэффициенты упругости материала, силы трения покоя и трения скольжения.

Анимация

Базовым принципом компьютерной анимации (как, собственно говоря, и любой другой) является быстрая смена последовательности кадров, фиксирующих промежуточные фазы движения, перед глазами наблюдателя.

Под движением подразумевается как непосредственно перемещение или поворот объекта в пространстве сцены, так и любое изменение его формы, цвета и т. п. Кадры должны сменять друг друга при просмотре с достаточно высокой скоростью, иначе у наблюдателя не создастся иллюзии непрерывности происходящих изменений.

studfiles.net

3d графика в рекламе и не только. Что это и как это работает?

Новое способ работы с изображением.

Здравствуйте, уважаемые читатели блога RZ3d.ru, с вами Рустам Закиров и в этой статье я хочу сделать вам вводный курс и рассказать что такое  3d графика. Из этой статьи вы узнаете, что такое технология  3d графика, узнаете каких видов она бывает и какие она внесла изменения в современную рекламу и не только. Статья интересная, весьма информативная, очень полезная, поэтому читайте статью до конца и очень внимательно. Если вас интересуют 3д рисунки на бумаге перейдите по этой ссылки Как нарисовать 3d рисунок на бумаге. Придуман самый легкий способ здесь мы рисуем вот рисунок.

А мы переходим к теме нашей статьи.

3d графика в рекламе и не только.

Динамичное развитие современного мира  охватывает  все больше   областей нашей повседневной жизни.  Современные передовые технологии  открывают перед нами все новые возможности и области их применения. Наряду с Интернетом, электромобилями и цифровыми гаджетами, начало XXI века навсегда останется в нашей истории как эра 3d.

Страсть ко всему объемному подарила нам  3д-фильмы, 3д-телевизоры, 3д-картины  и многое другое.
Одним из самых неожиданных и по-настоящему гениальным решением 3д-эпохи стала технология 3d графики.

Гениальным это решение может считаться по праву, так как его простота  и оригинальность многие века лежала на поверхности. Термин  3d графика относится  к визуальному эффекту, помогающему увидеть или прочувствовать объем того или иного решения.

Некоторые при упоминании технологий 3d сразу представляют себе экран кинотеатра, 3д очки,  или 3д  телевизор. Но ничего общего с  этими вещами данная технология не имеет. И так,  что же  такое  3d Графика? И как она может помочь очень просто и легко создавать любые 3D рисунки.

3d Графика – это технология, которая позволят объемные изображения в 3д  формате переводить в 2д формат.На сегодняшний день, существует две разновидности данной технологии:

Две разновидности 3d графики.

1. Это  горизонтальная 3d графика, здесь объемное изображение проецируется на горизонтальную плоскость, это может быть пол,потолок, тротуар или любая другая горизонтальная поверхность.

 

Следующая разновидность это – вертикальная 3d графика. Здесь уже объемное изображение проецируется на вертикальную поверхность, это может как стена здания, кузов автомобиля или рекламный щит.

 

Данная технология  начала набирать  свою  популярность относительно недавно, тем не менее  она уже нашла  широкое применение  в различных областях нашей повседневной жизни. Одной из первых областей, где данная технология начала  активно развиваться (применяться) стала реклама.

Раньше  в  рекламе изменения претерпевали в основном  технологии связанные с  методом нанесения  изображения. Сто лет назад рекламные изображения наносились вручную красками на бумагу или холст. Сегодня их наносят с помощью широкоформатных принтеров и другого специализированного оборудования. Основной же подход к созданию самого рекламного изображения  до последнего времени оставался неизменным.

3d графика в рекламе и не только. Что это и как это работает?

И если где-то приставка 3д являлась лишь маркетинговым ходом, то технология  3d графики открыла  миру принципиально новый  подход создания самого  рекламного изображения.  Это привело к  дальнейшему развитию и к широкому применению  технологии 3d графики, как в  рекламе  так и в других ни как не связанных с нею областях.

3d  графику  по праву можно назвать технологическим новшеством в современной рекламной индустрии. По эффектности мало какой из современных рекламных  инструментов сравним с ней.

 А изменилось то, что теперь на 2-х мерной плоскости  стало возможным размещать полноценные 3-х мерные изображения. Другими словами теперь стало возможным на  обычной  плоской поверхности  размещать объемные 3д изображения.

Да, да это вовсе  не шутка! Это новый способ кодирования информации, который позволяет более емкую  информацию в 3д формате, с помощью специальных преобразований перевести в  менее емкий 2д  формат.

При этом все это не требует использования  специального дорогостоящего оборудования  или применения  дополнительных вспомогательных средств как, например,  3д очки. Суть данной технологии заключается в том, что при взгляде на такое  изображение с определенной точки, создается иллюзия объемности изображения.

Анаморфоз, не более.

Сразу хочу подчеркнуть, что увидеть трехмерное изображение можно лишь с определенной точки, которая позволит рассмотреть рисунок под нужным углом.

С любой другого положения зритель не сможет в полной мере оценить  идею и задумку автора. Вместо объемной картинки, перед ним лишь будет  замысловатый набор линий (который при первом контакте лишь дополнительно спровоцирует повышенный  интерес к ней).

Такие объемные изображения называются анаморфозом. То есть специально искаженным изображением, которое принимает правильный вид, только если его рассматривать  с  определенной точки. Что это дало? Теперь стало возможным развернуть рекламу непосредственно «лицом» к зрителю, плюс   она стала   еще и  объемной.

Благодаря применению технологии 3d графики  картинка стала способна легко выйти за пределы двухмерной плоскости, оставив неизгладимое впечатление в головах проходящих мимо людей.

Все это позволило добиться максимального эффекта от использования такой рекламы. Данная технология открыла  поистине безграничные возможности  по созданию  высокоэффективной рекламы нового поколения.

Многие эксперты рекламной индустрии предрекают, что современная плоская реклама доживает свои последние  времена. И что в ближайшем будущем на смену ей придет более эффективная и более технологичная  3д  реклама.

Сегодня  3D графика находит  свое применение в различных областях  нашей повседневной жизни от рекламы  и дизайна интерьера до различного рода объемных открыток, 3d рисунков,  одежды и  архитектурного и художественного  оформления зданий и улиц.  Более подробно о том где ее можно применять можете прочитать в статье Где можно применять горизонтальные 3d рисунки.

Благодаря потрясающему эффекту, который производят подобные шедевры, они часто становятся объектами пристального внимания СМИ и блогеров. Особенно актуальна технология 3d графики стала сейчас. Когда стало крайне популярным фотографироваться и выкладывать свои фотографии в интернет.

Именно это, на мой взгляд, дало основной импульс к столь стремительному и динамичному развитию технологии 3d Графики. Ведь фотографии объемных изображений просто  поражают обывателей и что особенно важно очень долго живут  в Интернете  и соц. сетях.

Если вам понравилась статья, пожалуйста, сделайте следующее:

  1. Оставьте комментарий. Просто напишите, понравилась вам статья или нет. Напишите, какую тему вы бы хотели разобрать в следующих статьях.
  2. Поделитесь статьей с друзьями.
  3. Подписывайтесь на обновления блога и на мой канал на ютубе.

С уважением, Рустам Закиров.

rz3d.ru

Трехмерная графика

Этот вид компьютерной графики вобрал в себя очень много из векторной, а также из растровой компьютерной графики. Применяется она при разработке дизайн-проектов интерьера, архитектурных объектов, в рекламе, при создании обучающих компьютерных программ, видео-роликов, наглядных изображений деталей и изделий в машиностроении и др.

Трёхмерная компьютерная графика позволяет создавать объёмные трёхмерные сцены с моделированием условий освещения и установкой точек зрения.

Для изучения приёмов и средств композиции, таких как передача пространства, среды, светотени, законов линейной, воздушной и цветовой перспективы здесь очевидны преимущества этого вида компьютерной графики над векторной и растровой графикой. В трехмерной графике изображения (или персонажи) моделируются и перемещаются в виртуальном пространстве, в природной среде или в интерьере, а их анимация позволяет увидеть объект с любой точки зрения, переместить в искусственно созданной среде и пространстве, разумеется, при сопровождении специальных эффектов.

Трёхмерная компьютерная графика, как и векторная, является объектно-ориентированной, что позволяет изменять как все элементы трёхмерной сцены, так и каждый объект в отдельности. Этот вид компьютерной графики обладает большими возможностями для поддержки технического черчения. С помощью графических редакторов трёхмерной компьютерной графики, например Autodesk 3D Studio, можно выполнять наглядные изображения деталей и изделий машиностроения, а также выполнять макетирование зданий и архитектурных объектов, изучаемых в соответствующем разделе архитектурно-строительного черчения. Наряду с этим может быть осуществлена графическая поддержка таких разделов начертательной геометрии, как перспектива, аксонометрические и ортогональные проекции, т.к. принципы построения изображений в трёхмерной компьютерной графике частично заимствованы из них.

Для декоративно-прикладного искусства трёхмерная компьютерная графика предоставляет возможность макетирования будущих изделий с передачей фактуры и текстуры материалов, из которых эти изделия будут выполнены. Возможность увидеть с любых точек зрения макет изделия до его воплощения в материале позволяет внести изменения и исправления в его форму или пропорции, которые могут быть уже невозможны после начала работы (например, ювелирные изделия, декоративное литьё из металла и др.). В том же направлении трёхмерная компьютерная графика может быть использована для поддержки скульптуры, дизайна, художественной графики и др. Объёмная трёхмерная анимация и спецэффекты также создаются средствами трёхмерной графики. Создание учебных роликов для обучающих программ может стать основным применением этих возможностей трёхмерной компьютерной графики.

К средствам работы с трёхмерной графикой,относят такой графический редактор как 3D Studio MAX. Это один из самых известных трёхмерных редакторов, он часто используется при создании фильмов. Разработка программы 3D Studio МАХ была начата в 1993 году. Версия 3D Studio МАХ 1.0 вышла в 1995 году на платформе Windows NT.

Уже тогда некоторые эксперты осторожно высказывали мнение, что МАХ может конкурировать с другими пакетами трехмерной графики. Осенью 2003 года discreet выпускает ЗD MAX 6. Новые инструменты анимации частиц в связке с модулями позволяют создавать фотореалистичные атмосферные эффекты. Появились встроенная поддержка капельно-сетчатых объектов, полноценная сетевая визуализация, импорт данных из САD-приложений, новые возможности для моделирования. Но кроме 3D Studio MAX есть и другие, не менее популярные программы трёхмерного моделирования, например Maya. Maya – это программа-аналог 3D Studio MAX, но она предназначена, в первую очередь, для анимации и для передачи мимики на лице трёхмерного актёра. Кроме того, в Maya удобнее рисовать. 3D Studio MAX направлен в первую очередь на качественную визуализацию предметов, ещё в нём можно выполнять примитивные чертежи.

Вообще для черчения существуют свои программы трёхмерного моделирования, самые известные из них AutoCAD, ArhiCAD. AutoCAD предназначен, в первую очередь, для машиностроительного черчения, а ArhiCAD для архитектурного моделирования.

Что же требует трехмерная графика от человека?

Конечно же, умение моделировать различные формы и конструкции при помощи различных программных средств, а также знания ортогонального (прямоугольного) и центрального проецирования. Последняя - называется перспективой. Очень хорошее качество моделирования достигается при помощи тщательного подбора текстур и материалов в сочетании с правильным размещением в сцене источников освещения и камер. Основой для построения любой пространственной формы является плоскость и грань объекта. Плоскость в трехмерной графике задается с помощью трех точек, соединенных отрезками прямых линий.

Именно это условие дает возможность описать с помощью получаемых плоскостей «пространственную сетку», которая представляет собой модель объекта. Затем объекту дополнительно присваиваются характеристики поверхности объекта – материал. В свою очередь, материал характеризует качество поверхности, например, полированная, шероховатая, блестящая и др. Описывается и его текстура (камень, ткань, стекло и др.). Задаются и оптические свойства, например, прозрачность, отражение или преломление световых лучей и т.д.
Наряду с этим, трехмерному объекту можно задать условия освещения и выбрать точку обзора (камеру) для получения наиболее интересного наглядного изображения. Постановка, состоящая из трехмерного объекта, условий освещения и выбранной точки зрения, называется «трехмерной сценой». А вот для описания трехмерного пространства и объекта, находящегося внутри его, используется хорошо уже знакомый Вам координатный метод.

Существуют различные методы моделирования трехмерных объектов. Например, метод текстового описания модели с помощью специальных языков программирования «Скрипт».

esate.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *