Динамическая графика 1994 г.

Введение.


1. ВВЕДЕНИЕ

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

Термин "компьютерная графика" для разных людей может означать различные вещи, но обычно под ним понимается именно создание изменяющихся изображений. Для бизнесмена понятие "компьютерная графика" может заключать в себе изображение графиков, диаграмм, гистограмм и других видов визуального отображения финансовой и деловой информации. Диспетчер на железной дороге, может быть удовольствуется в качестве "компьютерной графики" мигающими квадратиками на дисплее, изображающими приближающиеся составы, а для курсанта летного училища за понятием "компьютерная графика" скрываются авиатренажеры, способные как можно более реалистично имитировать все этапы полета от взлета до по садки с непрерывно меняющимся видом из окна пилотской кабины. Еще более широкий смысл в понятие "компьютерная графика" вкладывают те, кто имеют дело с системами автоматизированного проектирования, например при разработке дизайна легковых автомобилей.

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

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

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

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

Художники-аниматоры, работающие в киноиндустрии это очень квалифицированные люди, успех которых во-многом зависит не только от художественного дара, но и еще от двух факторов, которые освоены многими по; олениями мультипликаторов, но, тем не менее, требуют многочисленных проб и ошибок и огромногопрактического опыта.

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

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

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

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

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

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

Блочная графика предполагает печать из БЕЙСИКа по команде PRINT AT или из машинного кода по команде RST ЮН. При этом печатаемые символы (а они могут быть заданы пользователем в виде графических примитивов) могут сами по себе представлять некоторые графические образы, а могут и входить составной счастью в более крупные изображения. Нижеприведенная БЕЙСИК-программа демонстрирует принципы анимации на блочной графике и она достаточно показательна для понимания сути процесса анимации Сначала изображение строится в заданном месте экрана, затем оно стирается и, наконец, строится повое изображение, несколько смещенное относительно предыдущего, после чего цикл повторяется. Так возникает иллюзия движения изображения по экрану.

Листинг 1 Пример простейшей анимации

10 CLS 20 LET

30 LET В$=" " 40 FOR k=0 ТО 21 50 PRINT AT k, 12; AS 60 PAUSE 5 70 PRINT AT k,12; BS 80 NEXT k 90 GO TO 40

Одной из модификаций этой техники является оконтуривание двигающегося изображения пустыми знакоместами для "затирания" ранее имевшегося на экране содержания. Итак, техника анимации включает в себя рисование, задержку, стирание и новое рисог > ние. Блочная графика проста и понятна, она иногда находит тойное применение, но по выразительности все-таки значительно уступает растровой графике.

Растровая графика. Если в блочной графике основным элементом является блок 8*8, равный одному знакоместу, то в растровой графике основным элементом изображения является точка. Основную роль в растровой графике имеет разрешающая способность экрана, т.е. сколько точек может быть уложено в единицу площади. "Спектрум" имеет вполне пристойное разрешение - 256 точек по горизонтали и 192 точки по вертикали. Каждая точка (пиксел) может индивидуально включаться, переключаться или проверяться.

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

Итак, спрайтами можно управлять, организуя их перемещение по экрану по заданному закону. Но в концепции спрайтов есть еще один очень важный момент - это детекция коллизия спрайтов. Когда один спрайт сталкивается на экране с другим, или когда он сталкивается с каким-то участком фоновой картинки экрана, программа, управляющая движением спрайтов должна определить, с чем столкнулся спрайт, принять решение и передать управление процедуре, которая обработает возникшее столкновение (коллизию). Примеров можно приводить сколько угодно. Если Вы играете в "Аг-kanoid", то в момент коллизии шарика и ракетки должна включиться процедура, которая изменит направление движения шарика так, чтобы согласно законам физики угол падения равнялся углу отражения. Точно так же при коллизии шарика и кирпичной стенки должна включиться процедура, изображающая "взрыв" кирпича и раэлетание осколков. В качестве примера мы привели небольшую

программу на БЕЙСИКе, которая проиллюстрирует концепцию анимации в растровой графике и технику детекции коллизии.

Листинг 2 Пример детекции коллизии

10 CLS

20 FOR k=l ТО 20: PRINT AT к,1;"И": PRINT AT к, 30 "И"

30 NEXT к

40 FOR к=1 ТО 30: PRINT AT 1,к;"Н": PRINT AT 20,к "И"

50 NEXT к

60 GO ТО 150

69 REM Подпрограмма печати точки

70 PLOT х,у

80 PAUSE 4

90 RETURN

99 REM Подпрограмма стирания точки

100 PLOT OVER1; х,у

110 RETURN

119 REM Подпрограмма детекции коллизии

120 IF POINT (x+xdir,y+ydir)=1 AND POINT (x+xdir,y+ydir+l)=l AND POINT (x+xdir,y+ydir-l)=l THEN LET xdir=-xdir

130 IF POINT (x+xdir,y+ydir)=l

AND POINT (x+xdir+l,y+ydir)=l AND POINT (x+xdir-1,y+ydir)=1 THEN LET ydir=-ydir

140 RETURN

149 REM Головной цикл

150 LET x=70: LET y=100: LET xdir=-3.1: LET ydir=l

160 GO SUB 120: REM Проверка коллизии.

170 GO SUB 70: REM Печать точки. 180 GO SUB 100: REM Стирание точки. 190 LET x=x+xdir 200 LET y=y+ydir 210 GO TO 160

Векторная графика. Как в блочной графике основный элементом изображения является элементарный блок 8*8, а в растровой -точка, так в векторной графике основным элементом изображения является линия, а точнее - отрезок прямой. Все изображения, в том числе и объемные, строятся иэ совокупности отрезков. Такие изображения могут как двигаться по экрану, так и вращаться вокруг собственных осей. Векторная графика - вычисляемая и при всех манипуляциях с изображением программа рассчитывает новые координаты начала и конца каждого отрезка, иэ которых изображение составлено. Основной вычислительный аппарат при этом - чисто математический, основанный на формулах, известных иэ геометрии и тригонометрии. Любители игровых программ сталкиваются с подобным методом воспроизведения графики довольно часто. Поскольку это самый "быстрый" вид графики, его широко применяют в программах-имитаторах, в том числе и в имитаторах космических кораблей. Нижеприведенная БЕЙСИК-программа демонстрирует изображение куба средствами векторной графики.

Листинг 3 Простейший пример векторной графики.

10 LET ох=50: LET оу=40

20 LET а=30: LET Ь=40: LET с=1: LET d=20

30 PLOT ox, oy

40 DRAW 0,a: DRAW b,0: DRAW 0,-a: DRAW -b,0 50 DRAW c,d: DRAW b,0: DRAW -c,-d

60 PLOT ox+0,oy+a: DRAW c,d: DRAW b,0: DRAW -c,-d 70 PLOT ox+c,oy+d: DRAW 0,a: DRAW b,0: DRAW 0,-a 80 LET a=a+l: LET b=b+l: LET c=c+l: LET d=d+l 90 STOP




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
От редакции - Задержка с выходом номера газеты.
Joke - Семерка лучших origin'ов-мудрых и не очень выражений.
Assembly - отчет Петра Соболева с буржуйского пати Assembly 1999 (Часть 3).
С миру по биту - "Не надо нам такого порядка" дискуссия на тему: "IS-DOS: проблемы развития".
Чайнику - Что такое Tosser - UZTosser.

В этот день...   21 ноября