[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - программирование / VRML /

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

Следующий параметр 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 задает предел видимости. Это подобно туману, но не туман :) Браузер перестает отображать, т.е. "рендерить", все объекты, которые находятся за пределом видимости. Установка небольшого значения для этого параметра может увеличить скорость создания изображения, однако не следует делать его слишком маленьким. Кстати неплохо бы его использовать совместно с туманом, т.к. вы не просто зададите закраску невидимых объектов цветом тумана, но и вообще можете отключить их прорисовку, чтобы зря не рисовать тысячи "невидимых" объектов.




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - программирование / VRML /

Шаг 19 - Трехмерный текст, узел Text
17-09-2009   

Узел Text описывается следующим образом... подробнее

Кол. просмотров: общее - 3184 сегодня - 0

Шаг 18 - Стиль шрифта, узел FontStyle
17-09-2009   

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

Кол. просмотров: общее - 3162 сегодня - 1

Шаг 17 - Экструзии или вытягивание контуров, узел Extrusion
17-09-2009   

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

Кол. просмотров: общее - 2980 сегодня - 1

Шаг 16 - Массив трехмерных линий, узел IndexedLineSet
17-09-2009   

Прежде чем рассматривать основной узел давайте познакомимся с узлом Color... подробнее

Кол. просмотров: общее - 3096 сегодня - 1

Шаг 15 - Созданние сложных тел, узел IndexedFaceSet
17-09-2009   

Прежде чем разбираться с узлом IndexedFaceSet нам надо разобраться с узлом Coordinate. Определяется он следующим образом... подробнее

Кол. просмотров: общее - 3209 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects