Box (паралеллепипед)
Описание прямоугольного параллелепипеда выглядит предельно просто:
Box {size 2 2 2}
По умолчанию центр тяжести помещается в 0,0,0.
Таким образом код кубика 2x2x2 будет выглядеть так
#VRML V2.0 utf8 Shape {geometry Box {}}
Узел Shape указывает броузеру, что идет описание формы объекта. Можете , что получилось
Поскольку нам понадобится крышка для будущего стола, давайте изменим размеры. Прикиньте размеры стола, за которым сидите в метрах. Не забывайте про расположение .
. .
Теперь очередь за ножками стола. Здесь очень уместно объяснить использование узлов DEF/USE и PROTO
Если Вы знаете хотя бы какой-нибудь язык программирования, то это очень легко понять. Вместо описания каждой из четырех одинаковых ножек стола отдельно, мы определяем ПЕРЕМЕННУЮ (DEF), а потом используем ее (USE).
Однако если просто написать USE, то второй объект будет порожден в том же месте, что и исходный. Для управления положением объекта существует узел Transform. На примере с ножками стола легко увидеть, как использовать DEF/USE и Transform.
Вот как они выглядят. . .
Как видно из кода, исходная первая ножка была создана в точке с координатами 0,0,0, и ей была присвоена переменная с именем "nozhka". Оставшиеся три ножки были порождены смещением переменной "nozhka" вдоль осей X и Z.
Теперь надо совместить ножки стола и его крышку. Имея отдельные файла с этими объектами, можно поступить двумя способами: либо в обычном текстовом редакторе вырезать из одного файла объект и вставить в другой, либо воспользоваться узлом Inline.
Вариант 1.. .
Вариант 2. . .
Как видно из просмотра wrl файлов, результат абсолютно одинаков. Осталось только воспользоваться узлом Transform, чтобы правильно взаимно разместить крышку и ножки стола. Предлагаю двигать крышку:
. .