VRML в примерах

Определение собственных объектов


VRML предоставляет прекрасную возможность сократить и сделать более понятным исходный код VRML-файла путем описания собственных объектов. Это значит, что если в изображении несколько раз повторяется одна и та же фигура, то ее можно описать всего лишь один раз и в дальнейшем только ссылаться на нее.

Объект описывается одним из способов:

DEF name

Cube {}

или

DEF name

Material {}

или

DEF name

Separator {

Сгруппированные узлы, описывающие фигуру и свойства материала

}

Для того, чтобы вставить в VRML-файл ранее определенную фигуру, используется команда USE



Separator {

USE name

}

Создадим VRML-файл, описывающий стул, при этом ножку стула опишем как объект LEG:

#VRML V1.0 ascii

Material { emissiveColor 1 0.5 0.5 }

Separator {

Translation { translation 1 1 1 }

DEF LEG #Определяем объект - ножку стула

Separator { # leg

Cylinder {

height 0.8

radius 0.1

}

} # определили ножку

}

Separator {

Translation { translation 0 1 1 }

USE LEG # используем определенный объект

}

Separator { # еще одна ножка

Translation { translation 1 1 0 }

USE LEG

}

Separator { # последняя ножка

Translation { translation 0 1 0 }

USE LEG

}

Separator { # сиденье

Translation { translation 0.49 1.5 0.5 }

Cube {

height 0.2

width 1.2

depth 1.2

}

}

Separator { # спинка

Translation { translation 0.49 2 0 }

Cube {

height 0.8

width 1.2

depth 0.2

}

}

Separator { # закругление спинки

Translation { translation 0.49 2.1 0 }

Rotation {

rotation 1 0 0 1.57

}

Cylinder {

radius 0.6

height 0.2

}

}

Как видите, нам не понадобилось описывать каждую ножку в отдельности - в результате объем VRML-кода стал меньше, а сам код более читабельным.

Еще один способ уменьшить размер VRML-файла - вставлять фигуры из другого файла.

Это позволяет делать узел WWWInline:

#VRML V1.0 ascii

Separator {

WWWInline {

name ""

bboxSize 0 0 0

bboxCenter 0 0 0

}

}

Параметр name - это путь к файлу, параметры bboxSize и bboxCenter не обязательны и показывают пользователю размеры и положение вставляемого объекта, пока объект подгружается.



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