Учебник по VRML 97

Background (панорама)


Описание:

Background { groundAngle [ ] groundColor [ ] backUrl [ ] bottomUrl [ ] frontUrl [ ] leftUrl [ ] rightUrl [ ] topUrl [ ] skyAngle [ ] skyColor 0 0 0 }

Узел Background предназначен для создания в Вашей сцене панорамы, т.е. изображения или цвета на бесконечном удалении. В Вашем распоряжении только два варианта: либо Вы раскрашиваете фон, либо используете в качестве фона картинки. Надо сказать, что оба варианта реализованы очень убого. В первом случае Вы находитесь в сфере бесконечного радиуса и пользуетесь параметрами groundAngle, groundColor, skyAngle, skyColor; во втором случае Вы находитесь в кубе бесконечного размера и пользуетесь параметрами backUrl, bottomUrl, frontUrl, leftUrl, rightUrl, topUrl.

  1. Раскрашивание фона. В этом случае Вы приписываете цвет угловым интервалам на сфере бесконечного радиуса, и этим цветом заливаются концентрические сферические кольца.

Примерно, как на вот этой картинке.

Или то же самое можете посмотреть , но ОЧЕНЬ желательно броузерами Cortona или Cosmoplayer, НО НЕ MS VRML Viewer!

Так вот, у Вас есть две пары параметров: skyAngle/skyColor и groudAngle/groundColor. Первая пара - это как бы "небо" и раскрашивается сверху вниз (т.е. skyAngle=0 - вертикально над Вами), а вторая пара - это как бы "земля" и раскрашивается снизу вверх (т.е. groundAngle=0 - вертикально под Вами). Смотри рис.

Как видно из рисунка, skyAngle изменяется от 0 до Пи, а groundAngle - от 0 до Пи/2, и при этом интервалы их изменения перекрываются. Зачем вообще введена пара groundAngle/groundColor мне непонятно, поскольку можно обойтись одной только парой skyAngle/skyColor. Возможно, это сделано, чтобы легче было организовать четкую линию горизонта между "небом" и "землей", хотя, уверяю Вас, горизонт можно сделать и раскрашивая одно только "небо"! Количество значений параметра Color должно быть на 1 больше числа значений параметра Angle. Если Вы указали соседние кольца разных цветов, то на их границе цвет интерполируется для плавного перехода.


Вот два немного психоделических на вид, но наглядных примера.

1. . .

2. . .

Визуально они практически идентичны, но если Вы посмотрите код, то увидите, что во втором примере отсутствует groundAngle/groundColor, а "земля" под ногами раскрашена с помощью skyAngle/skyColor.

Ну, а если пытаться сделать что-нибудь полезное с помощью узла Background, можно соорудить что-нибудь такое с примерным названием "Солнце в зените над бесконечной снежной равниной" :)

. .
  • Использование в качестве фона картинок. Оглядите комнату в которой находитесь: четыре стены, потолок и пол. Точно так же устроена модель фона для размещения картинок - это кубик, у которого есть "потолок" (topUrl - указываете адрес картинки для "потолка"), "пол" (bottomUrl) и четыре стены - (leftUrl - слева, frontUrl - перед Вами, rightUrl - справа, backUrl - позади Вас.).


  • Посмотрите пример. Я специально не заглаживал швы в месте стыка картинок, чтобы Вы представляли, как это выглядит.

    . .

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


    Содержание раздела