Шаг 10 - Навигация в виртуальном мире - NavigationInfo

За навигацию в виртуальном мире отвечает узел NavigationInfo. Он позволяет задавать различные параметры браузера, которые облегчают путешетсвие пользователю. выглядит этот узел следующим образом:

NavigationInfo { 
  eventIn      SFBool   set_bind
  exposedField MFFloat  avatarSize      [0.25, 1.6, 0.75]
  exposedField SFBool   headlight       TRUE
  exposedField SFFloat  speed           1.0
  exposedField MFString type            ["WALK", "ANY"]
  exposedField SFFloat  visibilityLimit 0.0
  eventOut     SFBool   isBound
}

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

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

10.gif (1710 b)

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

Параметр speed устанавливает скорость вашего путешествия в метрах в секунду. Это важно когда виртуальный мир большой, чем больше скорость, тем быстрее вы сможете обследовать его разные уголки. Однако иногда большая скорость мешает рассматривать мелкие объекты. Новые версии большинства браузеров могут менять скорость передвижения, поэтому параметр spped можно не трогать совсем и оставлять без изменений.

Тип навигации, задаваемый параметром type, является, пожалуй, главным параметром вашего движения. Существует несколько "стратегий" или "парадигм" движения:

  1. "ANY" - разрешает браузеру использовать любой тип движения, по выбору пользователя.
  2. "WALK" - задает тип движения "прогулка", подобно играм типа DOOM, Quake и т.д.
  3. "FLY" - ну, полеты всегда были мечтой человека. В принципе данный тип движения ничем не отличается от прогулки, за исключением того, что на вас перестает действовать сила притяжения и вы ничем не ограничены в движении.
  4. "EXAMINE" - данный тип навигации предназначен для обзора отдельных объектов. Это похоже на то, что камера, которой вы пользуетесь для осмотра, начинает вращаться под вашим управлением вокруг выбранного объекта. Вы можете осмотреть объект практически со всех сторон не двигаясь с места. На данный тип навигации даже не влияет скорость перемещения, задаваемая параметром speed.
  5. "NONE" - запреты свойственны любым действиям, поэтому с помощью этого значения вы можете запретить любые типы движения пользователю. Вообще говоря, полезно запрещать движения, если ваш анимированный мир предназначен не для обследования, а для общего осмотра из заданной позиции. а просто для

Параметр type является, как вы можете заметить, массивом. Каждое заданный вами тип движения разрешает браузеру использовать его для путешествий. По умолчанию все типы движения разрешены type ["WALK", "ANY"]. Если вы добавите в список значение "NONE", то браузер запретит все движения, кроме оставшихся в списке. Например код:

NavigationInfo {
	type ["FLY","NONE"]
}

запретит все движения, кроме полета.

Последнее поле visibilityLimit задает предел видимости. Это подобно туману, но не туман :) Браузер перестает отображать, т.е. "рендерить", все объекты, которые находятся за пределом видимости. Установка небольшого значения для этого параметра может увеличить скорость создания изображения, однако не следует делать его слишком маленьким. Кстати неплохо бы его использовать совместно с туманом, т.к. вы не просто зададите закраску невидимых объектов цветом тумана, но и вообще можете отключить их прорисовку, чтобы зря не рисовать тысячи "невидимых" объектов.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Кузин Андрей.