Isomap

Материал из wiki.appsalutecreator.com
Версия от 14:36, 30 ноября 2015; Denisov (обсуждение | вклад) (Управление объектом)
Перейти к: навигация, поиск

Isomap - объект с помощью которого, появилась возможность создать траекторию движения для объекта типа isomover. Например, установить движение машин по дорогам, людей по тротуарам, птиц в небе. Каждому объекту можно задать свою уникальную траекторию, учитывать столкновения объектов и запускать их взаимодействие (разговор, бой, погоня). Объекты типа isomap и isomover часто используются с economics и items. Особенность isomap в том, что положение дочерних объектов по оси z пересчитывается, как для y. Строится набор нод (точек старта и финиша) и ребер, которые их соединяют. Движение объектов происходит между нодами вдоль ребер. Каждое ребро имеет только одно направление.

Управление объектом

Основная работа с ним происходит в окне isomap setup, где создаются ноды и ребра по которым и будет происходить движение isomap-объектов. В свойствах объекта, нажатием на троеточие, открываем isomap setup. В открывшемся окне нажимаемbuild graph

Line.jpg

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

  • Настройки нод:
    • Добавить - добавление новой ноды
    • Выбрать - если кнопка включена, то можно выбрать ноду на карте
    • Selected node name - поле установки имени для ноды
    • Selected node x,y coordanate - поле управления координатами ноды. Можно также управлять перетаскиванием ноды мишкой по карте
    • Удалить - удаление выбранной ноды
    • Delete all nodes - удаление всех нод

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

Isomap setup1.png

После того как проставлены нужные точки можно приступать к формированию ребер.

  • Переходим ко второй группе кнопок:
    • Добавить - добавить новое ребро
    • Выбрать - выбрать ребро
    • Удалить - удалить ребро
    • Delete all edges - удалить сразу все ребра

Нам необходимо создать путь для движения изомувера. Выбираем точку (например, Т1)- она будет началом траектории, затем нажимаем Добавить (вторая кнопка, отвечающая за ребра)и кликаем на второй точке (например, Т2) - это будет конец траектории. Именно в таком направлении будет двигаться объект от Т1 до Т2. Для того что бы объект через эти же две точки проходил в обратном направлении, необходимо проложить еще одно ребро, выбрав точки в обратном порядке. Для двустороннего движения понадобится два односторонних ребра. По середине созданного ребра размещена точка, в редакторе она окрашена таким же цветом, что и ребро. С её помощью можно менять кривизну ребра. Для этого нажимаем "Выбрать" (ребро) кликаем на нужное ребро (оно должно окраситься красным цветом)и нажимаем пиктограмму Select graph edge knot теперь можно взяться за точку и установить нужную форму ребра. Для предания более изощренных форм, на ребра можно добавлять дополнительные точки кнопками Insert before и Insert after.

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

  • Последняя группа кнопок:
    • Hide all edges - скрыть все ребра, на карте остаются лишь точки
    • Save graph - сохранить все внесенные изменения
    • Exit without saving - выйти без сохранения

Чтобы сохранить все результаты настройки точек и ребер, нажимаем Save graph либо Exit without saving, если хочется выйти без сохранения.

Особенности расположения

В группу объекта isomap вводят объект isomover и "заплатки" для карты. Объект родитель сам установит по координате z необходимое размещение объектов, согласно их типу. Объект isomover будет двигаться за элементами карты.

Isomap setup2.png

Isomap setup3.png


Как видно со скринов, объект isomover (оранжевый шарик) в проекте находится ниже, чем объект 009_theater (изображение театра). В обычной ситуации отрисовка идет сверху вниз по дереву проекта и, если бы оба объекта были рисунками, то isomover должен был бы перекрыть собой все изображения по оси z. Тем не менее, они оба принадлежат объекту isomap, который различает типы объектов между собой. При отрисовке isomap помещает все изомуверы ниже остальных своих подобъектов. Этим создается псевдо-3D, будто наш шарик проходит сзади театра.

Почему же тогда изомувер находится выше фона, а не рисуется под ним? Фон задан объектом ground_12, который не является дочерним объектом для isomap. Поэтому isomap ничего не знает о фоне и учитывает только свои подобъекты.