Top Banner
А.В. Цыганов 2008 Алгоритмы машинной графики IV
83

Цыганов_Алгоритмы машинной графики4

Jul 29, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Цыганов_Алгоритмы машинной графики4

А.В. Цыганов 2008

Алгоритмы машинной графики IV

Page 2: Цыганов_Алгоритмы машинной графики4

Real Flow + Maya

Page 3: Цыганов_Алгоритмы машинной графики4

RealFlow+ 3ds Max - уроки на www.render.ru

(другие файлы в папке показать отдельно)

Page 4: Цыганов_Алгоритмы машинной графики4

Программное обеспечение для рендеринга — рендеры (визуализаторы) *3Delight *AIR *ART *AQSIS *Angel *Brazil R/S *BusyRay *finalRender *Fryrender *Holomatix Renditio (интерактивный рейтрейсер) *Indigo Renderer *mental ray *Kerkythea *LuxRender *Maxwell Render *Meridian *POV-Ray *Pixie *RenderDotC *RenderMan (PhotoRealistic RenderMan, Pixar’s RenderMan или PRMan) *Sunflow *Turtle *V-Ray *YafRay *Octane Render *Arion Renderer Рендеры работающие в реальном (или почти в реальном) времени. *VrayRT *FinalRender *iray *Shaderlight *Showcase *Rendition *Brazil IR Пакеты трёхмерного моделирования, имеющие собственные рендеры *Autodesk 3ds Max (Scanline) *Autodesk Maya (Software Hardware, Vector) *Blender *NewTek LightWave 3D *Maxon Cinema 4D (Advanced Render) *SketchUp *Daz3D Bryce *Luxology Modo *e-on Software Vue *SideFX Houdini *Terragen, Terragen 2 + специализированные программы и модули RealFlow …… т.е. все изучить невозможно!!!!!!!!!

Page 5: Цыганов_Алгоритмы машинной графики4

3d Studio Max располагает обширными

средствами по созданию разнообразных по

форме и сложности трёхмерных

компьютерных моделей реальных или

фантастических объектов окружающего

мира:

полигональное моделирование в которое

входят Editable mesh (поверхность) и

Editable poly (полигон) ;

моделирование на основе неоднородных

рациональных B-сплайнов (NURBS);

моделирование на основе порций

поверхностей Безье ;

моделирование с использованием

встроенных библиотек стандартных

параметрических объектов (примитивов)

и их модификаторов.

Page 6: Цыганов_Алгоритмы машинной графики4

Список стандартных встроенных объектов *Прямоугольный параллелепипед (Box) *Сфера (Sphere) *Цилиндр (Cylinder) *Тор (Torus) *Чайник (Teapot) *Конус (Cone) *Труба (Tube) *Пирамида (Pyramid) *Плоскость (Plane) *Геосфера (GeoSphere) Список дополнительных встроенных объектов *Многогранник (Hedra) *Прямоугольный параллелепипед с фаской (ChamferBox) *Цистерна (OilTank) *Веретено (Spindle) *Многогранная призма (Gengon) *Призма (Prism) *Тороидальный узел (Torus knot) *Цилиндр с фаской (ChamferCyl) *Капсула (Capsule) *L-образное тело выдавливания (L-Ext) *C-образное тело выдавливания (C-Ext) Динамика - Spray (Брызги), Snow (Снег), Blizzard (Метель), PArray (Массив частиц), PCloud (Облако частиц) , Super Sprays (Супербрызги) и Particle Flow — это изощрённая нелинейная событийно-управляемая система частиц, разработанная Олегом Байбородиным, и механизм расчёта физики reactor, изначально разработанный Havok.

Стефани Рис Анимация персонажей в 3D Studio MAX. = Анимация персонажей в 3D Studio MAX.. — М.: BOOKS, 2009. — С. 450. Келли Л. Мэрдок Autodesk 3ds Max 2009. 3D Studio max. Библия пользователя = Autodesk 3ds Max 2009 Bible. 3D Studio max. — М.: «Диалектика», 2009. — С. 1312.

Page 7: Цыганов_Алгоритмы машинной графики4

Типовая схема графической обработки

Page 8: Цыганов_Алгоритмы машинной графики4

Геометрическое моделирование

Page 9: Цыганов_Алгоритмы машинной графики4

Трехмерная анимация

Page 10: Цыганов_Алгоритмы машинной графики4

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

Page 11: Цыганов_Алгоритмы машинной графики4

Синтез изображений (экранизация)

Page 12: Цыганов_Алгоритмы машинной графики4

Хранение и вывод изображения

Page 13: Цыганов_Алгоритмы машинной графики4

Геометрическое моделирование

Page 14: Цыганов_Алгоритмы машинной графики4

Ше́йдер (Shader) — это программа на “машинном” языке видеокарты, используемая в трёхмерной графике для определения окончательных параметров объекта или изображения. Может включать в себя произвольной сложности описание поглощения и рассеяния света, наложения текстуры, отражение и преломление, затенение, смещение поверхности и эффекты пост-обработки. Чтобы понять, что такое шейдер, разберемся для начала, как видео карта рисует примитивы (треугольники, полигоны и др.) На вход поступают данные о каждой вершине примитива. Например, положение вершины в пространстве, нормаль и текстурные координаты. Эти данные называются вершинными атрибутами (vertex attributes). GPU на их основе вычисляет выходные значения: положение вершины в экранных координатах и цвет вершины, рассчитанный в зависимости от освещения и т.д. и т.п.

Page 15: Цыганов_Алгоритмы машинной графики4

В настоящее время шейдеры делятся на типа:

Вершинные

Геометрические

Пиксельные (фрагментные)

+ версии программ!!!

Вершинные шейдеры (Vertex Shader)

оперируют данными, сопоставленными с

вершинами многогранников. К таким данным, в

частности, относятся координаты вершины в

пространстве, текстурные координаты, тангенс-

вектор, вектор бинормали, вектор нормали.

Вершинный шейдер может быть использован

для видового и перспективного

преобразования вершин, генерации

текстурных координат, расчета освещения

и т. д.

Page 16: Цыганов_Алгоритмы машинной графики4

Геометрические шейдеры (Geometry Shader) Геометрический шейдер, в отличие от вершинного, способен обработать не только одну вершину, но и целый примитив. Это может быть отрезок (две вершины) и треугольник (три вершины), а при наличии информации о смежных вершинах (adjacency) может быть обработано до шести вершин для треугольного примитива. Кроме того геометрический шейдер способен генерировать примитивы «на лету», не задействуя при этом центральный процессор. Впервые начал использоваться на видеокартах Nvidia серии 8.

Page 17: Цыганов_Алгоритмы машинной графики4

Пиксельные (фрагментные) шейдеры (Pixel Shader) Фрагментный шейдер работает с фрагментами изображения. Под фрагментом изображения в данном случае может понимается пиксель, которому поставлен в соответствие некоторый набор атрибутов, таких как цвет, глубина, текстурные координаты. Фрагментный шейдер используется на последней стадии графического конвейера для формирования фрагмента изображения.

Page 18: Цыганов_Алгоритмы машинной графики4

Шейдерные языки 1. RenderMan является фактическим стандартом для профессионального

рендеринга, используется во всех работах студии Pixar;

2. NVIDIA Gelato представляет собой оригинальную гибридную систему рендеринга изображений и анимации трехмерных сцен и объектов( “заточен под” Quadro FX);

3. GLSL (The OpenGL Shading Language) язык OpenGL, основан на языке ANSI C.

4. Cg расшифровывается как C for Graphics, использует схожие типы (int, float, а также специальный 16-битный тип с плавающей запятой — half). Поддерживаются функции и структуры. Язык обладает своеобразными оптимизациями в виде упакованных массивов (packed arrays).

5. Низкоуровневый шейдерный язык DirectX (DirectX ASM)- по синтаксису сходен с Ассемблером. Существует несколько версий, различающихся по набору команд, а также по требуемому оборудованию.

6. Высокоуровневый шейдерный язык DirectX (HLSL — High Level Shader Language) - по синтаксису сходен с С, позволяет использовать структуры, процедуры и функции.

Page 19: Цыганов_Алгоритмы машинной графики4

Microsoft HLSL (High Level Shading Language)

#define C_EYE_POSITION 27 #define C_DISPLACEMENTS 30 // light direction float3 L = normalize(float3(-0.2f, -0.8f, 0.4f)); // light intensity float4 I_a = float4(0.3f, 0.3f, 0.3f, 1.0f); float4 I_d = float4(0.6f, 0.6f, 0.6f, 1.0f); float4 I_s = float4(0.8f, 0.8f, 0.8f, 1.0f); // material specular float4 k_s = float4(1.0f, 1.0f, 1.0f, 1.0f); // transformations float4x4 World : WORLD; float4x4 View : VIEW; float4x4 Projection : PROJECTION; // eye position float3 Eye; // textures texture FinTex; texture ShellTex; static const float4 vOne = float4(1, 1, 1, 1); VertexShader ShellVS = asm { vs.1.1 dcl_position v0 dcl_normal v3 dcl_color0 v4 dcl_texcoord v6

1. Мех. Пример файла эффектов с

шейдерами на ассемблере

#include "light_scattering_constants.h" // transformations float4x4 mWorldViewProj: WORLDVIEWPROJECTION; float4 vCameraPos: worldcamerapos; float4 sun_color : suncolor = {0.578f,0.578f,0.578f,0.0f}; float4 xAxis = {1.0f, 0.0f, 0.0f, 0.0f}; float4 vHalf = {0.5f, 0.5f, 0.5f, 0.0f}; float3 waterColor0 = {0.15f, 0.4f, 0.5f}; float3 waterColor1 = {0.1f, 0.15f, 0.3f}; texture tex0 : TEXTURE; // blend mask struct VS_INPUT { float2 Pos : POSITION; float ZPos0 : POSITION1; float2 Norm0 : NORMAL0; float ZPos1 : POSITION2; float2 Norm1 : NORMAL1; }; struct VS_OUTPUT { float4 Pos : POSITION; float3 Col : COLOR0; float3 T0 : TEXCOORD0; float3 T1 : TEXCOORD1; }; VS_OUTPUT VS(VS_INPUT v) { VS_OUTPUT Out = (VS_OUTPUT)0;

2. Вода. Пример файла эффектов на языке

MS HLSL

Page 20: Цыганов_Алгоритмы машинной графики4

Шейдеры в OpenGL.

Page 21: Цыганов_Алгоритмы машинной графики4

На базовом уровне, OpenGL — это просто спецификация, то есть документ, описывающий набор функций и их точное поведение (в данный момент OpenGL 4.0). Производители оборудования на основе этой спецификации создают реализации — библиотеки функций, соответствующих набору функций спецификации. Реализация использует возможности оборудования там, где это возможно. Если аппаратура не позволяет реализовать какую-либо возможность, она должна быть эмулирована программно. Производители должны пройти специфические тесты (conformance tests — тесты на соответствие) прежде чем реализация будет классифицирована как OpenGL реализация. Таким образом, разработчикам программного обеспечения достаточно научиться использовать функции, описанные в спецификации, оставив эффективную реализацию последних разработчикам аппаратного обеспечения.

Page 22: Цыганов_Алгоритмы машинной графики4

С точки зрения программиста OpenGL -

это программный интерфейс (API) для

графических устройств, включающий в

себя более 250 различных команд, с

помощью которых программист может

определять различные объекты и

производить рендеринг.

Говоря более простым языком, вы

определяете объекты, задаёте их

местоположение в трёхмерном

пространстве, определяете другие

параметры (поворот, масштаб, ...),

задаёте свойства объектов (цвет,

текстура, материал, ...), положение

наблюдателя, а библиотека OpenGL

позаботится о том чтобы отобразить всё

это на экране в экранных координатах.

Page 23: Цыганов_Алгоритмы машинной графики4

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

Page 24: Цыганов_Алгоритмы машинной графики4

Сторонние средства

• Результатом отсутствия встроенной поддержки OpenGL API стало появление большого числа сторонних средств-оболочек (wrappers), которые позволяют писать и обрабатывать шейдерные “программы”.

• Например библиотека CsGL (http://csgl.sourceforge.net) и инструментарий Tao Framework (http://www.taoframework.com) - на данный момент это один из наиболее оптимальный путей для использования OpenGL под C#

(конечно есть и другие – так что это дело привычки и удобства)

• Оба проекта являются бесплатными и распространяются с открытым исходным кодом

Page 25: Цыганов_Алгоритмы машинной графики4

Существует много других различных API (application programmer’s interface) и

открытых и коммерческих:

OpenVG, X11, Qt, GTK, Motiff, Tk, GDI, GDI+, Direct3D (часть DirectX)

DirectDraw (часть DirectX), Zune, SDL, PHIGS, VRML, JAVA3D,Glide API,

NVIDIA® PhysX, ACIS, Computentional Geometry Algorithm Library (CGAL),

Visualization Toolkit, OpenMesh и т.д.

+ собственные библиотеки для CAD’ов и CAE’ов

AutoСad, ArchСad, NanoCAD, Adem,Ansys, LS-DYNA, MSC.Adams, Abaqus,

NEiNastran, SolidWorks, SolidEDGE, PROe, Catia, Unigraphix, FlowVision и т.д

(например, в OpenGL кривые Безье задаются только по трем или четырем

вершинам. )

Page 26: Цыганов_Алгоритмы машинной графики4

Конвейерная архитектура обработки геометрических данных – блок-схема

Page 27: Цыганов_Алгоритмы машинной графики4

3D-сцена и графический конвейер

1. Wireframe ( Каркасное) моделирование поверхности объектов с учетом видимого объема (Camera, Frustum, View Volume). Формирование списка отображаемых объектов.

2. Tesselation. Тесселяция или триангуляция (triangulation): разбиение поверхности на плоские полигональные элементы. Вместо криволинейной поверхности – полигональная модель, представленная вершинами (vertex)

3. Transformation (трансформация) : перемещение, изменение формы посредством матричных преобразований вершин в пределах видимого объема

4. Lighting. Расчет освещенности и затенения (shading) объектов по вершинам. Методы интерполяции для полигональных поверхностей: Гуро (Gouraud shading), Фонга (Phong shading), применение вершинных шейдеров

5.Camera-ViewPort. Проецирование 3D-объекта с сохранением информации о расстоянии (о глубине) каждой из вершин до плоскости проекции

6. Triangle setup. Подготовка (компоновка ) треугольников объекта: генерация текстурных координат; сортировка вершин; отбор и отбрасывание нелицевых граней (culling)

Page 28: Цыганов_Алгоритмы машинной графики4

3D-сцена и графический конвейер 1. HSR (Hidden Surface Removal) – Удаление скрытых, для текущей точки наблюдения, поверхностей. Алгоритмы: z-сортировка; z-буферизация; построчное сканирование

2. Texture mapping. Текстурирование – первый этап растровой графики. Текселы-элементы текстуры формата 2m x 2n. Соответствие пикселов и текселов устанавливается по результатам проецирования. Приемы: MIP-mapping (текстуры с различным разрешением); perspective corrected texture mapping (коррекция перспективы); Filtering (LF, BLF, TLF, Anisotropic); bump mapping (наложение мелкомасштабного рельефа); мультитекстурирование (конвейерное) – 2 и более блоков текстурирования; пиксельные шейдеры

3. -blending and fogging (моделирование полупрозрачности, коррекция цвета: - смешивание и

затуманивание ) 4. Anti-aliasing (Коррекция зазубренности границ: edge AA (краевой) и full screen AA (полный ~ FSAA) Приемы: super sampling (супер- и мультисэмплинг); tile based архитектура; техника аккумулятора. 5. Dithering. Интерполяция недостающих цветов (для индексированногоцвета) 6. Frame buffer. Формирование кадрового буфера для формирования выходного аналогового сигнала. Приемы: double buffering двойная буферизация ~ формирование 2-го начинается до того как закончится передача в ЦАП (RAM DAC) первого 7. Post-processing. Пост-обработка: двумерные эффекты над целым кадром.

Page 29: Цыганов_Алгоритмы машинной графики4

Экранное пространство

Page 30: Цыганов_Алгоритмы машинной графики4

Мировое пространство

Page 31: Цыганов_Алгоритмы машинной графики4
Page 32: Цыганов_Алгоритмы машинной графики4

Типы геометрических преобразований

• Изометрия (сохраняются расстояния)

композиция поворотов и переносов

• Подобие (сохраняются углы)

масштабирование

• Аффинные преобразования (сохраняется

параллельность линий) сдвиг

• Линейные (проективные) преобразования

(прямые переходят в прямые)

• Нелинейные преобразования

Page 33: Цыганов_Алгоритмы машинной графики4
Page 34: Цыганов_Алгоритмы машинной графики4
Page 35: Цыганов_Алгоритмы машинной графики4
Page 36: Цыганов_Алгоритмы машинной графики4

Нелинейные преобразования (изгиб)

Page 37: Цыганов_Алгоритмы машинной графики4

Нелинейные преобразования (кручение)

Page 38: Цыганов_Алгоритмы машинной графики4

При w->0 получаем прямую под фиксированным углом наклона!

Page 39: Цыганов_Алгоритмы машинной графики4

Умножаем на матрицу справа!

Page 40: Цыганов_Алгоритмы машинной графики4

Линейные преобразования (3D)

Page 41: Цыганов_Алгоритмы машинной графики4

Перенос

Page 42: Цыганов_Алгоритмы машинной графики4

Масштабирование

Page 43: Цыганов_Алгоритмы машинной графики4

Преобразования в матричной форме

Page 44: Цыганов_Алгоритмы машинной графики4

Это при умножении справа на строку!!!!

Page 45: Цыганов_Алгоритмы машинной графики4

Варианты моделирования преобразований точки P:

[P][T]=[x y z 1][T]=[P*]

([P][T])T =[T]T [P]T = [T'][P']

Элементы матрицы Т и типы преобразований

x y z h

'*][

11

]'[]']['[*

*

*

Pz

y

x

z

y

x

TPT

h

zz

z

y

z

x

y

zyy

y

x

x

z

x

yxx

Mnml

rMSS

qSMS

pSSM

T ][

Аффинные (в т.ч. ортогональные) преобразования Mxx=-1 – отражение по х, |Mxx|≠1 – масштаб по х Sx

y – сдвиг по х пропорциональный у

l,m,n – вектор параллельного переноса p,q,r – перспективные преобразования Mh – общий масштаб

y=1

Sx

y

Page 46: Цыганов_Алгоритмы машинной графики4

Параллельный перенос

Page 47: Цыганов_Алгоритмы машинной графики4

Масштабирование

Page 48: Цыганов_Алгоритмы машинной графики4

Поворот вокруг оси Z

Page 49: Цыганов_Алгоритмы машинной графики4

Поворот вокруг осей Y и X

Page 50: Цыганов_Алгоритмы машинной графики4

Эти же самые матрицы используют и для описания нелинейных преобразований!!!

Page 51: Цыганов_Алгоритмы машинной графики4
Page 52: Цыганов_Алгоритмы машинной графики4
Page 53: Цыганов_Алгоритмы машинной графики4

Сдвиг (shear, skew)

Page 54: Цыганов_Алгоритмы машинной графики4

Суперпозиция преобразований

Умножение ассоциативно, но не коммутативно!!!!

Page 55: Цыганов_Алгоритмы машинной графики4

Иерархия преобразований (1)

Page 56: Цыганов_Алгоритмы машинной графики4

Иерархия преобразований (2)

Page 57: Цыганов_Алгоритмы машинной графики4

Иерархия преобразований (3)

Page 58: Цыганов_Алгоритмы машинной графики4

Иерархия преобразований (4)

Page 59: Цыганов_Алгоритмы машинной графики4

Иерархия преобразований (5)

Page 60: Цыганов_Алгоритмы машинной графики4

Пример (1)

Page 61: Цыганов_Алгоритмы машинной графики4

Пример (2)

Page 62: Цыганов_Алгоритмы машинной графики4

Пример (3)

Page 63: Цыганов_Алгоритмы машинной графики4

Построение теней

Page 64: Цыганов_Алгоритмы машинной графики4

Тени

• Геометрическая оптика Френеля

• Чёткие (hard shadows) тени

– Точечный источник или источник направленного параллельного света

• Мягкие (soft shadows) тени

– Протяжённый источник света

Page 65: Цыганов_Алгоритмы машинной графики4
Page 66: Цыганов_Алгоритмы машинной графики4

Преобразование «на землю»

• Первый алгоритм, применённый в играх. Впервые описан Джимом

Блинном

• Простота реализации и хорошее качество получаемых теней

• Два случая

– Источник в бесконечности (параллельный направленный свет)

– Локальный источник (точечный источник недалеко от объекта)

• Расчёт теневых проекций полигона для каждого источника света

Если источник на бесконечности, то уравнение проекции решается только

один раз и применяется ко всем вершинам объекта, во втором случае каждая

вершина имеет своё собственное направление на источник света.

Page 67: Цыганов_Алгоритмы машинной графики4

Источник в бесконечности Имея направление света L=( 𝒙𝒍, 𝒚𝒍 , 𝒛𝒍 ,h) и вершину объекта P, мы хотим получить проекцию вершины объекта на плоскость z=0, т.е. точку тени S. Матрица перехода

Теперь, имея координаты точки P в мировом пространстве, можно получить её проекцию S на плоскость z=0 просто путём умножения на матрицу:

𝑺 = 𝑴𝒔𝑷

1000

0000

010

001

l

l

l

l

s zy

zx

M

Page 68: Цыганов_Алгоритмы машинной графики4

Локальный источник

Геометрическое определение

𝑺 = 𝑷 + 𝜶 𝑷 − 𝑳 , 𝜶 =−𝒛𝑷

𝒛𝑷 − 𝒛𝑳

𝒙𝑺 =𝒙𝑳𝒛𝑷 − 𝒙𝑷𝒛𝑳

𝒛𝑷 − 𝒛𝑳, 𝒚𝑺 =

𝒚𝑳𝒛𝑷 − 𝒚𝑷𝒛𝑳

𝒛𝑷 − 𝒛𝑳,

Можно эту формулу записать в виде матрицы проекции на плоскость z = 0 Теперь, имея координаты точки P в мировом пространстве, можно получить её проекцию S на плоскость z=0 просто путём умножения на матрицу:

𝑺 = 𝑴𝒔𝒉𝑷

Page 69: Цыганов_Алгоритмы машинной графики4

Наложение теневой маски -проективное пространство

• Для локального источника света необходима матрица перспективного преобразования где - поле зрения (FOV), aspect - отношение ширины к высоте экрана (при отрисовке в квадратную текстуру aspect=1), far и near - дальняя и ближняя стенки пирамиды видимости. После перспективного преобразования необходима гомогенизация, как и в случае локального источника при преобразовании "на землю".

• Для качественной картинки рекомендуется выбирать проективный объём таким образом, чтобы он максимально плотно охватывал shadow caster и не оставлял зазоров.

0**)

2sin(

00

)2

sin()

2sin(

00

00)2

cos(*0

000)2

cos(

nearfar

nearfar

nearfar

far

aspect

M pj

Page 70: Цыганов_Алгоритмы машинной графики4

Теневые объёмы • Теневой объём - это представление пространства

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

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

• Алгоритм можно разделить на два явных действия: построение "теневой маски" (т.е. маски освещённых и затенённых областей 2-х мерной картинки) и отрисовка сцены с использованием теневой маски.

Page 71: Цыганов_Алгоритмы машинной графики4

Проективные преобразования

экранное пространство

мировое пространство

Page 72: Цыганов_Алгоритмы машинной графики4

Типы проекций (на русском языке были в прошлой лекции)

Page 73: Цыганов_Алгоритмы машинной графики4

Ортографическая проекция

Page 74: Цыганов_Алгоритмы машинной графики4

Изометрия

Page 75: Цыганов_Алгоритмы машинной графики4

Военная проекция (CAVALIER)

Page 76: Цыганов_Алгоритмы машинной графики4

Кабинетная проекция (CABINET)

Page 77: Цыганов_Алгоритмы машинной графики4

Косоугольные проекции

• Направление проецирования

• Угол между косыми проекторами и плоскостью проекции

• Военная проекция

• Кабинетная проекция

)1,sin,cos( ll

)(larcctg

45)1(arcctg

435.63)2/1(arcctg

Page 78: Цыганов_Алгоритмы машинной графики4

Косоугольные проекции (2)

)45(

Page 79: Цыганов_Алгоритмы машинной графики4

Три типа картографических проекций

Page 80: Цыганов_Алгоритмы машинной графики4

Цилиндрическая проекция с сохранением площадей

Page 81: Цыганов_Алгоритмы машинной графики4

Перспективная проекция

Page 82: Цыганов_Алгоритмы машинной графики4

Мы рассмотрим матрицу перспективного преобразования использующуюся в DirectX: Элемент 1/d это приведение векторов на плоскость проекции. xScale и yScale масштабируют изображение по горизонтали и вертикали.

zf - z-координата дальней плоскости (от far - далеко), zn - z-координата ближней (от near - близко) Умножив матрицу на вектор получим: [ x/(z*xScale) y/(z*yScale) (zf/(zf-zn))*(1-zn/z) 1 ] После преобразования видимая область будет располагаться в отрезке zz= от нуля до единицы, включительно.

Page 83: Цыганов_Алгоритмы машинной графики4

1. М. В. Михайлюк. Основы компьютерной графики. Изд-во: ИТЦ `МАТИ`, 2001. -194с. 2. Порев В.Н. Компьютерная графика. –СПб.: БХВ-Петербург, 2002. –432с. 3. Роджерс Д. Алгоритмические основы машинной графики: Пер. с англ. -М.: Мир, 1989. -512 с. 4. Никулин Е.А. Компьютерная геометрия и алгоритмы машинной графики. – С.Пб : БХВ-

Петербург, 2003. –560с. 5. Хилл Ф. OpenGL. Программирование компьютерной графики. – С.Пб: Питер, 2002. 1088с. 6. Торн A. Графика в формате DirectX 9. Полное руководство по использованию 3D-пространства:

Пер.с англ. - М.: НТ-пресс, 2007. - 288 с. 7. Евченко Александр. OpenGL и DirectX. Программирование графики. –СПб: Питер, 2006. -350с.

(+ CD-ROM) 8. Поляков А.Ю., Брусенцев В.А. Программирование графики: GDI+ и DirectX. – СПб.: БХВ-

Петербург, 2005. -368с. (Visual C++,.NET, прилагается CD). 9. Гайдуков С.А. OpenGL. Профессиональное программирование трехмерной графики на С++.

СПб.: БХВ-Петербург, 2004. -736с.(GLUT, NVidia SDK, ATI SDK, прилагается CD) 10. Верма Р.Д. Введение в OpenGL. – М.: Горячая линия – Телеком, 2004. -303с. 11. Андре Ламот . Программирование трехмерных игр для Microsoft Windows. Советы

профессионала по трехмерной графике и растеризации: пер. с англ.- М.: Издат.дом «Вильямс», 2006. -1424 с.

Источники