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

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


Служба Рассылок Subscribe.Ru проекта Citycat.Ru
Приветствуем всех подписчиков этой рассылки!
 

    Перед вами шестой выпуск рассылки "Как самому создать компьютерную игру".  Уже достаточно времени прошло с момента выхода первого выпуска рассылки, многое изменилось. Наверное, также, как и при разработке компьютерных игр, при написании рассылки существует одна маленькая и, на первый взгляд совсем неприметная проблема. Опасность того, что когда-нибудь ваш проект, над которым вы работали, не жалея сил, будет закрыт. Да, к сожалению, это реальность. А ведь все это получается из-за "текучки кадров".  Работа на "голом" энтузиазме устраивает далеко не всех. Вот это и есть главная проблема, от которой очень сложно уйти, разрабатывая некоммерческий проект. Авторы этой рассылки, к счастью, уже преодолели этот барьер... Поздравления по этому поводу принимаются по адресу gamemaker@pisem.net ;-)))
    Но перейдем к делу. Для тех, кто по каким-то причинам не читал предыдущие выпуски коротко расскажем о происходящем.  Для создания качественных игр в большинстве случаев необходимо уметь работать с графикой. Этому и будет посвящено несколько выпусков рассылки. Мы остановились на способах закраски поверхностей...


Закрашивание. Часть 2.
 

    В прошлый раз мы рассмотрели алгоритм закраски по Гуро (Gouraud shading). Далее, рассмотрели те проблемы, с которыми сталкивается программист, выбирая этот метод. Напомним их:

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

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

Закраска методом Фонга.

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

Недостатки метода Фонга.

     Несмотря на то, что метод Фонга позволяет получать блики на поверхности и снижает видимость границ граней, у него все же есть недостатки.
    Во-первых, работая в плоскости экрана, мы проводим интерполяцию с одинаковыми приращениями, хотя правильнее было бы учитывать перспективное представление граней и использовать разные приращения.
    Во-вторых, возникают проблемы при анимации. Дело в том, что, как видно из следующем рисунке, в определенный момент времени при повороте грани нормаль в одной и той же точке P начинает интерполироваться по нормалям другой тройки вершин (сначала √ по V1, V4 и V2, а потом - по V1, V4 и V3), что, естественно, иногда бывает очень заметно.

    В-третьих, при разбивке поверхности на четырехугольники надо учитывать, что, если точка является вершиной хотя бы одного четырехугольника, то она также должна быть вершиной всех четырехугольников, которым она принадлежит. Иначе можно столкнуться с ситуацией, показанной на рисунке (ниже), где закраска грани 1 интерполируется по V1 и V3 без учета V2, в то время как при закраске граней 2 и 3 V2 учитывается. Это может привести к нежелательным визуальным эффектам.

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


Вывод.

    Методы Гуро и Фонга хороши тем, что они просты и с их помощью можно получить довольно хорошую закраску, но поверхности получаются неинтересными и какими-то безжизненными. Текстуры помогут нам избежать этого. Как раз о них мы и поговорим в следующем выпуске.

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

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

Адрес для обратной связи: gamemaker@pisem.net
 


Вопросы и ответы.


     Если вы хотите что-нибудь спросить или дополнить наши ответы, пишите. Мы всегда рады.
Вопрос:     Как для создания игр применить ассемблер? Примеры.
Ответить на этот вопрос (дополнить).

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


 
Наши друзья.


Мир компьютерных и настольных РПГ
Рассылки Subscribe.Ru
Мир компьютерных и настольных РПГ
Подписаться на рассылку "Мир 3d-Action Games"
Только у нас вы сможете не только прочитать ПОЛНЫЕ новости, обзоры, коды, но и сами участвовать в различных обсуждениях, дискуссиях, помогать друг другу в решении различных технически проблем.
   

 


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


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

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

SlyMagic.


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

В избранное