Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Примитивы и управление положением объектов (Transform)

Итак, здесь начинается практическая часть изложения VRML. В качестве наглядного проекта начнем создание, к примеру, рабочего стола, на который постепенно набросаем всяких "предметов". Да и сам по себе стол постепенно оживет. При описании синтаксиса в качестве численных аргументов будут указаны значения, принятые по умолчанию.

ВАЖНО! В спецификации есть замечательная фраза, касающаяся ВСЕХ примитивов:

The Box (Cone, Shpere, Cylinder) geometry requires outside faces only. When viewed from the inside the results are undefined.

Т.е. вид этих тел ИЗНУТРИ строго не оговорен и зависит от броузера. В большинстве случаев вида изнутри просто НЕТ, т.е. объекта как бы и вовсе нет.

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, чтобы правильно взаимно разместить крышку и ножки стола. Предлагаю двигать крышку:

Просмотр. Текст кода.

Sphere (сфера)

Описание сфер выглядит так

Sphere            {radius           1}

По умолчанию центр сферы помещается в точку 0,0,0. Таким образом, если Вы будете указывать ТОЛЬКО узлы Sphere, то получите ВСЕ сферы с центрами в 0,0,0, как матрешки. Я надеюсь, уже ясно, что от этого нас спасет узел Transform.

Предлагаю водрузить на стол, например глобус, т.е. пока только его сферическую часть без подставки.

Просмотр. Текст кода.

Из-за того, что не указан радиус сферы, она по умолчанию получилась радиусом 1 метр, этакий двухметровый глобус на столе :). Вместо указания радиуса, воспользуемся масштабированием, предусмотренным в узле Transorm.

Просмотр. Текст кода.

Пусть шарик пока повисит над столом, подставку сделаем из других примитивов.

Cone (конус)

Описание конуса:

Cone {bottomRadius 1
height 2
side TRUE
bottom             TRUE }

По умолчанию центр его высоты цилиндра размещается в 0,0,0. Логическое утверждение TRUE/FALSE (ИСТИНА/ЛОЖЬ) для side и bottom определяет, будет ли создаваться сторона и донышко конуса. При side TRUE и bottom FALSE, Вы получите конус без донышка; при side FALSE и bottom TRUE, получите только донышко (удобно создавать диски, видимые, правда, только с одной стороны: напомню, что изнутри вид конуса не определен, см начало этой страницы); при side FALSE и bottom FALSE получите конус, невидимый и неощутимый при движении сквозь него, в общем это будет отсутствие конуса.

Создадим коническую подставку для нашего глобуса и поместим ее не вертикально, а наклонно. Для этого воспользуемся еще одной возможностью для позиционирования в узле Transform - rotation (вращение).

rotation описывается 4 числами: первые три задают направление оси вращения (например 1 0 0 - ось X, 0 1 0 - ось Y, 0 0 1 - ось Z, 1 1 0 - ось проходит по биссектриссе угла между осями X и Y), а последнее - величину угла вращения в радианах против часовой стрелки. Направление вращения можно менять, изменяя знак либо угла вращения, либо направления оси, скажем, можно задать ось не 0 0 1, а 0 0 -1.

Просмотр. Текст кода.

Cylinder (цилиндр)

Описание цилиндра:

Cylinder {bottom TRUE
height 2
radius 1
side TRUE
top            TRUE }

По умолчанию центр высоты цилиндра размещается в 0,0,0.

Логическое утверждение TRUE/FALSE (ИСТИНА/ЛОЖЬ) для side, bottom, top определяет, будет ли создаваться сторона, нижняя и верхняя крышки цилиндра.

Создадим цилиндрическое основание для подставки глобуса.

Просмотр. Текст кода.

Назад | Содержание | Вперед

 

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...