Vrml’97 структура файла единицы измерения оси


Содержание

VRML — ресурсы

Ссылки на VRML-ресурсы в русском и мировом Internet-е.

Web3D Consortium

Спецификация VRML97:
http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-VRML97/
«Библия» для VRML — программистов. Здесь есть всё, что нужно знать. а об остальном можно догадаться ;-)

Список рассылки WWW-VRML:
http://www.web3d.org/x3d/publiclists/vrml_list_archives/
Работает с 1995г. Вот уж, действительно, чего только там в архивах не найдёшь.

ParallelGraphics

Ведущая российская компания, активно разрабатывающая VRML — технологии.
Браузеры, редакторы, screen saver, многопользовательский сервис и другое:
http://www.parallelgraphics.com/products

About 3D Graphics/VR

Советы начинающим, список реурсов, обзоры, chat.
Куратор: Laurel Miller-Daly. Вобщем, сайт рекомендуется для посещения всем — новичкам и специалистам.

VRML-конференция на Google

Эта конференция ничем не хуже, чем конференция на WEB3D.ORG. А, может быть, и лучше — в ней больше конкретного и меньше разговоров «про вообще».

Учебник по VRML97

Учебник Максима Авдеева — пожалуй, это один из лучших VRML-ресурсов в российском секторе Internet-а.

VRML шаг за шагом

Сайт Андрея Кузина. Материал излагается грамотно, давно, правда, не пополняется, но то, что есть — рекомендуется безоговорочно.

VRML. Справка по языку

Краткий «курс молодого бойца» от Антона Конушина. Для начинающих — то, что надо.

vrml97.narod.ru

Введение, инструменарий, принципы, структура файла. далее «со всеми остановками». В основном — это выборочный перевод спецификации VRML97 на русский язык.

Введение в VRML 2.0

Выборочный перевод на русский язык курса David R. Nadeau «Introduction to VRML 2.0».
Перевод сделан в Лаборатории Систем Мультимедиа Марийского Государственного Технического Университета. Рекомендуется для тех, у кого нет возможности (или желания) изучить оригинальный материал.

Tima Home Page

Грамотные VRML-сцены, VRML FAQ на русском языке.

ЖУРНАЛ «ПОДВОДНАЯ ЛОДКА»

Основы языка моделирования виртуальной реальности (VRML).

ATINFO

Примеры, синтаксис, ссылки, размышления — выводы спорные, но статья интересная.

cad.ntu-kpi.kiev.ua

Что такое VRML, стандарты, структура VRML-файла, характеристики, механизмы и элементы, геометрические узлы, 3d-web страницы.

Клуб 3D-графики

Перевод статьи Mike Hurwicz. Описаны способы создания и экспорта файлов VRML 2.0 в среде Max R3.1.

House of the Sun

Знакомство с VRML’97 или как создать свой виртуальный мир:
http://sun.raid.ru/vrml/

Базовые понятия, необходимые для построения средних по сложности миров.

Язык трехмерного моделирования VRML и его образовательные возможности

Знание некоторых принципов легко возмещает незнание некоторых фактов.
Гельвеций
Всегда считалось, что грамотность, например, доступна лишь тем, кто обладает умственными способностями, особенно подготовленными для восприятия сложных задач чтения и письма. Разумеется, с появлением книгопечатания и массового образования выяснилось, что грамотными в состоянии стать большинство людей.
Айзек Азимов
Ну что просить-то будешь, служивый? Только попроще чего, а то просят телевизоры какие-то, транзисторы. Один совсем обалдел: “Выполни, говорит, за меня годовой план по лесопилке”.
— Ага, — сказал я. — А телевизор вы, значит, все-таки не можете?
— Нет, — честно призналась щука. — Телевизор не могу. И этот. комбайн с проигрывателем тоже не могу. Не верю я в них. Ты чего-нибудь попроще. Сапоги, скажем, скороходы или шапку-невидимку.
Аркадий и Борис Стругацкие

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

Конечно, в статье мы ознакомимся только с введением в объемную (в прямом и в переносном смысле) книгу под названием VRML. Но зато эти знания дадут возможность в дальнейшем без особых затруднений ее при необходимости читать.

По ходу изложения придется неоднократно ссылаться на материал, опубликованный в первой части статьи. Договоримся везде обозначать эту ссылку максимально кратко — в части 1.

О методике изложения

Вашему вниманию предлагается “неформальное” введение в язык VRML, которое отличается от традиционных способов изложения. По крайней мере большинство материалов в Сети довольно четко отождествляются с одной из двух групп: “VRML в примерах” и группе с несколько условным названием “36 узлов VRML 1.0 1” , которая по сути является слегка расширенным переводом технической спецификации. Разумеется, эти два подхода могут объединяться, но к пониманию это приближает не сильно: обоим подходам не хватает некоторого обобщения.

В первом подходе с многочисленными примерами неявно предполагается, что все обобщения сложатся в голове человека, разобравшегося с этими примерами. Теоретически это даже может произойти, но при совпадении целого ряда факторов: примеров достаточно много, и они настолько разнообразны, что охватывают все основные особенности; изучающий примеры достаточно вдумчив и не поленится разобрать все примеры (или хотя бы большую их часть). Полагаю, что сочетание всего перечисленного сразу по разным причинам имеет невысокую вероятность появления.

Второй подход, несмотря на полноту предложенного материала, также далек от оптимального. Фактов, как всегда, много, все сразу не запомнишь; и опять почти вся работа по их классификации ложится на обучаемого. Его первое впечатление о предмете нетрудно предсказать — куча разрозненных фактов, а я не прочел еще и половины…

В прекрасном фильме [1] по методике обучения показан следующий замечательный пример: предлагается запомнить приведенную на рисунке систему кодирования цифр и затем с ее помощью записать несколько чисел. Результаты оказываются весьма посредственными. Но когда участникам эксперимента показывают рисунок, который поясняет, откуда взялись “таинственные значки”, то оказывается, что и запоминать-то особенно нечего…

Характерно, что описанные выше трудности в методике изложения не есть особенности VRML, о котором мы сейчас говорим. Возьмите любой язык программирования, и там тоже обнаружатся подобные подходы (“изучаем язык X на примерах” или “полное описание всех конструкций языка X”). А “рецептурное” освоение Windows “для чайников” вам ничего не напоминает?

Итак, не хватает систематизации материала, некоторого своеобразного “каркаса”, этаких “ящиков с подписями”, куда мы сможем раскладывать наши фактические знания и примеры. А уж извлечение из хорошо структурированного хранилища данных происходит легко и быстро!


По-видимому, развитыми способностями к систематизации обладают далеко не все люди, даже среди тех, кто пишет статьи (это особенно заметно в Интернете, где нет никакого критического отбора авторов). К счастью, они все же есть; в частности, про VRML можно привести в качестве примера статьи А.Авдуевского [2] и А.Медведева [3], которые очень сильно помогают в понимании базовых принципов языка. Именно принципы и будут нашей главной целью, а зная их, уже можно найти и разобраться в тех из пресловутых 36 (или даже большем числе) узлов, которые вам конкретно понадобились!

В последнее время много (по мнению автора, даже чрезмерно много) говорят о технологиях. Следует четко понимать, что технология есть готовое знание, кем-то проанализированное и сформулированное. Целью же обучения, напротив, является формирование у обучаемых способности самостоятельно систематизировать, обобщать и подбирать необходимые в данной ситуации знания. Следовательно, роль технологий не следует абсолютизировать!

Общие основы VRML

1. Общие правила VRML-описаний (программ). Как мы уже знаем из части 1, описание VRML-объектов (мира) хранится в текстовом файле с расширением WRL; для сокращения времени загрузки текст часто передается в архивированном виде, поэтому не все файлы с этим расширением, которые были “закачаны” из Сети, можно непосредственно прочитать в Блокноте. В простейшем случае мир — это автономный файл, но часто он ссылается на некоторые графические файлы (текстуры), и значительно реже — на выделяемые в отдельный файл WRL объекты-прототипы (ссылка на них обозначается EXTERNPROTO). В данной статье мы ограничимся случаем простейших автономных VRML-файлов.

Примечание. Договоримся не делать особой разницы между терминами “описание VRML-мира” и “VRML-программа”.

Каждый файл с VRML-программой может содержать следующие части:

Формально обязательным является лишь заголовок; в подавляющем большинстве файлов 2 есть описание сцены. Остальные разделы появляются при необходимости.

Примечание. Об описании прототипов говорится в примере 6.2.2, а о маршрутах событий — в 6.1.5.

Заголовок всех файлов практически одинаков и имеет вид:

Внимание! Между словами везде стоит ровно один пробел!

Кроме очевидного указания на язык и его версию (мы везде будем использовать стандарт VRML97, который маркируется как версия 2.0), в заголовке задается кодировка символов. Как правило, используется набор символов Unicode, что при работе с русскими буквами будет приводить к некоторым особенностям. В данной статье мы не будем их касаться, поскольку с текстами, “живущими” в виртуальных мирах, и без кодировки слишком много проблем (см. пример в разделе 3).

Знак “#” выделяет комментарии, и поэтому (исключая заголовок!) интерпретатор VRML игнорирует любой текст, стоящий в строке правее. В многострочных комментариях, как нетрудно догадаться, надо пометить каждую строку.

Символы пробела и табуляции являются разделителями; их количество произвольно. В частности, при оформлении текстов можно пользоваться отступами, как это делается в языках типа Паскаля.

Таким же разделителем, согласно описаниям, является переход на новую строку. Тем не менее в отдельных случаях при переносе на новую строку части единой конструкции у меня иногда возникали трудности: изображение “портилось”.

При разделении последовательности чисел наравне с пробелами могут использоваться запятые. Обычно рекомендуют их для наглядности использовать с целью выделения троек координат отдельных точек, например:

0 0 0, 0 0.5 0, 0 1 0

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

Если верить известному киногерою Штирлицу, лучше всего запоминаются последние слова. Поэтому завершим этот раздел самым важным правилом.

Язык VRML является регистрово-зависимым, т.е. во всех конструкциях заглавные и строчные буквы различаются! Поэтому при наборе любого примера обязательно(!) обращайте внимание, где набирать заглавные, а где строчные буквы.

2. Представление величин виртуального мира. При описании виртуальных миров имеется возможность задавать следующие величины: координаты и углы, цвет, а также некоторые физические характеристики вроде прозрачности и светимости. Все перечисленное в VRML изображается вещественными числами.

Координаты трехмерной точки представляют собой совокупность трех произвольных вещественных чисел, включая отрицательные. Часто обсуждается вопрос о том, что эти числа желательно указывать в метрах, мотивируя тем, что при слиянии двух разных миров будет соблюден относительный масштаб. Этой рекомендации не стоит уделять особого внимания, причем не только потому, что различные миры на практике редко объединяют. Гораздо существеннее, что каждый создаваемый мир имеет свой собственный характерный масштаб, которому единица измерения 1 метр не обязательно подходит: возьмите Солнечную систему или объемную модель молекулы — примеры, о которых шла речь в части 1. Поэтому более глубокий подход заключается в том, чтобы в вашем виртуальном мире выбрать некоторый характерный масштаб и принять его за единицу, а все остальные величины соотносить с ним. В частности, в Солнечной системе удобно связать единицы измерения с расстоянием от Земли до Солнца (ученые называют среднее расстояние между данными планетами астрономической единицей) или, может быть, принять за единицу весь размер Солнечной системы, т.е. максимальное удаление Плутона от Солнца.

Примечание. Интересно, что для координат предлагается иметь физическую единицу измерения, а для яркостных характеристик — нет.

Зато учитывать единицу измерения углов необходимо совершенно обязательно: все углы в VRML измеряются не в градусах, а в радианах! В частности, вместо 90° приходится писать 1.57, т.е. приближенное значение /2. Те, кто не любит стереометрию, могут составить (с помощью компьютера) таблицу для значений характерных углов.

Цвет, как и в большинстве компьютерных приложений, представляется в модели RGB. Тем не менее интенсивность компонентов указывается не в целых числах, а в дробных, заключенных к тому же в диапазоне от 0 до 1. Наиболее простые цвета выглядят так:

0.4 0.4 0.4 — оттенок серого и т.д.

Аналогично цветовым компонентам, физическим свойствам яркости, прозрачности и т.д. также ставятся в соответствие условные дробные величины от 0 до 1. Например, прозрачность 1 делает тело полностью прозрачным, 0 — абсолютно непрозрачным, а значение 0.3 задает некоторый промежуточный уровень.

3. Оси координат. Вопрос этот существенно запутали сами авторы языка. Так в версиях 1.0 и 2.0 направление оси z является противоположным (см. рисунок).

Если вы думаете, что данная деталь не очень существенна, то это не всегда так. Конечно, рассматривая симметричные тела вроде сферы или куба, вы не заметите особой разницы при изменении направления оси. Но вот, например, для текстов смена направления оси может оказаться весьма печальным преобразованием. В самом деле, пусть на параллелепипеде, моделирующем стену, имеется некоторая надпись, скажем, VRML. Тогда при изменении системы координат мы увидим следующее:

Иными словами, если раньше текст был на “передней” грани, то теперь он оказывается “сзади” стены (чтобы увидеть текст, мы ее “обошли”) и выглядит весьма экзотично. Характерно, что обе приведенные картинки есть отображения двумя разными просмотрщиками (с разными системами координат) одного и того же(!) WRL-файла.

1. Обратите также внимание на разное расположение текста по координате Y.

2. Если вы думаете, что это все неприятности, которые происходят в виртуальных мирах с текстами, то вы посмотрели не все примеры из части 1. Посетите виртуальный Мавзолей [4] и обратите внимание, как выглядит надпись над входом. И это при том, что изображение заведомо рассматривается в “родном” ПО!

Договоримся, что во всех наших примерах мы будем пользоваться системой координат, принятой в версии 2.0.

Правила описания VRML-сцен

4. Граф сцены: узлы и поля (объектная модель). Теперь, когда мы ознакомились с наиболее общими основополагающими принципами языка VRML, перейдем к изучению его конкретных конструкций. Виртуальный мир в терминологии языка называется сценой, которая представляется в виде графа из отдельных объектов, называемых узлами (node). Узлы образуют четкую структуру, которую в информатике принято называть деревом.

Рассмотрим некоторый фрагмент VRML-программы, являющийся частью одного из наших примеров, которые мы будем сегодня рассматривать. Он описывает куб, стенки которого имеют степень прозрачности 0.7 (см. пример 6.1.2).

Фактически пока мы учимся разбираться в “чужом” VRML-тексте, что всегда полезно, прежде чем начинать что-либо писать самому.

Итак, соответствующий фрагмент программы имеет следующий вид.

Первое, что в записи бросается в глаза: отдельные конструкции языка заключаются в фигурные скобки, причем скобки могут быть вложенными. Для того чтобы не запутаться в многочисленных скобках, принято использовать отступы (одинаковые для одноуровневых скобок) и комментарии со словом end, которые показывают, где какая структура заканчивается. Разумеется, все эти “дополнительные к скобкам” приемы применены исключительно для удобства чтения человеком и на изображение объемных объектов на экране никак не влияют.

Примечание. Указанные приемы позволяют писать VRML-текст с меньшим числом ошибок и, если ошибка все же допущена, быстрее ее найти. Это очень важно, поскольку программное обеспечение по отображению 3D-миров нередко просто игнорирует ошибочные конструкции или выполняет их “как-то по-своему”, а когда встроенная диагностика все же предусмотрена, она очень малоинформативна и неудобна…

Далее обратим внимание на слова, написанные с заглавной буквы (для удобства читателей они выделены жирным шрифтом), — это есть не что иное, как узлы (объекты) сцены. Проследив за расстановкой скобок, можно построить дерево узлов, приведенное на рисунке, которое и является графом некоторого фрагмента сцены. В частности, видно, что объект Shape (по-русски “фигура”, “образ”) включает в себя два объекта — Appearance (“внешность”, “наружность”) и Box (изначально “коробка”, но в компьютерной терминологии изображение на экране прямоугольника или параллелепипеда). Последний и есть собственно куб, а информация из первого позволяет куб нарисовать требуемым образом. Узел Appearance, в свою очередь, включает в себя еще один узел (“подузел”) Material, описывающий физические свойства виртуального материала, из которого состоит куб. В нашем случае материал обладает некоторым свойством прозрачности (transparency).

Как мы видим, узлы VRML неодинаковы по смыслу, например, Box и Appearance явно имеют различное предназначение. К сожалению, единая общепринятая классификация узлов как-то не сложилась, поэтому здесь мы не будем обсуждать этот вопрос.

Очень важно подчеркнуть, что с теоретической точки зрения конструкции Box, Material и другие надо называть типом узлов, а не именем! Дело в том, что если кубов будет несколько, то все они будут описываться узлом Box. Что касается уникального имени для объекта, то его в VRML также можно назначить некоторому узлу, но делать это не обязательно. О том, как выглядит синтаксис именования узлов и где он необходим, показано в примере 6.1.5.

В анализируемом фрагменте имеются еще слова, начинающиеся со строчной буквы (надеюсь, читатели помнят о важности регистра?), — appearance, material, transparency и geometry. Это поля (fields), которые являются составными частями объекта и предназначены для хранения в той или иной форме информации об устройстве объекта. Поля в VRML бывают разные, поэтому имеет смысл рассмотреть их подробнее.

Начнем “с конца”: наиболее понятным является поле transparency, имеющее значение 0.7 и принадлежащее объекту типа Material. Это пример самой простой разновидности полей — те, в которых хранятся конкретные значения. Не следует только думать, что это всегда числовое значение и что оно обязательно одно. В частности, поле может являться координатами точки, а значит, содержать в себе 3 вещественных числа (аналогичное свойство имеет место и для полей, хранящих цвет); существуют даже поля для набора координат. Кроме того, специальные поля могут хранить картинку, время и некоторые другие типы данных 3 . Полный список типов полей можно посмотреть, например, в [3].

Примечание. Поля с префиксом SF хранят только одно значение. Если же указан префикс MF, то такое поле может вмещать в себя несколько значений (аналог массива). Например, поле SFNode ссылается на один узел, а MFNode способно хранить ссылки на несколько; аналогично SFFloat хранит единственное вещественное значение, а MFFloat — целый набор таких значений.

Описанный механизм “стыковки” узлов между собой через посредство полей ведет к тому, что узлы в VRML сочетаются по строго определенным правилам, например, узел типа Material нельзя “присоединить напрямую” к узлу типа Shape (там нет для этого соответствующего поля). Причина такой избирательности, по-видимому, заключается в необходимости максимально быстрого разбора текста программы интерпретатором VRML.

Анализ приведенного рисунка, возможно, вызвал у внимательных читателей некоторое недоумение: узел Box пуст, неужели у него совсем нет полей? Конечно, есть, но тут действует еще одно важное правило, о котором мы еще не успели сказать. Любое поле объекта в VRML обязательно имеет значение по умолчанию, причем оно не обязательно нулевое или пустое. Например, стороны объекта Box по умолчанию устанавливаются равными 2 (от –1 до 1, начало координат — в центре). Если нас устраивает значение по умолчанию, то в описании соответствующее поле можно пропускать, значительно сокращая запись. Между прочим, и материал бывает не только прозрачным: объекты имеют цвет (точнее, даже несколько, в частности, рассеиваемый или цвет свечения), светимость и некоторые другие характеристики. Просто в нашем примере “задействовано” только одно свойство, поэтому все остальные пропущены и получат значения по умолчанию.

Таким образом, мы полностью разобрались в том, каким образом описывается дерево сцены. Возможно, кому-то такой способ показался утомительным. Им можно посоветовать воспользоваться программным обеспечением более высокого уровня, например, White Dune [5], о котором уже рассказывалось в части 1. Одно из ценных свойств этого ПО состоит в том, что всю “разметку” оно генерирует самостоятельно, а вам остается только в диалоге ввести значения параметров в соответствующие поля (в нашем случае — в поле transparency).

На следующем рисунке изображен фрагмент окна программы после нажатия на кнопку с изображением кубика. Разобранный нами ранее фрагмент в левой части рисунка выделен рамочкой. Видна четкая иерархия объектов, а также в правой части поля для выделенного объекта Shape их узлы-значения Appearance и Box. Если сохранить проект, то в полученном текстовом файле вы легко найдете соответствующий фрагмент, правда, без комментариев после закрывающихся скобок.

Мы не будем сейчас спорить, какой способ лучше — написание текста в Блокноте или автоматическая генерация VRML с помощью специализированной программы-редактора. Очевидно, что тем, кого интересует только результат, последний подход вполне подойдет. Но если читатели хотят, следуя заголовку статьи, понимать VRML и иметь возможность его корректировать и улучшать после универсального редактора, то не обойтись и без “ручного” набора. Оптимальное решение, как всегда, посередине: надо понимать VRML-текст и уметь его править, но какие-то рутинные операции вполне можно выполнять и в редакторе. Тем не менее на стадии первоначального понимания, на которой мы с вами находимся сейчас, лучше пока к помощи редактора не прибегать.

И еще одно замечание методического характера. Наличие иерархической структуры в виде дерева и свойств у его узлов определенно указывают на объектно-ориентированный характер VRML. И это действительно хороший пример ОО описания. Более того, автор рискует утверждать, что детальный (в духе того, как это делается в данной статье) разбор 2–3 примеров на VRML дает для понимания объектно-ориентированной модели существенно больше, нежели реализация 20–30 простейших приложений в среде Visual Basic или Delphi. Все дело в том, что хотя построение библиотеки визуальных компонентов и немыслимо без ОО подхода, но это ощущается лишь при изучении ее внутреннего устройства или при создании собственного компонента, но не в моменты написания обработчиков кнопок из 2–3 операторов. Полностью избавляя нас от необходимости набирать описания, характерные для ООП, современные системы программирования скрывают от нас его сущность, а это едва ли полезно для обучения. Мы даже порекомендовали бы тем читателям, которые интересуются вопросами ООП, после полного прочтения данной публикации составить для себя полную модель узла VRML как объекта (при этом можно дополнительно посмотреть статьи [2] и [3]).

5. Реализация динамических эффектов. Для придания трехмерным сценам каких-либо динамических эффектов используются специальные поля, которые в VRML 2.0 называются exposedField. В переводе с английского exposed означает “открытый”, “видимый”, но по смыслу наиболее хорошо к данному термину, наверное, подходит имеющийся в словаре вариант “подвергаемый воздействию”. Данные поля могут изменять свои значения под влиянием происходящих в виртуальном мире событий. Под событиями подразумевается передача информации от одного объекта другому.

Узел получает сообщения типа eventIn, которые обычно влекут за собой изменения его состояния; события такого рода обозначаются set_X (set_color, set_position) . Отправляемые узлом сообщения обычно содержат информацию об изменении его состояния (color_changed, position_changed) и имеют тип eventOut.


Поле exposedField X эквивалентно следующей конструкции:

где field — это само поле, в котором хранится значение, изменяемое по eventIn ; происходящее изменение сопровождается инициацией события eventOut . Более подробно о конкретных событиях и их цепочках написано в примере 6.1.5.

Примечание. Интересно подчеркнуть, что похожую структуру (поле, метод чтения и метод записи) имеют свойства объектов в Delphi [6]. Например, когда вы пишете X.Color:=clRed , пытаясь сделать объект X красным, то внутри системы происходит не присвоение, а вызов метода SetColor(clRed) , который не просто помещает необходимое значение во внутреннее поле FColor , но и “перекрашивает” объект.

Динамические эффекты создаются при помощи двух типов специализированных узлов: интерполяторов и сенсоров. Они объединяются в некоторый маршрут, по которому передается сообщение.

Начало цепочке событий дает какой-нибудь сенсор. Существуют различные типы сенсоров; большая часть этих узлов реагирует на воздействие на объект при помощи мыши. TouchSensor реагирует на “прикосновение”, т.е. щелчок кнопки. CylinderSensor, PlaneSensor и SphereSensor срабатывают при попытке изменения положения объекта и носят обобщенное название DragSensor. CylinderSensor срабатывает при попытке повернуть объект вокруг оси; такой сенсор применим для моделирования колеса из “Поля чудес”. В отличие от CylinderSensor SphereSensor реагирует на попытку повернуть объект в любом направлении. Как уже понятно, PlaneSensor активируется при попытке линейного перемещения объекта. Узлы ProximitySensor и VisibilitySensor генерируют сообщения о том, что виртуальная камера приблизилась к объекту на заданное расстояние или объект попал в ее поле зрения. TimeSensor представляет собой часовой механизм, отсчитывающий время до генерации события. С одним узлом может быть ассоциировано несколько сенсоров, сообщения которых обрабатываются по очереди.

Сообщение от сенсора передается интерполятору. Такое название для этого класса узлов выбрано потому, что автор VRML-сцены задает любое изменение объекта в виде нескольких промежуточных стадий, а плавным преобразование объекта становится при помощи интерполяции этих дискретных положений. Узел PositionInterpolator способен переместить объект, а OrientatonInterpolator его повернуть, но это только простейшие возможности. При помощи ScalarInterpolator можно как угодно увеличить или уменьшить любой выражаемый численно параметр: радиус, длину ребра все, что хотите. Объект можно перекрасить при помощи ColorInterpolator . Если это многогранник, то CoordinateInterpolator “перекособочит” его, а если объект сферического происхождения, то NormalInterpolator превратит его в мяч для регби или в куриное яйцо.

Для установки порядка передачи сообщений между объектами в VRML имеется директива ROUTE.
В конце файла помещаются строки следующего вида:

Посмотреть, как выглядит запись конкретных операторов, можно в примере 6.1.5.

Вот, наконец, и вся основная теория. А теперь перейдем к примерам.

6.1.1. Простейший куб. Чтобы просто получить на экране куб (аналог первой задачи для начинающего “Hello, world!” в обычном программировании), достаточно следующей простейшей программы.

#VRML V2.0 utf8
Shape <
geometry Box< >
>

На экране появится яркий светлый куб. Как уже говорилось выше, размер каждой из его сторон равен 2.0, но проверить это на практике невозможно, поскольку кроме куба на экране нет ничего (не с чем сравнить!).

6.1.2. Добавим прозрачности. Поскольку конечная цель состоит в построении сечения, необходимо сделать куб прозрачным, в противном случае сечение внутри куба увидеть не удастся. Сечением займемся позднее, а пока листинг для прозрачного куба. Он детально разобран в разделе 4, поэтому в комментариях не нуждается.

Наш куб на экране станет бледнее, поскольку теперь его грани стали прозрачными.

Примечание. В некоторых просмотрщиках прозрачный куб не виден (сам он не светится, а об источниках света мы пока не позаботились), поэтому необходимо включить режим подсветки. К сожалению, универсальную рекомендацию, как это сделать, здесь дать невозможно. В крайнем случае допишите строчку, описывающую источник света, как это делается в 6.1.4.

6.1.3. Построим сечение. Это более трудный с точки зрения языка VRML этап. Листинг, который надо добавить к предыдущему, выглядит следующим образом.

Данный текст предназначен для рисования сечения куба красного цвета, которое приведено на рисунке.

Рассмотрим описание сечения подробнее. Узел Material определяет диффузный (т.е. рассеивающийся при отражении) красный цвет (о кодировании цветов см. раздел 2). Узел IndexedFaceSet задает в пространстве плоскость, определенную соединением характерных точек. Их координаты, начиная с левой верхней вершины, помещены в поле point узле Coordinate. В данной записи стоит обратить внимание на то, как записаны “тройки” координат: они заключены в квадратные скобки, что подчеркивает множественность значений для данного типа. Далее следует поле coordIndex, которое задает порядок соединения точек. Важно заметить, что номера точек начинаются с 0, а брать их из предшествующего списка по порядку, как в данном примере, совсем необязательно. Последовательность завершается заведомо неиспользуемым значением –1; после него можно добавлять и другие плоскости, правда, в нашем примере это не требуется.

Примечания. 1. Те, кто знаком с языками программирования, несомненно, узнали в полях coord и coordIndex массив (его эквивалентное описание на Паскале выглядит так: ARRAY [0..N–1] OF RECORD X, Y, Z: REAL END) и его индекс. 2. То, что сечение на экране совместится с требуемыми гранями куба, подтвердит правильность наших знаний о координатах его вершин по умолчанию.

Наконец, установка значения FALSE в последнем поле узла под названием solid (“твердый”, “сплошной”) облегчает “закраску” плоскости: если установить его в TRUE, то сечение станет твердым и придется принимать дополнительные меры по окраске противоположной его стороны.

6.1.4. Позаботимся об освещении. Как уже было сказано в примере 6.1.2, в некоторых виртуальных мирах может оказаться слишком темно, поэтому стоит завести собственный источник освещения. Добавить его совсем просто, дописав к тексту, который у нас получился в примере 6.1.3, всего одну строку:

# Эту строку надо добавить к примеру 6.1.3!

В результате в точке (0, 0, 3) появится небольшой прожектор, который не даст нашему творению исчезнуть с экрана, даже если пользователь, который его рассматривает, случайно выключит свет в виртуальном мире.

6.1.5. Обеспечим хороший осмотр. Конечно, передвигаясь в VRML-мире с помощью мыши или клавиатуры, можно обойти наш кубик вокруг и все рассмотреть. Но есть и более приятная возможность: заставить кубик поворачиваться [2]. Если вы еще не устали, попробуем это осуществить.

Полный листинг примера приведен ниже. Чтобы сэкономить время, можно дополнить пример 6.1.4 тремя вставками текста, которые выделены жирным шрифтом.

#VRML V2.0 utf8
DEF Spin_Timer TimeSensor
loop TRUE
> # end TimeSensor

DEF Spin_Interpolator OrientationInterpolator
keyValue [0 1 0 0, 0 1 0 3.14159,
0 1 0 6.2831]
> # end OrientationInterpolator
DEF Rotating_Cube Transform
[
# 6.1.3
Shape
> # end Appearance
geometry Box< >
> # end Shape
Shape

> # end Appearance
geometry IndexedFaceSet
-1 -1 1]>
coordIndex [0 1 2 3 -1]
solid FALSE
> # end IndexedFaceSet
> # end Shape
# end 6.1.3
] # end children
> # end Tranform

# 6.1.4
SpotLight
# end 6.1.4
ROUTE Spin_Timer.fraction_changed TO Spin_Interpolator.set_fraction
ROUTE Spin_Interpolator.value_changed TO Rotating_Cube.set_rotation

Рассмотрим полученный листинг подробнее.

Первый из добавляемых объектов TimeSensor обеспечивает периодическую (благодаря значению поля loop 5 ) подачу сигналов для очередного поворота. Скорость вращения можно регулировать значением поля cycleInterval.

Примечание. Конструкция DEF Spin_Timer TimeSensor демонстрирует присвоение создаваемому узлу типа TimeSensor выбранного нами имени Spin_Timer. Наличие имени узла в VRML, как мы знаем, не является обязательным. И хотя до сих пор мы обходились без имен объектов, в данном случае они совершенно необходимы для последующего описания маршрута передачи информации между узлами.

Срабатывание таймера передается следующему объекту OrientationInterpolator. Его поле keyValue представляет собой массив возможных значений изменяемого (интерполируемого) параметра. В данном случае этот параметр есть набор значений для поля rotation узла Transform (т.е. начальной установки нашего куба с сечением). Каждый поворот задается четверкой чисел: первые три выбирают оси вращения (набор 0 1 0, который используется, описывает поворот вокруг “второй” оси Y) и угол поворота в радианах (0, и 2 ). Использование интерполяции позволяет задать всего три положения объекта начальное, конечное и одно промежуточное. Поле key определяет временныRе характеристики вращения: в нашем случае переход от одного положения к другому происходит равномерно.

Примечание. Очень советую загрузить данный VRML-файл в программу White Dune и выделить рассматриваемый узел: в нижней части окна вы увидите графическое отображение процесса движения и сможете его “проиграть”.

Интерполятор будет воздействовать на узел Rotating_Cube, в котором путем “подключения” к полю children (“дети” типичный образчик терминологии в ООП-наследовании!) сгруппированы уже знакомые нам два узла типа Shape с кубом и его сечением. Здесь все осталось по-старому, не забудьте только добавить закрывающие скобки в конце описания объединенного узла.

Наконец, в последних строках файла строится маршрут (ROUTINE) передачи сообщений для описываемого динамического события. Отчетливо просматривается цепочка узлов Spin_Timer ® Spin_Interpolator ® Rotating_Cube (вот где потребовались данные нами ранее имена узлов!), передающая изменения от одного события к другому.

Как видно из приведенного выше описания, усилий для создания вращения потребовалось много, но они того стоили!

6.2. Снеговик. Попробуем создать более сложный объемный объект. Поскольку данные строки пишутся в канун Нового года, тема нашлась сразу это снеговик. Симпатичный и вместе с тем простой с геометрической точки зрения объект.

Размеры основных (сферических) частей снеговика и его итоговый вид представлены на рисунке. Посмотрим, как это выглядит на VRML.

6.2.1. Самое первое решение. На первом этапе создадим изображение, руководствуясь исключительно простотой действий и не обращая пока внимание на оптимальность результатов. “Платой” за такой подход всегда является хотя и легко читаемая, но чрезвычайно громоздкая программа. Тем не менее в обучении такой подход часто бывает оправдан, поскольку можно быстро увидеть результат. А оптимизацией займемся в следующем разделе.

Полный листинг программы приводится ниже. Он очень большой, но это не должно вас пугать: он состоит из нескольких несложных, относительно независимых фрагментов с типовым содержимым. А применение копирования с помощью буфера обмена позволяет получить требуемый текст совсем быстро.

Нетрудно видеть, что снеговик состоит из 5 сфер. В соответствии с этим в листинге 5 из 8 фрагментов очень похожи. Мы рассмотрим только один из них; поскольку первая (нижняя) сфера не является типичной (она имеет центр в начале координат и единичный радиус см. рисунок), мы обратимся ко второй. Ее описание легко найти в тексте по комментарию middle.

Фрагмент, описывающий “средний” ком снеговика, начинается с узла типа Transform. Его назначение состоит в задании геометрических характеристик изображения объекта-потомка, в частности, наиболее часто используется его поле translation. В нашем случае это поле содержит тройку чисел
0 1.7 0, что является набором координат для центра рассматриваемой сферы. Таким способом обеспечивается позиционирование нашей сферы в виртуальном пространстве.

К описанному выше узлу через поле children подсоединяется стандартный узел типа Shape, описывающий уже знакомым нам образом сферу. Отметим только, что, кроме диффузного белого цвета снеговика, мы добавили ему еще некоторую “подсветку изнутри” с помощью поля emissiveColor. Желающие могут проверить, насколько хуже будет выглядеть снеговик без этой в общем-то не очень логичной меры.

Все остальные четыре сферических комка виртуального снега строятся аналогично. Разумеется, меняется их радиус и положение, которое нетрудно вычислить, используя имеющиеся на чертеже размеры.

Гораздо больший интерес представляют конический красный (VRML-цвет 1 0 0) нос, имитирующий традиционную морковку, и цилиндрические глаза.

Обратимся к описанию носа. Поскольку по умолчанию конус строится вершиной вверх, а нос снеговика требуется по понятным причинам направить “вперед”, необходимо произвести поворот конуса. Поле rotation обеспечивает это. Как мы уже видели в примере 6.1.5, поворот характеризуется набором из четырех чисел: тройка 1 0 0 описывает поворот вокруг оси X на 1.57 радиан, т.е. на 90°.

С аналогичным поворотом строятся и оба цилиндрических глаза черного (0.1 0.1 0.1) цвета.

Автор надеется, что опыт, полученный читателями при разборе и реализации предыдущих примеров, позволит легко “прочитать” предлагаемую VRML-программу.

6.2.2. Займемся оптимизацией. Анализируя программу, вы, вероятно, обратили внимание на то, что образующие снеговика сферы описываются практически идентичным текстом, отличающимся лишь числовыми значениями, которые задают радиус и положение центра сферы. Возникает естественное желание как-то оформить общую часть и затем обращаться к ней, указывая конкретные значения параметров.

Для таких целей в VRML предусмотрен специальный механизм прототипы. При создании прототипа мы соберем в него общее описание сферического объекта, а затем будем ссылаться на него, указывая конкретные числовые значения параметров.

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

Примечание. Одно из описаний можно оставить и из него сформировать прототип.

PROTO KOM[field SFVec3f p 0 0 0
field SFFloat r 1
]
<
Transform
children
[Shape
emissiveColor 0.5 0.5 0.5
> # end Material
> # end Appearance
geometry Sphere

> # end Shape
] # end children
> # end Transform
> # end KOM
KOM <>
KOM

KOM

KOM

KOM


Описание прототипа открывается служебным словом PROTO, за которым следует имя прототипа. В нашем случае это KOM, набранное обязательно (!) латинскими буквами. Далее в квадратных скобках описываются параметры прототипа, которые можно будет в дальнейшем задавать при обращении к нему.

Описание параметров-полей заслуживает того, чтобы познакомиться с ним поподробнее. После стандартного ключевого слова field (как вы, наверное, помните, field и означает поле) следует его тип, имя и значение поля по умолчанию. В нашем случае имеется два поля позиция центра сферы p и ее радиус r. Первый имеет тип SFVec3f, т.е. одно значение трехмерного вектора, которое, естественно, задается тремя вещественными числами. Радиус сферы имеет (единственное) вещественное значение SFFloat. Указанные значения по умолчанию традиционны для VRML, кроме того, они полностью соответствуют нижнему кому снеговика.

Далее следует (заключенный в фигурные скобки) стандартный текст описания сферы из виртуального снега, уже хорошо нам знакомый. Единственное отличие заключается в написании полей, в которые подставляются параметры. Например, для центра сферы это выглядит так:

translation IS p

— где IS это служебное слово, показывающее необходимость подстановки значения параметра p. По смыслу эта запись означает, что в поле translation необходимо поместить то значение, которое при обращении будет указано для параметра p. А само обращение к прототипу KOM, показанное в конце фрагмента, настолько очевидно, что особых комментариев не требует.

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

В качестве упражнения можем порекомендовать читателям оформить описание глаза снеговика в виде прототипа. Обратите внимание на тот факт, что для глаза радиус не является внешним параметром (в отличие от комьев оба глаза одинаковы), поэтому его стоит по-прежнему оставить в виде конкретной константы.

Что же мы получили в итоге всей этой оптимизации с прототипами? Программу, которая в несколько раз короче, и знание механизма, который позволяет компактно описывать однотипные объекты. Эти объекты даже можно вынести в отдельный файл; тогда они будут называться EXTERNPROTO. Об использовании данной возможности языка VRML можно почитать в [7].

И в заключение еще одно замечание по поводу технологий. Мы можем сделать снеговика, используя готовые технологии, например, многократно упоминавшуюся программу White Dune. При этом даже вообще не обязательно знать правила записи VRML. Но результат, который получится, будет эквивалентен листингу в 6.2.1. Тем не менее получение эффективного результата требует понимания сущности и правил устройства технологии, что в очередной раз подтвердил пример 6.2.2.

6.3. Еще примеры: короткие, но интересные. В заключение приведем еще пару коротеньких листингов, демонстрирующих некоторые интересные возможности VRML.

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

А вот как это выглядит:

6.3.2. Да будет звук! И еще один прекрасный пример компактной VRML-программы [3], описывающей шарик, который издает звук, когда на него наталкивается наблюдатель.

#VRML V2.0 utf8
DEF SphereWithSound Collision
[Shape

>
Sound
«boom.wav»>
>
]
>
ROUTE SphereWithSound.collideTime TO BoomSound.startTime

Разумеется, в том же каталоге должен лежать звуковой файл “boom.wav”.

Как это можно использовать

Приведенные в публикации материалы могут быть полезны не только учителям информатики при рассказе о современных 3D-технологиях компьютерной графики. Автор надеется, что изложенная теория и разобранные примеры позволят творческим учителям организовать своих учеников на изготовление простейших электронных ресурсов по стереометрии, астрономии, химии, физике и другим школьным предметам. Одна из целей части 1 публикации как раз и состояла в том, чтобы показом ярких возможностей VRML разбудить фантазию. А в части 2 публикации кратко познакомить с тем, как подобные материалы можно разрабатывать.

Не сомневаюсь, что при наличии интереса читатели смогут своими силами создать действительно наглядные, красивые и практически полезные VRML-объекты и даже простейшие виртуальные миры (вроде музейных залов, на стенах которых вместо картин развешены портреты ученых или математические формулы, или “фотографии” экзотической планеты). Желаю всяческих творческих успехов на данном поприще!

Ссылки

1. Teaching Teaching & Understanding Understanding. http://www.daimi.au.dk/

6. Конопка Р. Создание оригинальных компонент в среде Delphi. Киев: НИПФ-ДиаСофт Лтд., 1996, 512 с.

1 Разумеется, версия 2.0 тоже представлена, просто там труднее сосчитать полное количество узлов.

2 В файлах с описанием внешних прототипов сцена, как правило, отсутствует.

3 Существует также особый класс полей exposedField, о которых речь впереди.

4 Мой редактор усиленно рекомендует “удалить повторяющееся слово” .

5 Loop по-английски означает “петля”; в компьютерной терминологии это общепринятое название цикла.

Язык моделирования виртуальной реальности VRML

VRML — Virtual Reality Modeling Language (язык моделирования виртуальной реальности) уже довольно давно применяется в сети Интернет. Он признан Web- консорциумом для описания интерактивной трехмерной графики и мультимедийных приложений и стандартизирован (ISO/IEC 14772). VRML- документ представляет собой обычный текстовый файл, который содержит описания трехмерных фигур и свойств их поверхностей (цвет, текстура, освещение и т.п.).Такой документ поступает в браузер в виде исходного текста, точно так же, как и обычный HTML-документ. Браузер, получающий VRML-документ, должен уметь интерпретировать VRML-код.

Язык VRML был впервые предложили Марк Песк (Mark Pesce), Питер Кеннард (Piter Kennard) и Энтони Париси (Anthony S. Parisi) в мае 1994 г/ на Первой международной конференции по WWW, а его первая спецификация (VRML 1.0) была подготовлена на основе формата Open Inventor фирмы SGI (Silicon Graphics), и впервые представлена на Второй конференции WWW в октябре 1994 г.

Виртуальная реальность состоит из блоков VRML, которые называются мирами VRML. Спецификация языка представляет собой набор команд, называемых элементами (nodes) и предназначенных для создания простых объектов типа сферы, куба или цилиндра, а также объектов, состоящих из наборов вершин (vertices) и сторон (faces).

Язык VRML позволяет создавать более сложные объекты путем комбинации простых объектов. Это иерархический язык — порожденные или дочернии (child) объекты наследуют свойства родительских (parent) объектов. Для определения местоположения и отношений различных объектов между собой требуется указание их относительных размеров и координат VRML. В дополнение к этому язык позволяет определить освещение в вашем мире, а также предварительно установленные пейзажи.

Версия языка 1.0 была статичной. Изменялось лишь место расположения зрителя при его передвижении по виртуальному пространству. VRML 2.0 позволяет создавать динамические миры, благодаря значительному расширению егоинтерактивных возможностей. Стандарт VRML 2.0 поддерживает анимацию и звуковые эффекты; для него существует поддержка на уровне языков Java и JavaScript. VRML 2.0 был рассмотрен открытой дискуссионной группой и одобрен многими компаниями, а в августе 1996 года был принят его стандарт. В декабре 1997 года VRML 2.0 был официально заменен на VRML 97 (называемый также VRML Technical Symposium), который был впервые представлен в феврале 1997 года в Монтерее (Калифорния, США). Новый стандарт ISO/IEC 14772 практически идентичен спецификациям VRML 2.0 с учетом редакционных поправок и некоторых незначительных функциональных различий. Таким образом, текущим VRML- стандартом является VRML 97, а в работе находится новый формат — VRML 200х.

VRML-программу можно сделать оптимальной и более корректной, улучшив скорость отображения и время транспортировки. Добиться этого можно следующим путем: так как VRML-файлы текстовые, можно достичь высокой степени их сжатия утилитой упаковки данных. Например, wrl-файл размером 358 Кб может быть уменьшен до 69 Кб, т.е. сжат приблизительно в 5 раз. Крайне нежелательно, чтобы время, затрачиваемое на распаковку файла, составляло значительную долю в общей сумме временных затрат от начала транспортировки по сети до момента его отображения. Поэтому интересно сравнить время, затрачиваемое натранспортировку и распаковку виртуальных миров, со временем передачи по сети несжатого VRML-файла.

Виртуальная модель ИТМО (ТУ)

При моделирования целесообразно выполнять следующие рекомендации:

1. Не создавайте невидимые объекты (объекты внутри объектов);

2. Используйте примитивы, а не многоугольники, т.к. многие VRML-роузеры содержат алгоритмы, позволяющие отображать примитивы (конус, куб, цилиндр и сфера) намного быстрее, чем объект, состоящий из многоугольников. Экономия вычислительных ресурсов очевидна на примере примитива типа сфера, имеющего только один параметр — радиус. По сравнению с объемом информации, необходимой для создания сфероподобного многоугольника, выгода огромна.

3. Используйте как можно меньше многоугольников. Большинство экспертов по VRML при создании виртуального мира задействует не более 10000 многоугольников.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Увлечёшься девушкой-вырастут хвосты, займёшься учебой-вырастут рога 9791 — | 7666 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

wiki.vspu.ru

портал образовательных ресурсов

Содержание

Описание языка VRML

1. Введение

Язык VRML (Virtual Reality Modeling Language) предназначен для описания интерактивных 3D объектов и миров. Он был разработан для применения в сетях INTERNET и INTRANET. На сегодняшний день этот язык является сетевым стандартом и поддерживается ведущими мировыми производителями программного обеспечения.

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

По своей структуре язык является объектно-ориентированным. Ему присущи такие характеристики объектного языка, как инкапсуляция и наследование. Полиморфизм в привычном понимании этого слова отсутствует.

2. Что необходимо для работы с VRML

Для описания простых VRML объектов подходит любой текстовый редактор, имеющий возможность сохранять файлы в обычном текстовом формате. Описание VRML-объектов (мира) хранится в текстовом файле с расширением wrl.

Для воспроизведения VRML объектов необходим VRML браузер, поддерживающий язык VRML в спецификации 2.0 К популярным VRML-браузерам, поддерживающим Microsoft Internet Explorer, Opera и Mozila Firefox, относятся blaxxun Contact (www.blaxxun.com), Cortona3D Viewer (www.cortona3d.com), BS Contact VRML/X3D (www.bitmanagement.de), Octaga Player (www.octaga.com) и др.


3. Структура VRML файла

В общем виде, простейшая VRML-программа состоит из следующих частей:

#VRML V2.0 utf8

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

Виртуальный мир в терминологии языка называется сценой, которая представляется в виде графа из отдельных объектов, называемых узлами (node). В этой части описываются объекты, которые необходимы для построения для сцены (мира) задуманного пользователем.

4. Примитивы (Формы)

Формами в VRML называют объекты, из которых строятся VRML миры, т.е. формы являются основными строительными блоками ( компонентами ) VRML миров. Примитивные формы — это стандартные примитивные трехмерные объекты. К ним относятся Параллелепипед, Сфера, Цилиндр, Конус. Однако комбинируя их, можно строить достаточно сложные трехмерные изображения. Например, вот такие:

Формы описываются с помощью узла — Shape, который объединяет геометрические свойства объектов ( форму,структуру ) и свойства, определяющие внешний вид этих объектов ( цвет, текстуру поверхности и т.д. . Геометрические свойства описываются с помощью поля geometry. Свойства, определяющие внешний вид описываются с помощью поля appearance.

Значением поля geometry являются геометрические узлы , т.е. узлы ,определяющие форму и структуру объектов .

Стандартные примитивные геометрические узлы следующие:

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

Единицы измерения обычно метры, но могут быть и другие. Если размеры не указаны, то принимаются значения по умолчанию, которые для каждого типа узла свои.

Существует возможность объединения узлов различных типов в группы с помощью группирующих узлов. Одним из таких узлов является Group. Он имеет поле children, значением которого является список узлов, которые объеденяет данный узел.

Group применяется, обычно, для обьединения нескольких узлов под одним именем и не придает никаких особых свойств своим дочерним узлам в отличии от других группирующих узлов.

Пример узла Group:

Простая примитивная форма:

5. Трансформация форм

По умолчанию все формы строятся в «центре VRML мира». Трансформация (Transform) позволяет перемещать, вращать и масштабировать формы в VRML мире.

В VRML мирах система координат трехмерная и имеет следующую ориентацию:

Трансформация форм происходит путем трансформации системы координат, в которой строятся эти формы. Трансформация системы координат определяется с помощью группирующего узла Transform, создающего систему координат, которая может быть сдвинута, повернута или масштабирована относительно родительской. Формы, построенные в новой системе координат сдвигаются, поворачиваются и масштабируются в месте с ней.

Определение узла Transform:

Поле children определяет список форм, которые будут строиться в новой системе координат. Поле translation определяет сдвиг системы координат относительно родительской системы координат. Сдвиг происходит по осям X,Y и Z.

Поле rotation определяет ориентацию системы координат, т.е. поворот системы координат вокруг оси вращения на заданный угол. Угол измеряется в радианах.

Ось вращения определяет вектор вокруг которого осуществляется поворот. Обычно поворот осуществляется вокруг осей X,Y или Z:

Поворот осуществляется по правилу «правой руки».

Поле scale определяет увеличение или уменьшение размерности системы координат на коэффициент масштабирования по осям X,Y и Z.

Поворот, сдвиг и масштабирование системы координат:

6. Внешний вид форм — цвет

Примитивные формы по умолчанию имеют белый цвет поверхности. Но есть возможность управлять цветом поверхности форм, а также управлять прозрачностью и другими характеристиками, описывающими внешний вид форм.

Вспомним, что узел Shape описывает:

Значением поля appereance является узел Appereance, который описывает визуальные свойства форм (material, texture) через описание материала и текстуры форм.

Значения полей могут быть не определены, но если какое-либо поле определено, то его значением должен быть узел определенного типа. Поле material описывает свойства материала поверхности форм. Значением поля является узел Material:

Поля узла Material описывают:

Цвет в VRML задается с помощью трех составляющих:

Любой цвет можно задать путем смешения этих составляющих в определенных пропорциях. Значения каждой составляющей лежат в диапазоне от 0.0 до 1.0 . Например:

Цвет Красный Синий Зеленый Белый 1.0 1.0 1.0 Желтый 1.0 1.0 0.0 Черный 0.0 0.0 0.0 Коричневый 0.5 0.2 0.0

Пример 1

Построим шар зеленого цвета, с центром, находящимся в точке пространства с координатами (1,1,1). Радиус шара равен 3. Для этого откроим блокнот и напишем следующий код:

ИЛИ

Сохраним полученный файл с расширением *.wrl.

Откроем полученный файл в браузере и посмотрим что получилось.

Задание 1

Самостоятельно создайте такие примитивы как Параллелепипед, Конус и Цилиндр различных цветов.

Пример 2

Попробуем создать более сложный объемный объект. Поскольку данные строки пишутся в канун Нового года, тема нашлась сразу — это снеговик. Симпатичный и вместе с тем простой с геометрической точки зрения объект.

Размеры основных (сферических) частей снеговика и его итоговый вид представлены на рисунке. Посмотрим, как это выглядит на VRML.

Нетрудно видеть, что снеговик состоит из 5 сфер. В соответствии с этим в листинге 5 из 8 фрагментов очень похожи. Мы рассмотрим только один из них; поскольку первая (нижняя) сфера не является типичной (она имеет центр в начале координат и единичный радиус — см. рисунок), мы обратимся ко второй. Ее описание легко найти в тексте по комментарию middle.

Фрагмент, описывающий “средний” ком снеговика, начинается с узла типа Transform. Его назначение состоит в задании геометрических характеристик изображения объекта-потомка, в частности, наиболее часто используется его поле translation. В нашем случае это поле содержит тройку чисел 0 1.7 0, что является набором координат для центра рассматриваемой сферы. Таким способом обеспечивается позиционирование нашей сферы в виртуальном пространстве.

К описанному выше узлу через поле children подсоединяется стандартный узел типа Shape, описывающий уже знакомым нам образом сферу. Отметим только, что, кроме диффузного белого цвета снеговика, мы добавили ему еще некоторую “подсветку изнутри” с помощью поля emissiveColor. Желающие могут проверить, насколько хуже будет выглядеть снеговик без этой в общем-то не очень логичной меры.

Все остальные четыре сферических комка виртуального снега строятся аналогично. Разумеется, меняется их радиус и положение, которое нетрудно вычислить, используя имеющиеся на чертеже размеры.

Гораздо больший интерес представляют конический красный (VRML-цвет 1 0 0) нос, имитирующий традиционную морковку, и цилиндрические глаза.

Обратимся к описанию носа. Поскольку по умолчанию конус строится вершиной вверх, а нос снеговика требуется по понятным причинам направить “вперед”, необходимо произвести поворот конуса. Поле rotation обеспечивает это. Как мы уже видели в примере 6.1.5, поворот характеризуется набором из четырех чисел: тройка 1 0 0 описывает поворот вокруг оси X на 1.57 радиан, т.е. на 90°.


С аналогичным поворотом строятся и оба цилиндрических глаза черного (0.1 0.1 0.1) цвета.

Задание 2

Самостоятельно создайте сложные фигуры, состоящие из нескольких примитивов. Например, стол, дом и др.

VRML — ресурсы

Ссылки на VRML и 3D-ресурсы в русском и мировом Internet-е.

WEB3D CONSORTIUM

Спецификация VRML97:
http://www.web3d.org/technicalinfo/specifications/vrml97/index.htm
«Библия» для VRML — программистов. Здесь есть всё, что нужно знать. а об остальном можно догадаться ;-)

Список рассылки WWW-VRML:
http://www.web3d.org/fs_mailinglists.htm
Работает с 1995г. Вот уж, действительно, чего только там в архивах не найдёшь.

X3D SDK:
http://sdk.web3d.org/
Средства разработки, браузеры, ресурсы, серверы, контент, сорсы.

PARALLELGRAPHICS

Ведущая российская компания, активно разрабатывающая VRML — технологии. 3D-редакторы для новичков и гуру, многопользовательский сервис, профессиональный контент.
Cortona VRML client:
http://www.paragraph.ru/cortona

Internet Space Builder — VRML редактор (WYSIWYG):
http://www.paragraph.ru/isb

Internet Scene Assembler — сборка VRML-сцен, добавление «интеллектуального» поведения:
http://www.paragraph.ru/isa

Internet Character Animator — анимация аватаров:
http://www.paragraph.ru/ica

WEB3D.ABOUT.COM

Советы начинающим, список реурсов, обзоры, chat. Куратор: Sandy Ressler, кто знает — тот поймёт. Вобщем, сайт рекомендуется для посещения всем — новичкам и специалистам.

COMP.LANG.VRML

Эта конференция ничем не хуже, чем конференция на WEB3D.ORG. А, может быть, и лучше — в ней больше конкретного и меньше разговоров «про вообще».

Учебник по VRML 97

«Если Вы хотите узнать, что такое VRML (Virtual Reality Modelling Language, или Язык Моделирования Виртуальной Реальности), научиться создавать собственные виртуальные миры или поделиться опытом, тогда. » мы вам рекомендуем посетить эту страницу. Материалы регулярно обновляются. Пожалуй, это один из лучших VRML-ресурсов в российском секторе Internet-а.

VRML97.NAROD.RU

Введение, инструменарий, принципы, структура файла. далее «со всеми остановками». В основном — это выборочный перевод спецификации VRML97 на русский язык.

ЖУРНАЛ «ПОДВОДНАЯ ЛОДКА»

Основы языка моделирования виртуальной реальности (VRML).

ATINFO

Примеры, синтаксис, ссылки, размышления — выводы спорные, но статья интересная.

CAD.NTU-KPI.KIEV.UA

Что такое VRML, стандарты, структура VRML-файла, характеристики, механизмы и элементы, геометрические узлы, 3d-web страницы.

TIMA HOME PAGE

Грамотные VRML-сцены, VRML FAQ, VRML форум.

КЛУБ 3D-ГРАФИКИ

Перевод статьи Mike Hurwicz. Описаны способы создания и экспорта файлов VRML 2.0 в среде Max R3.1.

KSI Информационный сервер Интернет

История создания VRML, объекты, сигнальная машина, программы и проекты. Материал изложен поверхностно, но, для начала, можно почитать.

HOUSE OF THE SUN

Знакомство с VRML’97 или как создать свой виртуальный мир:
http://internet.web.ur.ru/general/vrml/vrml.htm

Результаты поиска в Internet по ключевым словам

Vrml’97 структура файла единицы измерения оси

Файл VRML состоит из последовательности основных функциональных блоков: заголовка, описания прототипов, описания трехмерной сцены, маршруты событий. Пока рассмотрим заголовок файла, а остальные блоки будем рассматривать дальше.

Для упрощения идентификации файла VRML, каждый файл начинается со строки:

Элементы заголовка внутри скобок являются обязательными. Элементы в квадратных скобках можно использовать при необходимости. Запомните, что слова #VRML и V2.0 должны быть разделены только одним пробелом, также V2.0 и . После кодировки может сразу идти перенос строки или любое количество разделителей в виде пробелов или табуляций, после них текст комментария и, как обязательный элемент, . Грубо говоря все, что идет после кодировки браузер может игнорировать до переноса строки.

Поле кодировка должно содержать название кодировки, которое будет использоваться для текстовых элементов мира. Пока разбираться с этим полем не будем, оставим на потом. Будем использовать общепринятое значение для него — utf8, эта кодировка известна как Unicode или универсальный алфавит.

В языке VRML каждая строка, начинающаяся со знака #, считается комментарием и игнорируется браузером. Данный символ имеет значение только для заголовка файла.

После данного заголовка идут описания трехмерных объектов, их параметров и свойств, а также события и их обработчики для создания динамики в 3D-мире.

Exporting to VRML97

3ds Max scenes can be exported to VRML97 file format. 3ds Max exports .wrl files, which can be viewed in any VRML97 browser.

Make sure that you have the most current version of your VRML browser and check its documentation to make sure that it supports VRML97.

You can find the complete VRML97 specification at http://www.web3d.org/x3d/vrml/index.html. This document describes the entire VRML97 language and provides technical details on the behavior of exported VRML97 worlds.

The VRML97 exporter supports the following:

All VRML97 light types: direct, omni, and spot.

Free and targeted cameras.

Sphere, cone, box, and cylinder primitive objects. These objects export as VRML97 primitive objects. This helps reduce the size of VRML97 files.

All position, rotation, and scale animation on objects, as well as animated hierarchies, inverse kinematics, and all controller types. Select Coordinate Interpolators in the Export dialog to export animated meshes, such as an animated Bend modifier or character studio Physique animations.


To set up a VRML scene using 3ds Max :

  1. Create the objects that make up the scene.
  2. On the Create panel, turn on (Helpers).
  3. Use the tools in the VRML97 Helpers to add actions and triggers and prepare the scene.
  4. Export the scene to the VRML97 format.
  5. Open the VRML97 file in the browser and test it.

To export a file to VRML97:

  1. Choose Application menu Export.
  2. Choose VRML97 (WRL) as the file format.
  3. Enter a file name, and click Save.
  4. In the VRML97 Exporter dialog, set options as described below.

Turning on any of these options increases the size of the VRML97 file generated by the export process.

If your animations aren’t exporting correctly, try exporting with this option chosen. An example of animation motion requiring Coordinate Interpolators is a stick figure made up of simple rectangular boxes that have bones Linked to the boxes as a skeleton. Even though these boxes move through space without any noticeable shape morphing, their motion will not be exported without the use of Coordinate Interpolators, because their motion isn’t derived from simple transforms. Any animation achieved using the modifier stack or object parameters needs Coordinate Interpolators. This includes animated XForm modifiers.

Certain types of animations are not possible with Coordinate Interpolators; for example, when the mesh being animated changes size between frames. An example of this is animating the number of segments in a sphere. 3ds Max warns you if it detects this type of animation on export.

test.txt contains general info, start/stop times, and number of frames.

test0.wrl through test4.wrl are snapshots of the animation in frames 0 through 4.

All scenes should have at least one camera, so you can control how the scene initially renders. Add more cameras to the scene than you might ordinarily use, so the viewer can switch between cameras if his VRML97 browser allows it. This lets you set up your scene with pre-installed vantage points. Otherwise, if the world is very large, it can overpower the viewer’s system and make navigation difficult. Some browsers animate camera moves, so the extra cameras can make viewing the scene more pleasant.

Vertex Color Source group

Lets you choose the source for the vertex color when Color Per Vertex is turned on.

  • Use Max’s Exports the current vertex color of the object defined in the scene.
  • Calculate on Export Calculates the diffuse color at the vertices during export, based on the current lighting and the objects’ materials.

Bitmap URL Prefix group

Lets you specify a URL prefix for bitmaps assigned to objects in the scene. You must keep all your texture bitmaps in either the same directory as the WRL file or in one other location, which you specify here. If your maps are stored in other locations, you will have to manually search for the map in the WRL and change its location. Not all browsers will display error messages if the maps aren’t found on the WWW server.

Use forward slashes (not backslashes) to enter longer paths; for example: Myfiles/maps.

Topics in this section

The tips presented in this topic will help you make your work look as good as possible and display and move as fast as possible.

The VRML97 helpers let you create online 3D scenes and interaction using Virtual Reality Markup Language. Insert a VRML 97 Helper into the scene by clicking and dragging at the desired location.

Введение в язык VRML (разработка урока)

Описание разработки

Цель:

ввести понятие языка VRML, дать ему назначение, рассмотреть структуру кода, порядок создания VRML документа; развивать логическое мышление, память, внимание; воспитывать информационную культуру.

Ход урока.

I. Организационное начало.

2. Проверка готовности.

3. Работа с дежурными

II. Работа по осмыслению и усвоению нового материала.

1. Сообщение темы и цели урока.

2. Первичное восприятие нового материала.

Язык VRML(VirtualRealityModelingLanguage — Язык моделирования виртуальной реальности) — предназначен для описания трехмерных изображений и управляет объектами, описывающими геометрические фигуры и их расположение в пространстве.

Этот язык используется для создания трехмерных миров в сети Интернет.

Vrml-файл представляет собой обычный текстовый файл, созданный в текстовом редакторе Блокнот или KWrite и сохранённый с расширением .wrl.

Для воспроизведения VRML-объектов необходим специальный VRML браузер или плагин, встроенный в браузер.

Примеры VRML-браузеров: Alteros 3D, Live3D, Cosmo Player, Blaxxun Contact 5.1, VB6 Libraries, Blaxxun Contact, BS Contact VRML, Cortona VRML-client, Navigateur VRML, Pixie, Xj3D ит.д.

Принцип просмотра VRML миров — браузер VRML загружает VRML-файлы, содержащие описания трехмерных сцен, точно так же, как HTML-браузер загружает HTML-файлы с описанием страниц.

Браузер интерпретирует описания сцен и управляет рендерингом получающихся изображений на главном компьютере.

Рендеринг производится через объектив виртуальной камеры, которая перемещается, наклоняется и поворачивается в соответствии с командами пользователя.

Как и в случае с HTML, один и тот же vrml-документ может выглядеть по-разному в разных VRML-браузерах.

Кроме того, многие разработчики VRML-браузеров добавляют нестандартные расширения VRML в свой браузер (vrml, wrl).

Виртуальный мир в терминологии языка называется сценой, которая представляется в виде графа из отдельных объектов, объекты называются узлами.

Структура VRML файла

В общем, виде каждый VRML файл состоит из следующих частей:

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

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

Первый символ (#) указывает, что далее следует комментарий. VRML означает, что это VRML-файл, V2.0 дает номер версии, а символы utf8 показывают, что содержимое файла — кодировка символов в системе utf8.

При появлении последующих версий VRML номер версии в первой строке даст браузеру возможность определить, какую версию VRML поддерживает WRL-файл.

По-видимому, будущие версии VRML будут допускать применение и отличных от ASCII наборов символов в интересах пользователей во всем мире.

2. Описание прототипов


Эта часть является необязательной. В ней пользователь может описать свои собственные классы объектов для дальнейшего использования в программе.

Весь материал — в докуемнте.

Содержимое разработки

Тема: Введение в язык VRML.

Цель: ввести понятие языка VRML, дать ему назначение, рассмотреть структуру кода, порядок создания VRML документа; развивать логическое мышление, память, внимание; воспитывать информационную культуру.

Оборудование: ПЭВМ, дидактический материал (опорные конспекты по теме урока), Интернет- ресурсы.

Работа с дежурными

II. Работа по осмыслению и усвоению нового материала.

Сообщение темы и цели урока.

Первичное восприятие нового материала.

Язык VRML (Virtual Reality Modeling Language — Язык моделирования виртуальной реальности) — предназначен для описания трехмерных изображений и управляет объектами, описывающими геометрические фигуры и их расположение в пространстве. Этот язык используется для создания трехмерных миров в сети Интернет.

Vrml-файл представляет собой обычный текстовый файл, созданный в текстовом редакторе Блокнот или KWrite и сохранённый с расширением .wrl. Для воспроизведения VRML-объектов необходим специальный VRML браузер или плагин, встроенный в браузер.

Примеры VRML-браузеров: Alteros 3D, Live3D, Cosmo Player, Blaxxun Contact 5.1, VB6 Libraries, Blaxxun Contact, BS Contact VRML, Cortona VRML-client, Navigateur VRML, Pixie, Xj3D и т.д.

Принцип просмотра VRML миров — браузер VRML загружает VRML-файлы, содержащие описания трехмерных сцен, точно так же, как HTML-браузер загружает HTML-файлы с описанием страниц. Браузер интерпретирует описания сцен и управляет рендерингом получающихся изображений на главном компьютере. Рендеринг производится через объектив виртуальной камеры, которая перемещается, наклоняется и поворачивается в соответствии с командами пользователя.

Как и в случае с HTML, один и тот же vrml-документ может выглядеть по-разному в разных VRML-браузерах. Кроме того, многие разработчики VRML-браузеров добавляют нестандартные расширения VRML в свой браузер (vrml, wrl).

Виртуальный мир в терминологии языка называется сценой, которая представляется в виде графа из отдельных объектов, объекты называются узлами.

В общем, виде каждый VRML файл состоит из следующих частей:

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

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

Первый символ (#) указывает, что далее следует комментарий. VRML означает, что это VRML-файл, V2.0 дает номер версии, а символы utf8 показывают, что содержимое файла — кодировка символов в системе utf8. При появлении последующих версий VRML номер версии в первой строке даст браузеру возможность определить, какую версию VRML поддерживает WRL-файл. По-видимому, будущие версии VRML будут допускать применение и отличных от ASCII наборов символов в интересах пользователей во всем мире.

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

Обязательная часть, в которой описываются объекты, которые необходимы для построения для сцены (мира) задуманного пользователем.

4. Описание путей трансляции сообщений

Эта часть является необязательной. Она необходима при создании динамических объектов (объектов, меняющих свои свойства с течением времени), т.к. в этой части программы происходит связывание объектов — источников событий с объектами-приемниками событий.

В VRML приняты следующие единицы измерения:

Расстояние и размер: метры

Остальные значения: выражаются, как часть от 1.

* Координаты берутся в трехмерной декартовой системе координат. Начало координат находится в левом нижнем углу. Ось X расположена горизонтально и «смотрит» вправо. Ось Y расположена вертикально и направлена вверх. Ось Z расположена горизонтально, как и ось X, и направлена «в монитор».

Для просмотра трехмерных миров можно использовать браузер Internet Explorer с Cortona 3D Viewer.

Cortona3D Viewer — браузер для просмотра трехмерных сцен. С помощью Cortona3D Viewer пользователь может перемещаться в трехмерном пространстве и взаимодействовать с объектами в нем.

Создать текстовый документ с помощью текстового редактора Блокнот.

Набрать текст программы.

Сохранить с расширением .wrl

Для просмотра в ЗД виде открыть документ в браузере Internet Explorer.

Истоки VRML можно обнаружить на первой годичной конференции World Wide Web, проведенной в Женеве, Швейцария, в марте 1994 г. На ней Тим Бернерс-Ли -«отец» World Wide Web и один из создателей HTML — и Дэвид Рэггет провели заседание секции под названием «Языки с метками для описания виртуальной реальности и World Wide Web». (Впоследствии значение буквы М в VRML было изменено: вместо «Метка» (Markup) она стала обозначать «Моделирование» (Modeling).) Участники секции составили список основных требований к трехмерному эквиваленту HTML и список адресов электронной почты групп, заинтересованных в продолжении работы над спецификацией VRML.

Проект спецификации на VRML 1.0 был представлен на следующей конференции World Wide Web в октябре 1994 г. Вместо того чтобы разрабатывать язык трехмерных сценариев «с нуля», авторы спецификации получили разрешение фирмы Silicon Graphics воспользоваться подмножеством текстового языка описания сцен из программы трехмерного моделирования под названием Open Inventor. Данное подмножество, в котором дл представления трехмерных объектов использованы понятные для человека команды типа «Куб» или «Цилиндр», и послужило основой спецификации VRML 1.0. В этот черновой вариант были включены также специфические дл Web команды создания связей с другими VRML-узлами Web аналогично тому, как в HTML-документы могут входить связи с другими документами. Однако в спецификацию не вошли команды для создания динамического VRML-среды и прежде всего потому, что авторы хотели закончить версию 1.0 и запустить ее в работу максимально быстро.

Версия VRML 1.0 была официально представлена мировому сообществу в апреле 1995 г. В настоящее врем в сети Internet доступна предварительная версия VRML 1.1 и собираются замечания для версии 2.0. В версии 1.1 будут исправлены некоторые недостатки версии 1.0 и добавлено несколько новых возможностей, например некоторые (весьма ограниченные) средства дл использования звука и анимации. В версии 2.0, характеристики которой представлены в Web-документе под заголовком «Подвижные миры» (Moving Worlds), VRML трансформируется в высокой степени интерактивную многопользовательскую среду, в которой объектам соотнесены их свойства и поведение, а «участники» сцены могут видеть друг друга на экране. Различные спецификации и предложения по текущей и будущим версиям VRML можно найти в следующих Web-узлах:

III. Задавание на дом.

Аврамова с. 4-9., с. 54-57

Опорный конспект по теме «Введение в язык VRML»

Язык VRML (Virtual Reality Modeling Language — Язык моделирования виртуальной реальности) — предназначен для описания трехмерных изображений и управляет объектами, описывающими геометрические фигуры и их расположение в пространстве. Этот язык используется для создания трехмерных миров в сети Интернет.

Vrml-файл представляет собой обычный текстовый файл, созданный в текстовом редакторе Блокнот или KWrite и сохранённый с расширением .wrl. Для воспроизведения VRML-объектов необходим специальный VRML браузер или плагин, встроенный в браузер.

Примеры VRML-браузеров: Alteros 3D, Live3D, Cosmo Player, Blaxxun Contact 5.1, VB6 Libraries, Blaxxun Contact, BS Contact VRML, Cortona VRML-client, Navigateur VRML, Pixie, Xj3D и т.д.

Принцип просмотра VRML миров — браузер VRML загружает VRML-файлы, содержащие описания трехмерных сцен, точно так же, как HTML-браузер загружает HTML-файлы с описанием страниц. Браузер интерпретирует описания сцен и управляет рендерингом получающихся изображений на главном компьютере. Рендеринг производится через объектив виртуальной камеры, которая перемещается, наклоняется и поворачивается в соответствии с командами пользователя.

Как и в случае с HTML, один и тот же vrml-документ может выглядеть по-разному в разных VRML-браузерах. Кроме того, многие разработчики VRML-браузеров добавляют нестандартные расширения VRML в свой браузер (vrml, wrl).

Виртуальный мир в терминологии языка называется сценой, которая представляется в виде графа из отдельных объектов, объекты называются узлами.

В общем, виде каждый VRML файл состоит из следующих частей:

Для того, чтобы VRML-браузер распознал файл с VRML-кодом, в начале файла ставится специальный заголовок — file header: #VRML V2.0 utra

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

Первый символ (#) указывает, что далее следует комментарий. VRML означает, что это VRML-файл, V2.0 дает номер версии, а символы utf8 показывают, что содержимое файла — кодировка символов в системе utf8. При появлении последующих версий VRML номер версии в первой строке даст браузеру возможность определить, какую версию VRML поддерживает WRL-файл. По-видимому, будущие версии VRML будут допускать применение и отличных от ASCII наборов символов в интересах пользователей во всем мире.

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

3. Описания графа сцены

Обязательная часть, в которой описываются объекты, которые необходимы для построения для сцены (мира) задуманного пользователем.


4. Описание путей трансляции сообщений

Эта часть является необязательной. Она необходима при создании динамических объектов (объектов, меняющих свои свойства с течением времени), т.к. в этой части программы происходит связывание объектов — источников событий с объектами-приемниками событий.

В VRML приняты следующие единицы измерения:

Расстояние и размер: метры

Остальные значения: выражаются, как часть от 1.

* Координаты берутся в трехмерной декартовой системе координат. Начало координат находится в левом нижнем углу. Ось X расположена горизонтально и «смотрит» вправо. Ось Y расположена вертикально и направлена вверх. Ось Z расположена горизонтально, как и ось X, и направлена «в монитор».

Для просмотра трехмерных миров можно использовать браузер Internet Explorer с Cortona 3D Viewer.

Cortona3D Viewer — браузер для просмотра трехмерных сцен. С помощью Cortona3D Viewer пользователь может перемещаться в трехмерном пространстве и взаимодействовать с объектами в нем.

Создать текстовый документ с помощью текстового редактора Блокнот.

Набрать текст программы.

Сохранить с расширением .wrl

Для просмотра в ЗД виде открыть документ в браузере Internet Explorer.

Создание VRML в 3D Studio Max R3.1

Прежде чем начать

Для работы нам потребуется не только 3DS Max R3.1, но и VRML вьювер, а также текстовый редактор. Кроме того, если вы собираетесь работать с текстурами, необходимо иметь программу обработки 2D графики (Photoshop).

Самый простой способ просмотреть VRML файл — это воспользоваться стандартным браузером (Netscape Navigator или Communicator, или Microsoft Internet Explorer), снабженным VRML плагином. При написании этой статьи я пользовался Cosmo Player 2.1.1., созданного SGI и распространяемого группой CAI — вам придется скачать около 4мб. Помните, что различные плагины и вьюверы рендерят файлы по-разному, и если вы создаете VRML для широкой публикации — будет лучше если вы протестируете его в разных программах.

(вышеописанный вьювер можно также поискать здесь — и выбрать наиболее удобный для скачивания сервер)

Подобно HTML VRML — это формат, основанный на ASCII и вам понадобится текстовый редактор для проверки и модификации кода. Я пользовался MS Word 97.

Не буду подробно останавливаться на этом — думаю всем понятно, что при создании текстур программу, подобную Photoshop трудно заменить.

Введение в VRML

Давайте разберемся — что же такое VRML? Данный формат напрямую связан с понятием Virtual Reality (VR) — интерактивный трехмерный мир, по которому пользователь может перемещаться в зависимости от своего желания. В этом мире пользователь называется «avatar». Virtual Reality Modeling Language (VRML) — это ASCII язык, используемый для описания подобных миров. Подобно HTML, это язык, не являющийся чьей-либо собственностью и его может использовать каждый совершенно свободно, он поддерживает использование текста, графики, анимации и звука и был принят за общий стандарт. VRML браузеры осуществляют рендеринг таких миров в реальном времени.

Общие советы по созданию файлов для VRML в Max R3.1

При создании 3д сцен для последующего экспорта в VRML вы всегда должны пользоваться следующими правилами:

Минимизация количества полигонов

VRML сцены не должны содержать больше 3000 полигонов, в противном случае могут возникнуть проблемы, и не только со скоростью загрузки. Техники, используемые для этого описаны ниже.

Анимация с использованием простейших трансформаций

Анимация простейших трансформаций (масштабирование, перемещение, вращение) занимает гораздо меньше места в файлах VRML чем анимация использующая координатную интерполяцию. При координатной интерполяции VRML экспортер вынужден просчитывать каждую вершину отдельно, что отнимает время и существенно увеличивает размер конечного файла. Координатная интерполяция используется при анимации с использованием spacewarps, taper, модификаторов bend и twist, а также при анимации с использованием стека модификаторов и параметров объекта.

Пользуйтесь исключительно материалами типов standard и multi/sub-object. Другие типы материалов (composite, morpher, raytrace) экспортироваться не будут.

Использование текстур увеличивает размер конечного файла, поэтому пользуйтесь текстурами небольшого размера и не злоупотребляйте ими.

Если вы используете только стандартное освещение Max, скорее всего объекты вашей сцены не будут достаточно освещены. Обычно бывает необходимо добавить дополнительные источники освещения и при этом учитывать возможные манипуляции и передвижения пользователя. Если вы используете несколько источников освещения — уменьшите у них параметр multiplier иначе сцена будет слишком яркой.

Обязательно используйте хотя бы одну камеру — она будет стартовой точкой вашего мира. При использовании нескольких камер вам будет предложен выбор — какую из них сделать стартовой. Все камеры сцены экспортируются в VRML файл и пользователь сможет легко переключаться между ними. Таким образом использование нескольких камер в разных точках сцены сделает ее более удобной для изучения. Имя камеры становится именем вьюпорта, поэтому давайте камерам разумные имена, чтобы пользователь знал, куда отправит его та или иная камера.

Перед экспортом в VRML необходимо прятать те полигоны, которые невозможно увидеть. Спрятанные полигоны (hidden faces) не будут экспортироваться, что позволит существенно сократить размер файла.

Используйте примитивы (sphere, cylinder, cone, box и т.д.) где только возможно. Конвертирование объекта в editable mesh увеличит размер файла даже при минимальных изменениях геометрии.

Основные шаги при создании VRML сцен

Ниже приведен наиболее выгодный порядок действий по созданию VRML сцен.

создание источников освещения и камер

присваивание объектам материалов и текстур

вставка вспомогательных VRML-объектов

использование барузера для тестирования файла

редактирование файла в текстовом редакторе (при необходимости)

Советы по созданию геометрии, камер и освещения а также материалов и анимации были даны выше, дальше мы рассмотрим собственно процесс экспорта и подготовку к нему.

Вставка вспомогательных VRML-объектов

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

Первый шаг является общим по созданию любого вспомогательного объекта (helper object):

Откройте панель Creation и выберите вкладку Helpers.

В выпадающем меню выберите VRML 97.

Выберите тип объекта (Anchor, AudioClip, Background и т.д.) нажав на соответствующую кнопку.

Во вьюпорте Max кликните мышкой, чтобы создать объект. Если вы не уверенны в своих действиях — создавайте объект в Top viewport.

Комментарии


Последние статьи: Графика / 3DS Max /

С развитием программ 3D-моделирования возникает потребность в увеличении ресурсов компьютера. Есть ли возможность сделать что-либо реалистичное на домашнем компьютере? Есть, но для этого придется потрудиться. подробнее

Как известно, в 3dsmax 4 появился новый объект — Editable Poly, познакомиться с некоторыми особенностями применения которого можно, прочитав статью. подробнее

Как вы уже могли убедиться, читая наши статьи, существует множество плагинов, помогающих создавать сцены с участием soft bodies («мягких тел»). О некоторых из них и пойдет речь ниже. подробнее

Появлению стильной PC — girl Bunny мы обязаны Andrew Hickinbottom , которому после просмотра The Incredibles пришла в голову идея создания сногсшибательной девушки в 3 d max. подробнее

Продукт компании Discreet — 3D Studio Max R3.1 обладает встроенным экспортером в VRML формат, который способен переводить MAX файлы в VRML. Этот экспортер поддерживает два VRML формата: VRML 97 и VRML 1.0. В этом уроке мы сосредоточимся на VRML 97 (это более новая версия) и разберемся в способах создания и экспорта файлов VRML в среде Max R3.1. подробнее

Vrml’97 структура файла единицы измерения оси

Язык VRML (Virtual Realty Modelling Languagy) предназначен для описания трехмерных изображений и оперирует объектами, описывающими геометрические фигуры и их расположение в пространстве.

Vrml-файл представляет собой обычный текстовый файл, интерпретируемый браузером. Поскольку большинство браузеров не имеет встроенных средств поддержки vrml, для просмотра Vrml-документов необходимо подключить вспомогательную программу — Vrml-браузер, например, Live3D или Cosmo Player.

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

Существует немало VRML-редакторов, делающих удобней и быстрее процесс создания Vrml-документов, однако несложные модели, рассматриваемые в данной статье, можно создать при помощи самого простого текстового редактора. Единицы измерения

В VRML приняты следующие единицы измерения:

  • Расстояние и размер: метры
  • Углы: радианы
  • Остальные значения: выражаются, как часть от 1.
  • Координаты берутся в трехмерной декартовой системе координат (см. рис.)

Как уже говорилось, Vrml-документ представляет собой обычный тестовый файл.

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

Такой заголовок обязательно должен находиться в первой строке файла, кроме того, перед знаком диеза не должно быть пробелов. Примитивы VRML

В VRML определены четыре базовые фигуры: куб (верней не куб, а прямоугольный параллепипед), сфера, цилиндр и конус.

Эти фигуры называются примитивами (primitives). Набор примитивов невелик, однако комбинируя их, можно строить достаточно сложные трехмерные изображения. Например, вот такие:

Рассмотрим поподробней каждый из примитивов.

Параметр у сферы только один, это radius.

Цвет фигуры, определяется с помощью объекта Material.

Параметры ambientColor, diffuseColor, specularColor и emissiveColor управляют цветами и указываются в палитре RGB (красный, зеленый и голубой), причем первая цифра определяет интенсивность красного цвета, вторая — зеленого, а третья — синего.

К примеру, синий кубик, может быть описан следующим образом:

Параметр transparency может принимать значения от 0 до1 и определяет степень прозрачности, причем максимальная прозрачность достигается при transparency равном единице. В приведенном примере описано два цилиндра разных размеров, меньший из которых просвечивает сквозь другой.

Для имитирования различных поверхностей в VRML существует объект Texture2.

В качестве текстуры легче всего использовать обычный графический файл, например, в GIF-формате. В таком случае для «натягивания» текстуры на трехмерное изображение нужно только указать путь к файлу в параметре filename объекта Texture2.

Параметры wrapS и wrapT могут принимать значения REPEAT или CLAMP, и управляют натягиванием текстуры по соответственно горизонтальной и вертикальной осям. Положение объектов в пространстве Изменение координат

По умолчанию любой описанный нами объект будет располагаться точно по центру окна браузера. По этой причине, если мы опишем к примеру два одинаковых цилиндра, они сольются друг с другом. Для того, чтобы изменить положение второго цилиндра, применим узел Translation.

Узел Translation определяет координаты объекта:

Вообще говоря, координаты указываемые в Translation не являются абсолютными. Фактически это координаты относительно предыдущего узла Translation. Чтобы прояснить это вопрос, рассмотрим пример:

Как видите, третий кубик вовсе не совпадает с первым, хотя в в узле Translation указаны те же координаты.

В VRML 1.0 принято следующее правило: узлы, модифицирующие свойства фигур (Translation, Material и т.п.), действуют на все далее описанные фигуры.

Чтобы ограничить область действия модифицирующих узлов, фигуры необходимо сгруппировать с помощью узла Separator.

Узел Separator работает как контейнер, он может содержать любые другие узлы, и основным его предназначением является именно ограничение области действия узлов типа Translation и Material.

Сравните следующий пример с предыдущим:

Хотя в примере описано три кубика, мы видим только два, так как второй и третий совпадают.

Вообще говоря рекомендуется всегда и везде использовать узел Separator. Он не только избавит от ошибок, связанных с относительностью координат, но и сделает VRML-код более простым и понятным.

Для вращения фигур вокруг осей координат применяется узел Rotation.

Первые три цифры определяет будет ли осуществлен поворот вокруг соответственно осей x, y и z, а четвертая задает угол вращения в радианах. В приведенном выше листинге поворот осуществляется вокруг оси y на 90 градусов.

Углы в градусах Радианы
30 0.52
45 0.78
60 1.04
90 1.57
180 3.14
270 4.71

Составим букву T из двух цилиндров. По умолчанию цилиндр ориентирован вертикально (см. рисунок). Поэтому для успешного выполнения задачи повернем его вокруг оси z на 90 градусов.

Узел Scale масштабирует фигуры по одному или нескольким измерениям. Три цифры, стоящие после параметра scaleFactor определяют коэффициенты масштабирования относительно осей x,y и z.

В следующем примере, узел Scale сжимает сферу по оси x, и из сферы получается эллипсоид.

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

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

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

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

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

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

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

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

Вместо заключения , хочется обратить Ваше внимание на две особенности VRML, незнание которых сильно затруднит создание VRML-документов вручную.

  1. Все описания узлов и параметров в VRML регистрозависимы. Если Вы используете буквы неправильного регистра — то VRML-браузер просто проигнорирует такое описание.
  2. В VRML имеет огромное значение порядок описания узлов. Так к примеру, описание и описание

дают совершенно разный результат.

Илон Маск рекомендует:  Что такое код swftext
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL