6.1. Спецэффекты.
6.1.1. Background (Фон).
Полный синтаксис узла:
Background {
eventIn SFBool set_bind
exposedField MFFloat groundAngle []
exposedField MFColor groundColor []
exposedField MFString backUrl []
exposedField MFString bottomUrl []
exposedField MFString frontUrl []
exposedField MFString leftUrl []
exposedField MFString rightUrl []
exposedField MFString topUrl []
exposedField MFFloat skyAngle []
exposedField MFColor skyColor [0 0 0]
eventOut SFBool isBound
}
Узел Background применяется обычно в двух вариантах:
1) Приписывается цвет угловым интервалам на сфере бесконечного радиуса, и этим цветом заливаются концентрические сферические кольца.
Background {
eventIn SFBool set_bind
exposedField MFFloat groundAngle []
exposedField MFColor groundColor []
exposedField MFFloat skyAngle []
exposedField MFColor skyColor [0 0 0]
eventOut SFBool isBound
}
Назначение полей:
- set_bind – см. раздел 5.1.
- skyAngle – здесь перечисляются углы внутри сферы (их количество на 1 меньше, чем количество цветов в skyColor), определяющие сферические кольца. Диапазон изменения углов от 0 до Pi, 0 соответствует верхней точке сферы.
- skyColor – последовательно определяются цвета, в которые будут покрашены сферические кольца. Первый цвет соответствует верхней точке сферы, остальные цвета соответствуют кольцам, определенным в skyAngle. Цвета между кольцами линейно интерполируются (если в браузере MS VRML Viewer 2.1 включен режим High Color).
- groundAngle – то же, что и skyAngle, только диапазон изменения углов от 0 до Pi/2, где 0 соответствует нижней точке сферы.
- groundColor – то же, что и skyColor, но для groundAngle.
- isBound – см. раздел 5.1.
Для определения всех сферических колец и соответствующих им цветов можно пользоваться только параметрами skyColor и skyAngle за счет диапазона изменения углов.
Пример (файл 6-1-1.wrl): иллюстрирует смену фона (сфера бесконечного радиуса) при нажатии на TouchSensor.
#VRML V2.0 utf8
Background
{
skyAngle [1.57,3.14]
skyColor [0 1 0,0 0 1,0 1 0]
}
DEF BK Background
{
skyAngle [1.57,3.14]
skyColor [1 0 0,0 1 0,1 0 0]
}
# красный куб, к которому прикреплен TouchSensor
Transform
{
translation 0 3 5
children [
DEF TS TouchSensor
{
}
Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 0
}
}
geometry Box {
}
}
]
}
# Камера
Viewpoint
{
position 0 7.5 -3
orientation 0.2 1 0.2 3.14
description “Камера”
}
# по нажатию на TouchSensor BK перемещается в вершину
# связывающего стека
ROUTE TS.isActive TO BK.set_bind
2) Куб бесконечного объема, внутри которого находится пользователь, покрывается изнутри