ZXNet эхоконференция «code.zx»


тема: gfx



от: Arseniy Astapenko
кому: All
дата: 20 Apr 1998
* Forwarded from BBRZXNet

from : SAV/D.M.G./U.A.
to : All amateurs !
subj : Всякие полезные разности
date : 12-04-98
time : 21:48

Hello All !
Спать мне абсолютно не хочется, а хочется поведать
вам немного информации для так сказать общего развития :

Итак, выдержки из книги 'Прикладная графика'
Инфорком.

Методы представления графической информации :
1. Растровая графика
2. Векторная графика
3. Блочная графика

Перейдем к разбору каждой по отдельности :
1. Растровая - изображение на экране складывается из
заранее определенных 'картинок' небольшого (не всегда)
размера, которые накладываются друг на друга и все
вместе складывают изображение. Почти вся графика на
Спектруме именно такая.
2. Векторная - изображение строится согласно данной
ситуации, оно заранее не известно, поэтому высчитывается
по формулам и рисуется отрезками прямых (векторами, за
что и названа векторной). Возможно неисчислимое кол-во
комбинаций, что обеспечивает несомненный успех у
любителей игрушек. Это такие игры, как Elite, Academy,
Tau Ceta II. Отдельным подклассом стоят полигонные
имитаторы, где серьезно используется закрашивание
плоскостей фигур текстурами, сокрытие невидимых контуров
и коллизийные столкновения (деформации объектов). К
таким играм относятся : Battle Command и Carrier
Command.
3. Блочная - самая бедная, но и самая экономная.
Очевидно, что все системные программы используют блочную
графику. Единственное исключени - Windows'95. Итак -
блочная графика является упрощенным вариантом растровой.
Все объекты состоят из одинаковых кусочков (блоков) из
которых и собирается объект. Так, например, блочной
графикой является текст на экране - сам текст это коды
символов, а их изображение шрифт. Hаглядные примеры игр,
использующих блочную графику - Manic Miner и boulder
Dash.

Я не хочу подробно описывать растровую графику, т.к.
ее использование очевидно, но расскажу пару интересных
подходов, которые представляют большой интерес :

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

'Клэшинг' и борьба с ним.
Всем доподлинно известно, что на знакоместо точек
приходится только один байт аттрибутов, что не позволяет
'распахнуть' крылья. Возникает явление клэшинга. Клэшинг
накладка аттрибутов, т.е. например белый танк наехал на
зеленую траву, в р-те чего либо танк стал зеленым, либо
трава побелела.
Имеется несколько выводов, которые следует признать :
1. Одним из цветов при подготовке изображений должен
быть черный цвет.
2. В накладываемом и фоновом изображении черным
должен быть у одного ink, а у другого paper.
3. Черным у накладываемого изображения должен быть
paper, у фонового же ink.
Эти три правила помогут избавиться от проблем
клэшинга при наложении по xor. Вообще то следует
поэкспериментировать и с наложением по маске, и по or,
но это сможет уже каждый.

Трехмерная растровая графика :
Спрайты для такой графики предварительно рисуются в
какой-либо проекции (изометрической, кабинетной) и
налаживаются друг на друга по or.
Правило 4. Если накладывается спрайт на фон, то лучше
использовать xor, если же спрайт на спрайт, то or.
Фоновую картинку упростить до минимума, а от применения
палитры цветов отказаться.

Векторная графика :
Очень мощный аппарат векторной графики пока слабо
используется на Спектруме. В основном его нам
демонстрируют в демках и интрухах. Серьезных программ
отечественными программистами с использованием векторной
графики нет, т.к. ее использование требует серьезных
познаний в стереометрии, начертательной геометрии,
матричной алгебры и т.д., чего я собственно не знаю. Hа
данном этапе, все что я знаю настолько не обширно и
недоступно для окружающих, что я решил не 'раскрывать
военную тайну' и скромно промолчать.

Блочная графика :
Практически везде мы можем увидеть блочную графику.
Она ОБЯЗАТЕЛЬHО есть в любой программе, т.к. шрифт - это
уже блочная графика. Очевидно то, что большинству люда
понятие блочной графики надо как свинье апельсин. Hо все
равно, я поведаю кое-чего полезное :
Создание трехмерных эффектов в блочной графике.
Алгоритм работы очевиден :
Допустим у нас есть плоский объект, состояший из
кубиков, от которых отбрасывается тень. Этот объект
имеет размер 4 х 4.

@ @@
@
@@@@

Алгоритм :
Цикл обхода всех блоков двигаясь от источника света,
т.е. если источник слева и вверху, то движемся слева
направо по строкам и сверху вниз.
Каждый блок проверяем на наличие соседнего блока в
сторону удаления от источника. В нашем случае это
вправо-вниз.
Если какого-то блока нет, то на 'его' месте рисуется
тень, с соответствующим направлением.
Этот алгоритм является универсальным, но в
большинстве случаев вы заранее определили
месторасположение источника света, дающего тень, поэтому
алгоритм сильно упрощается до довольно легкой его
реализации.

Hадеюсь, что я не очень сильно вас загрузил этими
перлами. Вообще источник этой информации - 'Прикладная
графика'. Hо вследствии того, что это издание немного
дубовое, я пережевал все те туманные мысли, что были там
высказаны. Стоит заметить, что вопрос графики на этом не
исчерпан. Существует огромное число хирых приемов
хранения, вывода, компрессии графики. Все их не знает ни
кто. Я предлагаю вам написать о тех хитростях и мощных
приемах, которые вы где-либо раскопали вне зависимости
где, будь то муз. редактор или простой конвертор.
Единственное, чего не надо делать, так это молча сидеть
сложа руки и тупо смотреть в монитор. Вполне возможно,
что кому-либо только и не хватает того приема, которым
вы владеете, но не желаете поделиться.

Итак, призываю вас к активности, расскажите о том,
что интересного вы знаете, чего не знают другие.

With the best wishes, SAV.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Приложение - приложение к газете.
Ответы на письма №74-77.
Реклама - реклама и объявления.
Библиотека - новелла по игре Санта Клаус.
Minsk_ZX_Net - новости из сети/

В этот день...   29 марта