Параметры виртуального мира можно задать с помощью двух узлов WorldInfo и Background. Эти узлы не являются обязательными, но если Вы хотите придать некоторую оригинальность своему миру, то используйте их.
Узел WorldInfo имеет следующее описание:
WorldInfo { field MFString info [] field SFString title "" }
Он задает информацию о мире, причем не имеет своего графического воплощения. Информация, которую он содержит, может использовать браузер. Поле title, как правило, содержит название мира, которое браузер может использовать в титульной строке окна. В поле info авторы часто помещают какое-то краткое описание мира или свой копирайт. Пример:
WorldInfo { info ["HEHEHE !!! FIRST STEPS - Forever !!!"] title "VRML WorldInfo node example" }
В отличии от WorldInfo, узел 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 }
Как видите оно даже громадное :)) Поэтому обо всем по порядку. С помощью данного узла можно устанавливать два типа фона: из цветов и изображений.
Все фоновое пространство виртуального мира поделено на сферу неба (sky) и полусферу земли (ground). Цвета, в которые будет окрашиваться небо задаются с помошью параметров skyColor и skyAngle. Если Вы заметили, то эти параметры являются массивами. Для чего это надо ? Для того, чтобы окрашивать небосвод в более чем один цвет, к примеру во время заката небо окрашено разными цветами. Действует эта схема следующим образом: сначала вы разбиваете сферу на участки с помощью массива углов skyAngle, которые задаются в радианах. Первой точкой разбиения является верхняя точка небесной сферы равная 0 радиан, ее не надо указывать потому, что она является "точкой отсчета" углов. Далее может идти неограниченное количество углов в порядке возрастания. Последним углом будет нижняя точка сферы, равная числу Pi=3.1415, т.е. 180 градусам. Эта точка является максимальным значением угла и также не указывается. Таким образом, чтобы разбить, к примеру, небесную сферу на две разноцветных половинки надо в массив углов занести значение угла делящего отрезок [0 .. Pi] пополам.
Значения цветов, в которые окрашиваются участки сферы указываются в массиве цветов skyColor. При этом количество цветов всегда на 1 больше, чем значений в массиве углов. Ну, это я думаю должно быть понятно... Давайте рассмотрим пример:
#VRML V2.0 utf8 Background { # синий красный зеленый желтый skyColor [0 0 1, 1 0 0, 0 1 0, 1 1 0] skyAngle [0.9, 1.65, 2.2] }
В результате этого небо будет окрашиваться примерно по такой схеме:
Заметьте, что между соседними цветами браузер делает плавный переход между цветами - градиент, чтобы не было четких границ. Если вы будете использовать только одно значение цвета:
#VRML V2.0 utf8 Background { # синий skyColor 0 0 1 }
То небесная сфера будет окрашена в один цвет.
Кроме небесной сферы есть еще полусфера земли. За ее окраску отвечают параметры groundColor и groundAngle. Углы лежат в диапазоне от 0 до 90 градусов, т.е. [0 .. Pi/2]:
#VRML V2.0 utf8 Background { groundColor [ 1 1 0,1 0.5 0, 0 1 0] groundAngle [0.6, 1.2] }
Вот как будет закрашиваться земля:
Кроме обычной окраски фона, Вы можете задавать фоновые изображения, создавая таким образом фоновую панораму мира. Физически это представляет собой куб с "бесконечно большими" гранями, на которые наложены текстуры указанные в параметрах topUrl, frontUrl, leftUrl, rightUrl, backUrl, bottomUrl :
Изображения, которые указываются как текстуры могут иметь прозрачные участки. В этом случае наблюдателю будет виден фоновый цвет. Вообще общую структуру фонов можно изобразить такой моделью:
Внутри этого куба как раз и "бродит" пользователь :) Таким вот образом вы можете создать небеса, горы, моря и все что душе угодно.