| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Изложение моих познаний об узлах состоит из фактов (перевод фрагментов спецификации VRML, англоязычных tutorial'ов и т.д.) и субъективных представлений. НО (!) в чем-то при изложении я могу оказаться неправ. Все-таки описание узлов - это теория, а я, скорее, практик. При этом по-русски мне придется изъясняться, как получится, т.к. насколько мне известно, устоявшегося перевода терминов VRML на русский пока нет. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Узел (node) - базовый компонент в описании VRML сцены, по сути дела сцена - это НАБОР УЗЛОВ. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- ОФОРМЛЕНИЕ УЗЛОВ. Грубо говоря, узлы записываются как пара скобок ([] или {}) с указанием, что с содержимым скобок сделать. Предельный по простоте случай - узел Group {}, который только группирует в себе другие узлы. Это как арифметические действия: можно записать ((2+2)*(2+2)), а можно (2+(2*2)+2) и результат изменится. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- ВИДЫ УЗЛОВ.
(I) По способности содержать в себе другие узлы (т.е. быть внешними объединяющими скобками) или быть содержимым для других узлов все они делятся на: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1) grouping nodes (эти являются ВНЕШНИМИ по отношению к другим узлам, т.е. содержат в себе ДРУГИЕ узлы, которые называются children см п.2)). Каждый grouping node создает локальную систему координат для всех children узлов, которые он содержит, и задает для них общее свойство, т.е. например:
-------------------------------------------------------------- Anchor { children[ ...тут может быть указана куча children узлов... ]} -------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Так вот, ко всей совокупности children узлов, содержащихся в Anchor{children[...]} привязан этот самый Anchor(якорь) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вот grouping узлы - Anchor, Billboard, Collision, Group, Inline, LOD, Switch, Transform | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Еще одна особенность grouping узлов - наличие таких eventIn, как addChildren и removeChildren, что позволяет добавлять/удалять children узлы из списка | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2) children nodes (эти МОГУТ, но НЕ ОБЯЗАНЫ находится ВНУТРИ grouping узлов). Т.е. например узел Shape может и сам по себе находиться в тексте файла, а может и внутри, например, Transform. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вот children узлы - Anchor, Background, Billboard, Collision, ColorInterpolator, CoordinateInterpolator, CylinderSensor, DirectionalLight, Fog, Group, Inline, LOD, NavigationInfo, NormalInterpolator, OrientationInterpolator, PlaneSensor, PointLight, PositionInterpolator, ProximitySensor, ScalarInterpolator, Script, Shape, Sound, SpotLight, SphereSensor, Switch, TimeSensor, TouchSensor, Transform, Viewpoint, VisibilitySensor, WorldInfo | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(!) Обратите внимание, что ВСЕ grouping nodes входят в число children nodes! Но не наоборот!
Т.е. может быть: -------------------------------------------------------------- Transform { Transform{ Transform{ здесь, например, NavigationInfo {} }}} -------------------------------------------------------------- и НЕ может быть: -------------------------------------------------------------- Transform{ NavigationInfo { Transform{} }} -------------------------------------------------------------- Внутри children node (NavigationInfo {}) узлу Transform{} не место ! | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3) не относящиеся к п.1) и п.2) Это | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
а) узлы объектов Box, Cone, Cylinder, ElevationGrid, Extrusion, IndexedFaceSet, IndexedLineSet, PointSet, Sphere, Text | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
б) узлы, которые могут находиться в ОПРЕДЕЛЕННОМ поле ОПРЕДЕЛЕННОГО узла
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(II) Еще способ классификации узлов - по сходству механизма работы | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
а) узлы-сенсоры (Anchor, Collision, CylinderSensor, PlaneSensor, ProximitySensor, SphereSensor, TimeSensor, TouchSensor, VisibilitySensor) - это узлы, генерирующие EventOut (сообщение о том, что произошло некоторое событие) при определенном воздействии на них. Делятся на: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- environmental sensors ("сенсоры обстановки" - мой вольный перевод) - Collision, ProximitySensor, TimeSensor, VisibilitySensor активируются при перемещении по виртуальному миру | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- pointing-device sensors - Anchor, CylinderSensor, PlaneSensor, SphereSensor, TouchSensor - реагируют на манипуляции мышкой и другими подобными устройствами | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
б) узлы-интерполяторы - ColorInterpolator, CoordinateInterpolator, NormalInterpolator, OrientationInterpolator, PositionInterpolator, ScalarInterpolator - задают способ ИЗМЕНЕНИЯ каких-либо свойств объекта (цвет, положение, ориентацию и т.д.). При этом задаются ключевые значения изменяемых свойств (поля key и keyValue), а все промежуточные точки вычисляются (ИНТЕРПОЛИРУЮТСЯ) броузером. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
в) узлы, зависящие от времени - AudioClip, MovieTexture, TimeSensor - могут активировать/деактивировать сами себя в определенные моменты времени
|