Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 08.04.2009, 18:47   #1
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Сообщение Некоторые термины для новичков

Начнем по порядку.Что есть движок? Строго говоря, Engine (далее - движок) - математическая модель, предназначенная для вычислительного
решения ряда задач, связанных с имитированием реально происходящих событий и явлений. Нет,
совершенно не обязательно перечитывать данное определение сначала, пытаясь в точности уловить
заложенный в него смысл. По причинам невыясненного характера данное определение оказывается
понятным только для ученых мужей.
А посему возьму на себя труд и риск несколько перефразировать его. И тога получим, что движок - это
такая хитрая программа, которая делает с разными фигурами и картинками всевозможные любопытные
вещи так, что в результате возникает игра.
Вообразите себе искусственный мирок, законы жизнедеятельности которого определяются некоторым
числом основополагающих признаков. Каждая игра сравнима с подобным же маленьким мирком.
Мирком, в котором работает набор правил, необходимых для его существования.
Ради наглядности рассмотрим пример авиасимулятора. Внутри него, безусловно, действуют правила из
реальной жизни. Но только те, которые относятся к полетам, авионике и всему прочему, что с этим
связанно. Существуют физические законы, по которым можно рассчитать поведение самолета,
находящегося в воздухе. И существуют математические задачи, решение которых позволят, в той или иной
степени точно, отобразить происходящие на экране.
Зачастую наиболее сложной и значимой частью движка становится визуализация всего того, что
происходит в нашем с вами мирке. Трудно спорить с тем, что хитовость большинства современных игр
определяется качеством их графики. А когда проходит "гонка графических вооружений", то характер
визуализации подчас становится отличительным признаком использованной технологии.
Точнее одной из технологий. Не вдаваясь в подробность, отметим, что в игре может, как бы присутствовать
несколько движков. Например, вам наверняка приходилось слышать такое выражение, как "трехмерный
стратегический движок" в real-time стратегии. При этом ландшафт игры, вероятно, является плоским, как
скатерть на кухонном столе. Однако если данный термин употреблен, значит, в игре размечена карта
высот, и юниты поневоле принимают ее во внимание. Например, поднявшись на условную горку, "видят"
дальше; да и поднимаются на они горку гораздо медленнее, чем спускаются с нее; возможно также, что
находящийся на горе юнит при стрельбе с гораздо большей вероятностью попадет в находящегося под
горой юнита, чем тот попадет в него.
Впрочем, это уже несомненное отступление за пределы темы. Хотя бы потому, что в этот раз мы
займемся в первую очередь именно теми терминами и понятиями, которые касаются графической части
движков.

Да будет свет!..
Сейчас трудно удивить кого-либо обычной "рисованной" игрой. То есть плоской, двумерной, спрайтовой
- назовите, как пожелаете. И не потому, что такие игры устарели. Отнюдь нет. Некоторые технологии,
например, применяемые в жанрах квеста или в Artifical Life, являются не менее сложными и интересными. Просто мы с вами живем в трехмерном мире, и для того, чтобы хотя бы
частично воссоздать окружающее нас пространство или обстановку, необходимо Создание такого же
трехмерного мира и в компьютерной графике. Поэтому мы будем затрагивать вопросы, не связанные с
трехмерными технологиями напрямую, необходимо создание такого же трехмерного мира и в
компьютерной графике. Создание такого же трехмерного мира и в компьютерной графике. Поэтому мы
будем затрагивать вопросы, не связанные с трехмерными технологиями напрямую. Поэтому я не буду
затрагивать вопросы, не связанные с трехмерными технологиями на прямую.
Общей чертой всех 3D движков является попытка представить реальный мир с помощью изощренной
математики и искусного программирования. Не забывая, конечно, про оформление и дизайн. По идее, в
основе любого движка лежат одинаковые физические и математические модели, обсчитывающие игровое
пространство. Различными являются не сами модели, а методы их реализации. И для понимания этих
методов мы с вами совершим небольшой экскурс в терминологию.
КАМЕРА (Camera) - точка в игровом пространстве, откуда производится трансляция изображения на экран.
Практически, точка трансляции - это глаз играющего, а экран - это плоскость отображения (View Plane).
МОДЕЛИ ОСВЕЩЕНИЯ (Light Model) - методы формирования освещения при выводе графики. По
точности представления эти методы делятся на три основные категории, хотя каждая реализация расчетной
модели очень сильно зависит от конкретных потребностей и возможностей движка.
- Рассеянный свет (Ambient Light). Учитывается только внешняя освещенность объекта. Визуально
аналогичен изменению освещенности объекта в целом.
- Свет матового отражения (Diffuse Light). Добавление света от одного или нескольких источников
света. Характерен присутствием на объекте световых пятен от источников, но отсутствием блика.
- Свет зеркального отражения (Specular Light). Расчет отражения света от объектов. Практически
добавляет блик и позволяет создавать отражающие поверхности.
ИСТОЧНИКИ СВЕТА (Light Sourcing) делят, в свою очередь, по типам и признакам. Основных типов
источников два: точечный (Omni), когда свет распространяется во все стороны из одной точки, и
направленный (Spot), когда свет, по аналогии с прожектором, имеет четкое направление, а лучи образуют
собой конус света. У источников света есть масса характерных признаков, однако наиболее важными
среди них являются яркость и цвет.
Обычно цвет источников делают белым - тогда не требуется рассчитывать цветовые составляющие
текстурированных (о текстурах позже) поверхностей объектов, на которые падает свет, и формировать
только за счет яркости. Примером подобной имитации может служить практически любой 3D Action,
выпущенный год назад и ближе к настоящему моменту. Скажем первый Quake. Но понятно, что такая
имитация далека от реалистичности и носит упрощенный характер - ведь естественного белого света в
природе практически не встречается. Сейчас происходит отказ от одного лишь белого света в пользу
цветных источников. Отчасти это стало возможным благодаря ускоренному на уровне "железа" выводу
графики - 3D акселераторы и процессоры с технологией MMX. И вот, в Rebel Moon Rising, а затем и в
Quake 2 мы видим разноцветные источники света, причем цвета смешиваются и порождают новые оттенки
освещенности.
Развитие технологий hardware позволило компьютерным играм уйти от упрощенности и примитивности в
сторону реализма. Огромную роль в привнесении реализма играют и всевозможные видеоэффекты.
Рассмотрим наиболее значимые из них.
ПРОЗРАЧНОСТЬ (Transparency). Понятно из самого определения. Это среды типа воды или стекла -
прозрачные поверхности (пропускающие через себя свет, полностью или частично), учитывающие законы
преломления света при проходе через границу раздела данной среды и воздуха. Например, мы видим дно
бассейна через воду, и при этом дно приобретает другой цветовой оттенок и становится нечетким. Весьма
неплохо данный эффект реализован в Sub-Culture и Tomb Rider 2.
ДЫМКА (Fog) - эффект появления дымки на удаленных объектах из-за неполной прозрачности воздуха.
Необходимость рассчитывать находящиеся на значительном удалении от игрока объекты ведет к
значительному и подчас неоправданному увеличению системных требований. И нет ничего странного в
том, что практически все современные игры избавляются от расчетов удаленных объектов, скрывая их в
тумане. Особенно сильно это проявляется в Turok: The Dinosaur Hunter и в F-22 Raptor. Помимо того, под
определением Fog подпадает облака, дым и воздушные турбуленции от взрывов и выстрелов. Примером
может служить тот же Turok. Или Wing Commander.

Полигонные движки
Анализ представленных на игровом рынке современных разработок позволяет, в некоторой степени
обобщая, подразделить все 3D движки на 2 типа: полигонные и воксельные.
Полигонные движки являются наиболее часто встречающимися, во всяком случае, сейчас. Все
изображение игрового мира в них строится из плоскостей, поэтому иногда такую графику называют
плоскостной. Приведем наиболее часто термины, употребляемые в разговорах о полигонных движках.
ПОЛИГОН (Polygone) - пространственный многоугольник. Может содержать в себе неограниченное
число вершин, но в компьютерной графике, чаше всего используется его простейший вариант -
треугольник (Triangle), что значительно уменьшает количество вычислений на один полигон.
ТРИАНГУЛЯЦИЯ (Triangulation) - метод разбиения сложных полигонов на составляющие их
треугольники. Используется при необходимости создания полигонов с более чем тремя вершинами.
ТЕКСТУРА (Texture) - обычное двумерное (т.е. плоское) изображение, которое предназначено для
нанесения ("натягивания") на полигон. Это может быть либо отрисованная bitmap картинка, либо
фотография. В последнем случае, вводится модное словечко фототекстура.
ТЕКСТУРИРОВАНИЕ (Texture-Mapping) - способ нанесения текстуры на полигон. Существует несколько
таких способов, но все они являются разновидностями двух основных, отличаясь только по внутренней
организации, качеству нанесения текстур и производительности.
1. Линейное текстурирование (Linear Texture-Mapping). Отличается высокой скоростью выполнения
алгоритмов, но очень низкой точностью, из-за чего не применимо на полигонах, располагающихся
близко к наблюдателю, т.к. будут заметны значительные искажения из-за отсутствия расчета
перспективы.
2. Перспективно-корректное текстурирование (Perspective-Correct Texture-Mapping). Отличается от
первого метода высокой точностью вычислений и практически полным отсутствием искажений,
однако требует больших вычислительных затрат. На практике алгоритмы реализации данного метода
сильно отличаются друг от друга из-за необходимости разработки уникальных алгоритмов,
предназначенных для нужд каждого конкретного движка, но, в принципе, их можно разбить на две
группы: типа Quake и типа Descent.
Вы почти наверняка запутались в идеях перспективно-коректного текстурирования, так что теперь
несколько более развернуто о том же. В целом, идея текстурирования заключается в вычислении
координат пикселов в текстуре для вывода на экран так, как они были бы видны на реально наблюдаемой
поверхности, и при том с учетом того, что поверхность может наблюдаться с разных ракурсов и различных
дистанций. По аналогии с коробком спичек, сам коробок - это поверхность, а бумажка с надписью
"Спички" - текстура. Практически во всех движках вывод оттекстурированной поверхности на экран
осуществляется горизонтальными линиями - ScanLine. Вот тут-то и проявляются принципиальные
различия в выводе текстур в выше указанными шедеврами игровой индустрии. В Quake точный расчет
осуществляется через каждые несколько точек на экране, а остальные достраиваются простым
приближением. В Descent же расчет точных координат производится для трех точек сканлайна (первая,
средняя и последняя), а остальные точки достраиваются с помощью достаточно сложных математических
методов, именуемых "сплайновая интерполяция", что дает результат по качеству хуже чем в Quake, но
быстрее.
Помимо нанесения текстуры при текстурировании происходит и расчет освещенности полигона. Как уже
говорилось выше, существует три уровня воспроизведения освещения, поэтому при нанесении текстуры
применяются три метода отражения на полигоне: флат (Flat) гуро (Guraud) и фонг (Phong). Каждый метод
имеет различные уровни точности, соответственно Ambient, Diffuse и Specular. И, как следствие, разную
скорость работы. Наиболее часто встречающимся методом следует признать гуро. Это связанно с тем, что
он дает неплохие результаты, как по качеству, так и по производительности. Помимо того, при
формировании изображения осуществляются следующие операции:
ФИЛЬТРАЦИЯ ТЕКСТУР (Texture Filtering) - метод сглаживания нанесенных на полигон текстур.
Используется для устранения неприятных визуальных эффектов при нанесении текстуры, которые
появляются из-за погрешностей вычислений. Единственное, что затормаживает использование таких
методов, так это требование больших вычислительных мощностей.
МИП-МАППИНГ (Mip-Mapping) - метод замены текстуры при приближении и удалении к полигону, на
который она нанесена, в целях устранения погрешностей. Представим себе текстуру 320 на 200 точек. Если
мы видим ее на экране именно такого размера (VGA), то, естественно, никаких погрешностей не заметно.
Но если мы отведем камеру обзора от текстуры на расстояние в два раза больше прежнего, то текстура у
нас предстанет во вдвое уменьшенном виде. Соответственно, каждый второй столбец и каждая вторая
строка на текстуре не будут различимы, а следовательно, не видны. Вот вам и искажение, или погрешность.
Проиллюстрируем это. Возьмите лист бумаги и нарисуйте карандашом 10 вертикальных полосок. Теперь
закрасьте все нечетные полосы, что бы получилась "зебра". Вот наша текстура. Предположим, что мы
смотрим на не с двое большего расстояния, - тогда мы видим только закрашенные полосы. В результате
наша текстура получается не полосатой, а одноцветной! Для борьбы с таким неприятным эффектом и был
придуман мип-маппинг. Решение здесь достаточно простое. В нашем полосатом случае достаточно
нарисовать еще одну текстуру, на которой вместо полосок нарисован прямоугольник со средним цветом
между цветом бумаги и цветом карандаша. И при удалении мы уже видим, что цвета как бы слились, и
получился вполне правдоподобный рисунок. Блестящая реализация этого метода легко заметна в
незабвенном Quake. Начало игры, выбирается уровень сложности. Наверху есть арка с надписью Quake.
Если медленно отходить и подходить к ней, то можно найти такое положение, в котором происходит резкая
смена качества указанной текстуры - от размытой до предельно четкой. Обратным примером может
послужить реализация mip-mapping в Jedi Knight - некоторые текстуры практически на любом расстоянии
выглядят одинаково плохо и невыразительно, коррекция происходит лишь при рассматривании их "в
упор".
УДАЛЕНИЕ НЕВИДИМЫХ ПОЛИГОНОВ (Hidden-Face Removal) - набор алгоритмов, позволяющих
отрисовывать только видимые полигоны и не тратить драгоценное время процессора на вывод и
обработку невидимых для играющего поверхностей.
Крайне важным для определения скорости вывода графики является БУФФЕР ГЛУБИНЫ (Z-Buffer).
Использование (Z-Buffer) позволяет сортировать выводимые полигоны в зависимости их расстояния от
играющего. Иными словами, уже на стадии отрисовки объекта определяется, что играющему надо видеть,
а что - нет, и все как бы "лишние" полигоны не выводятся на экран вообще. Простой, но не всегда
эффективный метод, требующий использования больших объемов памяти и вычислительных мощностей.
В основном применяется на незначительных по размерам 3D объектах, как, например, в Total Annihilation,
а также, и очень часто, при работе 3D акселераторов.

Воксельные движки
Теперь о воксельных движках. Их отличие от вышерассмотренного полигонного движка заключается в
возможности создания более гладких кривых (или округленных) поверхностей, чем это было бы возможно
даже при самом большом количестве полигонов. Ранее воксельные технологии применялись
исключительно в симуляторах для представления поверхности земли, что само по себе является довольно
трудной задачей, учитывая неровности, холмы, впадины и прочие элементы рельефа. Конечно, при
минимальных требованиях к достоверности имитации, можно было бы удовлетвориться холмами в виде
примитивных текстурированных пирамид. Однако в условиях жесткой конкуренции происходит поиск
более продвинуты технологий, а вокселы предлагают куда более элегантное решение. Первой ласточкой
был небезызвестный Comanche, а сейчас в области симуляторов лидирует его приемник, Armored Fist 2.
дальнейшее усовершенствование методики привело к появлению Blade Runner, где все графические
объекты построены из вокселей. Ведутся работы над Outcast, построенному по тому же принципу.
Рассмотрим основы воксельной технологии.
ВОКСЕЛЬ (Voxel - Volume Pixel) - объемная точка. Фактически является кубом в пространстве, и выводима
поверхность строится из названных кубов. На экране, как правило, представлен прямоугольником.
КАРТА ВЫСОТ (Height- Map) предназначена для хранения информации о высоте, на которой находится
воксель относительно нулевой отметки. Изменение карты высот приводит к изменению отображаемого
ландшафта или объекта.
КАРТА ЦВЕТОВ(Color-Map) хранит информацию о цвете вокселя. Фактически является плоской
картинкой.
КАРТА ОСВЕЩЕННОСТИ (Light-Map) содержит в себе данные об освещенности одного или нескольких
вокселей. Предназначена для формирования видеоэффектов, связанных с изменением освещенности
поверхности.
СГЛАЖИВАНИЕ ПОВЕРХНОСТИ (Surface Smoothing) - метод корректировки и значений карт высот,
цветов и освещенности при удалении или приближении камеры к (выводимой) поверхности.
Процесс построения поверхностей в воксельных движках выглядит достаточно элементарным. Весь экран
разбивается на вертикальные линии. Внутри каждой такой линии производится расчет (уже в плоскости)
видимости участка поверхности, затем происходит его отрисовка.
Тем не менее и при всей своей простоте, у воксельных движков имеются свои недостатки. Во-первых,
нужда в достаточно большом количестве памяти для хранения карт местности. Во-вторых, достаточно
значительное использование вычислительных мощностей при попытке приблизить детализацию
поверхности к реальной. Основываясь на всем этом, можно констатировать, что если ранее воксельные
движки использовались в специфических решениях, то сейчас, с поднятием планки "минимальные
системные требования", они являют собой серьезную альтернативы полигонным технологиям.

Источник: Alex soft.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Dzirt за это полезное сообщение:
Blender (13.02.2010), h1dd3n (09.04.2009)
Старый 08.04.2009, 19:28   #2
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Некоторые термины для новичков

WTF???
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не отображаются некоторые части модели DeMoNN 3D-программирование 4 22.04.2009 18:37
Некоторые полезные функции Данил FAQ и уроки 1 26.10.2007 11:40
некоторые вопросы по с++ Timon C++ 10 12.08.2007 02:16
Еще некоторые userlibs MiXaeL Библиотеки 2 25.08.2006 23:22


Часовой пояс GMT +4, время: 00:40.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com