VR
Virtual Reality On-line   VRML
Новости   |     Журнал    |    Хаkер   |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]
[ Download  ]
[  Конкурс  ]
[  Анекдоты ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Несколько уроков VRML:

Начиная с сегодняшнего дня я опубликую несколько уроков по программированию с помощью языка VRML (Virtual Realty Modelling Languagy). Этот язык предназначен для построения 3D миров. Он работает на уровне трёхмерных объектов и их расположении в пространстве. В качестве объектов используются куб, сфера, цилиндр и конус. Во время изучения ты увидишь, что VRML имеет что-то общее с OpenGL.

Что такое VRML файл? Это простой текстовый файл с расширением wrl. Для просмотра 3D сцены необходим браузер и специальный plug-in к нему (я буду называть его просмотрщиком) , который и будет отображать VRML мир. Самыми распространёнными просмотрщиками являются Cosmo Player и Live3D. Выбирая себе просмотрщик, ты должен знать, что каждый из них показывает сцену по разному. Поэтому нужно выбирать самый распространённый, чтобы у большинства твоих пользователей мир выглядел также, как и у тебя.

Для создания сложных миров, я бы посоветовал тебе воспользоваться специализированными редакторами или даже 3D Studio Max, с помощью которого можно создать мир любой сложности. Цель моих статей будет просто научить тебя основам этого языка. Возможно, что тебе пригодятся эти навыки при построении твоей странички в сети или ты захочешь вставить поддержку этого языка в своей проге. Не пугайся, использовать VRML очень легко, особенно, если ты читаешь мои статьи по OpenGL.
Logo
Рис 1. Система координат

В VRML принята не очень обычная система координат. Точнее координаты расположены правильно - ось Х смотрит вправо, ось Y смотрит вверх, а ось Z смотрит на нас или от нас. А вот с разметкой разработчики грубонули - все размеры вычисляются в метрах. Не могу понять, что же они так мелочились, могли бы уже и километрами измерять :). А для измерения углов почему-то используются радианы.

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

#VRML V1.0 ascii

По этой строке, просмотрщик убедится, что перед нами VRML документ. В этой строке "V1.0" означает версию VRML документа. Её обязательно нужно указывать правильно, потому что уже существует (если мне не изменять память) вторая версия. Текст "ascii" означает, что данные хранятся как простой ascii текст. Ты можешь спросить, а зачем это указывать, если этот файл и так текстовый? А потому что я тебя немного обманул. Файл та текстовый, но он может быть сжать. По спецификации но VRML есть возможность на сжатие данных в файле, что позволяет дополнительно уменьшить размер файлов.

Начнём знакомство с примитивами VRML и заодно напишем первый файл, который будет отображать нашу сцену. Первым примитивом будет куб:

Cube { 
width 4 # ширина 
height 3 # высота 
depth 7 # глубина 
} 

Сразу обращаю твой зоркий глаз на значок #. Все что стоит после него - это комментарии и игнорируется просмотрщиком. Так что, с помощью этих комментариев прекрасно видно, что первый параметр задаёт ширину, второй высоту, а третий глубину.

Теперь я создал файл sampl1.wrl вот с таким содержанием:

#VRML V1.0 ascii
Cube {
width 4
height 3
depth 7
}
Теперь посмотрим на результат в действии:

Прежде чем приступить к дальнейшему изучению VRML примитивов, я остановлюсь на том, как можно отображать нашу сцену в просмотрщике. Для этого можно открывать файл как простую html страницу с помощью IE или Netscape Navigator. Если установлен специальный plug-in, то ты увидишь результат в действии. В этом случае сцена будет просматриваться во всё окно браузера.

Я использую более сложный, но более интересный способ. А именно, я использую JavaScript, чтобы увидеть VRML мир внутри странички. Вот этот скрипт:

<script LANGUAGE="JavaScript">
<!--
var
    BrowserName = navigator.appName;
BrowserVer  = parseInt (navigator.appVersion);

 if ((BrowserName == "Netscape") && (BrowserVer > 2))
  {
    if (navigator.mimeTypes["x-world/x-vrml"].enabledPlugin==null)
    {
      dоcument.writeln ("<H4>Ваш браузер не поддерживает VRML</H4>");
    }
    else
    {
      document.writeln ("<EMBED WIDTH='400' HEIGHT='200' SRC='sampl1.wrl'>");
    }
  }
  else
  {
    document.writeln ("<EMBED WIDTH='400' HEIGHT='200' SRC='sampl1.wrl'>");
  }
//-->
</script>

Вроде всё. Хотя стоп. Я же забыл познакомить тебя с остальными примитивами VRML, а их осталось ещё три.

Вот как выглядит сфера:

Sphere 
{ 
radius 1 # радиус 
} 

Как видишь, здесь задаётся только один параметр - радиус. Это самый лёгкий в реализации среди примитивов VRML.

Вот как выглядит конус:

Cone { 
parts ALL #видимость основания, и боковой части конуса 
bottomRadius 1 #радиус основания 
height 2 #высота 
} 

Со вторым и третьим параметром всё ясно, а вот на первом надо остановится. Я указал параметр ALL, это означает, что я хочу увидеть весь конус. Если мне понадобиться только основание (т.е. круг), то я должен указать первым параметром BOTTOM. Если мне нужны только стороны, без основания, то нужно указать SIDES.

Теперь знакомимся с целиндром:

Cylinder { 
parts ALL #Видимость частей
radius 1 #радиус основания height 
2 #высота цилиндра 
} 

Я думаю, что объяснения не нужны. Попробуй поиграть изученными предметами, а через месяц я постараюсь подготовить ещё что-нибудь интересное.


Copyright©: Horrific aka Флёнов Михаил
Design by FMk group©