Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Как самому создать компьютерную игру #5


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Приветствуем всех подписчиков

этой рассылки!

 

    Ну вот и вышел в свет очередной выпуск нашей рассылки. С чем я вас, собственно, и поздравляю. Хотим принести глубочайшие извинения за нерегулярность выхода рассылки. Пока что это связанно с сессией. которая свалилась как снег на голову. Но с сегодняшнего дня почти все проблемы решены и рассылка будет выходить регулярнее. ;-)
    Пока что авторы рассылки находятся в творческом поиске. Еще не сформирован внешний стиль рассылки. Поэтому пускай вас не пугают некоторые внешние изменения. По крайней мере на стиль изложения это не должно влиять. Может быть с вашей помощью рассылка скорее встанет на ноги и покатится уже по накатанной лыжне. [актуально, как никогда ;-)))] Так что мы будем рады услышать о том, что вам нравиться и что не нравиться.
    Опыт предыдущих выпусков показал, что все то, что мы рассказывали до этого времени - тривиальный справочный материал, который все знают. Поэтому было решено пропустить тривиальные вещи и рассказывать о них по мере поступления соответствующих вопросов. Так что если будет что-то непонятно, спрашивайте. Мы с удовольствием разъясним!
    Итак, перейдем к более существенным вопросам. Будем строить 3D модели. Что нам для этого нужно. В первую очередь о терминологии. Будем считать, что мы знаем, что такое грань. Это какая-то произвольная связная область точек. лежащих в одной плоскости. Выпуклая грань - это область точек на плоскости, которая удовлетворяет следующему условию: если провести произвольный отрезок. соединяющий две эти точки, то он должен лежать в этой области. Для простоты будем считать. что грань задается тремя точками. Пока что пусть это будет треугольник.
    Замечательно. Теперь давайте посмотрим, что мы с этим треугольником можем сделать. Ну в первую очередь зададим его цвет и определим вектор нормали к этой грани. (пока все понятно? тогда продолжаем) Так вот, закрасим его. Итак, переходим к очередному нашему разделу: "Закрашивание".


Закрашивание.



    Здесь наиболее популярны два алгоритма: Gouraud shading  и Phong shading. Или по-нашему алгоритм закраски по Гуро и по Фонгу. На самом деле о них уже столько всего сказано, что если и что-то говорить, все-равно получится что это уже сказали до нас. Но мы попробуем донести до вас наше понимание этих алгоритмов. их особенности, недостатки. В этом выпуске мы подробнее остановимся на алгоритме закрашивания по Гуро. Но пока что поговорим о том, что эти методы объединяет. Н прежде всего оба этих алгоритма основаны на разбиении на многоугольники. Так же оба метода позволяют создавать сглаженные изображения. Основная суть обоих алгоритмов в следующем. Сначала высчитываются параметры закраски в вершинах многоугольника, а потом происходит интерполяция по внутренней области многоугольника. Метод Гуро быстрее метода Фонга, но с его помощью нельзя добиться некоторых световых эффектов ( например, бликов ).  Его обычно используют в приложениях, где важна скорость: например, в авиасимуляторах. Закраска методом Фонга позволяет получить более качественные изображения, но она и обходится дороже. В методе Гуро считаются только интенсивности в вершинах многоугольников, используя функцию закраски. и затем интерполируются для пикселов внутренней области. А в методе Фонга интерполируются нормали, и функция закраски применяется к каждой точке. И хотя оба этих метода стали фактически стандартными ( метод Гуро используется во многих графических рабочих станциях,  до них существовали другие способы закрашивания.

Закраска методом Гуро.


    Метод Гуро основывается на определении освещенности грани в ее вершинах с последующей интерполяцией получившихся величин на всю грань. Моделью освещения ( функцией закраски ) будем называть функцию, зависящую от вектора нормали в данной точке, положения источника света и вектора наблюдения. В качестве нормали в вершине берется усредненная по нормалям прилежащих граней нормаль (см. рис.). Функция закраски применяется в каждой вершине для расчета интенсивности.
  NA = ( N1 + N2 + N3 + N4 ) / 4
 Проведем через произвольную точку S выпуклого четырехугольника горизонтальную прямую (см. еще один рис.). Освещенность Is в точке S вычисляется по интенсивностям Ia и Ib в точках пересечения этой прямой со сторонами четырехугольника, а Ia и Ib интерполируются по интенсивностям в соответствующих вершинах:
Ia = [ I1 * ( ys √ y2 ) + I2 * ( y1 √ ys ) ] / ( y1 √ y2 )
Ib = [ I1 * ( ys √ y4 ) + I4 * ( y1 √ ys ) ] / ( y1 √ y4 )
Is = [ Ia * ( xb √ xs ) + Ib * ( xs √ xa ) ] / ( xb √ xa )
    Итак, [пауза] вопросы? Нет? Если есть, то пишите. А пока что мы поговорим о недостатках данного метода.

Недостатки метода Гуро.


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

Вместо заключения.


    В этом выпуске мы уже употребляли некоторые слова. смысл которых может быть не очень понятен. Не пугайтеь. Здесь не все так сложно. Просто напишите нам о чем бы вы хотели узнать в последующих выпусках и мы вам все объясним. Так же мы бы хотели видеть, что наш скромный труд не напрасен, что все то, что мы делаем. все-таки кому-то нужно. Поэтому пишите нам. Просто так. Может мы и не сможем ответить на все ваши письма. но обязательно их прочитаем.
Адрес для обратной связи: gamemaker@pisem.net

 

Инструкция по использованию рассылки ;-)

 

Эту рассылку проще всего читать в HTML формате, поэтому те, кто подписался на нее в TEXT/MIME переподпишитесь. Просто в других форматах более поздние выпуски будет читать неинтересно в связи с полным отсутствием иллюстраций.

 

На этом я с вами прощаюсь.

SlyMagic.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Поиск

В избранное