Связываемые узлы

Связываемые узлы

5.1. Связываемые узлы.

Некоторые узлы, которые воздействуют на общее представление и режим навигации мира, являются связываемыми. Когда узел связан, установки внутри него воздействуют на состояние мира. Когда узел несвязан, другой узел того же самого типа должен быть связан, так установки в этом  другом узле воздействуют на мир. Таким образом, можно переключаться между различными установками для мира, выбирая, какой из узлов будет связан, и, соответственно, будет воздействовать на мир.

Связываемыми узлами являются следующие:

  • Background
  • Fog
  • NavigationInfo
  • Viewpoint

 

5.1.1.Связывающийся стек.

Браузер поддерживает 4 структуры для внутренних работ, каждая для своего типа связываемых узлов. Они называются связывающими стеками. Когда браузером анализируется VRML файл, первый узел соответствующего типа помещен в верхнюю часть стека, который соответствует его типу. Последующие узлы добавляются в нижнюю часть стека. Текущий связанный узел (то есть тот, который является активным) – это тот, который находится в верхней части стека (остальные узлы не активны). Как только мир загружен, мы можем управлять стеком при помощи некоторого набора событий.

 

5.1.2. Связывание узлов.

Все связываемые узлы имеют 2 события – set_bind eventIn и isBound eventOut. У обоих значения типа SFBOOL. Когда событие set_bind со значением TRUE посылается узлу, этот узел перемещается в верхнюю часть стека, и становится связанным узлом. Затем этот узел пошлет событие isBound со значением TRUE. Узел, который был в верхней части стека, посылает isBound=FALSE в этот же момент. Здесь есть одно исключение – если узел уже в верхней части стека, ничего не случается, и никакие события не посылаются.

Если Вы посылаете set_bind=FALSE к узлу, это удаляет его из стека навсегда. Если это связанный узел, то посылается isBound=FALSE, и следующий узел в стеке делается связанным узлам. Если нет, узел просто удаляется, и никаких событий не посылается. Если послать событие set_bind узлу, который был удален из стека, то ничего не произойдет.

Событие bindTime – здесь посылается время, когда узел становится связанным, или перестает быть связанным.

 

 

 

5.1.3. Использование связывания.

Теперь, когда известно, как использовать связывание, что можно сделать полезного? Можно менять фон и стили тумана. Также, используя различные узлы NavigationInfo, можно изменять размеры аватара пользователя, менять тип навигации, и т.д.

Однако, наиболее полезный узел – Viewpoint. Если связать пользователя с точкой наблюдения, он будет перемещаться туда немедленно в стиле, определенном в узле (поле jump).  Таким образом, можно получить сценарии перемещения пользователя во всем мире, связывая пользователя с различными точками

Комментарии к записи Связываемые узлы отключены

Рубрика: Программирование

Обсуждение закрыто.