Домой / Скайп / Технология создания реалистичных трехмерных изображений. Трехмерная графика в современном мире Примеры программных продуктов

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

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

Что делает изображение трехмерным?

Изображение, которое имеет или кажется, что имеет высоту, ширину и глубину является трехмерным (3D). Картинка, которая имеет высоту и ширину, но не глубину является двумерной (2D). Напомните-ка мне, где вы встречаете двумерные изображения? - Практически везде. Вспомните даже обычный символ на двери туалета, обозначающий кабинку для того или иного пола. Символы спроектированы таким образом, что вы можете распознать их и узнать с первого взгляда. Вот почему они используют только самые основные формы. Более детальная информация о каком-либо символе может рассказать вам, какую одежду носит этот маленький человечек, весящий на двери, или цвет волос, например, символики двери женского туалета. Это одно из основных отличий между тем, как используется трехмерная и двумерная графики: 2D-графика проста и запоминаема, а 3D-графика использует больше деталей и вмещает в казалось бы обычный объект значительно больше информации.

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

На протяжении сотен лет художники использовали некоторые визуальные трюки, которые могут сделать плоское 2D-изображение настоящим окном в реальный трехмерный мир. Вы можете увидеть подобный эффект на обычной фотографии, которые вы можете сканировать и просмотреть на мониторе компьютера: объекты на фотографии кажутся меньше, когда они дальше; объекты же, близкие к объективу камеры, находятся в фокусе, значит, соответственно, всё, что за объектами в фокусе - размыто. Цвета, как правило, менее яркие, если объект не так близок. Когда мы говорим о 3D-графике на компьютерах сегодня - мы говорим об изображениях, которые движутся.

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

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

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

Какая часть виртуального мира показывается на экране?
В любой момент экран показывает только крошечную часть виртуального трехмерного мира, созданного для компьютерной игры. То, что показывается на экране - определенные комбинации способов, которыми определяется мир, где вы принимаете решение куда пойти и что посмотреть. Независимо от того, куда вы идёте - вперёд или назад, вверх или вниз, влево или вправо - виртуальный трехмерный мир вокруг вас определяет то, что вы видите, находясь на определенной позиции. То, что вы видите, имеет смысл от одной сцены к другой. Если вы смотрите на объект с того же расстояния, вне зависимости от направления, он должен выглядеть высоко. Каждый объект должен выглядеть и двигаться таким образом, чтобы вы верили в то, что он имеет ту же массу, что и реальный объект, что он такой же твёрдый или мягкий, как и реальный объект, и так далее.


Программисты, которые пишут компьютерные игры, прикладывают огромные усилия к разработке виртуальных 3D-миров и делают их так, чтобы вы могли блуждать в них, не сталкиваясь ни с чем, что заставляло бы вас думать «Это не могло произойти в этом мире!». Последней вещью, которую вы хотите видеть - два твёрдых объекта, которые могут пройти прямо друг через друга. Это - резкое напоминание о том, что всё, что вы видите, является притворством. Третий шаг включает в себя ещё как минимум столько же вычислений, сколько и другие два шага и должны происходить так же в реальном времени.

Освещение и перспектива

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

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

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

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

Глубина резкости


Другим оптическим эффектом, успешно использующимся для создания графических трехмерных объектов, является глубина резкости. Используя мой пример с деревьями, помимо вышеописанного происходит ещё одна интересная вещь. Если вы посмотрите на деревья, находящиеся близко по отношению к вам, деревья, расположенные дальше, как представляется, будут не в фокусе. Кинорежиссеры и компьютерные аниматоры используют данный эффект, глубину резкости, для двух целей. Первая заключается в укреплении иллюзии глубины в рассматриваемой пользователем сцене. Вторая цель - использование режиссерами глубины резкости сосредотачивает свое внимание на предметах или актерах, которые считаются наиболее важными. Чтобы обратить ваше внимание не героиню фильма, например, может использоваться «малая глубина резкости», где только актер находится в фокусе. Сцена, которая разработана таким образом, чтобы произвести на вас полное впечатление, наоборот будет использовать «глубокую глубину резкости», чтобы как можно больше объектов было в фокусе и таким образом заметно зрителю.

Сглаживание


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

Реальные примеры

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

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

Создание анимации и видимости «живого действия»

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

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

Если вы не понимаете, о чём я только что написал, то посмотрим на это с другой стороны: это означает, что каждый кадр кинофильма - фотография, сделанная на выдержке (экспозиции) 1/24 секунды. Таким образом, если вы посмотрите на один из многочисленных кадров фильма о гонках, вы увидите, что некоторые гоночные автомобили «размываются», потому что они проехали с большой скоростью в то время, пока у камеры открыт затвор. Данная размытость вещей, создающаяся за счёт быстрого движения - то, что мы привыкли видеть, и это часть того, что делает изображение реальным для нас, когда мы смотрим на него на экране.


Однако, цифровые трехмерные изображения - это ведь не фотографии как ни крути, поэтому никакого эффекта размывания не происходит, когда объект перемещается в кадре во время съёмки. Чтобы сделать изображения более реалистичными, размывание должно быть явно добавлено программистами. Некоторые дизайнеры считают, что для «преодоления» этого отсутствия естественного размытия требуется более 30 кадров в секунду, посему и подтолкнули игры выйти на новый уровень - 60 кадров в секунду. Хотя это и позволяет каждому отдельному изображению выглядеть в мельчайших подробностях и отображать движущиеся объекты в меньших приращениях, оно существенно увеличивает количество кадров для данной анимационной последовательности действий. Есть и другие определенные куски изображений, где точный рендеринг на компьютере должен быть принесен в жертву ради реализма. Это относится как к подвижным, так и неподвижным объектам, но это уже совсем другая история.

Подойдем к концу


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

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

3D Studio и 3D Studio MAX

Один из самых известных пакетов 3D-анимации на IBM - это 3D Studio фирмы Autodesk. Программа работает под DOS, обеспечивает весь процесс создания трехмерного фильма: моделирование объектов и формирование сцены, анимацию и визуализацию, работу с видео. Кроме того, существует широкий спектр прикладных программ (IPAS-процессов), написанных специально для 3D Studio. Новая программа той же фирмы под названием 3D Studio MAX для Windows NT создавалась в течение нескольких последних лет и претендует на роль конкурента мощным пакетам для рабочих станций SGI. Интерфейс новой программы един для всех модулей и обладает высокой степенью интерактивности. 3D Studio MAX реализует расширенные возможности управления анимацией, хранит историю жизни каждого объекта и позволяет создавать разнообразные световые эффекты, поддерживает 3D-акселераторы и имеет открытую архитектуру, то есть позволяет третьим фирмам включать в систему дополнительные приложения.



TrueSpace, Prisms, Three-D, RenderMan, Crystal Topas

Electric Image, SoftImage

Для создания трехмерной анимации на компьютерах IBM и Macintosh удобно пользоваться и пакетом Electric Image Animation System, включающим большой комплекс анимационных средств, спецэффекты, инструментарий для работы со звуком и генератор шрифтов с настраиваемыми параметрами. Хотя у этой программы нет средств моделирования, но зато есть возможность импорта свыше тридцати различных форматов моделей. Пакет также поддерживает работу с иерархическими объектами и средствами инверсной кинематики. В свою очередь, программа Softimage 3D фирмы Microsoft работает на платформах SGI и Windows NT. Она поддерживает моделирование на базе полигонов и сплайнов, создание спецэффектов, работу с частицами и технологию переноса движения с живых актеров на компьютерных персонажей.

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

Автоматизированное создание прототипов проектируемых изделий (Rapid Prototyping)

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

Принцип заключается в создании трехмерной модели изделия и представлении ее в виде отдельных поперечных двухмерных профилей, так называемых, срезов малой толщины (0,1-0,5 мм), параметры которых передаются в систему ЧПУ специального комплекса, с помощью которого формируется реальная модель каждого среза, набор которых образует реальную модель изделия – его прототип. Создание прототипа осуществляется на специальном основании (подложке), которое после изготовления каждого среза опускается на толщину среза. На основании этого метода разработан ряд способов изготовления прототипов:

Стереолитографии;

Покрытие твердой массой;

Из слоев специальной бумаги или фольги;

Селективное спекание с помощью лазера;

Наплавлением.

Стереолитография (Stereolithography - STL) . Прототип изготавливается на подложке в емкости, заполненной жидким полимером (так называемым, фотополимером), который затвердевает под воздействием лазерного луча. Лазер установлен рабочем органе, управление перемещением которого осуществляется от системы ЧПУ. Программа перемещения лазера составляется на основании сечений отдельных слоев трехмерной твердотельной модели изделия. Лазер сканирует очередной слой, в результате чего на этом участке полимер затвердевает, после чего подложка опускается на толщину среза и этот процесс выполняется для последующего сечения до тех пор, пока не будет изготовлен прототип изделия.

Способ покрытия твёрдой массой (Solid Ground Curing - SGC) не требует использования лазера и включает выполнение двух параллельно выполняемых процесса: создание маски и нанесение слоя фотополимера. Создание маски осуществляется для каждого среза трехмерной твердотельной модели методом электростатического осаждения материала, не прозрачного для прохождения ультрафиолетового излучения на прозрачную пластину маски. Затем на подложку наносится жидкий полимер затвердевающий под влиянием ультрафиолетового излучения. Пластина с маской помещается над подложкой с фотополимером и осуществляется освещение фотополимера ультрафиолетовым излучением через маску, в результате чего освещенный участок фотополимера затвердевает. Затем незатвердевший фотополимер удаляется, а на его место наносится слой легкоплавящегося материала, (например, воска) с целью уменьшения коробления. С пластины удаляется маска и создается следующая маска, соответствующая сечению последующего слоя модели. Процесс повторяется. По окончании цикла изготовления прототипа изделия слой легкоплавящегося материала удаляется горячей жидкостью.

Процесс создания объектов из слоёв специальной бумаги или фольги (Laminated Objekt manufacturing – LOM), покрытой клеевым составом, требует применения лазера. Каждый слой создается путем подачи бумаги в рабочую зону, вырезания контура соответствующего среза лазерным лучем и склеивания его с предыдущим слоем в результате обкатки горячим роликом. Материал: синтетическая фольга, алюминиевая фольга, керамическая фольга, ткань из углеродистого волокна.

Селективное спекание с помощью лазера (Selective Laser Sintering - SLS) заключается в последовательном нанесении слоев порошка из термопластичного материала и спекания каждого слоя под воздействием лазерного луча программно-управляемого лазера. Используется порошковый материал, в качестве чего принципиально могут использоваться все термопластичные материалы, как например, термопласты, воск для точного литья, металлы, формопесок.

Создание объектов наплавлением (Fused Deposition Modelling - FDM) не требует применения лазера и заключается в создании каждого слоя наплавлением термопластичного материала с помощью нагреваемого сопла, перемещение которого осуществляется с помощью устройства с ЧПУ.

Материал: термопластичная пластмасса, специальный воск для точного литья.

Использование трехмерных моделей для расчета изделий методами имитационного моделирования

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

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

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

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

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

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

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

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

где [n] - допустимое значение запаса прочности. Допустимый запас прочности назна­чают на основании инженерного опыта эксплуатации подобных конструкций (прототи­пов). Ряд отраслей техники имеют нормы прочности, в которых допустимые запасы проч­ности регламентированы для разных условий эксплуатации. Обычный диапазон изме­нений [n] колеблется от 1, 3 (при стабильных условиях нагружения) до 5 и более (при пе­ременных и динамических нагрузках). В практике расчетов используют как аналитические, так и численные методы. Первые базируются на математических методах решения краевых задач, обычно сложных и тру­доемких, и зачастую ограничены достаточно простыми геометрическими формами тел и схем нагружения. Численные методы, к которым относятся, в частности, метод конечных разностей, метод граничных интегральных уравнений, метод граничных элементов, метод конечных элементов и другие методы, напротив, не ограничены ни формой тел, ни спосо­бом приложения нагрузки. Это, наряду с повсеместным распространением мощной вы­числительной техники, способствует их распространению в инженерной среде.

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

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

К узлам прикладываются граничные условия: кинематические (закрепления, перемещения) и статические (нагрузки), в результате чего тело деформируется. Условие равновесия каждого элемента:

где Р-вектор усилий, U-вектор перемещений, -матрица жесткости конечного элемента, в которую входят модуль упругости (Юнга) E, характеризующий сопротивление материала упругой деформации (отношение напряжения к вызванной им упругой деформации) и коэффициент Пуассона μ (отношение поперечной деформации к продольной).

Матрицы жесткости всех конечных элементов объединяются в глобальную матрицу жесткости [K], перемещения и усилия в узлах объединяются соответственно в общие столбцы перемещений [U] и усилий [P].

В результате создается система линейных уравнений, в которой неизвестными являются перемещения:

Решается система уравнений с вычислением перемещений каждого узла. Это стало возможным, когда в 1963 г. было доказано, что этот МКЭ можно рассматривать как один из вариантов известного в строительной механике метода Рэлея-Ритца, который путем минимизации потенциаль­ной энергии позволяет свести задачу к системе линейных уравнений равновесия. То есть полученное решение соответствует минимуму потенциальной энергии деформированной упругой системы.

Перемещения связаны с соответствующими напряжениями законом Гука:

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

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

Прежде чем изображение станет реалистичным, объекты проходят несколько стадий обработки. Самые важные стадии это создание формы (shape), обтягивание текстурами, освещение, создание перспективы, глубины резкости (depth of field) и сглаживания (anti-aliasing).

Создание формы

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

На иллюстрации показан каркас руки, изготовленный из малого количества полигонов - всего 862

Поверхностные текстуры (surface textures)

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

  • Цвет: Какого поверхность цвета? Однородно ли она окрашена?
  • Текстура: Ровная ли поверхность или на ней есть вмятины, бугры, рихтовка или что-то подобное?
  • Отражающая способность: Отражает ли поверхность свет? Четкие ли отражения или они размазаны?

Один из способов придания "реальности" объекту и состоит в подборе комбинации этих трех составляющих в различных частях изображения. Посмотрите вокруг себя: ваша компьютерная клавиатура имеет отличающийся цвет/текстуру/отражающую способность от вашего стола, который в свою очередь отличается цветом/текстурой/отражающей способностью от вашей руки. Для того чтобы цвет изображения был похож на настоящий, важно чтобы компьютер мог выбирать цвет пикселя из палитры в миллионы различных цветов. Разнообразие текстур зависит как от математической модели поверхности (от кожи лягушки до желеобразного материала) так и от карт текстур (texture maps), которые накладываются на поверхности. Также необходимо заложить в объекты те качества, которые нельзя увидеть: мягкость и твердость, теплоту и холод с помощью различных комбинаций цвета, текстуры и отражающей способности. Если ошибиться хотя бы в одном из этих параметров, ощущение реальности мгновенно рассеется.


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

Освещение

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

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


Подсветка изображения не только добавляет глубину
объекту через затенение, но и "привязывает"
объект к земле посредством тени.

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

Перспектива

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

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

Z-буфер присваивает каждому полигону номер в зависимости от того, насколько близко к переднему краю сцены располагается объект, содержащий этот полигон. Обычно меньшие номера присваиваются ближайшим к экрану полигонам, а большие номера - полигонам, примыкающим к горизонту. Например, 16-битный Z-буфер присвоит ближайшему к экрану объекту номер -32.768, а самому удаленному - 32.767.

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

Глубина резкости

Другой оптический эффект, глубина резкости, также успешно используется в 3D графике. Будем использовать тот же пример с деревьями, посаженными по обочине дороги. По мере удаления деревьев от наблюдателя будет происходить другой интересный эффект. Если вы посмотрите на ближайшие к вам деревья, то удаленные деревья будут не в фокусе. Особенно это видно при просмотре фотографии или видеоролика с теми же деревьями. Режиссеры и компьютерные аниматоры используют этот эффект в двух целях. Первая состоит в усилении иллюзии глубины наблюдаемой сцены. Конечно же, компьютер может прорисовывать каждый объект сцены точно в фокусе, независимо от его удаления. Но так как в реальном мире эффект глубины резкости всегда присутствует, то прорисовка всех предметов в фокусе приведет к нарушению иллюзии реальности сцены.

Вторая причина использования этого эффекта заключается в привлечении вашего внимания к нужным предметам или актерам. Например, для усиления вашего внимания к герою фильма, режиссер будет использовать эффект малой глубины резкости (shallow depth of field), когда только один актер будет находиться в фокусе. С другой стороны, сцены, которые должны потрясти вас величием природы, используют эффект большой глубины резкости (deep depth of field) чтобы дать как можно больше предметов в фокусе.

Сглаживание (anti-aliasing)

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

Для повышения реалистичности отображения наложенных на полигоны текстур используются различные технологии:

· сглаживания (Anti-aliasing);

· MIP – mapping;

· текстурной фильтрации.

Технология сглаживания (Anti-aliasing)

Anti-aliasing – это технология, использующаяся в обработке изображений с целью устранения эффекта «ступенчатых» краев (Aliasing) объектов. При растровом методе формирования изображения оно состоит из пикселей. Из-за того, что пиксели имеют конечный размер, на краях трехмерных объектов можно различить так называемую лестницу или ступенчатые края. Чтобы минимизировать эффект лестницы проще всего увеличить разрешение экрана, уменьшив тем самым размер пикселей. Но этот путь не всегда возможен. Если избавиться от ступенчатого эффекта за счет повышения разрешения монитора нельзя, можно использовать технологию Anti-aliasing, которая позволяет визуально сгладить эффект лестницы. Наиболее часто используемая для этого техника – это создание плавного перехода от цвета линии или края к цвету фона. Цвет точки, лежащей на границе объектов, определяется как среднее значение цветов двух граничных точек.

Существует несколько базовых технологий Anti-aliasing. Наиболее качественный результат впервые дала технология полноэкранного сглаживания FSAA (Full Screen Anti-Aliasing). В некоторых литературных источниках эта технология носит название SSAA. Суть данной технологии заключается в том, что процессор рассчитывает кадр изображения в гораздо большем разрешении, чем разрешение экрана, а затем при выводе на экран усредняет значения группы пикселей до одного; количество усредненных пикселей соответствует разрешению экрана монитора. Например, если кадр с разрешением 800х600 сглаживается с помощью FSAA, изображение будет рассчитываться в разрешении 1600х1200. При переходе к разрешению монитора цвета четырех рассчитанных точек, соответствующих одному пикселю монитора, усредняются. В результате у всех линий появляются плавные цветовые границы переходов, что визуально устраняет эффект лестницы.

FSAA делает много лишней работы, загружая графический процессор, сглаживая не границы, а изображение целиком, что является его главным недостатком. Для устранения данного недостатка был разработан более экономная технология - MSSA.

Суть технологии MSSA аналогична технологии FSAA, но над пикселями, находящимися внутри полигонов, никаких расчетов не проводится. Для пикселей на границах объектов в зависимости от уровня сглаживания рассчитывается 4 и более дополнительных точек, по которым и определяется итоговый цвет пикселя. Эта технология наиболее распространена в настоящее время.

Известны индивидуальные разработки производителей видеоадаптеров. Например, NVIDIA разработала технологию Coverage Sampling (CSAA), которая поддерживается только видеоадаптерами GeForce, начиная с 8-ой серии (8600 – 8800, 9600 – 9800). Компания ATI ввела в графический процессор R520 и все последующие адаптивное сглаживание ААА (Adaptive Anti-Aliasing).

Технология MIP mapping

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

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

Эта задача и решается с помощью технологии MIP mapping, которая подразумевает возможность применения набора текстур с различной степенью детализации. На базе каждой текстуры создается набор текстур с меньшим уровнем детализации. Текстуры такого набора называются MIP – картами (MIP map).

В простейшем случае наложения текстуры для каждого пикселя изображения определяется соответствующая ему MIP – карта согласно таблицы детализации LOD(Level of Detail). Далее из MIP – карты выбирается только один тексел, цвет которого присваивается пикселю.

Технологии фильтрации

Как правило, технология MIP mapping используется в сочетании с технологиями фильтрации, призванными исправить артефакты MIP –текстурирования. Например, при удалении объекта всё дальше от точки наблюдения происходит переход от низкого MIP map-уровня к более высокому MIP map-уровню. В момент нахождения объекта в переходном состоянии от одного MIP map-уровня к другому появляется особый тип ошибок визуализации: явно различимые границы перехода от одного MIP map-уровня к другому.

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

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

Более высокое качество дает трилинейная фильтрация, при которой для определения цвета пикселя берётся среднее значение цвета восьми текселов, по четыре из двух соседних структур, и в результате семи операций смешивания определяется цвет пикселя.

С ростом производительности графических процессоров была разработана анизотропная фильтрация, которая успешно применяется до сих пор. При определении цвета точки она использует большое количество текселей и учитывает положение полигонов. Уровень анизотропной фильтрации определяется числом текселей, которые обрабатываются при вычислении цвета пикселя: 2х (16 текселей), 4х (32 текселя), 8х (64 текселя), 16х (128 текселей). Данная фильтрация обеспечивает высокое качество выводимого движущегося изображения.

Все эти алгоритмы реализует графический процессор видеокарты.

Интерфейс прикладного программирования (API)

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

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

эффективное преобразование запросов прикладной программы в оптимизированную последовательность низкоуровневых команд 3D-акселератора с учетом особенностей его аппаратного построения;

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

Специальный пакет служебных программ для выполнения этих функций называется интерфейсом прикладного программирования (ApplicationProgram Interface = API ).

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

В настоящее время в 3D существует несколько API, области применения которых довольно четко разграничены:

DirectX , разработанный фирмой Microsoft, используемый в игровых приложениях, работающих под управлением операционных систем Windows 9X и более поздних версий;

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

Фирменные (native – родные) API , создаваемые производителями 3D-акселераторов исключительно для своих Chipset с целью наиболее эффективного использования их возможностей.

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

В отличие от DirectX, API OpenGL построен на концепции открытого стандарта, имеющего небольшой базовый набор функций и множество расширений, реализующих более сложные функции. Производитель Chipset 3D-акселератора обязан создать BIOS и драйверы, выполняющие базовые функции Open GL, но не обязан обеспечивать поддержку всех расширений. Это порождает ряд проблем, связанных с написанием производителями драйверов для своих изделий, которые поставляются как в полном, так и в усеченном виде.

Полная версия OpenGL-совместимого драйвера носит название ICD (Installable Client Driver – драйвер приложения – клиента). Он обеспечивает максимальное быстродействие, т.к. содержит низкоуровневые коды, обеспечивающие поддержку не только базового набора функций, но и его расширений. Естественно, что с учетом концепции OpenGL создание подобного драйвера исключительно сложный и трудоемкий процесс. Это одна из причин более высокой стоимости профессиональных 3D-акселераторов по сравнению с игровыми.