Меню
Разработки
Разработки  /  Информатика  /  Разное  /  Материал по информатике "Возможно языка VRML"

Материал по информатике "Возможно языка VRML"

VRML - язык моделирования виртуальной реальности. В отличие от языка HTML - стандарта представления двухмерных документов в Web, VRML - разрабатывающийся стандарт для моделирования в web трехмерных объектов.
10.02.2015

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

ВВЕДЕНИЕ

В настоящее время в сети Интернет всё чаще используются разнообразные графические изображения с целью привлечения внимания пользователей сети. Кроме того стремительно растет число адресов (сайтов), где информация представлена в трехмерном виде. Это стало возможным благодаря формату VRML (Virtual Reality Modelling Language). Пока они лишь дополняют HTML - страницы и существуют достаточно обособленно. Однако уже разрабатывается проект трехмерного построения киберпространства - Cyberspace.

VRML - язык моделирования виртуальной реальности. В отличие от языка HTML - стандарта представления двухмерных документов в Web, VRML - разрабатывающийся стандарт для моделирования в web трехмерных объектов.

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

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

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

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

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

Объект исследования: язык моделирования виртуальной реальности.

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

Цель: рассмотреть особенности создания трехмерных объектов с помощью языка VRML.

Задачи исследования:

Изучить и проанализировать литературу по теме исследования.

Изучить теоретические основы трехмерной компьютерной графики.

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

Подготовить образцы виртуального мира.

Методы исследования: анализ и изучение литературы, анализ, синтез, моделирование, классификация.

Глава I. Теоретические основы трехмерной компьютерной графики

Понятие трехмерной графики

Трёхмерная графика - 3D (от англ.  3 Dimensions — «3 измерения») Graphics, Три измерения изображения — раздел компьютерной графики, совокупности приемов и инструментов (как программных, так и аппаратных), предназначенных для изображения объёмных объектов[4].

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

3D моделирование — это процесс создания трехмерной модели объекта. Задача 3D моделирования — разработать визуальный объемный образ желаемого объекта. С помощью трехмерной графики можно и создать точную копию конкретного предмета, и разработать новое, даже нереальное представление до этого момента не существовавшего объекта[2].

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

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

Трёхмерная графика обычно имеет дело с виртуальным, воображаемым трёхмерным пространством, которое отображается на плоской, двухмерной поверхности дисплея или листа бумаги. В настоящее время известно несколько способов отображения трехмерной информации в объемном виде, хотя большинство из них представляет объёмные характеристики весьма условно, поскольку работают со стереоизображением. Из этой области можно отметить стереоочки, виртуальные шлемы, 3D - дисплеи, способные демонстрировать трехмерное изображение. Несколько производителей продемонстрировали готовые к серийному производству трёхмерные дисплеи. Однако и 3D - дисплеи по - прежнему не позволяют создавать полноценной физической, осязаемой копии математической модели, создаваемой методами трехмерной графики. Развивающиеся с 1990 - х годов технологии быстрого прототипирования ликвидируют этот пробел. Следует заметить, что в технологиях быстрого прототипирования используется представление математической модели объекта в виде твердого тела (воксельная модель).

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

Autodesk 3ds Max

Autodesk Maya

Autodesk Softimage

Cinema 4D

Houdini

Modo

LightWave 3D

Caligari Truespace[16].

Кроме того, существуют и открытые продукты, распространяемые свободно, например, пакет Blender (позволяет создавать 3D модели c последующим рендерингом), K - 3D и Wings3D.

Бесплатная программа SketchUp от Google позволяет создавать модели, совместимые с географическими ландшафтами ресурса Google Планета Земля, а также просматривать в интерактивном режиме на компьютере пользователя несколько тысяч архитектурных моделей, которые выложены на бесплатном постоянно пополняемом ресурсе Google Cities in Development (выдающиеся здания мира), созданные сообществом пользователей.

Есть ряд программных библиотек для визуализации трёхмерной графики в прикладных программах — DirectX, OpenGL и другие.

Есть ряд подходов по представлению 3D - графики в играх — полное 3D, псевдо - 3D

Создание трехмерного изображения

Трехмерная графика нашла широкое применение в таких областях, как научные расчеты, инженерное проектирование, компьютерное моделирование физических объектов. В качестве примера рассмотрим наиболее сложный вариант трехмерного моделирования – создание подвижного изображения реального физического тела[5]. В упрощенном виде для пространственного моделирования объекта требуется:

спроектировать и создать виртуальный каркас (“скелет”) объекта, наиболее полно соответствующий его реальной форме;

спроектировать и создать виртуальные материалы, по физическим свойствам визуализации похожие на реальные;

присвоить материалы различным частям поверхности объекта (на профессиональном жаргоне – “спроектировать текстуры на объект”);

настроить физические параметры пространства, в котором будет действовать объект, – задать освещение, гравитацию, свойства атмосферы, свойства взаимодействующих объектов и поверхностей;

задать траектории движения объектов;

рассчитать результирующую последовательность кадров;

наложить поверхностные эффекты на итоговый анимационный ролик.

Для создания реалистичной модели объекта используют геометрические примитивы (прямоугольник, куб, шар, конус и прочие) и гладкие, так называемые сплайновые поверхности. В последнем случае применяют чаще всего метод бикубических рациональных В - сплайнов на неравномерной сетке (NURBS)[8]. Вид поверхности при этом определяется расположенной в пространстве сеткой опорных точек. Каждой точке присваивается коэффициент, величина которого определяет степень ее влияния на часть поверхности, проходящей вблизи точки. От взаимного расположения точек и величины коэффициентов зависит форма и “гладкость” поверхности в целом.

После формирования “скелета” объекта необходимо покрыть его поверхность материалами. Все многообразие свойств в компьютерном моделировании сводится к визуализации поверхности, то есть к расчету коэффициента прозрачности поверхности и угла преломления лучей света на границе материала и окружающего пространства. Закраска поверхностей осуществляется методами Гуро (Gouraud) или Фонга (Phong). В первом случае цвет примитива рассчитывается лишь в его вершинах, а затем линейно интерполируется по поверхности. Во втором случае строится нормаль к объекту в целом, ее вектор интерполируется по поверхности составляющих примитивов и освещение рассчитывается для каждой точки. Свет, уходящий с поверхности в конкретной точке в сторону наблюдателя, представляет собой сумму компонентов, умноженных на коэффициент, связанный с материалом и цветом поверхности в данной точке. К таковым компонентам относятся: свет, пришедший с обратной стороны поверхности, то есть преломленный свет (Refracted); свет, равномерно рассеиваемый поверхностью (Diffuse); зеркально отраженный свет (Reflected); блики, то есть отраженный свет источников (Specular); собственное свечение поверхности (Self Illumination)[1].

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

После завершения конструирования и визуализации объекта приступают к его “оживлению”, то есть заданию параметров движения. Компьютерная анимация базируется на ключевых кадрах. В первом кадре объект выставляется в исходное положение. Через определенный промежуток (например, в восьмом кадре) задается новое положение объекта и так далее до конечного положения. Промежуточные значения вычисляет программа по специальному алгоритму. При этом происходит не просто линейная аппроксимация, а плавное изменение положения опорных точек объекта в соответствии с заданными условиями. Эти условия определяются иерархией объектов (то есть законами их взаимодействия между собой), разрешенными плоскостями движения, предельными углами поворотов, величинами ускорений и скоростей. Такой подход называют методом инверсной кинематики движения. Он хорошо работает при моделировании механических устройств. В случае с имитацией живых объектов используют так называемые скелетные модели. То есть, создается некий каркас, подвижный в точках, характерных для моделируемого объекта. Движения точек просчитываются предыдущим методом. Затем на каркас накладывается оболочка, состоящая из смоделированных поверхностей, для которых каркас является набором контрольных точек, то есть создается каркасная модель. Каркасная модель визуализуется наложением поверхностных текстур с учетом условий освещения. В ходе перемещения объекта получается весьма правдоподобная имитация движений живых существ. Наиболее совершенный метод анимации заключается в фиксации реальных движений физического объекта. Например, на человеке закрепляют в контрольных точках яркие источники света и снимают заданное движение на видео - или кинопленку. Затем координаты точек по кадрам переводят с пленки в компьютер и присваивают соответствующим опорным точкам каркасной модели. В результате движения имитируемого объекта практически неотличимы от живого прототипа[6].

Процесс расчета реалистичных изображений называют рендерингом (визуализацией). Большинство современных программ рендеринга основаны на методе обратной трассировки лучей (Backway Ray Tracing). Применение сложных математических моделей позволяет имитировать такие физические эффекты, как взрывы, дождь, огонь, дым, туман. По завершении рендеринга компьютерную трехмерную анимацию используют либо как самостоятельный продукт, либо в качестве отдельных частей или кадров готового продукта.

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

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

65








СОДЕРЖАНИЕ


Введение………………………………………………………………………..…3

Глава I. Теоретические основы трехмерной компьютерной графики…………………………………………………………………………....5

  1. Понятие трехмерной графики…………………………………………5

  2. Создание трехмерного изображения ………………………………....7

  3. Характеристика форматов файлов трехмерных изображений…………………………………………………………..10

Глава II. Применение языка VRML для создания трехмерных изображений…………………………………………………………………...15

  1. Понятие о языке моделирования виртуальной реальности…………………………………………………………….15

  2. Создание и редактирование примитивов…………………………...18

  3. Положение объектов в пространстве………………………………..21

  4. Использование цвета, текстур, освещения………………………….23

  5. Работа с текстом………………………………………………………31

Заключение……………………………………………………………………..41

Список использованной литературы………………………………..43

Приложение 1. Образцы трехмерных сцен…………………………………...45

















ВВЕДЕНИЕ

В настоящее время в сети Интернет всё чаще используются разнообразные графические изображения с целью привлечения внимания пользователей сети. Кроме того  стремительно растет число адресов (сайтов), где информация представлена в трехмерном виде. Это стало возможным благодаря формату VRML (Virtual Reality Modelling Language). Пока они лишь дополняют HTML-страницы и существуют достаточно обособленно. Однако уже разрабатывается проект трехмерного построения киберпространства - Cyberspace.

VRML - язык моделирования виртуальной реальности. В отличие от языка HTML - стандарта представления двухмерных документов в Web, VRML - разрабатывающийся стандарт для моделирования в web трехмерных объектов.

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

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

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

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

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

Объект исследования: язык моделирования виртуальной реальности.

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

Цель: рассмотреть особенности создания трехмерных объектов с помощью языка VRML.

Задачи исследования:

  1. Изучить и проанализировать литературу по теме исследования.

  2. Изучить теоретические основы трехмерной компьютерной графики.

  3. Изучить возможности языка VRML для создания трехмерных объектов.

  4. Подготовить образцы виртуального мира.

Методы исследования: анализ и изучение литературы, анализ, синтез, моделирование, классификация.





Глава I. Теоретические основы трехмерной компьютерной графики


  1. Понятие трехмерной графики


Трёхмерная графика  - 3D (от англ. 3 Dimensions — «3 измерения») Graphics, Три измерения изображения — раздел компьютерной графики, совокупности приемов и инструментов (как программных, так и аппаратных), предназначенных для изображения объёмных объектов[4].

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

3D моделирование — это процесс создания трехмерной модели объекта. Задача 3D моделирования — разработать визуальный объемный образ желаемого объекта. С помощью трехмерной графики можно и создать точную копию конкретного предмета, и разработать новое, даже нереальное представление до этого момента не существовавшего объекта[2].

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

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

Трёхмерная графика обычно имеет дело с виртуальным, воображаемым трёхмерным пространством, которое отображается на плоской, двухмерной поверхности дисплея или листа бумаги. В настоящее время известно несколько способов отображения трехмерной информации в объемном виде, хотя большинство из них представляет объёмные характеристики весьма условно, поскольку работают со стереоизображением. Из этой области можно отметить стереоочки, виртуальные шлемы, 3D-дисплеи, способные демонстрировать трехмерное изображение. Несколько производителей продемонстрировали готовые к серийному производству трёхмерные дисплеи. Однако и 3D-дисплеи по-прежнему не позволяют создавать полноценной физической, осязаемой копии математической модели, создаваемой методами трехмерной графики. Развивающиеся с 1990-х годов технологии быстрого прототипирования ликвидируют этот пробел. Следует заметить, что в технологиях быстрого прототипирования используется представление математической модели объекта в виде твердого тела (воксельная модель).

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

  • Autodesk 3ds Max

  • Autodesk Maya

  • Autodesk Softimage

  • Cinema 4D

  • Houdini

  • Modo

  • LightWave 3D

  • Caligari Truespace[16].

Кроме того, существуют и открытые продукты, распространяемые свободно, например, пакет Blender (позволяет создавать 3D модели c последующим рендерингом), K-3D и Wings3D.

Бесплатная программа SketchUp от Google позволяет создавать модели, совместимые с географическими ландшафтами ресурса Google Планета Земля, а также просматривать в интерактивном режиме на компьютере пользователя несколько тысяч архитектурных моделей, которые выложены на бесплатном постоянно пополняемом ресурсе Google Cities in Development (выдающиеся здания мира), созданные сообществом пользователей.

Есть ряд программных библиотек для визуализации трёхмерной графики в прикладных программах — DirectX, OpenGL и другие.

Есть ряд подходов по представлению 3D-графики в играх — полное 3D, псевдо-3D



  1. Создание трехмерного изображения


Трехмерная графика нашла широкое применение в таких областях, как научные расчеты, инженерное проектирование, компьютерное моделирование физических объектов. В качестве примера рассмотрим наиболее сложный вариант трехмерного моделирования – создание подвижного изображения реального физического тела[5]. В упрощенном виде для пространственного моделирования объекта требуется:

  • спроектировать и создать виртуальный каркас (“скелет”) объекта, наиболее полно соответствующий его реальной форме;  

  • спроектировать и создать виртуальные материалы, по физическим свойствам визуализации похожие на реальные;

  • присвоить материалы различным частям поверхности объекта (на профессиональном жаргоне – “спроектировать текстуры на объект”);  

  • настроить физические параметры пространства, в котором будет действовать объект, – задать освещение, гравитацию, свойства атмосферы, свойства взаимодействующих объектов и поверхностей;  

  • задать траектории движения объектов;  

  • рассчитать результирующую последовательность кадров;  

  • наложить поверхностные эффекты на итоговый анимационный ролик.

Для создания реалистичной модели объекта используют геометрические примитивы (прямоугольник, куб, шар, конус и прочие) и гладкие, так называемые сплайновые поверхности. В последнем случае применяют чаще всего метод бикубических рациональных В-сплайнов на неравномерной сетке (NURBS)[8]. Вид поверхности при этом определяется расположенной в пространстве сеткой опорных точек. Каждой точке присваивается коэффициент, величина которого определяет степень ее влияния на часть поверхности, проходящей вблизи точки. От взаимного расположения точек и величины коэффициентов зависит форма и “гладкость” поверхности в целом.

После формирования “скелета” объекта необходимо покрыть его поверхность материалами. Все многообразие свойств в компьютерном моделировании сводится к визуализации поверхности, то есть к расчету коэффициента прозрачности поверхности и угла преломления лучей света на границе материала и окружающего пространства. Закраска поверхностей осуществляется методами Гуро (Gouraud) или Фонга (Phong). В первом случае цвет примитива рассчитывается лишь в его вершинах, а затем линейно интерполируется по поверхности. Во втором случае строится нормаль к объекту в целом, ее вектор интерполируется по поверхности составляющих примитивов и освещение рассчитывается для каждой точки. Свет, уходящий с поверхности в конкретной точке в сторону наблюдателя, представляет собой сумму компонентов, умноженных на коэффициент, связанный с материалом и цветом поверхности в данной точке. К таковым компонентам относятся:  свет, пришедший с обратной стороны поверхности, то есть преломленный свет (Refracted);  свет, равномерно рассеиваемый поверхностью (Diffuse);  зеркально отраженный свет (Reflected);  блики, то есть отраженный свет источников (Specular);  собственное свечение поверхности (Self Illumination)[1].

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

После завершения конструирования и визуализации объекта приступают к его “оживлению”, то есть заданию параметров движения. Компьютерная анимация базируется на ключевых кадрах. В первом кадре объект выставляется в исходное положение. Через определенный промежуток (например, в восьмом кадре) задается новое положение объекта и так далее до конечного положения. Промежуточные значения вычисляет программа по специальному алгоритму. При этом происходит не просто линейная аппроксимация, а плавное изменение положения опорных точек объекта в соответствии с заданными условиями. Эти условия определяются иерархией объектов (то есть законами их взаимодействия между собой), разрешенными плоскостями движения, предельными углами поворотов, величинами ускорений и скоростей. Такой подход называют методом инверсной кинематики движения. Он хорошо работает при моделировании механических устройств. В случае с имитацией живых объектов используют так называемые скелетные модели. То есть, создается некий каркас, подвижный в точках, характерных для моделируемого объекта. Движения точек просчитываются предыдущим методом. Затем на каркас накладывается оболочка, состоящая из смоделированных поверхностей, для которых каркас является набором контрольных точек, то есть создается каркасная модель. Каркасная модель визуализуется наложением поверхностных текстур с учетом условий освещения. В ходе перемещения объекта получается весьма правдоподобная имитация движений живых существ. Наиболее совершенный метод анимации заключается в фиксации реальных движений физического объекта. Например, на человеке закрепляют в контрольных точках яркие источники света и снимают заданное движение на видео- или кинопленку. Затем координаты точек по кадрам переводят с пленки в компьютер и присваивают соответствующим опорным точкам каркасной модели. В результате движения имитируемого объекта практически неотличимы от живого прототипа[6].

Процесс расчета реалистичных изображений называют рендерингом (визуализацией). Большинство современных программ рендеринга основаны на методе обратной трассировки лучей (Backway Ray Tracing). Применение сложных математических моделей позволяет имитировать такие физические эффекты, как взрывы, дождь, огонь, дым, туман. По завершении рендеринга компьютерную трехмерную анимацию используют либо как самостоятельный продукт, либо в качестве отдельных частей или кадров готового продукта.


  1. Характеристика форматов файлов трехмерных изображений


Формат файла, также его называют тип файла — это информация о файле для компьютера. Благодаря этой информации, компьютер приблизительно знает, что находится внутри файла и «понимает», в какой программе его открыть[11].

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

Ниже представлены популярные форматы файлов трехмерных изображений.

1. Файлы с расширением .wrl обычно ассоциируются с языком виртуальной реальности Virtual Reality Modeling и содержат файлы привязки. В них также могут фиксироваться координаты и цвета, определяющие объекты и формы в виртуальном мире наряду с точками зрения и визуализируемыми 3D -элементами. Файлы WRL представлены в текстовом формате на базе UTF8. Многие программы по моделированию сохраняют файлы с расширением .wrl. Расширение .wrl также применяется при работе с плагинами Netscape Live3D и файлами привязки Cosmo Player.

2. Файлы с расширением .3ds чаще всего связаны с программой Autodesk 3D Studio. Задействованные в ней файлы 3DS содержат различные данные, необходимые для разработки трехмерной сцены, например, координаты и перечень полигонов, формирующие объекты, а также сведения о цветовой гамме и т.д. Файлы 3DS хранятся в двоичном формате, что позволяет ускорить процесс загрузки файлов и уменьшить их размер относительно объемов текстовых файлов аналогичного типа. Файлы 3DS обычно используются для передачи 3D-моделей между различными 3D приложениями. Постепенно формат 3DS был заменен более новым форматом MAX, созданным для программы 3DS Max.

3. Файлы с расширением .stp обычно представляют собой файлы 3D-сборки в формате обмена данными о модели изделия. В файлах STP содержатся данные о трёхмерных объектах, поддерживаемых различными программами проектирования механических конструкций. Файлы с расширением .stp обычно хранятся в текстовом формате UTF8 с протоколами приложений STEP ISO. Эти файлы часто используются для обмена данными в формате 3D между системами САПР. Файлы формата STP также используются программой Adobe Acrobat Exchange для поддержки плагинов, позволяющих получать доступ к дополнительным функции приложения.

4. Файлы с расширением .fx обычно ассоциируются с программой Microsoft DirectX, являющейся приложением коллекции интерфейсов. Такие файлы FX являются файлами спецэффектов, созданными 3D компонентами Microsoft DirectX, и содержат простые текстовые эффекты, настройки соответствующего файла и определяют текстуру, тень, фильтры, подсветку и другие 3D эффекты. Программа FastLynx также использует расширение .fx при работе с файлами, содержащими онлайн-инструкции.

5. Файлы с расширением .egg обычно ассоциируются с программой Panda 3D. Эта программа – 3D опытный двигатель, наиболее часто используемый в проектах по усовершенствованию игр. В данном случае файлы EGG определяют трансформации 3D моделей. Panda3D была создана компанией Disney, которая до сих пор разрабатывает одноименные игры. Программа Wer Wird Millionaer использует расширение .egg в файлах, содержащих данные файлов экрана. EFF Solution 360RealTour также обращается к расширению .egg. Эта программа популярна среди агентов по продаже недвижимости, которые привыкли демонстрировать видео-презентации товара с панорамой в 360 градусов. Файлы EGG, созданные в этом приложении, содержат файлы кругового обзора.

6. Файлы с расширением .obj содержат файлы 3D объектов, созданных с помощью компьютерной программы для рисования. Подобные файлы могут содержать карты текстур, 3D координаты и другие сведения о 3D-объектах. Формат OBJ применяется в самых разнообразных приложениях, разрабатывающих 3D-графику, в частности в Microsoft Visual Studio и CADRazor. Помимо этого, суффикс .оbj используется при работе с файлами объектов компьютерной науки. Такие файлы содержат набор последовательностей - инструкции, позволяющие хост-компьютеру правильно выполнять поставленные задачи. В данном случае файлы OBJ могут сопровождаться соответствующими файлами метаданных. Файлы OBJ создаются также несколькими компиляторами для Windows, например. C и C++ . В результате обработки исходного кода файла появляется файл с расширением .obj. Когда все файлы исходного кода скомпилированны в файлы OBJ, они связываются друг с другом для формирования файла EXE или DLL.

7. Файлы с расширением .dae обычно ассоциируются с графическими файлами COLLADA 3D. Они дают пользователям возможность передавать графические файлы в формате 3D при помощи разных графических приложений. Файлы формата DAE работают на основе XML схемы COLLADA, которая интегрирует различные авторские инструментальные средства[19].

Таким образом, изучения теоритических основ трехмерной графики были изучены понятия трехмерной графики, 3D моделирования, где применяется трехмерная графика, программные пакеты, позволяющую создать трёхмерную модель. Познакомились с технологией создания трёхмерного изображения, с характеристиками форматов файлов. Следовательно, были изучены теоритические основы трехмерной графики.

Таким образом, трехмерная графика - это 3D (от англ. 3 Dimensions — «3 измерения») Graphics, Три измерения изображения — раздел компьютерной графики, совокупности приемов и инструментов (как программных, так и аппаратных), предназначенных для изображения объёмных объектов. При создании трехмерного изображения следует придерживаться следующих шагов: спроектировать и создать виртуальный каркас (“скелет”) объекта, наиболее полно соответствующий его реальной форме; спроектировать и создать виртуальные материалы, по физическим свойствам визуализации похожие на реальные; присвоить материалы различным частям поверхности объекта (на профессиональном жаргоне – “спроектировать текстуры на объект”);  настроить физические параметры пространства, в котором будет действовать объект, – задать освещение, гравитацию, свойства атмосферы, свойства взаимодействующих объектов и поверхностей;  задать траектории движения объектов; рассчитать результирующую последовательность кадров; наложить поверхностные эффекты на итоговый анимационный ролик. При сохранении трехмерного изображения используют следующие наиболее популярные форматы: .wrl, .3ds, .stp, .fx, .egg, .obj, .dae.



























Глава II. Применение языка VRML для создания трехмерных изображений





  1. Понятие о языке моделирования виртуальной реальности



Технология VRML (Virtual Reality Modeling Language - язык моделирования виртуальной реальности) представляет собой открытый стандарт виртуальной реальности в сети Internet. Виртуальная реальность - это созданная компьютером среда ("мир", "окружение"), которая доступна пользователю и может включать в себя трехмерную графику, объемный звук и т.д.. [2]. VRML можно использовать для создания миров, программирования компьютерных игр и объемного представления информации. VRML является открытым стандартом, поэтому каждый пользователь может использовать язык VRML для написания программ и создания собственного виртуального мира, не делая при этом никаких лицензионных отчислений.

VRML часто неявно считается некоторым дополнением к HTML, позволяющим создавать на web-страницах трехмерные виртуальные миры. Исторически такая точка зрения справедлива, поскольку именно в Интернете планировалось разместить первые VRML-миры. В то же время, VRML есть вполне самостоятельный язык описания объемных объектов, который может использоваться вне Сети. В частности, большинство программ трехмерного моделирования могут сохранять объекты и сцены в формате VRML; особенно часто это применяется в САПР. Первоначально две последние буквы в названии предлагалось, как и у HTML, расшифровывать Markup Language, т.е. язык разметки. Но довольно быстро расшифровка была заменена на действующую сейчас, лишний раз подтверждая тот факт, что трехмерное моделирование и разметка текста — вещи существенно разные.

Используя файлы текстового формата, язык VRML позволяет описать не только геометрические свойства объектов в трехмерном пространстве, например, расположение и форму сложных поверхностей и многогранников, но и физические данные об их цвете, текстуре, блеске, прозрачности, источниках освещения и так далее. Как и в HTML, графические 3D-компоненты можно связать с другими web-страницами или новыми VRML-файлами Сети. Кроме того, в качестве реакции на действия пользователя или другие внешние события, например таймеры, могут появляться движение, звуки, освещение и другие аспекты виртуального мира. Особый компонент Script Node позволяет добавлять программный код (например, Java или JavaScript) [20].

VRML-файл обычно принято называть миром (world), поэтому он имеет расширение wrl, например, city.wrl. Виртуальные миры способны выглядеть весьма впечатляюще.

История развития технологии VRML следующая. Во время первой конференции по WWW в 1994 году была организована секция по проблемам виртуальной реальности. На ней Марк Песке предложил черновики, посвященные языку VRML. К работе над стандартом подключились ученые Гэлвин Бел и Энтони Паризи, которые разработали стандарт VRML версии 1.0.

В 1996 году группа по архитектуре VRML представила новую версию языка - VRML 2.0, которая была обновлена более 50 фирмами (Silicon Graphics, Sun Microsystem, Apple, IBM Japan, Microsoft и другие). С 1997 года VRML 2.0 находится в серийной эксплуатации[18].

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

- Автоматизированное проектирование;

- Научное моделирование;

- Программирование компьютерных игрушек;

- Визуализация данных;

- Распределенный многопользовательской среде;

- Специальные программы;

- Интерфейс;

- Финансовые приложения;

- Маркетинг и реклама продукции;

- Образование;

- Развлечения.

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

Чтобы работать с VRML, не нужно никакого специального аппаратурного и программного обеспечения. Для загрузки виртуальных миров с удаленных компьютеров необходимо подключение к Internet. В то же время, чтобы «погрузиться» в виртуальную реальность, файлы которой находятся на жестком диске пользователя, не нужно никакого соединения с Internet.

Для работы с VRML можно использовать различные виды программного обеспечения:

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

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

Порядок создания VRML-файла:

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

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

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

  4. Просмотреть документ в любой программе для визуализации VRML-файлов.


  1. Создание и редактирование примитивов


Формами VRML называют объекты, из которых строятся виртуальные миры, т.е. формы – это основные строительные блоки языка VRML.

Примитивные формы – это стандартные примитивные трехмерные объекты. В VRML определены четыре базовые фигуры: прямоугольный параллепипед (куб), сфера, цилиндр и конус. Эти фигуры называются примитивами (primitives). Комбинируя работу с данными примитивами, можно строить достаточно сложные трехмерные изображения[15].

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

Любой объект в VRML имеет набор уникальных параметров отличающих данный объект от других таких же. Такие параметры объектов называются полями (field) узлов. У каждого узла в VRML существует определенный набор полей. Каждое поле имеет свой тип и значение по умолчанию. Обычно поля записывают строчными буквами.

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

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

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

#VRML V2.0 utf8

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

Пример кода:

#VRML V2.0 utf8

Shaрe {

appearance Appearance {

material Material {}}

geometry …}

        1. В VRML приняты следующие единицы измерения:
  • Расстояние и размер: метры

  • Углы: радианы

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

  • Координаты берутся в трехмерной декартовой системе координат (см. рис.)

Рис. 1. Координатная плоскость

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

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

Куб (Box)

Параметры – size – размеры ширина, высота, длина.

Пример: …Box {size 2 3 5} или Box {2.3 1.5 3.5 }

Сфера (Sphere)

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

Пример: …Sphere { radius 1 }

Конус (Cone)

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

Cone { parts ALL #отображаемые поверхности

bottomRadius 1 #радиус основания

height 2 #высота

}

Цилиндр(Cylinder)

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

Cylinder {

parts ALL #видны все части цилиндра

radius 1 #радиус основания

height 2 #высота цилиндра

        1. }

Все описания узлов и параметров в VRML регистрозависимы. Если Вы используете буквы неправильного регистра - то VRML-браузер просто проигнорирует такое описание.

  1. Положение объектов в пространстве



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

Компонентами VRML миров являются формы. Все формы строятся в какой-либо системе координат, начало которой можно назвать "центром VRML мира".

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

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

Transform {
translation . . .
rotation . . .
scale . . .
children [ . . . ]
}

Поле children определяет список форм (т.е. примитивов), которые будут строиться в новой системе координат.

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

Transform {
# X Y Z
translation 2.0 0.0 0.0
children [ . . . ]
}

В описанном выше примере осуществляется сдвиг системы координат по оси Х на 2 метра.

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

Таблица 1. Определение углов

Углы в градусах

Радианы

30

0.52

45

0.78

60

1.04

90

1.57

180

3.14

270

4.71



Transform {
# X Y Z поворот
rotation 0.0 0.0 1.0 0.52
children [ . . . ] }

В описанном выше примере поворот осуществляется вокруг оси Z на угол, равный 0,52 радиан.

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

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

Transform {
# X Y Z
scale 0.5 0.5 0.5
children [ . . . ] }

В описанном примере осуществляется уменьшение системы координат по всем трем осям в половину раза.

Для трансформации объектов можно использовать все указанные поля.



  1. Использование цвета, текстур, освещения


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

· геометрию формы (поле geometry) - форму или структуру

· внешний вид форм (поле appereance) - цвет и текстуру

Shape { appearance Appearance { material . . . } geometry . . . }

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

…Appereance { material ... texture ... }

Значения полей могут быть не определены, но если какое-либо поле

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

Material {

diffuseColor . . .

emissiveColor . . .

transparency. . . }

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

· diffuseColor - цвет отраженного света

· emissiveColor - цвет излучаемого света

· transparency - прозрачность

· другие свойства материала

Цвет в 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

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

Shape {

appearance Appearance {

material Material{

diffuseColor 0.0 0.5 1.0

} } geometry . . . }

      1. Наложение текстур

Процедура наложения текстур состоит из двух частей, которыми занимаются соответствующие узлы. Узлы ImageTexture, MovieTexture, PixelTexture описывают что использовать в качестве текстуры, а вспомогательные узлы TextureCoordinate и TextureTransform задают как разместить текстуру на объекте.

ImageTexture (текстура-картинка)

Описание:

ImageTexture {

url [ ]

repeatS TRUE

repeatT TRUE

}

Узел ImageTexture - очень полезный узел, предназначенный для обтягивания объектов картинками. Область использования этого приема исключительно широка: начиная от создания аватара с собственной фотографией и заканчивая привешиванием картинок на background. В разделе url указывается местоположения графического файла.

Самой текстуре присваивается локальная система координат S на T, где S соответсвует нижнему обрезу картинки, а T - левому. Значения S и T изменяются от 0 (левый нижний пиксель) до 1 (правый нижний пиксель для S и левый верхний пиксель для T). Значения параметров repeatS и repeatT определяют, будет ли текстура размножена в направлениях S и T, чтобы заполнить весь объект.

Браузерам строго предписано поддерживать jpeg и png. Но кроме того обычно поддерживаются gif и ряд других распространенных форматов.

Браузеры и поддерживаемые форматы:

  • MS VRML 2.0 Viewer: GIF, BMP, JPG, RAS, PPM, PNG.

  • Cosmoplayer: в release notes указаны только JPEG и PNG, но GIF точно поддерживается.

  • Paragraph Cortona: в явном виде не нашел, но исходя из того, что ISB поддерживает BMP, GIF, JPEG, и PNG, то, вероятно, и Cortona с этими форматами справится

  • GLView: DIB,BMP, GIF, TGA, JPEG, PPM and RGB

        1. MovieTexture (текстура-видеоролик)

Описание:

MovieTexture {

loop FALSE

speed 1.0

startTime 0

stopTime 0

url []

repeatS TRUE

repeatT TRUE

}

Данный узел в качестве текстуры задает файл в формате MPEG. Поскольку этот формат позволяет хранить как видео-, так и аудиоинформацию, соответственно узел MovieTexture может появляться и в разделе texture узла Appearance, и в разделе source узла Sound. В последнем случае, естественно, рендеринг изображения не проводится, а обрабатывается только саундтрек файла.

loop, как обычно задает, будет ли файл прокручиваться бесконечно.

Параметр speed позволяет задавать скорость проигрывания MPEG файла. В случае speed

startTime и stopTime определяют обработку проигрывания во времени MPEG файла и обычно используются для запуска/остановки в определенный момент или после определенного события.

Параметры url, repeatS и repeatT занимаются тем же, что и в узле ImageTexture

        1. PixelTexture (пиксельная текстура)

Описание:

PixelTexture {

image 0 0 0

repeatS TRUE

repeatT TRUE

}

Механизм работы данного узла такой же, как и у ImageTexture, кроме того, что надо указать не готовую картинку из файла, а должны ручками раскрасить каждый указанный пиксель. Ситуации, когда Вам такой выход покажется оптимальным, единичны. Что такое repeatS и repeatT указано выше.

В параметре image первые два числа задают размер текстуры в пикселях, третье - способ раскрашивания: 1 - градации серого, 2 - градации серого плюс прозрачность, 3 - цветное изображение, 4 - цветное изображение плюс прозрачность.

Таким образом, запись PixelTexture {image 2 2 1 0 255 255 0} задает текстуру размером 2x2, раскрашенную в шахматном порядке белым и черным. А запись PixelTexture {image 2 2 4 0xff000080 0x00ff0080 0x0000ff80 0x00000080} задает текстуру в полупрозрачную клеточку красного, зеленого, синего и черного цвета.

Освещение в VRML

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

        1. DirectionalLight (направленный параллельный свет)

Описание:

DirectionalLight {

ambientIntensity 0

color 1 1 1

direction 0 0 -1

intensity 1

on TRUE

}

Узел DirectionalLight задает освещение параллельными лучами в указанном направлении. По умолчанию это 0 0 -1, что означает направление точно от Вас в экран. В связи с тем, что источник предполагается бесконечно удаленным, не приходится указывать координаты его координаты[12].

Аналогом этого узла в окружающем мире для нас является Солнце, но в отличие от него освещение от узла DirectionalLight достается не всем предметам в сцене, а только находящимся в том же parent узле, что и сам узел.

Параметр intensity задает яркость освещения (от 0 до 1), а ambientIntensity (от 0 до 1) задает насколько велик вклад данного источника в общее освещение сцены за счет отражения и рассеяния от объектов. Параметр color задает RGB окраску света.

        1. PointLight (точечный источник)

Описание:

PointLight {

ambientIntensity 0

attenuation 1 0 0

color 1 1 1

intensity 1

location 0 0 0

on TRUE

radius 100

}

Узел PointLight служит для размещения в сцене точечного источника света, который излучает по всем направлениям (что-то вроде лампочки или свечи). Соответственно, Вы должны указать координаты источника (параметр location x y z). Что такое ambientIntensity, intensity, color смотри выше. Параметр radius задает радиус сферы освещения, а attenuation задает, как быстро будет падать интенсивность по мере удаления от центра. Три числа, указываемые для attenuation, используются в формуле для вычисления интенсивности на расстоянии r от центра:


Учтите, что PointLight является children узлом, поэтому может находиться внутри узла Transform, который повлияет на положение (через параметр translation) или на радиус освещенности (через параметр scale).

        1. SpotLight (направленный расходящийся свет)

Описание:

SpotLight {

ambientIntensity 0

attenuation 1 0 0

beamWidth 1.570796

color 1 1 1

cutoffAngle 0.785398

direction 0 0 -1

intensity 1

location 0 0 0

on TRUE

radius 100

}

Глядя на список параметров узла SpotLight, нетрудно догадаться, что он является расширенной комбинацией двух предыдущих способов освещения: общими для всех являются color, ambientIntensity, intensity, on; от DirectionalLight досталось direction, а от PointLight radius и attenuation. В результате получилось что-то вроде фонарика или прожектора: источник имеет положение и светит в определенном направлении.

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


Рис. 2. Углы освещения


Во внутреннем конусе (с углом beamWidth) интенсивность в направлении перпендикулярно лучу ПОСТОЯННА, равная параметру intensity. Снаружи внешнего конуса (с углом cutoffAngle) интенсивность равна 0, а в зазоре между ними интенсивность спадает линейно. В общем виде множитель к исходной интенсивности, указанной в параметре intensity, выражается так:

Обратите только внимание, что по умолчанию выставлено beamWidth cutoffAngle, что дает пятно с неразмытыми краями! И не забывайте, что при размещении SpotLight внутри Transform, параметры scale и translation последнего повлияют на все параметры самого SpotLight[14].


  1. Работа с текстом



Узел Text описывается следующим образом:

Text {

exposedField MFString string [ ]

exposedField SFNode fontStyle NULL

exposedField MFFloat length [ ]

exposedField SFFloat maxExtent 0.0 }

С его помощью можно создать трехмерный текст из нескольких строк, которые задаются с помощью массива string [ ]. Например:

string ["text line 1","text line 2","www.firststeps.ru"]



Рис. 3. Текст в VRML



В поле fontStyle описывается стиль текста.

Например:

#VRML V2.0 utf8

Background { skyColor 0 0 0}

Transform { children [Shape {geometry Text { fontStyle FontStyle{

style "ITALIC"

justify ["END","MIDDLE"]

size 2}

string ["text line 1","text line 2","www.firststeps.ru"]}}]}

В данном случае текст поменяет выравнивание, и станет наклонным:

Рис. 4. Смена выравнивания и наклона текста.

Параметр maxExtent позволяет управлять шириной текста. Если максимальная ширина строки текста превышает это значение, то текст сжимается. Поле maxExtent измеряется горизонтально для горизонтального текста (horizontal=TRUE) и вертикально для вертикального текста (horizontal=FALSE). Пример:

Рис. 5. Изменение ширины текста.

Для управления шириной каждой строки существует массив length []. В нем по порядку задается значение ширины для каждой строки. Если заданная ширина для строки меньше ее реальной ширины, то символы строки сжимаются или убираются символы пробелов. И наоборот, если ширина строки больше, то символы растягиваются или добавляются пробелы. Эффект от данного параметра достаточно интересный. Пример:

Рис. 6. Изменение ширины строки текста.

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

Узел FontStyle задает стиль шрифта для использования его в трехмерном тексте. Определен данный узел следующим образом:

FontStyle {

field MFString family "SERIF"

field SFBool horizontal TRUE

field MFString justify "BEGIN"

field SFString language ""

field SFBool leftToRight TRUE

field SFFloat size 1.0

field SFFloat spacing 1.0

field SFString style "PLAIN"

field SFBool topToBottom TRUE }

Теперь давайте разберемся со всеми параметрами по порядку.

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

  • Для семейства "SERIF" используется Times Roman.

  • Для семейства "SANS" используется Helvetica.

  • Для семейства "TYPEWRITER" используется Courier.

Параметр style задает стиль текста. Стиль текста, это регистрозависимое название одного из следующих типов начертания шрифта:

  1. "PLAIN" - Обычный текст (используется по умолчанию).

  2. "BOLD" - Жирное начертание.

  3. "ITALIC" - Наклонное начертание.

  4. "BOLDITALIC" - Жирное-наклонное начертание.

  5. Пустое значение ("") аналогично значению "PLAIN"

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

Рис. 7. Высота текста.

Параметр language задает язык текста. Код этого языка определяется в RFC 1766: Tags for the Identification of Languages. Для русского языка значение данного параметра равно"ru".

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

Первый параметр horizontal задает направление текста. По умолчанию данный параметр равен TRUE и текст идет горизонтально, иначе при значении FALSE текст идет вертикально. Но будьте внимательны, текст не поворачивается на 90 градусов, а именно пишется вертикально, буква под буквой. Для поворотов предназначен другой узел. Смотрите рисунок:

Рис. 8. Направление текста

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

Рис. 9. Изменение написания текста.

В случае, когда параметр horizontal равен FALSE, значение параметра leftToRight используется для отображения многострочного текста, смотрите:

Рис. 10. Отображение многострочного текста.

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

Рис. 11. Вертикальное отображение многострочного текста.

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

  1. «BEGIN» или «FIRST» – выравнивание относительно начала текста

  2. «MIDDLE» – выравнивание по центру

  3. «END» – выравнивание относительно конца

Данный параметр может иметь два значения для выравниваний относительно горизонта и вертикали. Первый параметр влияет на выравнивание относительно главного направления, задаваемого параметром horizontal (при horizontal=TRUE это ось X, иначе Y), а второе значение влияет на выравнивание относительно другого направления (при horizontal=TRUEэто ось Y, иначе X). Смотрим рисунок:

Рис. 12. Выравнивание текста относительно центра координат.

Эти четыре параметра horizontal, leftToRight, topToBottom, justify позволяют творить с текстом, что душе угодно, и в этом мы уже убедились. После того, как Вы сами их все попробуете, Вы поймете как все это работает.

Небольшой примерчик данного узла:

#VRML V2.0 utf8

Background {

skyColor 0 0 0

}



Transform {

children [

Shape {

geometry Text {

fontStyle FontStyle{

horizontal FALSE

topToBottom TRUE

justify ["MIDDLE","MIDDLE"]

size 2

}string ["Text","Text1","Text2"] }}]}

Таким образом, язык VRML представляет собой открытый стандарт виртуальной реальности в сети Internet. Виртуальная реальность - это созданная компьютером среда ("мир", "окружение"), которая доступна пользователю и может включать в себя трехмерную графику, объемный звук и т.д.. Данный язык использует определенный код, причем все виртуальные миры строятся на основе 4 базовых примитивов, или по-другому их называют формы: прямоугольный параллепипед (куб), сфера, цилиндр и конус. Перемещение и изменение форм происходит путем трансформации системы координат, в которой они строятся. Кроме этого, имеется возможность задания цвета и текстур для примитивов, установка освещения и работа с текстом.




ЗАКЛЮЧЕНИЕ


Язык моделирования виртуальной реальности – одна из технологий мультимедиа, позволяющая передавать по Интернет похожие на реальные модели виртуального мира. 

В последнее время на Web узлах и в корпоративных сетях на базе Интернет появляется все больше трехмерных сцен. Реализация отображения трехмерных объектов и сцен основана на использовании языка VRML. Несмотря на имеющиеся недостатки и ограничения этот язык, на сегодняшний день, является единственным открытым и стандартизованным средством представления трехмерных данных. Для просмотра VRML сцен необходим VRML браузер.

В ходе выполнения курсовой работы были решены все поставленные задачи:

1. При подготовке курсовой работы была изучена и проанализирована методическая и специальная литература, материалы с интернет сайтов. Анализ литературы по теме исследования показал, что данная тема хорошо освещена в изданиях авторов, Авраамовой О.Д. Создание VRML-миров. Часть 1, Авраамовой О. Д. Язык VRML. Практическое руководство, Иванова В. П., Батракова А. С..  Трёхмерная компьютерная графика.

2. Изучены теоретические основы трехмерной компьютерной графики.Трехмерная графика - раздел компьютерной графики, совокупности приемов и инструментов (как программных, так и аппаратных), предназначенных для изображения объёмных объектов. При создании трехмерного изображения следует придерживаться следующих шагов: спроектировать и создать виртуальный каркас объекта, наиболее полно соответствующий его реальной форме; спроектировать и создать виртуальные материалы, по физическим свойствам визуализации похожие на реальные; присвоить материалы различным частям поверхности объекта; настроить физические параметры пространства, в котором будет действовать объект, – задать освещение, гравитацию, свойства атмосферы, свойства взаимодействующих объектов и поверхностей;  задать траектории движения объектов; рассчитать результирующую последовательность кадров; наложить поверхностные эффекты на итоговый анимационный ролик. При сохранении трехмерного изображения используют следующие наиболее популярные форматы: .wrl, .3ds, .stp, .fx, .egg, .obj, .dae.

3. Изучены возможности языка VRML для создания трехмерных объектов. Язык VRML представляет собой открытый стандарт виртуальной реальности в сети Internet. Виртуальная реальность - это созданная компьютером среда ("мир", "окружение"), которая доступна пользователю и может включать в себя трехмерную графику, объемный звук и другое. Данный язык использует определенный код, причем все виртуальные миры строятся на основе 4 базовых примитивов, или по-другому их называют формы: прямоугольный параллепипед (куб), сфера, цилиндр и конус. Перемещение и изменение форм происходит путем трансформации системы координат, в которой они строятся. Кроме этого, имеется возможность задания цвета и текстур для примитивов, установка освещения и работа с текстом.

4. В приложении курсовой работы имеются образцы виртуальных миров, такие как домик и буратино. Для создания этих образцов применялся узел Transform, для определения точки отсчета, графические примитивы – Cylinder, Box, Cone и Sphere. Для заливки цветом примитивов применялось свойство diffuseColor с параметром различного цвета.

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





Список использованной литературы

  1. Авраамова О.Д. Создание VRML-миров. Часть 1 // Компьютерные инструменты в образовании. - СПб.: Изд-во ЦПО "Информатизация образования", 2000, №5, С. 56-60.

  2. Авраамова О.Д. Язык VRML. Практическое руководство. - М.: ДиалогМифи, 2000.

  3. Будущее  3D  в  Интернете:  Flash  или  WebGL?  2011г.  //  [Электронный  ресурс]  —  Режим  доступа.  —  URL:  http://w3pro.ru/news/budushchee-3d-v-internete-flash-ili-webgl  (дата  обращения:  20.04.2013).

  4. Иванов В. П., Батраков А. С.. Трёхмерная компьютерная графика / Под ред. Г. М. Полищука. — М.: Радио и связь, 2005. — 224 с. — ISBN 5-256-01204-5.

  5. Ли Дж., Уэр Б.. Трёхмерная графика и анимация. — 2-е изд. — М.: Вильямс, 2002. — 640 с.

  6. Подлесный  А.О.  Научный  руководитель  —  Шмагрис  Ю.В.  Сибирский  Федеральный  Университет.  WEBGL–ТЕХНОЛОГИЯ  WEB-СОВМЕСТИМОЙ  3D-ГРАФИКИ.  //  [Электронный  ресурс]  —  Режим  доступа.  —  URL:  http://conf.sfu-kras.ru/sites/mn2012/thesis/s012/s012-144.pdf  (дата  обращения:  23.05.2013).

  7. Снук Г. 3D-ландшафты в реальном времени на C++ и DirectX 9. — 2-е изд. — М.: Кудиц-пресс, 2007. — 368 с. — ISBN 5-9579-0090-7.

  8. Технология  виртуальной  реальности  VRML.  //  [Электронный  ресурс]  —  Режим  доступа.  —  URL:  http://bourabai.kz/graphics/vrml.htm  (дата  обращения:  10.07.2013).

  9. Титтел Э., Сандерс К., Скотт Ч., Вольф П.
    Создание VRML-миров. пер. с англ. - К.: Издательская группа BHV, 2007. -320 с.; ил.; CD-ROM.

  10. Херн Д., Бейкер М. П.. Компьютерная графика и стандарт OpenGL. — 3-е изд. — М., 2005. — 1168 с.

  11. Энджел Э. Интерактивная компьютерная графика. Вводный курс на базе OpenGL. — 2-е изд. — М.: Вильямс, 2001. — 592 с.

  12. http://5fan.ru/wievjob.php?id=7627

  13. http://citforum.ru/internet/vrml/vrml_ex.shtml

  14. http://proekt.claw.ru/ucheb/vrml/vrml_ex.htm

  15. https://ru.wikipedia.org/wiki/Трёхмерная_графика

  16. http://world-3d.narod.ru/uch.htm

  17. http://www.cortona3d.com/

  18. http://www.firststeps.ru/www/vrml/vrml1.html

  19. http://www.spravkaweb.ru/vrml

  20. http://www.free-time.ru/library/vrml/vrml.html


























ПРИЛОЖЕНИЕ 1









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

«Дом»

































ПРИЛОЖЕНИЕ 1 (ПРОДОЛЖЕНИЕ)





Программный код

#VRML V2.0 utf8

# Цилиндр

Shape { appearance Appearance { material Material {}}

geometry

Cone{bottomRadius 0.00001 height 0.00000001}}

Transform { translation 0 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {

appearance Appearance { material Material {diffuseColor 0.5 0.2 0.0 }}

geometry Cylinder {height 9 radius 0.5}}] }

Transform { translation 0.5 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {

appearance Appearance { material Material { diffuseColor 0.5 0.2 0.0}}

geometry Cylinder {height 9 radius 0.5}} ] } Transform { translation -6 1 0 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape { appearance Appearance {

material Material {} texture ImageTexture{ url "1326800120_16.jpg" }}

geometry Box{size 18 15 28}} ] }

Transform { translation -5.5 -2.7 0 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape { appearance Appearance { material Material {} texture ImageTexture{ url "i.jpg" }}

geometry Box{size 40 0.5 35}} ] }

Transform {translation -3.3 6.5 0.0 rotation 0.0 0.0 1.0 0.785 scale 1 1 1 children [

Shape {appearance Appearance { material Material {} texture ImageTexture{ url "545435434.jpg" }} geometry Box {size 0.1 7.8 15}} ] }

Transform {translation -8.7 6.5 0.0 rotation 0.0 0.0 1.0 -0.785 scale 1 1 1 children [

Shape {appearance Appearance {material Material {} texture ImageTexture{ url "545435434.jpg" }} geometry Box {size 0.1 7.8 15}} ] }

Transform { translation -3.5 0 7.1 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [

Shape {appearance Appearance {material Material {} texture ImageTexture{ url "дверь.jpg" }} geometry Box{size 5 11 0.01}} ] }

Transform { translation -7.5 1 7.1 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [

Shape {appearance Appearance {material Material {} texture ImageTexture{ url "окно(1).jpg" }} geometry Box{size 8 8 0.01}} ] }

Transform { translation -1.5 1 4 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {} texture ImageTexture{ url "окно(1).jpg" }} geometry Box{size 0.01 8 8}} ] }

Transform { translation -1.5 1 -2 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {} texture ImageTexture{ url "окно(1).jpg" }} geometry Box{size 0.01 8 8}} ] }

Transform { translation 1 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [

Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}

geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 1.5 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [

Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -1 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [

Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -0.5 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 2 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [

Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 2.5 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [

Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}

geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 3 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 3.5 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -3.5 -2.5 7.7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape { appearance Appearance { material Material {} texture ImageTexture{ url "порог.jpg" }}geometry Box{size 5 0.2 3}} ] }

Transform { translation -11.7 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape{ appearance Appearance { material Material {} texture ImageTexture{ url "колитка.jpg" }} geometry Box{size 5 9 0.5}} ] }

Transform { translation -13 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -13.5 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -14 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -14.5 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] } Transform { translation -15 -0.5 7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 6.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 6 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 5.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 4.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 4 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 3.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 3 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 2.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 2 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 1.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 1 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0} } geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 0.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 0 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -0.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -1 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0} } geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -1.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0} } geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -2 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ]}

Transform { translation -15 -0.5 -2.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0} } geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -3 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -3.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -4 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -4.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0} }geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -5.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0} } geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -6 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -6.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -7 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -7.5 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [

Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -15 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -14.5 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -14 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -13.5 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -13 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -12.5 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -12 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -11.5 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -11 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0} } geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -10.5 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -10 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [

Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}

geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -9.5 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}} geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -9 -0.5 -8 rotation 0 0 0 1 scale 0.5 0.5 0.5 children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -8.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -8 -0.5 -rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -7.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -7 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -6.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -6 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -5.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -4.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -4 -0.5 -8rotation 0 0 0 scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -3.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -3 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -2.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -2 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -1.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -0.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 0 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 0.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation -1 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 1 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 1.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 2 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 2.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 3 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 3.5 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -7.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -8rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }Transform { translation 4 -0.5 -7rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -6.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }Transform { translation 4 -0.5 -6rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -5.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }Transform { translation 4 -0.5 -4.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -4rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -3.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -3rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -2.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -2rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -1.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -1rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 -0.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 0rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ]

}

Transform { translation 4 -0.5 1rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 1.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 2rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 2.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 3rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 3.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 4rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 4.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 5.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 6rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform { translation 4 -0.5 6.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

Transform {

translation 4 -0.5 0.5rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape {appearance Appearance {material Material {diffuseColor 0.5 0.2 0.0}}geometry Cylinder {height 9 radius 0.5}} ] }

















































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

«Буратино»















































Программный код

#VRML V2.0 utf8

Shape { appearance Appearance { material Material {diffuseColor 1.0 0.0 0.0}}geometry Cylinder {height 3 radius 1}}

Transform { translation -0.5 -1.7 0rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material { diffuseColor 0.0 0.0 1.0}}geometry Cylinder {height 3 radius 0.5}} ] }

Transform { translation 0.5 -1.7 0rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material { diffuseColor 0.0 0.0 1.0}}geometry Cylinder {height 3 radius 0.5}} ] }

Transform { translation -0.5 -2.7 0rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 1.0 0.0 0.0}}geometry Box{size 0.5 1.8 0.5}} ] }

Transform { translation 0.5 -2.7 0rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 1.0 0.0 0.0}}geometry Box{size 0.5 1.8 0.5}} ] }

Transform { translation 0.5 -3 0.4rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 0.0 1.0 0.0}}geometry Box{size 0.5 0.5 1}} ] }

Transform { translation -0.5 -3 0.4rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 0.0 1.0 0.0}}geometry Box{size 0.5 0.5 1}} ] }

Transform {translation -1 0.5 0.0 rotation 0.0 0.0 1.0 -0.785 scale 1 1 1 children [ Shape {appearance Appearance {material Material {diffuseColor 1 0 0}}geometry Box {size 0.1 2 0.1}} ] }

Transform {translation 1 0.5 0.0 rotation 0.0 0.0 1.0 0.785 scale 1 1 1 children [ Shape {appearance Appearance {material Material {diffuseColor 1 0 0}}geometry Box {size 0.1 2 0.1}} ] }

Transform { translation 0 1.7 0rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material { diffuseColor 1 0.0 0}}geometry Cylinder {height 1 radius 0.5}} ] }

Transform { translation 0 2.7 0rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material { diffuseColor 1 1 0}}geometry Sphere {radius 2}} ] }

Transform { translation 0 4.3 0rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {}texture ImageTexture{ url "1.jpg" }}geometry Cone { height 3.0 bottomRadius 2}} ] }

Transform { translation 0 5.3 0rotation 0 0 0 1scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {}texture ImageTexture{ url "2.jpg" }}geometry Sphere {radius 0.8}} ] }

Transform { translation 1.2 2.7 0rotation 1 0 0 1.57scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material { diffuseColor 1 1 0}}geometry Cylinder {height 0.01 radius 0.8}} ] }

Transform { translation -1.2 2.7 0rotation 1 0 0 1.57scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material { diffuseColor 1 1 0}}geometry Cylinder {height 0.01 radius 0.8}} ] }

Transform { translation 0 2.5 1rotation 1 0 0 1.57scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 1 1 0}}geometry Cone { height 2 bottomRadius 0.5}} ] }

Transform { translation 0.4 3 0.9rotation 1 0 0 1.57scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 1 1 1}}geometry Cylinder {height 0.01 radius 0.4}} ] }

Transform { translation -0.4 3 0.9rotation 1 0 0 1.57scale 0.5 0.5 0.5children [ Shape{ appearance Appearance { material Material {diffuseColor 1 1 1}}geometry Cylinder {height 0.01 radius 0.4}} ] }

Transform { translation -0.4 2.95 0.91rotation 1 0 0 1.57scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 0.1 0.1 0.1}}geometry Cylinder {height 0.01 radius 0.25}} ] }

Transform { translation 0.4 2.95 0.91rotation 1 0 0 1.57scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 0.1 0.1 0.1}}geometry Cylinder {height 0.01 radius 0.25}} ] }

Transform { translation -0.4 2.95 0.92rotation 1 0 0 1.57scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 0 0 1}}geometry Cylinder {height 0.01 radius 0.15}} ] }

Transform { translation 0.4 2.95 0.92rotation 1 0 0 1.57scale 0.5 0.5 0.5children [ Shape { appearance Appearance { material Material {diffuseColor 0 0 1}}geometry Cylinder {height 0.01 radius 0.15}} ] }

Transform {translation 0 2 0.92rotation 0.0 0.0 0 0scale 1 1 1 children [ Shape {appearance Appearance {material Material {diffuseColor 1 0 0}}geometry Box {size 0.5 0.1 0.1}} ] }

-80%
Курсы повышения квалификации

Методика преподавания информатики в начальной школе в соответствии с ФГОС НОО

Продолжительность 72 часа
Документ: Удостоверение о повышении квалификации
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Материал по информатике "Возможно языка VRML" (1.17 MB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт