Isomap — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Создание карт)
(Выделение маршрутов между локациями на карте)
 
(не показано 12 промежуточных версий 2 участников)
Строка 2: Строка 2:
 
''Isomap'' - [[Object|объект]] с помощью которого, появилась возможность создать траекторию движения для объекта типа ''[[isomover]]''. Например, установить движение машин по дорогам, людей по тротуарам, птиц в небе. Каждому объекту можно задать свою уникальную траекторию, учитывать столкновения объектов и запускать их взаимодействие (разговор, бой, погоня). Объекты типа isomap и isomover часто используются с economics и items. Особенность isomap в том, что положение дочерних объектов по оси ''y'' пересчитывается, как для ''z'' - если изомувер на карте ниже, то он над объектом, а если выше по оси ''y'', то объект рисуется поверх изомувера. Строится набор нод (точек старта и финиша) и ребер, которые их соединяют. Движение объектов происходит между нодами вдоль ребер. Каждое ребро имеет только одно направление.<br><br>
 
''Isomap'' - [[Object|объект]] с помощью которого, появилась возможность создать траекторию движения для объекта типа ''[[isomover]]''. Например, установить движение машин по дорогам, людей по тротуарам, птиц в небе. Каждому объекту можно задать свою уникальную траекторию, учитывать столкновения объектов и запускать их взаимодействие (разговор, бой, погоня). Объекты типа isomap и isomover часто используются с economics и items. Особенность isomap в том, что положение дочерних объектов по оси ''y'' пересчитывается, как для ''z'' - если изомувер на карте ниже, то он над объектом, а если выше по оси ''y'', то объект рисуется поверх изомувера. Строится набор нод (точек старта и финиша) и ребер, которые их соединяют. Движение объектов происходит между нодами вдоль ребер. Каждое ребро имеет только одно направление.<br><br>
 
== Создание карт ==
 
== Создание карт ==
Основная работа с isomap происходит в окне ''isomap setup'', где создаются ноды и ребра по которым и будет происходить движение isomap-объектов. В свойствах объекта, нажатием на троеточие, открываем ''isomap setup''. В открывшемся окне нажимаем''build graph''
+
Основная работа с isomap происходит в окне ''isomap setup'', где создаются ноды и ребра по которым и будет происходить движение isomap-объектов. В свойствах объекта, нажатием на троеточие, открываем ''isomap setup''. В открывшемся окне нажимаем ''build graph''
  
[[Файл:Line.jpg|800px]]<br><br>Все необходимое для дальнейшей работы находим в, открывшейся сверху, строке объекта isomap. Пункты появившегося меню сгруппированы по настройкам нод, ребер, добавлению вспомогательных точек и сохранению результатов.
+
[[Файл:Line.jpg|900px]]<br><br>Все необходимое для дальнейшей работы находим в, открывшейся сверху, строке объекта isomap. Пункты появившегося меню сгруппированы по настройкам нод, ребер, добавлению вспомогательных точек и сохранению результатов.
  
 
*Настройки нод:
 
*Настройки нод:
Строка 10: Строка 10:
 
**'''Выбрать''' - если кнопка включена, то можно выбрать ноду на карте
 
**'''Выбрать''' - если кнопка включена, то можно выбрать ноду на карте
 
**'''Selected node name''' - поле установки имени для ноды
 
**'''Selected node name''' - поле установки имени для ноды
**'''Selected node x,y coordanate''' - поле управления координатами ноды. Можно также управлять перетаскиванием ноды мишкой по карте
+
**'''Selected node x, y coordanate''' - поле управления координатами ноды. Можно также управлять перетаскиванием ноды мишкой по карте
 
**'''Удалить''' - удаление выбранной ноды
 
**'''Удалить''' - удаление выбранной ноды
 
**'''Delete all nodes''' - удаление всех нод
 
**'''Delete all nodes''' - удаление всех нод
Строка 25: Строка 25:
 
**'''Delete all edges''' - удалить сразу все ребра
 
**'''Delete all edges''' - удалить сразу все ребра
 
**'''Select graph edge knot''' - включенная кнопка позволяет перемещать мышкой точки, расположенные на ребрах
 
**'''Select graph edge knot''' - включенная кнопка позволяет перемещать мышкой точки, расположенные на ребрах
**'''Insert before''' - дополнительная точка, добавляемая до главной точки ребра
+
**'''Insert before''' - вспомогательная точка, добавляемая до главной точки ребра
**'''Insert after''' - дополнительная точка, добавляемая после основной точки ребра
+
**'''Insert after''' - вспомогательная точка, добавляемая после основной точки ребра
  
 
Нам необходимо создать путь для движения изомувера. Выбираем первую ноду- она будет началом траектории, затем нажимаем ''Добавить'' и кликаем на второй ноде - это будет конец траектории. Именно в таком направлении будет двигаться объект, от первой ко второй ноде. Для двустороннего движения понадобится два односторонних ребра через одни и те же ноды. Выделив ребро, можно заметить что две точки между ним отличаются: одна закрашена, а вторая пустая. По этим признакам можно определить направление движения  -  оно будет происходит от пустой к закрашенной точке.
 
Нам необходимо создать путь для движения изомувера. Выбираем первую ноду- она будет началом траектории, затем нажимаем ''Добавить'' и кликаем на второй ноде - это будет конец траектории. Именно в таком направлении будет двигаться объект, от первой ко второй ноде. Для двустороннего движения понадобится два односторонних ребра через одни и те же ноды. Выделив ребро, можно заметить что две точки между ним отличаются: одна закрашена, а вторая пустая. По этим признакам можно определить направление движения  -  оно будет происходит от пустой к закрашенной точке.
Строка 34: Строка 34:
 
**'''Save graph''' - сохранить все внесенные изменения
 
**'''Save graph''' - сохранить все внесенные изменения
 
**'''Exit without saving''' - выйти без сохранения
 
**'''Exit without saving''' - выйти без сохранения
<br><br>
+
<br>
 +
== Выделение маршрутов между локациями (по кейсу) на карте ==
 +
После создания объекта ''isomap'' с необходимыми маршрутами вкладываем в него 2 объекта типа ''ribbon''  - один для нового маршрута (еще не пройденного) и для уже пройденных.
 +
В Таскорганайзере в "прохождение кейсов" указываем isomap, ribbon новый и  ribbon пройденный.<br>
 +
Также в Економике необходимо для каждой локации (вкладка "локация хидден") указать номер её узла (нумерация нод начинается с 0!).<br><br>
 +
 
 +
== Состояния ==
 +
[[Файл:Isomap st1.png|right|150px]]<br>
 +
*'''disable_edge''' - состояние, назначаемое isomap для отключения ребра. Необходимо предварительно выбрать две ноды, формирующие это ребро. Для этого предназначены параметры n1 и n2 у объекта isomap. Этим параметрам передаем значения нод и далее устанавливаем состояние ''disable_edge'' для isomap. В итоге наше ребро станет не доступным
 +
*'''enable_edge''' - состояние, назначаемое isomap для того, чтобы сделать ребро доступным, если оно было отключено ранее. Настройка аналогична ''disable_edge'' (детальнее на рисунке).<br><br>
  
 
== Особенности расположения ==
 
== Особенности расположения ==
В подобъекты ''isomap'' помещают объекты ''isomover'' и участки background, если изомувер в процессе движения может оказаться как перед, так и за ними. Это крыши домов, фонари, деревья. Объект родитель сам установит по координате z необходимое размещение объектов, согласно их типу. Объект ''isomover'' будет двигаться за элементами карты, если по оси y он в данный момент находится выше.<br>
+
В подобъекты ''isomap'' помещают объекты ''isomover'' и участки background, если изомувер в процессе движения может оказаться как перед, так и за ними. Это крыши домов, фонари, деревья. Объект родитель сам установит по координате ''z'' необходимое размещение объектов, согласно их типу. Объект ''isomover'' будет двигаться за элементами карты, если по оси ''y'' он в данный момент находится выше.<br>
 
[[Файл:Isomap setup2.png|left|330px]]
 
[[Файл:Isomap setup2.png|left|330px]]
 
[[Файл:Isomap setup3.png]]
 
[[Файл:Isomap setup3.png]]
  
<br>Как видно на рисунках, объект isomover (оранжевый шарик) в проекте находится ниже, чем объект 009_theater (изображение театра). В обычной ситуации отрисовка идет сверху вниз по дереву проекта и, если бы оба объекта были рисунками, то isomover должен был бы перекрыть собой все изображения по оси z. Тем не менее, они оба принадлежат объекту isomap, который различает типы объектов между собой. При отрисовке isomap динамически меняет значение z своим подобъектам. Этим создается псевдо-3D, будто наш шарик проходит сзади театра.
+
<br>Как видно на рисунках, объект isomover (оранжевый шарик) в проекте находится ниже, чем объект 009_theater (изображение театра). В обычной ситуации отрисовка идет сверху вниз по дереву проекта и, если бы оба объекта были подобъектами не isomap, а другого объекта, то isomover должен был бы перекрыть собой все изображения по оси ''z''. Тем не менее, они оба принадлежат объекту isomap, при отрисовке он динамически меняет значение ''z'' своим подобъектам. Этим создается псевдо-3D, будто наш шарик проходит сзади театра.
  
Isomap может влиять только на своих прямых потомков. Если дочерний объект сам является родителем для кого-то, то его подобъекты принимают z-координаты прямого родителя.
+
Isomap может влиять только на своих прямых потомков. Если дочерний объект сам является родителем для кого-то, то его подобъекты принимают ''z''-координаты непосредственного родителя.
  
 
Почему же тогда изомувер находится выше фона, а не рисуется под ним? Фон задан объектом ground_12, который не является дочерним объектом для isomap. Поэтому isomap ничего не знает о фоне и учитывает только свои подобъекты.
 
Почему же тогда изомувер находится выше фона, а не рисуется под ним? Фон задан объектом ground_12, который не является дочерним объектом для isomap. Поэтому isomap ничего не знает о фоне и учитывает только свои подобъекты.

Текущая версия на 12:32, 5 мая 2017

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

Создание карт

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

Line.jpg

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

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

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

Isomap setup1.png

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

  • Настройки ребер:
    • Добавить - добавить новое ребро
    • Выбрать - выбрать ребро. Нажимаем на эту кнопку и кликаем на нужное ребро (оно должно окраситься красным цветом)
    • Selected edge type - поле выбора типа ребра. Тип ребер можно учитывать в объектах isomover (задавать движение лишь по определенным типам ребер)
    • Selected edge weight - поле установки веса ребра
    • Удалить - удалить ребро
    • Delete all edges - удалить сразу все ребра
    • Select graph edge knot - включенная кнопка позволяет перемещать мышкой точки, расположенные на ребрах
    • Insert before - вспомогательная точка, добавляемая до главной точки ребра
    • Insert after - вспомогательная точка, добавляемая после основной точки ребра

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

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


Выделение маршрутов между локациями (по кейсу) на карте

После создания объекта isomap с необходимыми маршрутами вкладываем в него 2 объекта типа ribbon - один для нового маршрута (еще не пройденного) и для уже пройденных. В Таскорганайзере в "прохождение кейсов" указываем isomap, ribbon новый и ribbon пройденный.
Также в Економике необходимо для каждой локации (вкладка "локация хидден") указать номер её узла (нумерация нод начинается с 0!).

Состояния

Isomap st1.png


  • disable_edge - состояние, назначаемое isomap для отключения ребра. Необходимо предварительно выбрать две ноды, формирующие это ребро. Для этого предназначены параметры n1 и n2 у объекта isomap. Этим параметрам передаем значения нод и далее устанавливаем состояние disable_edge для isomap. В итоге наше ребро станет не доступным
  • enable_edge - состояние, назначаемое isomap для того, чтобы сделать ребро доступным, если оно было отключено ранее. Настройка аналогична disable_edge (детальнее на рисунке).

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

В подобъекты isomap помещают объекты isomover и участки background, если изомувер в процессе движения может оказаться как перед, так и за ними. Это крыши домов, фонари, деревья. Объект родитель сам установит по координате z необходимое размещение объектов, согласно их типу. Объект isomover будет двигаться за элементами карты, если по оси y он в данный момент находится выше.

Isomap setup2.png

Isomap setup3.png


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

Isomap может влиять только на своих прямых потомков. Если дочерний объект сам является родителем для кого-то, то его подобъекты принимают z-координаты непосредственного родителя.

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