Новая скульптура |
Пожалуй, нет человека, который бы не хотел когда-нибудь попробовать себя в роли художника, скульптора - взять комок глины или бесформенную глыбу мрамора и, лишь благодаря своему воображению и умелым рукам, создать произведение искусства, ну или просто забавную безделушку, которую приятно держать в руках. Но увы, почти никто не реализовал это желание, даже не сделал шаги по направлению к этому. Многие опыт лепки и скульптуры получали в детском саду, разминая слабыми детскими ручками вечно твердый, как каменный, пластилин, которым без ограничения снабжала нас советская промышленность:). Авторы статьи не стали исключением в этом. Много лет не имея ничего общего с лепкой, именно в 3D Studio Max удалось найти аналогию, и в общем-то, принципы работы с реальным мягким материалом очень подобны на те, что приходится использовать при работе с трехмерной графикой. Тут тоже прежде всего надо представить КАК - именно правильно выбранный путь и есть большая часть работы. Правда, путей стало больше, но принять верное решение изначально - необходимое условие для эффективности работы.
Сегодня мы рассмотрим один из таких путей - путь глубокого модифицирования конкретных объектов, в нашем случае примитивов. Этот метод одновременно самый сложный и самый простой из всех. Сложность его заключается в том, что от вас потребуется именно скульпторская способность увидеть будущий объект в совершенно непохожем на него предмете. Отбросить лишнее, добавить нужное - все это должно сначала пройти через ваш разум и только потом вылиться в определенный алгоритм действий, который вы сможете реализовать на экране вашего монитора. И простота в том, что уже ничего не ограничивает вас в свободе творчества, возможность поиска новых решений широка до невероятности. Как и вошло у нас в традицию, изучать возможности мы будем на конкретном примере. Многие любители, можно сказать большинство, используют 3D Studio Max для создания фантастических сюжетов. Это объясняется как широкими возможностями этой программы, так и большой любовью компьютерного мира ко всякого рода необычностям. Авторы статьи тоже сегодня поработают на этой почве, описав создание некоего летающего объекта, который мы для простоты будем называть просто самолет. Ниже находится конечный вариант работы, который размещен для повышения морального духа во время его создания:) Итак, программа запущена, можно приступить к работе. Изначальный материал для создания самолета - примитив Box, или, попросту говоря, параллелепипед. Создайте его, желательно отношение ширины к длине как 1,5/1. Хотя не забывайте, что размеры любого объекта можно изменить в практически любое время, причем по любому из показателей. Создав Box, перейдите в вкладку Modify основного меню. По умолчанию объект задается состоящим из одного сегмента. Сегмент - это определенная часть объекта, ограниченная объемом, который может рассматриваться как в достаточной самостоятельности, так и с объектом в целом. Для нашей дальнейшей работы необходимо увеличить число сегментов. Задача определения того, сколько именно необходимо частей в конкретной работе, - это очень важный этап. Для создания самолета нам понадобится три сегмента по длине и три по ширине параллелепипеда. Для этого в вкладке parameters в строке Length Segs (количество сегментов по длине объекта) поставьте значение 3. Эту же операцию повторите и в строке Width Segs (количество сегментов по ширине объекта). Теперь обратите внимание на кнопку More. Под ней скрываются очень полезные модификаторы, которые вы будете очень часто использовать в работе. Щелкните по ней. Перед вашими глазами открылось множество названий. Нам для дальнейшей работы необходим Edit Mesh. Щелкните по нему. В результате мы имеем открытым меню Modifier Stack. Особое внимание на строку, где находятся несколько объектов - три точки, квадрат, куб. Это основа для нашей дальнейшей работы - здесь определяется, каким методом изменять объект. Пока нам нужен Polygon - изменение пространства, ограниченного замкнутым контуром линий сегментов. Щелкните по нему (выглядит как закрашенный квадрат). Теперь выделите центральный полигон спереди параллелепипеда. Он должен по контуру окраситься в красный цвет. В подменю Edit Geometry найдите строку Extrude (выдавливание). Изменяйте значение этого показателя до тех пор, пока не добетесь сходства со следующей иллюстрацией. (1) Выполните операцию Extrude дважды. Нос нашего самолета должен состоять из двух примерно равных между собой частей. Нелишне будет сказать, что именно в моменты модификаций 3D Studio Max требует наибольшие системные ресурсы. И чем больше у вас сегментов, тем более тормозит ваш компьютер. Поэтому сегментированность объекта должна быть как можно более малой, не в ущерб качеству. Хотя нет, правильней будет - с минимальным ущербом качеству, так как в большинстве случаев эти понятия связаны прямо пропорционально. Теперь нам необходимо сделать нос самолета острым. Обратите внимание на то, что он состоит из двух частей. Это необходимо в данном случае, так как все модификации крайней плоскости должны задевать только вторую часть. Рядом с Extrude найдите строку Bevel. Действие его похоже на Extrude, но если последний изменяет область по длине, то Bevel - по ширине. Изменяйте ее значения в отрицательной степени до тех пор, пока углы выделенного полигона не сойдутся в одной точке. Но нос должен быть немного опущен вниз. Для этого измените параметр Polygon на Vertex (выглядит как три точки). Выделив вершину пирамиды, которая у нас пока условно называется "нос", стандартным Move опустите немного вниз. Обратите внимание на оси, которые у вас возникают в рабочем окне. Они очень помогают ориентироваться в том, как изменять объект. Сравните полученный результат с иллюстрацией. (2) Теперь приступим к созданию крыльев и кабины. Применить Polygon =>Extrude, как это было в предыдущем случае, мы не можем - в результате этого у нас просто прямолинейно вытянется прямоугольник, а нам необходим градусный угловой переход крыла в корпус. Сразу становится ясно, что Polygon не годится для решения этой задачи. Необходимо перейти в режим Vertex (режим редактирования по точкам). Теперь выделите четыре крайних точки на корме, которые образуют прямоугольник. Стандартным инструментом Move, который мы рассмотрели в предыдущих статьях, двигайте их. Установите модификацию только по одной оси - это поможет создать крыло без лишних искривлений. После этого необходимо задать переход толщины в крыле. Для этого рекомендуем использовать обычный Scale. В данном случае он будет действовать аналогично Bevel в Polygon. Точно так же создайте и второе крыло. Внимание! Они должны быть равны относительно друг друга! Обратите внимание, что рабочий стол 3D Studio Max представляет из себя сетку. Ориентируясь на нее, можно нарисовать равные объекты. Для создания кабины лучше опять-таки использовать режим Vertex, так как угловой переход также необходим. Описывать подробней нет смысла, посмотрите на иллюстрацию и нарисуйте сами. (3) Теперь необходимо создать киль (хвост) и сопла. Для этого мы будем использовать режим Polygon. Выделите крайний центральный прямоугольник и примените к нему Extrude на высоту, примерно равную толщине изначального параллелепипеда. Теперь примените Bevel до той степени, когда все точки сошлись в одну. Но хвост еще не готов. Чтобы он выглядел естественно, перейдите в режим Vertex, выделите все точки вершины киля. Теперь, с помощью Move, переместите их таким образом, чтобы они находились на одной длине с краем изначального параллелепипеда. Ширина должна соответствовать ширине размещения вершины носа. Для создания сопл мы опять будем использовать Polygon => Extrude. Сопл у нас будет три. Для начала выделите два полигона, которые находятся возле носа (см. рисунок 4). Для того чтобы выделить сразу два, необходимо щелкнуть сначала по одному, а потом, зажав CTRL, по второму. Это существенное отличие 3D Studio Max от других программ, где в основном для добавления к выделению используют Shift. Теперь, когда мы имеем два выделенных полигона, переходим к Extrude. Примените его с отрицательной степенью. Глубина сопел примерно равна половине изначального параллелепипеда. После этого в режиме Vertex надо немного сузить сопла в конце. Это делается для того, чтобы самолет выглядел хоть в какой-то степени естественно. Основное сопло находится под килем. Делается так же, но только с небольшим отличием - прежде, чем применять Extrude c отрицательным показателем, необходимо применить его с положительным, примерно равным десятой части самолета. И вот мы добрались практически до победного конца. Но то, что мы имеем сейчас, вряд ли можно назвать самолетом. Это вообще чем-либо назвать трудно. Но в 3D Studio Max немало "волшебных палочек", одного взмаха которыми достаточно для полного изменения картины. Сейчас мы применим одну из них. Возвращаемся в меню More и выбираем Mesh Smooth. В открывшемся меню MeshSmooth Type - NURMTH. Но основное для нас - в меню Subdivision Amount. Наш самолет выглядит недостаточно сглаженным - в показателе Iterations установите значение 3. Как вы заметили, число сегментов возросло многократно. Можете проверить справедливость наших слов о количестве сегментов и увеличить этот показатель до 5. Многоминутное гудение винчестера и часики перед глазами вам будут обеспечены. Вот, в принципе, форма самолета готова. Но на первой иллюстрации он изображен уже после Рендера, то есть тотальной визуализации. Эта тема очень обширна и сложна, поэтому затронем мы ее в отдельной статье, скорее всего в следующей. А пока можете сохранить файл, в следующий раз мы его используем. Прочитав эту статью и последовав нашим советам, вы не могли не прийти к выводу, что создание трехмерных объектов все же даже легче, чем лепка из пластилина в детском саду:). Главное помните: изначально правильно выбранный путь - это самое главное. |
Interpolation (Интерполяция). Математический способ восстановления отсутствующей информации. Например, необходимо увеличить размер изображения в 2 раза, со 100 пикселов до 200. Недостающие пикселы генерируются с помощью интерполяции пикселов, соседних с тем, который необходимо восстановить. После восстановления всех недостающих пикселов получается 200 пикселов вместо 100 существовавших, и таким образом, изображение увеличилось вдвое.
Interactive (Интерактивность). Этим термином описывается поведение прикладной программы, с помощью которой пользователь может влиять на результат деятельности приложения, имея возможность немедленно добавить, изменить или удалить получающийся результат.
Lighting (Освещение). Существуют разные методы, использующие реалистичные графические эффекты, для отображения 3D объектов на двумерном дисплее. Один из них - освещение. Используются разные уровни яркости (светло-темно) при отображении объекта для придания ему объема.
Line anti-aliasing (Линейный антиалиасинг). Механизм борьбы с лестничным эффектом. Линейный антиалиасинг сглаживает диагональные линии.
Line Buffer (Линейный буфер). Буфер памяти, используемый для хранения одной линии видеоизображения. Если горизонтальное разрешение дисплея установлено равным 640 и для кодирования цвета используется схема RGB, то линейный буфер будет иметь размер 640х3 байт. Линейный буфер обычно используется в алгоритмах фильтров.
MIP Mapping (mip-текстурирование). MIP означает "многое в одном" (lat. "Multum In Parvum"). Метод улучшения качества текстурных изображений при помощи использования текстур с разным разрешением для различных объектов одного и того же изображения, в зависимости от их размера и глубины. Таким образом в памяти хранятся несколько копий текстурированного изображения в различных разрешениях. В результате этого изображение остается качественным при приближении к объекту и при удалении от него. При использовании этого метода Вы увидите изображение в высоком разрешении, находясь близко от объекта, и изображение в низком разрешении при удалении от объекта. MIP Mapping снижает мерцание и "зашумленность" изображения, возникающие при texture mapping. Mip mapping использует некоторые умные методы для упаковки данных о текстурах изображения в памяти. Чтобы использовать Mip mapping, необходимо, взяв все размеры текстур и умножив это число на два, построить одну карту наибольшего размера. Все карты меньшего размера обычно фильтруются и становятся усредненными и уменьшенными версиями самой большой карты.
Побочным эффектом mip-mapping'a является banding - разрывы между mip-уровнями (текстурами с различным разрешением). К тому же теряется резкость текстур.
Multitexturing (Мультитекстурирование). Метод рендеринга с использованием нескольких текстур за минимальное число проходов. Текстуры накладываются на объект последовательно, с использованием разного рода арифметических операций: add (сложение), modulate (умножение), substractive (вычитание) и др. Мультитекстурирование позволяет конвейеризировать наложение текстур с использованием нескольких (обычно двух) блоков текстурирования. Операции наложения тумана и альфа-смешения с фрейм-буфером не относятся к мультитекстурированию и выполняются после всех стадий.
Occlusion. Эффект перекрытия в трехмерном пространстве одного объекта другим.
Palletized Texture. Формат хранения текстур в сжатом виде (1-, 2-, 4- и 8-битный формат вместо 24-битного). Обеспечивает возможность хранения большего числа текстур в меньшем объеме памяти.
Parallel point. Световой источник, который освещает равномерно все объекты параллельным пучком света.
Perspective Correction (Коррекция перспективы). Один из способов создания реалистичных объектов. Рассматриваются величины Z (глубина) при разделении объекта на многоугольники. При создании современных игр разработчики обычно используют довольно большого размера треугольники для описания поверхности объекта и текстурные карты для более точного и детального изображения. Без этого качество картинки было бы гораздо хуже.
Если 3D объект движется от наблюдателя, то уменьшаются его линейные размеры (высота и ширина). Без использования функции perspective correction объект будет дергаться и двигаться нереалистично. С каждым уровнем скорректированной перспективы происходят изменения на пиксел, в зависимости от глубины. Так как при этом происходит деление на пикселы, то требуются очень интенсивные вычисления.
Pixel (Пиксел). Комбинированный термин, обозначающий элемент изображения, являющийся наименьшим элементом экрана монитора. Другое название - pel. Изображение на экране состоит из сотен тысяч пикселов, объединенных для формирования изображения. Пиксел является минимальным сегментом растровой строки, которая дискретно управляется системой, образующей изображение. С другой стороны, это координата, используемая для определения горизонтальной пространственной позиции пиксела в пределах изображения. Пикселы на мониторе - это светящиеся точки яркого фосфора, являющиеся минимальным элементом цифрового изображения. Размер пиксела не может быть меньше точки, которую монитор может образовать. На цветном мониторе точки состоят из групп триад. Триады формируются тремя различными фосфорами: красным, зеленым и синим. Фосфоры располагаются вдоль сторон друг друга. Пикселы могут отличаться размерами и формой, в зависимости от монитора и графического режима. Количество точек на экране определяется физическим соотношением ширины к высоте трубки.
Pixel blending. Метод смешивания цветов текущего пиксела и пиксела, находящегося уже в буфере кадра, для получения выходного пиксела.
Phong Shading (затенение Фонга). Наиболее эффективный из всех известных методов затенения, позволяющий получить реалистичное освещение. Прекрасная реалистичность достигается за счет вычисления объема освещения для каждой точки, вместо множества многоугольников. Каждый пиксел получает свой собственный цвет на основе модели освещения, направленного на этот пиксел. Этот метод требует более интенсивных вычислений, чем метод Гуро.
Point. Световой источник, который светит одинаково во всех направлениях из одной точки (например, лампочка в комнате).
Point sampling. Самый простой метод фильтрации текстур. Для определения цвета конечного пиксела используется цвет одного (самого близкого) тексела. Результатом point sampling является пикселизация (гранулированность) изображения.
Procedural Texturing techniques (программное текстурирование). Метод наложения реалистичных текстур на "лету", т.е. путем математических аппроксимаций структуры таких материалов, как дерево, мрамор, камень и др.
До последнего времени Procedural Texturing редко использовалось как в программных, так и акселерированных игровых и других движках реального времени. В первом случае ввиду того, что подобные вычисления требуют колоссальных мощностей математического сопроцессора для приемлемой скорости рендеринга, а во втором случае потому, что "шумовые" алгоритмы Перлина, которые используются для генерации таких текстур, не стандартны и имеют много вариаций. Более того, процесс генерации текстур различных по типу требует различных схемных подходов, в то время как традиционное наложение текстур требует одинакового схемного решения для загрузки любого изображения. После появления на свет технологии MMX от Intel ситуация изменилась, и уже существуют разработки программной реализации "шума" Перлина на основе этой технологии, которые позволяют накладывать текстуры на лету, со скоростью сравнимой с простым текстурированием.
Projection. Процесс преобразования трех размерностей в две. Т.е. преобразование видимой части 3D объекта для отображения на двумерном дисплее.
Rasterization (Растеризация). Разделение объекта на пикселы.
RGB. Система цветообразования, в которой конечный цвет получается за счет смешения, с различной интенсивностью, трех основных цветов: красного (Red), зеленого (Green) и синего (Blue). Самое известное устройство, которое использует систему RGB, это цветной монитор.
Ray Tracing ("Трассировка лучей"). Один из самых сложных и качественных методов построения реалистических изображений. Наиболее распространен вариант "обратной трассировки лучей": от глаза наблюдателя, через пиксел строящегося изображения, проводят луч и, учитывая все его отражения от объектов, вычисляют цвет этого пиксела.
Real-time. Режим реального времени. При этом имитируемые события происходят так же, как и в реальной жизни. Для достижения этого используется синхронизация со встроенным таймером компьютера.
Rendering (Рендеринг). Процесс создания реалистичных изображений на экране, использующий математические модели и формулы для добавления цвета, тени и т.д.
Рендеринг - работа 3D-ускорителя по визуализации трехмерной сцены на уровне треугольников. 3D-ускоритель берет на себя наиболее вычислительноемкие функции по растеризации треугольников, то есть превращения примитивов в пикселы, которые видит пользователь. Однако рендерить можно по-разному - можно хорошо и можно плохо, можно правильно и неправильно. Качество рендеринга не менее важно, чем скорость.
Rendering Engine. Дословно - устройство рендеринга. Часть графической системы, которая рисует 3D-примитивы, такие как треугольники или другие простые многоугольники. Практически во всех реализациях системы rendering engine отвечает за интерполяцию краев (границ) объектов и заполнение пикселами многоугольников.
Resolution (Разрешение). Количество пикселов, представленное битами в видеопамяти, или адресуемое разрешение. Видеопамять может организовываться соотношением пикселов (битов) по оси x (пикселы на строке) к числу пикселов по оси y (столбцы) и к размеру отводимой памяти на представление глубины цвета. Стандартная видеопамять VGA 640 пикселов на 480 пикселов и, обычно, с глубиной представления цвета 8 бит. Чем выше разрешение, тем более детально изображение, тем больше нужно хранить о нем информации. Но не вся хранимая информация может быть отображена на дисплее.
Scissors Clip (Scissoring). Устанавливается положение контрольного пиксела относительно вырезаемых многоугольников, и многоугольник отбрасывается, если он находится вне отображаемой зоны. Т.е. сокращаются размеры буфера кадра за счет вырезания "ненужных" многоугольников.
Set-up Engine. Позволяет драйверам передавать многоугольники в rendering engine в виде информации об адресах их вершинах, в то время как обычно информация предварительно обрабатывается центральным процессором и передается в терминах изменения (дельт) границ, цвета и текстуры. Таким образом, set-up engine переносит обработку соответствующих данных с центрального процессора на графический чипсет, сокращая таким образом требования к скорости шины на 30% для обработки маленьких, случайно расположенных треугольников, и на пропорционально большее значение для больших многоугольников.
Span. В растровой графике примитивы формируются с помощью преобразования линий развертки, каждая из которых пересекает примитив в двух точках (Р-левая и Р-правая). Последовательность пикселов на линии, расположенная между этими двумя точками, называется span. Каждый пиксел внутри span содержит значения величин z, R, G, B.
Specular highlight (блики). Имитация прямого отражения источника света. При простом наложении текстур могут возникать некоторые дефекты в изображении: когда камера (наблюдатель) близко приближается к объекту, то текселы становятся больше, чем пикселы (один тексел заполняет собой несколько пикселов), проявляется эффект пикселизации (блочности) изображения; если текстура находится на большом расстоянии от наблюдателя и текселы становятся меньше пикселов (на один пиксел "претендуют" несколько текселов текстуры), то проявляется эффект муара (ряби), т.к. в одном и том же пикселе все время рисуются разные тексели. Для устранения первой проблемы используется linear filtering, для ликвидации второй - mip-mapping (включая trilinear filtering) и anisotropic filtering.
Spot. Световой источник, похожий на точечный. Он светит не во всех направлениях, а в пределах некого конуса. Освещаются только объекты, попадающие в этот конус.
Stencil Buffer (Трафарет). Позволяет производить рисование "по трафарету", то есть оставлять часть картинки неизменной. Применяется для создания спецэффектов.
Stippling. Создание контурных изображений, т.е. "рисование пунктиром".
Tessellation. Процесс деления изображения на более мелкие формы. Для описания характера поверхности объекта она делится на всевозможные многоугольники. Наиболее часто при отображении графических объектов используется деление на треугольники и четырехугольники, так как они легче всего обсчитываются и ими легко манипулировать.
Texel (Тексел). Элемент текстуры - определенный пиксел в текстуре.
Texture (Текстура). Двумерное изображение, хранящееся в памяти компьютера или графического акселератора в одном из пиксельных форматов. В случае хранения в сжатом виде на дисках компьютера, текстура может представлять собой обычный бит-мап, который мы привыкли видеть в форматах bmp, jpg, gif и т.д. Перед использованием текстура разворачивается в памяти и может занимать объем в десятки раз больше первоначального размера. Существует порядка двух десятков более или менее стандартизированных пиксельных форматов текстур.
Texture Anti-aliasing. Удаление нежелательных искажений растровых изображений с помощью интерполяции текстурных изображений.
Texturing (Текстурирование). Основной метод моделирования поверхностей наложением на них изображений, называемых текстурами.
Texture Mapping (Натяжение текстур). На объект "натягивается" текстурное изображение для создания реалистичного представления объекта в трехмерном пространстве. Поскольку для ее хранения требуется значительное место, а для натяжения - серьезные вычислительные ресурсы, желательно, чтобы операция выполнялась аппаратно. Такая возможность определяется используемым в видеокарте чипсетом, а также объемом видеопамяти. Поскольку может понадобиться как увеличение, так и уменьшение исходной картинки, используют линейную интерполяцию и MIP-mapping.
Transformation. Изменение координат. Последовательность математических операций над выходными графическими примитивами и геометрическими атрибутами для преобразования их из расчетных координат в системные координаты.
Transparency (Прозрачность). В компьютерной графике цвет часто описывается в терминах RGB величин или величинами красного, зеленого и синего цвета. Существует еще коэффициент Alpha (альфа), являющийся дополнительным компонентом цвета, который используется для смешения. Коэффициент Alpha может также использоваться в качестве величины, отвечающей за степень прозрачности, т.е. величины, определяющей, можно видеть сквозь цвет или нет. Наиболее важное значение коэффициент Alpha, или прозрачность, имеет в 3D графике, благодаря его использованию для создания нерегулярных объектов, применяя для этого лишь несколько многоугольников.
Triangle strip and fans. При наличии смежных треугольников, описывающих поверхность фигуры, не требуется передавать информацию о всех трех вершинах каждого из них, а просто передается сразу последовательность треугольников, для каждого из которых определяется лишь одна вершина. В результате снижаются требования к ширине полосы пропускания.
Triangle throughput (Скорость обработки). Другая характеристика 3D-чипсета, показывающая скорость блока подготовки треугольников (triangle setup). Скорость обработки 1 млн треугольников/сек означает, что 3D-ускоритель может обработать 1 млн треугольников в секунду.
Trilinear Filtering (Trilinear MIP Mapping, трилинейная фильтрация). Метод уменьшения искажений в картах текстур, использующий билинейную фильтрацию для четырех текстурных пикселов из двух ближайших MIP-карт и их дальнейшую интерполяцию.
Для получения изображения берется взвешенное среднее значение результатов двух уровней билинейной фильтрации. Полученное изображение более четкое и менее мерцающее.
Текстуры, с помощью которых формируется поверхность объекта, изменяют свой вид в зависимости от изменения расстояния от объекта до положения глаз зрителя. При движущемся изображении, например, по мере того, как объект удаляется от зрителя, карты текстур должны уменьшаться в размерах вместе с уменьшением размера отображаемого объекта. Для того чтобы выполнить это преобразование, графический процессор фильтрует карты текстур вплоть до соответствующего размера для покрытия поверхности объекта, при этом изображение остается естественным, т.е. объект не деформируется непредвиденным образом. Для того чтобы избежать таких непредвиденных изменений, большинство графических программ создают серии предфильтрованных карт текстур с уменьшенным разрешением, этот процесс называется mip mapping. Затем, графическая программа автоматически определяет, какую карту текстур использовать, основываясь на деталях карты текстур изображения, которое уже выведено на экран. Соответсвенно, если объект уменьшается в размерах, размер карты текстур тоже уменьшается.
Существуют и другие методы фильтрации, при которых используется интерполяция mip-уровней, но только при trilineaк filtering фильтруются и mip-уровни (mipmap interpolation) и тексели (bilinear filtering).
Единственный недостаток trilinear filtering - потеря резкости текстур.
True color. Цвет с глубиной представления 24 или 32 бит.
Vertex. Точка в трехмерном пространстве, где соединяются несколько линий.
Z-buffer (z-буфер). Часть графической памяти, в которой хранятся расстояния от точки наблюдения до каждого пиксела (значения z). Z-buffer определяет, какая из многих перекрывающихся точек наиболее близка к плоскости наблюдения.
Как большее число битов на пиксел для цвета в буфере кадра соответствует большему количеству цветов, доступных в системе изображения, так и количество бит на пиксел в z-буфере соответствует большему числу элементов. Обычно, z-буфер имеет не менее 16 бит на пиксел для представления глубины цвета. Аппаратные акселераторы 3D-графики могут иметь собственный z-буфер на графической карте, чтобы избежать удвоенной нагрузки на системную шину при передаче данных. Некоторые рализации z-buffer используют для хранения не целочисленное значение глубины, а значение с плавающей запятой от 0 до 1.
Z-buffering (z-буферизация). Процесс удаления скрытых поверхностей, использующий значения глубины, хранящиеся в Z-буфере. Перед отображением нового кадра буфер очищается, и значения величин z устанавливаются равными бесконечности. При рендеринге объекта устанавливаются значения z для каждого пиксела: чем ближе расположен пиксел, тем меньше значение величины z. Для каждого нового пиксела значение глубины сравнивается со значением, хранящимся в буфере, и пиксел записывается в кадр, только если величина глубины меньше сохраненного значения.
Z-sorting. Процесс удаления невидимых поверхностей с помощью сортировки многоугольников в порядке низ-верх, предшествующий рендерингу. Таким образом, при рендеринге верхние поверхности обрабатываются последними. Результаты рендеринга получаются верными, только если объекты не близки и не пересекаются. Преимуществом этого метода является отсутствие необходимости хранения значений глубины. Недостатком является высокая загрузка процессора и ограничение на пересекающиеся объекты.
Итак, наконец-то у меня дошли руки до этого обзора, запланированного еще несколько месяцев назад. Что ни говорите, лето все-таки. Пора каникул и отпусков, а также время усиленной работы для некоторых из нас. Сегодня в руках у меня побывали 19 разных видеокарт, впечатлениями о которых я и буду с вами делиться.
Изначально тестирование задумывалось провести с использованием тестового пакета 3D Winbench 99 v1.2, Final Reality v1.01, ну и, конечно, Quake II/Quake III. Кстати, первоначально все так и осуществлялось. Однако в процессе тестирования я вновь понял, что тесты не отражают реального положения вещей. На некоторых картах, например, 3D WinBench, не использовалась частота обновления выше 60 Гц, хотя точно известно, что данная видеокарта в данном разрешении и данной глубине цвета способна на большее, и еще точнее известно, что эта частота меньше установленной. Таким образом, результат оказался заниженным и общая картина необъективной. К тому же тесты там настолько легкие, что практически любая из видеокарт могла лепить при некоторых разрешениях, глубине цвета и прочих параметрах более 100 fps. Что они в общем-то и делали. C 3D Mark xxxx, я считаю, ситуация точно такая же. Ну зачем мне смотреть на эмулируемые неизвестно как тестовые миры, если это все равно не то, с чем я буду работать или играть. Я думаю, если хочешь знать, что будешь иметь в реальной жизни, нужно взять одно или несколько приложений с которыми предстоит работать, и измерить производительность в них. И никак не иначе. Вряд ли в ближайшее время кто-то сможет убедить в необходимости использовать тестовые пакеты для измерения производительности. Представьте картину: сегодня мы будем играть не в Quake III, а в его эмуляцию - Wolfenstein 3D, потому что на его движке был построен тест, в котором наша видеокарта получила высокий балл...
Похожая картина наблюдается с Final Reality. Практически все карты, присутствующие в данном обзоре, были равны перед этим тестом. Разница в оценках измерялась сотыми долями пунктов. Разница в десятые доли пунктов - это уже значительно, ну а разница в несколько пунктов - вообще редкость. Пожалуй, наверное, только в одном экземпляре существовала - между платами на Trio3D и всеми остальными.
Единственный тест, принявший участие, - Indy3D. Люблю его за то, что в нем все видеокарты, с которыми мне приходилось сталкиваться, демонстрируют потрясающе низкие результаты. И я считаю, если видеокарте есть чем похвалиться, то продемонстрировать это нужно именно здесь, показав лишних 3-4 кадра в секунду в тестах MCADxxx и Animation, и хороший показатель в Simaulation (самый важный для игроков). Такую видеокарту будут помнить долго, так как достичь приличных результатов в этом тесте ой как непросто. Тест выполнялся в разрешении 640х480 при 15-битной глубине цвета с применением 4 Мб набора текстур. 3D WinBench использовался для проверки качества реализации основных функций.
В Quake II все установки были направлены на достижение наилучшего качества картинки. Тестирование с помощью Quake III: Arena проводилось в двух режимах. Далее для краткости я их буду называть mode1 и mode2. Mode1: OpenGL - стандарт., расш. OpenGL - включено, глубина цвета 16 бит, текстуры 16 бит, уровень геом. детализации - высокий, детализации текстур - 2, билинейная фильтрация, освещение - Lightmap, включены отметины на стенах, выброс гильз, внутренности убитого, небо. Кажется, ничего не забыл. Mode2: OpenGL - стандарт. расш. OpenGL - включено, глубина цвета 32 бит, текстуры 32 бит, уровень геом. детализации - высокий, детализации текстур - 4, трилинейная фильтрация, освещение - Lightmap, включены отметены на стенах, выброс гильз, внутренности убитого, небо.
Создание больших web-проектов |
У любого успешного web-проекта рано или поздно возникает проблема роста. Существующие программно-аппаратные ресурсы перестают справляться с растущей нагрузкой. Универсальных рецептов, к сожалению не существует. В каждом проекте хороший программист будет программировать по-разному. Тем не менее, в этой статье я попробую дать несколько типичных рекомендаций по созданию больших web-проектов. Такие проекты в процессе создания и развития сталкиваются, как правило, с двумя почти противоположными по способам решения проблемами - большими скоростями и большими объемами данных. Большие скоростиВ качестве идеального примера сайта, для которого жизненно важна скорость, можно взять баннерную сеть. Итак, несколько приемов для ускорения работы баннерных сетей и других серверов, критичных к скорости работы. Создание модулейСмысл этого приема - вкомпилировать наиболее важные функции в сервер. Идея очень проста. Если мы посмотрим на соотношение времени, которое тратится на различные стадии выполнения запроса, то увидим интересную картину. Например, при выполнении простейшего perl-скрипта последовательно происходит следующее: 1) сервер Apache определяет perl-скрипт для запуска, подготавливает и запускает его; |