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

Автор: Пользователь скрыл имя, 23 Ноября 2012 в 22:50, доклад

Описание работы

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

Работа содержит 1 файл

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

— 854.50 Кб (Скачать)

 

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

В программе 3ds max 5 каждая грань задается координатами своих вершин - как  известно, положение любой точки  в трехмерном пространстве можно  задать тройкой координат: (X; Y; Z). Таким  образом, даже для такого простейшего  трехмерного объекта, как прямоугольный параллелепипед, программе приходится хранить координаты 8 вершин, то есть 8 троек чисел, с указанием того, какие из этих троек образуют каждую из 12 треугольных граней параллелепипеда. Сложные сцены иногда содержат в своем составе сотни тысяч граней, так что можете представить, какую работу приходится производить компьютеру при визуализации таких сцен! Зачем же нужно разбивать оболочки на грани? Это делается из соображений единообразия. Точки поверхностей тел простой формы, таких как сфера, цилиндр или конус, можно было задать и не разбивая эти поверхности на грани, но в реальной жизни объекты правильной геометрической формы встречаются редко. Пришлось бы разрабатывать и использовать разные подходы к описанию поверхностей тел простой формы и всех остальных объектов, имеющих произвольную конфигурацию. 
Почему используются грани именно треугольной формы? Это просто: через три точки в трехмерном пространстве всегда можно провести плоскость, и притом только одну. На современном рынке компьютерной аппаратуры имеются графические платы, называемые аппаратными ускорителями 3D-графики и способные выполнять преобразования координат вершин треугольных граней при помощи специализированных микропроцессоров. В частности, широкой известностью пользуются видеоплаты семейства GeForce компании NVidia. Их применение позволяет добиваться очень высокой скорости отображения 3D-графики на экране дисплея. 
Если бы нам приходилось разбивать поверхности объектов на грани вручную, то каждому пользователю 3ds max 5 пришлось бы осваивать смежную профессию огранщика алмазов. Само по себе это, может быть, и не плохо, да вот только процесс моделирования мог бы оказаться слишком сложным. К счастью, программа производит такое разбиение самостоятельно.

Ребра и группы сглаживания 
С этими ребрами в 3ds max 5 сплошная путаница. Во-первых, как вы уже знаете, в составе сетчатых оболочек имеются два типа ребер. Ребра первого типа разделяют грани, не лежащие в одной плоскости. Они всегда видны в составе сетки и изображаются сплошными линиями. Другие ребра, которые разделяют грани, лежащие в одной плоскости, по умолчанию не видны, а если и отображаются по специальному запросу, то пунктиром. Эти два типа ребер можно было бы охарактеризовать как видимые и невидимые, вкладывая в это определение вполне конкретный смысл, связанный с компланарностью граней. Однако, как выясняется, не все так просто. В 3ds max 5 имеются инструменты, позволяющие превратить любое видимое (изображаемое сплошной линией) ребро в невидимое, которое будет отображаться пунктиром только в специальном режиме просмотра невидимых ребер. И наоборот, любое ребро, разделяющее грани, лежащие в одной плоскости, можно сделать видимым постоянно. При этом оно будет отображаться в составе сетки сплошной линией. Такое преобразование, смысл которого не вполне очевиден, становится понятнее, когда узнаешь, что в 3ds max 5 есть средство для разрезания ребер, которое по-разному действует на видимые и невидимые ребра сетки. 
Итак, видимые ребра - это те, которые изображаются в составе сетки сплошными линиями, а невидимые - те, которые в нормальном режиме не видны, а в специальном режиме отображаются пунктиром.

ЗАМЕЧАНИЕ

 

Способ отображения ребер в  окнах проекций зависит еще и  от того, какой драйвер дисплея  используется программой 3ds max 5. Например, драйвер Direct3D имеет режим, при котором в окнах проекций могут отображаться сплошными линиями все ребра треугольных граней сеток - как видимые, так и невидимые.

 

Разобрались? Как бы не так! Ситуация осложняется тем, что понятие  видимости ребер должно еще соотноситься с понятием их сглаживания при отображении сетки в виде сплошной поверхности, или, как говорят на языке трехмерной графики, в тонированном виде. Да, сетчатая оболочка любого объекта (скажем, простой сферы) состоит из трехмерных граней. Почему же мы видим на экране гладкую, а не ребристую поверхность сферы? Дело в том, что при отображении тонированной сетчатой оболочки программа автоматически выполняет сглаживание ребер между гранями, принадлежащими к одной и той же группе сглаживания (smoothing group). В итоге далеко не все видимые ребра сетки оказываются видны в виде линий излома поверхности объекта. Например, у сферы все грани сетки принадлежат к одной группе сглаживания, а у цилиндра грани боковой поверхности принадлежат к одной группе сглаживания, а грани оснований - к другой. В связи с этим при визуализации цилиндра ребра между гранями боковой поверхности не видны, а между боковой поверхностью и основаниями - видны. 
У некоторых стандартных объектов трехмерной графики, таких как сфера или цилиндр, назначение групп сглаживания граням производится программой автоматически в момент создания объекта. Однако режим сглаживания ребер можно выключать. В результате при отображении будут видны в виде линий излома поверхности все ребра между гранями, не лежащими в одной плоскости, как показано на рис. 1.11. Обратите внимание на то, что даже у цилиндра со сглаженной боковой поверхностью ее исходное граненое строение прослеживается по кромкам оснований, состоящим из отрезков прямых линий.

    

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

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

Габаритные контейнеры 
Каждый объект 3ds max 5, какую бы сложную форму он ни имел, заключается в габаритный контейнер (bounding box). Габаритный контейнер представляет собой всего-навсего прямоугольный параллелепипед, описанный вокруг объекта, как показано на рис. 1.12. В момент создания объекта стороны его габаритного контейнера ориентируются параллельно координатным плоскостям глобальной системы координат, о которой мы поговорим чуть ниже. При последующих поворотах объекта вместе с ним поворачивается и его габаритный контейнер.

Рис. 1.12. Какую бы форму ни имел объект, его габаритным контейнером всегда является прямоугольный параллелепипед

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

Как происходит "оживление" сцены 
Слово анимация (animation - оживление) имеет в компьютерной графике двоякий смысл. С одной стороны, анимацией часто называют результат "оживления" трехмерной сцены, зафиксированный в виде последовательности кадров. Каждый такой кадр, как мы уже отмечали ранее, представляет собой синтезированное программой изображение определенной стадии меняющегося во времени процесса, например, движения объекта, изменения его формы, прозрачности или цвета. При установке программы 3ds max 5 на диске даже создается специальная папка Animations (Анимации), предназначенная для хранения готовых компьютерных мультиков. С другой стороны, под анимацией подразумевают сам процесс "оживления" трехмерной сцены, в работе над которым программа трехмерной графики способна оказать вам существенную помощь. 
Эта помощь состоит в автоматизации синтеза последовательности кадров, представляющих отдельные промежуточные стадии движения того или иного объекта сцены. От пользователя требуется всего лишь установить начальное и конечное положения объекта в пространстве сцены и указать, каким номерам кадров будущей анимации эти положения соответствуют, а все промежуточные положения программа синтезирует автоматически. При синтезе каждого отдельного кадра анимационной последовательности программа выполняет все те же трудоемкие процессы расчета и визуализации изображений с учетом взаимных затенений, изменений освещенности, отражений и переотражений света и т. п., как и при создании отдельного фиксированного изображения. Для примера на рис. 1.13 показаны четыре кадра из последовательности, синтезированной программой 3ds max 5 при анимации движения руки кукольного малыша.

ЗАМЕЧАНИЕ

 

Модель куклы разработана компанией Viewpoint Datalabs International. Вы можете найти  ее в файле под именем Bmdoll1l.max в  папке Meshes компакт-диска, прилагающегося к книге. Просмотрите заодно и  полный файл анимации, который хранится на этом же компакт-диске под именем Kukla.avi в папке Animations\Glava_01.

 

Используя специальные инструменты 3ds max 5 - контроллеры анимации (animation controllers), - можно указывать, должен ли "оживляемый" объект в интервалах времени между заданными положениями двигаться равномерно, рывками, с ускорением в начале или в конце и т. п. Помимо анимации движения объектов сцены или их частей 3ds max 5 может также обеспечить "оживление" цвета объектов, их размеров или формы, яркости источников света и многих других параметров - почти все параметры max 5 допускают анимацию. 
При настройке анимации в состав сцены можно включать источники так называемых объемных деформаций, предназначенные для того, чтобы заставить объекты от кадра к кадру изменять свою форму или имитировать действие на объекты различных внешних сил, таких как сила тяжести или ветра. Использование объемных деформаций позволяет моделировать средствами 3D-графики даже такие сложные динамичные объекты, как поверхность взволнованной воды, потоки раскаленной лавы или вихри снежной метели.

      
  
    

Рис. 1.13. Начальное (а) и конечное (г) положения руки куклы заданы пользователем, а промежуточные (б, в) - синтезированы программой

Следует отметить, что по части  методов и инструментов анимации программа 3ds max 5 имеет ряд существенных отличий от всех своих предшествующих версий. Подробное рассмотрение средств и методов анимации трехмерных сцен в 3ds max 5 ожидает вас в главах 15, "Пробуем выполнять анимацию объектов", и 16, "Учимся применять контроллеры и методы прямой и обратной кинематики".

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

Виды проекций, используемых в 3ds max 5 
В 3ds max 5 используются два вида проекций: параллельные (аксонометрические) и центральные (перспективные). При построении аксонометрической проекции трехмерного объекта его отдельные точки сносятся на плоскость проекции параллельным пучком лучей (рис. 1.14, а), а при построении центральной проекции - пучком лучей, исходящих из одной точки, соответствующей положению глаза наблюдателя (рис. 1.14, б ).

    

Рис. 1.14. Аксонометрическая проекция строится с помощью параллельных лучей (а), а центральная - с помощью лучей, исходящих из одной точки (б)

Плоскость аксонометрической проекции располагается перпендикулярно  всей совокупности проекционных лучей, а плоскость центральной проекции - перпендикулярно только одному, центральному лучу, соответствующему линии визирования сцены. При аксонометрической проекции не происходит искажения горизонтальных и вертикальных размеров, но искажаются размеры, характеризующие "глубину" объекта. При центральной проекции оказываются искаженными все размеры объекта. На рис. 1.15 показано, как выглядит куб на экране 3ds max 5 при использовании аксонометрической и центральной проекций. 
Частным случаем аксонометрических проекций являются проекции ортографические, при построении которых плоскость проекции выравнивается параллельно одной из координатных плоскостей трехмерного пространства, в котором размещена сцена. К ортографическим проекциям относятся хорошо знакомые вам "вид сверху", "вид слева" и т. п. Примером перспективной проекции может служить любая фотография, сделанная обычным фотоаппаратом. 
Перспективная проекция окружающего мира привычна и естественна для наших глаз, так как в жизни мы все предметы видим в перспективе. При такой проекции чем дальше объект расположен от глаз наблюдателя, тем меньше он кажется по размерам. При параллельной проекции размеры объектов на изображении не зависят от их удаления от глаз наблюдателя. Это непривычно, но очень удобно: можно точно сопоставлять размеры объектов, на каких бы расстояниях они ни находились.

    

Рис. 1.15. Размеры объекта, параллельные плоскости аксонометрической проекции, передаются без искажений (а); при центральной проекции искажаются все размеры (б)

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

Системы координат 3ds max 5 
Основной для трехмерного мира 3ds max 5 является глобальная система координат (world reference system) с началом в точке (0, 0, 0) пространства сцены. Условно можно считать, что в виртуальном трехмерном пространстве ось Z глобальной системы координат соответствует понятию высоты, ось X - ширины, а ось Y - длины или глубины сцены. Взгляд на сцену "спереди" означает наблюдение вдоль оси Y в ее положительном направлении. В соответствии с этим, например, на проекции "вид спереди" ось X глобальной системы координат будет направлена вправо, ось Z - вверх по экрану, а ось Y - от наблюдателя, перпендикулярно экрану, как показано на рис. 1.16, а. На проекции "вид сверху" оси глобальных координат будут располагаться так: ось X направлена вправо, Y - вверх по экрану, Z - на наблюдателя, перпендикулярно экрану. Плоскостями, на которых изображаются проекции объектов сцены, по умолчанию являются три плоскости, проходящие через оси глобальной системы координат. Для проекций "вид спереди" и "вид сзади" это будет плоскость ZX, проекций "вид сверху" и "вид снизу" - плоскость XY, а для проекций "вид слева" и "вид справа" - плоскость ZY. 
В 3ds max 5 есть еще одна система координат, играющая исключительно важную роль и называемая локальной (local ). Такая система координат назначается каждому объекту и определяет понятия "верх", "лево" и "право" для этого объекта. Начало локальной системы координат помещается в опорную точку (pivot point) объекта, а сама опорная точка располагается для некоторых объектов в геометрических центрах их габаритных контейнеров, а для некоторых - в центре основания. Оси локальных координат объекта выравниваются параллельно сторонам его габаритного контейнера, причем ось Z указывает направление "вверх". При перемещении или повороте объекта его локальная система координат перемещается и поворачивается вместе с ним. Как бы ни был объект повернут в глобальных координатах, направлением "вверх" для него всегда остается направление оси Z локальной системы координат, как показано на рис. 1.16, б. Это бывает очень удобно, когда требуется переместить произвольным образом ориентированный в глобальном пространстве объект "вперед", "в сторону" или "вверх" по отношению к нему самому.

Информация о работе Трехмерная графика