Vrml’97 введение


Содержание

Технология виртуальной реальности VRML

Понятие VRML

VRML, Virtual Reality Modeling Language — язык моделирования виртуальной реальности, стандартный формат файлов для демонстрации трёхмерной интерактивной векторной графики, чаще всего используется в веб-технологиях.

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

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

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

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

Формат VRML

VRML — это текстовый формат файлов, где, например, вершины и грани многогранников могут указываться вместе с цветом поверхности, текстурами, блеском, прозрачностью и так далее. URL могут быть связаны с графическими компонентами, таким образом, что веб-браузер может получать веб-страницу или новый VRML-файл из сети Интернет тогда, когда пользователь щёлкает по какому-либо графическому компоненту. Движение, звуки, освещение и другие аспекты виртуального мира могут появляться как реакция на действия пользователя или же на другие внешние события, например таймеры. Особый компонент Script Node позволяет добавлять программный код (например, Java или JavaScript (ECMAScript)) к VRML-файлу.

VRML-файлы обычно называются мирами и имеют расширение .wrl (например: island.wrl). Хотя VRML-миры используют текстовый формат они часто могут быть сжаты с использованием алгоритма компрессии gzip для того, чтобы их можно было передавать по сети за меньшее время. Большинство программ трёхмерного моделирования могут сохранять объекты и сцены в формате VRML.

Стандарты VRML

Для дальнейшей коллективной разработки формата был создан консорциум Web3D.

Первая версия VRML была выпущена в ноябре 1994 года. Эта версия была основана на API и файловом формате программной компоненты Open Inventor, изначально разработанной в SGI. Текущая и функционально завершенная версия — VRML97 (ISO/IEC 14772-1:1997). Сейчас VRML вытесняется форматом X3D (ISO/IEC 19775-1).

Появление, популярность и упадок

Понятие VRML было введено Дэйвом Раджеттом (Dave Raggett) в документе представленом на Первой Международной Конференции по Всемирной Паутине (1994 год) и впервые обсуждалось на WWW94 VRML BOF, учреждённой Тимом Бернерсом-Ли где Марк Песке (Mark Pesce) представил демо-программу Labirinth (“Лабиринт”), разработанную им совместно с Тони Паризи (Tony Parisi) и Питером Кеннардом (Peter Kennard).

VRML достиг вершины популярности после выхода VRML 2.0 в 1997 году, когда он стал использоваться на некоторых персональных страницах и сайтах, в основном для 3D-чатов. Формат поддерживался SGI Cosmo Software (основной костяк программистов этого подразделения находился в Москве и сейчас это компания Parallel Graphics). Когда в 1998 году SGI была реструктурирована это подразделение было продано Platinum Technologies, которое было затем куплено Computer Associates. Последняя не стала развивать и распространять программы для VRML. Пустота была заполнена различными недолговечными коммерческими 3D-web форматами, появившимися за последние несколько лет, включая Microsoft Chrome, Adobe Atmosphere и Shockwave 3D, ни один из этих форматов не поддерживается сегодня. Возможности VRML оставались прежними, тогда как возможности трёхмерной компьютерной графики, работающей в реальном времени росли. VRML Consortium сменил своё название на Web3D Consortium и начал работать над потомком VRML — X3D.

Хотя VRML ещё продолжает использоваться в некоторых областях, особенно в образовательной и исследовательской сфере, где наиболее ценятся открытые спецификации, можно сказать, что он вытеснен форматом X3D. MPEG-4 Interactive Profile (ISO/IEC 14496) был основан на VRML (теперь на X3D) и X3D, по большей части, обратно-совместим с ним. VRML также продолжает использоваться в качестве файлового формата для обмена 3D-моделями, особенно в САПР.

Альтернативы

3DMLW — Язык 3D-разметки для веб (англ. 3D Markup Language for Web)

COLLADA — управляется Khronos Group

O3D — разработан Google

U3D — стандарт Ecma International ECMA-363

Единицы измерения

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

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

Заголовок VRML-файла

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

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

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

Примитивы VRML

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

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

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

Возможные параметры: width — ширина, height — высота, depth — глубина. текст визуальной VRML-модели

Сфера

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

Конус

Возможные параметры: bottomRadius — радиус основания, height — высота, parts — определяет, какие части конуса будут видны. Параметр parts может принимать значения ALL, SIDES или BOTTOM. текст визуальной VRML-модели

Цилиндр

Для цилиндра можно задать параметры radius и height. Кроме того, с помощью параметра parts для цилиндра можно определить будут ли отображаться основания цилиндра и его боковая поверхность. Параметр parts может принимать значения ALL, SIDES, BOTTOM или TOP. текст визуальной VRML-модели

Цвет и текстура

Цвет фигуры, определяется с помощью объекта 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 имеет огромное значение порядок описания узлов. Так к примеру, описание

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

Ссылки

Определитель VRML плагинов и браузеров — показывает какие плагины у вас установлены

Cortona 3D — фирма, разрабатывающая ПО для VRML

Учебник по VRML 97

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

Пособие опирается на спецификацию VRML97, личный опыт автора, разнообразные англоязычные учебные материалы. В пособии рассматриваются инструменты (программы для создания 3D объектов, текстур, звука, программы для проверки и оптимизации VRML-кода, VRML-браузеры); структура файла; примитивы и управление положением объектов (Transform); объекты, строящиеся по набору вершин; наложение текстур; источники освещения; анимация.

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 по ключевым словам

Формат STL

Формат STL (от STereoLithography — название одного из популярных методов быстрого прототипирования) является стандартом для хранения мозаичных моделей. В рамках стандарта поддерживаются как текстовая (ASCII), так и бинарная версии файлов. В обоих случаях модель состоит из последовательных записей о треугольниках, каждый из которых определяется своей нормалью (три числа с плавающей точкой двойной точности) и координатами вершин (девять чисел с плавающей точкой двойной точности). Из плюсов такого представления можно отметить возможность разбиения STL-модели между любыми двумя треугольниками для независимой работы с ними, из недостатков — явную избыточность данных.

Формат VRML

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

Язык VRML впервые предложен Марком Песке (Mark Pesce) в 1993 г., а его первая спецификация (VRML 1.0) подготовлена на основе формата Open Inventor фирмы SGI и представлена на второй конференции WWW в октябре 1994 г. Дальнейшее развитие проходило уже не только на основе разработок фирмы SGI; к созданию формата подключились такие фирмы, как Sony Research, Mitra и многие другие. Во втором выпуске формата (VRML 2.0) его интерактивные возможности были значительно расширены. Стандарт VRML 2.0 поддерживает анимацию и звуковые эффекты; для него существует поддержка на уровне языков Java и JavaScript. VRML 2.0 был рассмотрен открытой дискуссионной группой и одобрен многими компаниями, а в августе 1996 г. был принят его стандарт. В декабре 1997 г. VRML 2.0 официально заменен на VRML 97. Новый стандарт практически идентичен спецификациям VRML 2.0 с учетом редакционных поправок и некоторых незначительных функциональных различий. Таким образом, текущим VRML-стандартом сегодня является VRML 97, а в работе находится новый формат — VRML 200x. Однако средства и методы представления 3D-графики в Интернет продолжают постоянно развиваться и уже не ограничиваются только языком VRML.

Blender для начинающих/VRML 97

— перейти к комбинациям клавиш.
— перейти к первому необязательному для изучения разделу.
— переход к следующей по курсу главе (порядок глав не совпадает с порядком глав по содержанию).
  1. Стандартные движки
    1. ОсновыОписание всего по немногу. После прочтения Вы сможете моделировать в Blender.
    2. МенюРазбирание меню. После изучения этой главы Вы будете быстрее ориентироваться в меню.
    3. МодификаторыОписание модификаторов. После прочтения данной главы Вы сможете плодотворно пользоваться модификаторами в Blender.
    4. Расширенная игровая логикаВ этой главе описывается игровая логика в BGE. В конце прочтения данной главы Вы будете владеть игровой логикой почти на профессиональном уровне.
    5. Ноды в Cycles RenderЗдесь рассказывается о нодах в Blender. В конце прочтения этой главы Вы будете уметь создавать несложные, но красивые материалы.
    6. Ноды в Blender RenderГлава посвящена нодам в старом рендере «Blender Render». После изучения главы Вы будете способны ориентироваться в нодах старого рендера на среднем уровне.
    7. АнимацияЭта часть книги дает сведения о создании анимации. После ее прочтения Вы сможете работать с анимацией в Blender.
    8. Пользовательские настройкиЗдесь повествуется о том, как настроить Blender под себя. В конце прочтения этой части книги Вы сможете изменить интерфейс под себя.
    9. Секреты BlenderТакие тонкости Blender, которые могут сделать работу в нем более комфортной. После изучения этой главы Вы сможете оптимизировать работу программы и работать с объектами на более высоком уровне.
  2. Blend4Web
    1. Blend4WebЗдесь рассказывается о настройке поведения объектов с помощью нодовой системы. Изучив главу, Вы будуте способны визуально программировать логику нодами.
  1. Рендеринг
    1. GameПримеры создания простых моделей для игр и самих игр, и материалов для игр. После изучения этой главы Вы будете способны создавать игры средней сложности.
    2. RenderПримеры использования движка Cycles Render с кратким описанием. В конце изучения этой главы Вы сможете быстрее разбираться в нодах.
  2. Игровая логика и программирование
    1. Game LogicПримеры настройки игровой логики в Blender. В конце прочтения этой главы Вы будете уметь создавать свою игровую логику.
    2. Python практикаРешение задач на Python с использованием Blender. После прочтения данной главы Вы приобретете навыки написания скриптов.

Старый Blender Содержит информацию о Blender 2.49. После прочтения данной части книги Вы сможете назвать основные плюсы и минусы Blender 2.49.

Blender & 3DsMax Сравнение Blender, 3DsMax, Sweet Home и Art Of Illusion. После прочтения этой главы Вы будете немного знать о различиях этих программ.

  1. PythonЭтот раздел посвящен языку программирования Python и его использованию в Blender. После ее прочтения Вы будете немного ориентироваться в написании скриптов в Blender.
  2. OSLЗдесь рассказывается о написании шейдеров на языке OSL.
  3. Немного об OpenGLЭтот раздел посвящен библиотеке OpenGL. Послее его прочтения Вы будуте способны программировать на OpenGL.
  4. Введение в GLSLНемного о языке шейдеров GLSL. После его прочтения Вы сможете читать простые программы на этом языке.
  5. Основы Web технологийЗдесь рассказывается о JS, Ajax и JSON. После изучения этого раздела Вы сможете легче ориентироваться в нодах, предназначенных для сети, в Blend4Web.
  1. Постобработка изображенийНемного о постобработки изображений. После прочтения этой главы книги Вы будете более осведомлены об эффектах, которые можно применять для изображений.


  1. MusicСписок песен и мелодий, которые могут помочь насладиться процессом работы в Blender.

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

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

Автоэнкодеры в Keras, Часть 1: Введение

Содержание

  • Часть 1: Введение
  • Часть 2: Manifold learning и скрытые (latent) переменные
  • Часть 3: Вариационные автоэнкодеры (VAE)
  • Часть 4: Conditional VAE
  • Часть 5: GAN (Generative Adversarial Networks) и tensorflow
  • Часть 6: VAE + GAN

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

Автоэнкодеры

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

Кому интересно, добро пожаловать под кат

Автоэнкодеры состоят из двух частей: энкодера и декодера . Энкодер переводит входной сигнал в его представление (код): , а декодер восстанавливает сигнал по его коду: .

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

При этом семейства функций энкодера и декодера как-то ограничены, чтобы автоэнкодер был вынужден отбирать наиболее важные свойства сигнала.

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

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

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

Keras

Keras — это очень удобная высокоуровневая библиотека для глубокого обучения, работающая поверх theano или tensorflow. В ее основе лежат слои, соединяя которые между собой, получаем модели. Созданные однажды модели и слои сохраняют в себе свои внутренние параметры, и потому, например, можно обучить слой в одной модели, а использовать его уже в другой, что очень удобно.

Модели keras легко сохранять/загружать, у них простой, но в тоже время глубоко настраиваемый процесс обучения; модели свободно встраиваются в tensorflow/theano код (как операции над тензорами).

В качестве данных будем использовать датасет рукописных цифр MNIST

Сжимающий автоэнкодер

Для начала создадим наиболее простой (сжимающий, undercomplete) автоэнкодер с кодом малой размерности из двух полносвязных слоев: енкодера и декодера.

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

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

Создадим и скомпилируем модель (под компиляцией в данном случае понимается построение графа вычислений обратного распространения ошибки)

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

Обучим теперь наш автоэнкодер

Функция отрисовки цифр

Закодируем несколько изображений и, ради интереса, взглянем на пример кода

Декодируем эти коды и сравним с оригиналами

Глубокий автоэнкодер

Никто не мешает нам сделать такой же автоэнкодер, но с большим числом слоев. В таком случае он сможет вычленять более сложные нелинейные закономерности


Посмотрим на summary нашей модели

Число параметров выросло более чем в 3 раза, посмотрим, справится ли новая модель лучше:

Видим, что лосс насыщается на значительно меньшей величине, да и циферки немного более приятные

Сверточный автоэнкодер

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

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

Denoising автоэнкодер

Автоэнкодеры можно обучить убирать шум из данных: для этого надо на вход подавать зашумленные данные и на выходе сравнивать с данными без шума:

где — зашумленные данные.

В Keras можно оборачивать произвольные операции из нижележащего фреймворка в Lambda слой. Обращаться к операциям из tensorflow или theano можно через модуль backend.

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

Цифры на зашумленных изображениях с трудом проглядываются, однако denoising autoencoder неплохо убрал шум и цифры стали вполне читаемыми.

Разреженный (Sparse) автоэнкодер

Разреженный автоэнкодер — это просто автоэнкодер, у которого в функцию потерь добавлен штраф за величины значений в коде, то есть автоэнкодер стремится минимизировать такую функцию ошибки:

— обычный регуляризатор (например L1):

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

Взглянем на коды

Посмотрим, можно ли как-то интерпретировать размерности в кодах.
Возьмем среднее из всех кодов, а потом по очереди каждую размерность в усредненном коде заменим на максимальное ее значение.

Какие-то черты проглядываются, но ничего толкового тут не видно.

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

Можно ли из кодов генерировать объекты по собственному желанию?

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

Полезные ссылки и литература

Этот пост основан на собственной интерпретации первой части поста создателя Keras Francois Chollet про автоэнкодеры в Keras.

А также главы про автоэнкодеры в Deep Learning Book.

Vrml’97 введение

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

Версий языка на данный момент три. Первая попытка сделать сеть трехмерной родила версию 1.0. Она является самой старой версией языка и уже практически не используется. Версия 2.0 появилась позже и имела намного большие возможности. Именно эту версию языка разработчики отправили на стандартизацию в ISO/IEC. После этого была разработана новая спецификация языка VRML97. Она мало отличается от 2.0 и содержит лишь небольшие изменения и поправки. Мы будем разбираться с VRML97 как со стандартом.

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

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

Национальный исследовательский университет высшая школа экономики

Название Национальный исследовательский университет высшая школа экономики
Дата публикации 26.05.2013
Размер 40.95 Kb.
Тип Техническое задание

skachate.ru > Информатика > Техническое задание

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

ВЫСШАЯ ШКОЛА ЭКОНОМИКИ

студента группы 172ПИ отделения Программной инженерии

Леонова Димитрия Сергеевича
Парсер подмножества VRML97 и визуализация сцены средствами C#/WPF

Техническое задание

Руководитель работы

_____________________ / Гринкруг Е.М./

«____»_______________________ 2012 г.

Исполнитель: студент группы 172 ПИ

___________________ /Леонов Д.С./

«____»_______________________ 2012 г.

Содержание

1.Основание для разработки 3

2.Назначение разработки 3

3.Требования к программе 3

3.1.Требования к функциональным характеристикам 3

3.1.1.Требования к выполняемым функциям 3

3.1.2.Требование к входным данным 3

3.1.3.Требования к выходным данным 3

3.2.Требования к надежности 3


3.3.Условия эксплуатации 4

3.4.Требования к составу и параметрам технических средств 4

3.5.Требования к информационной и программной совместимости 4

4.Требования к программной документации 4

5.Стадии и этапы разработки 5

6.Порядок контроля и приемки 6

Введение

Основание для разработки

Назначение разработки

Требования к программе

Требования к функциональным характеристикам

Требования к выполняемым функциям

Требование к входным данным

Требования к выходным данным

Требования к надежности

Условия эксплуатации

Требования к составу и параметрам технических средств

Процессор: Pentium 1 GHz или более с 512 MB RAM или более

Объем жесткого диска:

Архитектура x86 – 850 MB

Требования к информационной и программной совместимости

Для работы программы необходима ОС с установленным .Net Framework 4.0 или более поздней версии.

Входной файл должен соответствовать спецификации языка VRML97.

Инструменты, используемые в разработке:

  • Язык C# 4.0, для сборки используется среда разработки Microsoft Visual Studio 2010
  • Система для генерации документации по исходному коду Doxygen.

    Требования к программной документации

    Стадии и этапы разработки

    Разработка технического проекта

    Содержание работ:

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

    Утверждение технического проекта

    Содержание работ:

        • Разработка плана мероприятий по созданию программы.
        • Согласование и утверждение технического проекта.

    Разработка программы

    Содержание работ:

    • Программирование и отладка программы.

    Разработка программной документации

    Содержание работ:

    • Разработка программной документации

    Испытания программы

    Содержание работ:

    • Разработка, согласование и утверждение программы и методики испытаний.
    • Корректировка программы и программной документации по результатам испытаний.

      Экспортирование VRML97

      VRLM97 — это единственный формат VRLM, с помощью которого в 3ds max 5 можно экспортировать файлы сцен. В диалоговом окне VRML97 Exporter (Экспорт VRML97), показанном на рис. 3.13, представлено множество параметров для генерации различных элементов, например Normals (Нормали), Primitives (Примитивы), Color per Vertex (Цвет вершины), Coordinate Interpolators (Интерполяция координат) и Flip-Book (Обратная книга).

      В раскрывающемся списке Initial View (Исходный вид) можно выбрать камеру, с позиции которой отобразится сцена файла при первой загрузке в броузер. Многие VRML-броузеры поддерживают несколько точек вида. При просмотре VRML-файла в броузере каждая камера сцены становится отдельной точкой вида. По умолчанию скрытые объекты сцены не экспортируются, поэтому, если их нужно экспортировать, установите флажок Export Hidden Objects (Экспортировать скрытые объекты). Установленный флажок Show Progress Bar позволяет отображать панель процесса экспортирования файла.

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

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

      Параметр Color per Vertex экспортирует все цвета вершин, определенные в сцене. В разделе Vertex Color Source (Источник цвета вершины) можно установить переключатель Use MAX’S (Использовать установки МАХ) или Calculate on Export (Рассчитать при экспорте). В последнем случае цвета вершин определяются, исходя из освещения сцены. Кроме этого, устанавливая точность расчетов в раскрывающемся списке Digits of Precision, можно выбрать количество учитываемых десятичных знаков.

      По умолчанию все файлы текстур должны находиться в той же папке, что и .WRL-файл. Параметр Use Prefix (Использовать префикс) позволяет указать отдельную папку, в которой хранятся файлы текстур экспортируемой сцены.

      Установка флажка Coordinate Interpolators приводит к экспортированию эффектов анимации, созданных модификаторами и средствами искривления пространства. Параметр Flip-Book экспортирует VRML-сцены в виде нескольких файлов. Щелчок на кнопке Sample Rates (Скорость прокрутки) открывает диалоговое окно Animation Sample Rates (Скорости прокрутки анимации), показанное на рис. 3.13. С его помощью можно определить разные скорости в разделах Transform Controllers, Coordinate Interpolators и Flip-Book.

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