Типы узлов в компьютерной графике

Обновлено: 29.06.2024

Приветствую! Мы продолжаем переводить документацию к движку cocos2d-x. Эта статья содержит сразу две главы, небольшие по объему. Как вы уже догадались, в первой мы разберем способы работы со сценами, а в конце рассмотрим еще несколько типов узлов.

Надеюсь, вы найдете для себя много полезного!

Что такое сцена?


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

Создание сцены

Сцену создать очень просто:

Помните граф сцены?

В первой части руководства мы узнали о Scene Graph и о том, как он влияет на рисунок нашей игры. Важно помнить, что он определяет порядок рисования элементов GUI(графического пользовательского интерфейса). Также помните про z-порядок!

Простая сцена

Давайте построим простую сцену. Помните что Cocos2d-x использует правую декартову систему координат. Это означает, что координата 0,0 находится в левом нижнем углу экрана/дисплея. Чтобы грамотно позиционировать элементы вашей игры, необходимо заранее всё просчитать. Давайте создадим простую сцену и добавим к ней несколько элементов:


Если мы запустим этот код, мы должны увидеть простую сцену, содержащую Label и Sprite. Это немного, но только пока что.

Переход между сценами

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

Способы замены сцены

Есть много способов смены ваших сцен. Каждый обладает определенной функциональностью. Давайте пройдёмся по ним.
Дано:


runWithScene() — используется только для первой сцены. Этим методом мы задает сцену для начала игры.


replaceScene() — непосредственная замена сцены.


pushScene() — приостанавливает выполнение текущей сцены, добавляя её к стеку приостановленных сцен. Вызывайте только при наличии активной сцены.


popScene() — эта сцена встанет на место активной. Текущая сцена будет удалена. Вызывайте только при наличии активной сцены.

Смена сцен с эффектами

Вы можете добавить визуальные эффекты для смены ваших сцен.

Другие типы узлов

Вы уже используете Sprite, Label и Action — объекты в своей игре и это прогресс. Кроме основных типов узлов, описанных в предыдущих главах, Cocos2d-x предоставляет более продвинутые типы узлов, обладающие особой функциональностью. Возможно вы хотите сделать игру, основанную на тайлах? Или, может быть, 2D-платформер? Или может вы хотите добавить партикловые эффекты в свою игру? Cocos2d-x предоставляет Node-объекты, которые помогут вам в этом!

TileMap

TileMaps — это карты, состоящие из тайлов (плиток). Каждый тайл может иметь независимое от других поведение. TileMaps хранятся в основанном на XML формате карт, который называется TMХ. TMX был изначально разработан для тайловых карт, но он так же подходит для создания общих игровых уровней благодаря поддержке различных типов объектов. TMX-объекты легко создать:

Тайл-карты могут иметь несколько слоёв, определённых z-порядком. Вы можете получить доступ к определённому слою по его имени:


Каждый тайл имеет уникальную позицию и ID. Это позволяет очень легко выбирать необходимый тайл. Вы можете получить любой по его идентификатору (id):


Пример слоёв в тайл-карте:

image

image

Как сделать карту из тайлов? Есть много инструментов, которые делают это. Tiled — популярная утилита. Он активно развивается и имеет отличное комьюнити. Скриншоты сверху — реальные проекты в Tiled.

Эффекты частиц

Возможно ваша игра нуждается в эффектах, таких как огонь, заклинания или взрывы? Как вы реализуете столь сложные эффекты? Возможно ли это? Конечно! Используйте системы частиц. Particle system — это технология компьютерной графики, использующая большое количество очень маленьких спрайтов или других графических элементов для симуляции нечётких объектов, которые иначе очень трудно воспроизвести с помощью обычных методов рендеринга. Некоторые реальные примеры могут включать очень хаотичные системы: природные явления или процессы, вызванные химическими реакциями. Вот пара примеров эффектов частиц:

image
image

Инструменты для создания эффектов частиц

Хотя вы можете создавать эффекты вручную, указывая каждое свойство на свой вкус, для этого существует несколько сторонних утилит. Некоторые из инструментов:

  1. Particle Designer: очень мощный редактор эффектов на Mac.
  2. V-play particle editor: кросс-платформенный редактор систем частиц для Cocos2d-x.
  3. Particle2dx: онлайн-дизайнер эффектов частиц.

Встроенные эффекты частиц

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


Результатом является эффект, выглядящий примерно так:

image

Но что делать, если ваш эффект частиц не совсем такой, каким бы вы хотели его видеть? Да, вы можете вручную изменять его! Возьмём тот же самый фейерверк и изменим его свойства:

Параллакс

Parallax — представляет собой уникальный тип узлов, который имитирует параллакс скроллинг. Пара.. что? Да, параллакс. Проще говоря, вы можете рассматривать параллаксовый узел, как специальный эффект, который создает различную видимость позиции и направления объекта, в зависимости от точки обзора. С параллаксом мы встречаемся постоянно, когда смотрим телевизор или снимаем что-то на камеру. Вы можете вспомнить много игр, которые работают таким образом. Super Mario Bros — классический пример. Параллаксовые узлы могут перемещаться путем выполнения последовательности, а также вручную мышкой, касанием или с помощью клавиатуры.

Параллаксовые узлы немного сложнее, нежели обычные узлы. Почему? Потому что они требуют несколько узлов для своей работы. Параллаксовые узлы не могут работать сами по себе. Нужно как минимум 2 узла для работы. Как обычно, в Cocos2d-x параллаксовые узлы легко создавать:


Нам потребуется несколько Node-объектов, они тоже легко добавляются:


Окей, выглядит знакомым, правда? Обратите внимание на несколько вещей! Каждому добавленному узлу присваивается уникальный z-порядок, чтобы они накладывались друг на друга. Также обратите внимание на дополнительные два параметра типа Vec2 в вызове addChild(). Это соотношение и смещение. Эти параметры можно рассматривать как отношение скорости внутренних узлов к скорости родительского узла.

Трудно показать параллаксовый узел в тексте, но вы можете сами попробовать написать этот код, или же запустить тестовый проект — Programmer Guide Sample, чтобы увидеть его в действии!


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


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


Панель инструментов CorelDRAW. Инструменты по отдельности

Построение прямоугольников

В CorelDRAW все примитивы строятся с помощью соответствующих инструментов. Среди инструментов имеется кнопка Rectangle (Прямоугольник). Попробуем воспользоваться этим инструментом и построить наш первый объект.

1. Создайте новый документ. Для этого упражнения можно выбрать лист бумаги с произвольной ориентацией любого размера.

2. Щелкните на кнопке инструмента Rectangle (Прямоугольник) в наборе инструментов. После этого указатель мыши на экране примет форму перекрестья с прямоугольником — это визуальное подтверждение того, что в настоящий момент активен инструмент построения прямоугольников.

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

Аналогично с помощью соответствующих инструментов строятся другие фигуры.

Кривая Безье

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


Элементы кривой Безье: 1- узлы, 2 - сегменты, 3- направляющие

Любая линия в CorelDRAW состоит из узлов и сегментов, и все операции с линиями на самом деле представляют собой операции именно с ними. Узел полностью определяет характер предшествующего ему сегмента, поэтому для незамкнутой линии важно знать, который из двух ее крайних узлов является начальным, а для замкнутой — направление линии (по часовой стрелке или против нее). По характеру предшествующих сегментов выделяют три типа узлов: начальный узел незамкнутой кривой, а также прямолинейный (line) и криволинейный (curve) узлы.

Для узлов, смежных хотя бы с одним криволинейным сегментом, имеется еще одна классификация типов: они подразделяются на точки излома (cusp) и сглаженные узлы (smooth). Частным случаем сглаженного узла является узел симметричный (symmetrical), но таким может быть только узел, расположенный между двумя криволинейными сегментами.

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

Тип узла (он отображается в строке состояния) определяет возможное взаимное расположение его направляющих точек.

Пристыковываемые окна

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


Пристыковываемое окно Transformation (Преобразование)

Как правило, каждое пристыковываемое окно содержит несколько вкладок. Например, у пристыковываемого окна Transformation (Преобразование), изображенного на рисунке, их пять. Для перехода на нужную вкладку, нужно щелкнуть на соответствующем значке в верхней части пристыковываемого окна.

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

Преобразование пиксельного изображения в векторное (векторизация или трассировка), в подавляющем большинстве случаев требует не просто вмешательства, а творческого участия.

Графический редактор CorelDRAW позволяет выполнить операцию векторизации автоматически и вручную. Для достижения наилучшего результата векторизации (особенно автоматической), старайтесь использовать исходные пиксельные файлы большого разрешения (250-300 dpi) с четкими ровными краями изображения.

Автоматическая векторизация

Для перехода к автоматической векторизации импортированного пиксельного изображения следует выделить его инструментом Pick (Выбор) и выбрать команду Bitmaps > Trace Bitmap (Пиксельное изображение > Трассировать пиксельное изображение). После нажатия в открывшемся окне программы мы видим поле поделенное на две части, в левой части исходный растровый объект, правая часть предназначена для получения векторного результата.

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

В графе точность необходимо выставить цифровое значение от 1 до 100 – шаг векторизации. Чем выше цифровое значение тем лучше полученный результат. Но однако нужно помнить, что если исходное пиксельное изображение многоцветное и имеет сложную форму, то в результате при выставленном максимуме шага (100), можно получить слишком большое количество векторных «узлов», из за которых полученный файл будет иметь большой вес. Нужно опытным путем пытаться найти такое оптимальное значение при котором в результате векторизации сохраняются все элементы и силуэтная форма объекта, но при этом файл не имеет лишнее количество «узлов».

Визуально сравниваем исходное и полученное изображения, и если результат устраивает нажимаем на "ОК". Нужно заметить, что полученный результат для дальнейшей работы необходимо будет разгруппировать (Ctrl-U).

Далее можно удалить ненужные мелкие детали, которые могли остаться после трассировки. При помощи инструмента «указатель» (стрелка), выделяем объект, который хотим удалить и после его выделения нажимаем на клавиатуре клавишу Delete. Для того чтобы видеть неровности линий и количество мелких деталей нужно перевести изображение в режим «Каркас» в этом режиме показано бесцветное, контурное изображение объектов и становятся видны все наложения и пересечения.

У метода автоматической векторизации есть существенный недостаток. Как правило объекты полученные методом трассировки при помощи Corel Trace имеют неровные, рваные края. Сгладить их можно при помощи инструмента «Форма».

Векторизация вручную. Обрисовка

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

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

Читайте также: