Что такое vrml файл
Если абстрактно задаться вопросом "Что необходимо для того, чтобы создать анимацию?", то неизбежно возникает несколько стадий решения, а именно:
- как активировать анимацию
- как указать, какой именно объект сцены должен изменяться
- как должен изменяться объект
Ответами на каждый из трех вопросов в VRML занимаются соответствующие средства.
Активацией событий занимаются узлы-сенсоры (генерируют EventOut), указанием на конкретный объект занимаются "ROUTE"ы, или "маршруты" (транспортируют EventOut к объекту), изменением объектов занимаются "Interpolator"ы, или "интерполяторы" (обрабатывают EventIn и отправляют через очередной ROUTE объекту новые параметры).
Разберем по порядку всех участников.
NormalInterpolator
Само понятие нормали (normal) возникает в VRML в уравнениях расчета освещенности каждой точки поверхности объекта (в частности в diffuse и specular color). А узел NormalInterpolator дает возможность динамически регулировать распределение освещенности по объекту за счет изменения направления векторов нормалей к граням объекта.
ColorInterpolator
Этот интерполятор позволяет отсылать наборы координат узлу Coordinate, который встречается в узлах IndexedFaceSet, IndexedLineSet и PointSet. Это удобно использовать, когда для деформации объекта не подходит анизотропное масштабирование.
Программы, обслуживающие файл WRL
Windows
MAC OS
Linux
iOS
Updated: 02/01/2020
TouchSensor
Хороший сенсор, обычно используемый для большей интерактивности: чтобы что-нибудь открылось/закрылось/заработало и т.д. приходится навести курсор или щелкнуть на чем-нибудь мышкой.
Поле у узла всего одно enabled TRUE/FALSE, а сам сенсор привязывается ко всем объектам, объединенным с TouchSensor'ом в одну parent группу.
Работа сенсора начинается с момента наведения курсора мыши (или другого манипулятора) на объект, к которому привязан TouchSensor. При этом начинает генерироваться eventOut isOver TRUE. А кроме того при перемещении курсора над поверхностью объекта генерируются eventOut hitNormal_changed (отслеживается положение вектора нормали к поверхности объекта), eventOut hitPoint_changed (отслеживаются координаты точки на поверхности объекта, над которой находится курсор), eventOut hitTexCoord_changed (отслеживается положение точки на поверхности объекта, над которой находится курсор в координатах texture map).
Оставшиейся два eventOut'a eventOut isActive и eventOut touchTime генерируются при участии кнопки мыши: isActive TRUE генерируется только до тех пор пока Вы держите кнопку мыши НАЖАТОЙ (а после отпускания isActive FALSE), а eventOut touchTime наоборот генерируется КАК ТОЛЬКО Вы ОТПУСКАЕТЕ кнопку мыши.
Наиболее употребительными мне представляются isOver, isActive и touchTime
Изменение координат
По умолчанию любой описанный нами объект будет располагаться точно по центру окна браузера. По этой причине, если мы опишем к примеру два одинаковых цилиндра, они сольются друг с другом. Для того, чтобы изменить положение второго цилиндра, применим узел Translation.
Узел Translation определяет координаты объекта:
Вообще говоря, координаты указываемые в Translation не являются абсолютными. Фактически это координаты относительно предыдущего узла Translation. Чтобы прояснить это вопрос, рассмотрим пример:
Как видите, третий кубик вовсе не совпадает с первым, хотя в в узле Translation указаны те же координаты.
В VRML 1.0 принято следующее правило: узлы, модифицирующие свойства фигур (Translation, Material и т.п.), действуют на все далее описанные фигуры.
Чтобы ограничить область действия модифицирующих узлов, фигуры необходимо сгруппировать с помощью узла Separator.
Узел Separator работает как контейнер, он может содержать любые другие узлы, и основным его предназначением является именно ограничение области действия узлов типа Translation и Material.
Сравните следующий пример с предыдущим:
Хотя в примере описано три кубика, мы видим только два, так как второй и третий совпадают.
Вообще говоря рекомендуется всегда и везде использовать узел Separator. Он не только избавит от ошибок, связанных с относительностью координат, но и сделает VRML-код более простым и понятным.
Маршруты
Масштабирование
Узел Scale масштабирует фигуры по одному или нескольким измерениям. Три цифры, стоящие после параметра scaleFactor определяют коэффициенты масштабирования относительно осей x,y и z.
В следующем примере, узел Scale сжимает сферу по оси x, и из сферы получается эллипсоид.
Anchor
Пощелкайте мышкой по объектам.
Параметр description - чисто описательный. При наведении курсора на объект с anchor'ом в статус-лайне обычно отображается содержимое description.
В дополнение к параметру url есть параметр parameter (такой вот каламбурчик. %), это механизм, аналогичный HTML, для отображения файла в опредленном фрейме. Если фрейм не указан, создается новое окно.
Вот предыдущий пример, только изменено содержимое parameter [ ] Просмотр. Указанный фрейм new не существует поэтому создается новое окно.
Параметр bbox (или bounding box) - это такая штука, предназначенная для ускорения рендеринга. При этом children узлы ищутся уже не по всему пространству а в пределах этого самого ящика (bounding box) с размерами bboxSize и центром в bboxCenter.
НО . необходимо, чтобы children узлы ДЕЙСТВИТЕЛЬНО попадали в пределы bounding box, иначе результат не определен. Поэтому ВЫВОД:
проще никогда не связываться с bbox и оставить ее по умолчанию бесконечно большой (bboxSize -1 -1 -1)
Цилиндр
Для цилиндра можно задать параметры radius и height. Кроме того, с помощью параметра parts для цилиндра можно определить будут ли отображаться основания цилиндра и его боковая поверхность. Параметр parts может принимать значения ALL, SIDES, BOTTOM или TOP. текст визуальной VRML-модели
CylinderSensor
Этот сенсор отслеживает движение курсора мыши в цилиндрической системе координат невидимого цилиндра с осью вращения параллельной локальной оси Y.
Большинство полей (autoOffset, enabled, offset) и eventOut'ов этого сенсора (isActive, trackPoint_changed) такие же, как и у PlaneSensor, где Вы и можете про них прочитать.
Пара полей maxAngle и minAngle аналогична maxPosition и minPosition PlaneSensor. Если maxAngle меньше, чем minAngle, то вращение не ограничивается.
eventOut rotation_changed аналогично eventOut translation_changed PlaneSensor.
Единственное действительно отличительное поле - это diskAngle.
В спецификации предусмотрено два способа описание движения курсора через CylinderSensor. Представьте себе отдельно взятое велосипедное колесо. Если Вы всунете палец между спиц, то сможете вращать колесо бесконечно НЕ ОТРЫВАЯ руку, которая будет описывать конус вращения. А если Вы схватитесь за обод, то для поддержания бесконечного вращения Вам придется постоянно ПЕРЕХВАТЫВАТЬ руку.
Аналогично, в VRML можно хвататься через CylinderSensor за ТОРЕЦ цилиндра или за его БОКОВУЮ СТОРОНУ.
Для регулирования, когда используется какой способ и введен diskAngle. Если угол между bearing вектором и осью цилиндра МЕНЬШЕ diskAngle, то Вы сможете, зацепив мышью цилиндр, вращать его бесконечно (при этом курсор будет описывать на экране круги). Если угол между вектором и осью цилиндра БОЛЬШЕ diskAngle, то придется, провернув немного цилиндр, отпускать кнопку мыши и перетаскивать курсор (при этом курсор на экране будет двигаться дискретно-прямолинейно).
И кстати, не забывайте, что CylinderSensor можно привязывать к объектам любой формы, а не только к телам вращения. Просмотр. Потяните параллелепипед за боковые грани - вращение будет продолжаться, пока вы не дотянете ПРЯМОЛИНЕЙНО курсор до границы экрана. Теперь поверните ее к себе верхней гранью и крутите ее, пока не надоест, перемещая курсор ПО КРУГУ.
Программы, обслуживающие файл VRML
Windows
MAC OS
Linux
Интерполяторы
Как уже говорилось в начале страницы, интерполяторы выдают объекту численное значение какого-либо его параметра (цвет, положение, размер и т.д.) в данный момент времени в течение cycleInterval. За каждый cycleInterval интерполятор пробегает все значения полей key и keyValue.
Все узлы-интерполяторы (ColorInterpolator, CoordinateInterpolator, NormalInterpolator, OrientationInterpolator, PositionInterpolato, ScalarInterpolator) записываются одинаково:
eventIn set_fraction
key [набор контрольных точек]
keyValue [набор значений, соотвествующий точкам в поле key]
eventOut value_changed
Отличия заключаются только в ТИПЕ значения, отсылаемого через eventOut value_changed.
Если число значений в поле keyValue не соответствует количеству контрольных точек в поле key, результат не определен.
Важно помнить, что значения keyValue в ПРОМЕЖУТОЧНЫХ точках между указанными контрольными точками интерполируется ЛИНЕЙНО ! Т.е. если Вы, скажем, хотите организовать поступательное движение объекта по дуге, нужно быть внимательным, вводя большое количество точек в поле key (и соответственно в поле keyValue), поскольку движение будет аппроксимироваться ломаной.
Dragging Sensors
Название этого подраздела обусловлено тем, что для активирования описываемых здесь сенсоров можно не только кликнуть мышью (нажать кнопку и ОТПУСТИТЬ), а нажать и НЕ ОТПУСКАЯ перемещать. Наверняка Вам знакомо понятие "drag and drop", вот эти сенсоры из такой серии.
Примитивы VRML
В VRML определены четыре базовые фигуры: куб (верней не куб, а прямоугольный параллепипед), сфера, цилиндр и конус.
Эти фигуры называются примитивами (primitives). Набор примитивов невелик, однако комбинируя их, можно строить достаточно сложные трехмерные изображения. Например, вот такие:
Рассмотрим поподробней каждый из примитивов.
Возможные параметры: width - ширина, height - высота, depth - глубина. текст визуальной VRML-модели
Collision
Узел Collision выполняет две задачи: во-первых, регистрирует факт столкновения (и время этого столкновения) аватара (т.е. Вас) с объектом, указанным в разделе children, а во-вторых регулирует, пройдете ли Вы СКВОЗЬ объект (collide TRUE) или нет (collide FALSE). В момент столкновения генерируется eventOut collideTime, что позволяет создать последовательность последующих событий. (Учтите, что невозможно организовать столкновения с IndexedLineSet, PointSet, Text.)
О размерах аватара, который, собственно, сталкивается, смотрите в разделе NavigationInfo
Если в Вашем VRML файле нет ни одного узла Collision, то "проницаемость" объектов регулирует броузер. Наверняка Вы видели в настройках броузера что-нибудь вроде collision ON/OFF, collider Auto/Always/Never и т.д.
Про bboxCenter и bboxSize читайте в разделе Anchor.
Параметр proxy - это очень полезная вещь для ускорения рендеринга. Если в разделе у Вас не NULL, а какой-нибудь ОБЪЕКТ, то он не изображается в сцене (невидим), НО . столкновение на самом деле будет регистрироваться с ним, т.е. объектом, указанным в разделе proxy, а не в разделе children.
К примеру, Вам необходимо сделать зарегистрировать столкновение с объектом сложной формы, что-нибудь вроде:
Зачем напрягать броузер расчетом положения аватара относительно всех этих граней? Просто прописываете в разделе proxy СФЕРУ чуть большего радиуса, чем "иглы" звезды и все.
Просмотр. Не забудьте выставить у броузера collide ON !
ВЫВОД: как и для всех узлов, значения которых может проигнорировать броузер (NavigationInfo: avatarSize и headlight ON/OFF), ценность узла Collision резко снижена! Вместо пользуйтесь, например, ProximitySensor !
VisibilitySensor
Этот сенсор определяет, находится ли в поле зрения область пространства внутри параллелепипеда с центром в center и размером size. Как только область становится видимой, генерируется eventOut enterTime и isActive становится TRUE. Как только Вы "отвернулись" и не видите содержимое параллелепипеда, генерируется eventOut exitTime и isActive становится FALSE.
Сенсор может быть полезен для оптимизации Вашей сцены. К примеру, можно прекращать часть анимации, который в данный момент не видна.
Просмотр. Если Вы будете медленно "отворачиваться" от шара, можете заметить, что когда шар практически исчез с экрана, он прекращает менять цвет. Останавливая таким способом обработку анимации, можно увеличить число fps.
Цвет и текстура
Цвет фигуры, определяется с помощью объекта Material.
Параметры ambientColor, diffuseColor, specularColor и emissiveColor управляют цветами и указываются в палитре RGB (красный, зеленый и голубой), причем первая цифра определяет интенсивность красного цвета, вторая - зеленого, а третья - синего.
Параметр transparency может принимать значения от 0 до1 и определяет степень прозрачности, причем максимальная прозрачность достигается при transparency равном единице. В приведенном примере описано два цилиндра разных размеров, меньший из которых просвечивает сквозь другой.
Для имитирования различных поверхностей в VRML существует объект Texture2.
В качестве текстуры легче всего использовать обычный графический файл, например, в GIF-формате. В таком случае для "натягивания" текстуры на трехмерное изображение нужно только указать путь к файлу в параметре filename объекта Texture2.
Параметры wrapS и wrapT могут принимать значения REPEAT или CLAMP, и управляют натягиванием текстуры по соответственно горизонтальной и вертикальной осям.
Вместо заключения
- Все описания узлов и параметров в VRML регистрозависимы. Если Вы используете буквы неправильного регистра - то VRML-браузер просто проигнорирует такое описание.
- В VRML имеет огромное значение порядок описания узлов. Так к примеру, описание
дают совершенно разный результат.
Единицы измерения
- Расстояние и размер: метры
- Углы: радианы
- Остальные значения: выражаются, как часть от 1.
- Координаты берутся в трехмерной декартовой системе координат (см. рис.)
Конус
Возможные параметры: bottomRadius - радиус основания, height - высота, parts - определяет, какие части конуса будут видны. Параметр parts может принимать значения ALL, SIDES или BOTTOM. текст визуальной VRML-модели
Как открыть файл WRL?
Причин, по которым у вас возникают проблемы с открытием файлов WRL в данной системе, может быть несколько. К счастью, наиболее распространенные проблемы с файлами WRL могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.
Шаг 1. Получить TurboCAD
Проблемы с открытием и работой с файлами WRL, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами WRL на вашем компьютере. Этот легкий. Выберите TurboCAD или одну из рекомендованных программ (например, XnView, Blender, FreeWRL) и загрузите ее из соответствующего источника и установите в своей системе. В верхней части страницы находится список всех программ, сгруппированных по поддерживаемым операционным системам. Самый безопасный способ загрузки TurboCAD установлен - для этого зайдите на сайт разработчика (IMSI/Design, LLC.) и загрузите программное обеспечение, используя предоставленные ссылки.
Шаг 2. Убедитесь, что у вас установлена последняя версия TurboCAD
Если проблемы с открытием файлов WRL по-прежнему возникают даже после установки TurboCAD, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия TurboCAD. Может также случиться, что создатели программного обеспечения, обновляя свои приложения, добавляют совместимость с другими, более новыми форматами файлов. Если у вас установлена более старая версия TurboCAD, она может не поддерживать формат WRL. Последняя версия TurboCAD должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.
Шаг 3. Настройте приложение по умолчанию для открытия WRL файлов на TurboCAD
Если у вас установлена последняя версия TurboCAD и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления WRL на вашем устройстве. Метод довольно прост и мало меняется в разных операционных системах.
Изменить приложение по умолчанию в Windows
- Выберите пункт Открыть с помощью в меню «Файл», к которому можно щелкнуть правой кнопкой мыши файл WRL.
- Далее выберите опцию Выбрать другое приложение а затем с помощью Еще приложения откройте список доступных приложений.
- Последний шаг - выбрать опцию Найти другое приложение на этом. указать путь к папке, в которой установлен TurboCAD. Теперь осталось только подтвердить свой выбор, выбрав Всегда использовать это приложение для открытия WRL файлы и нажав ОК .
Изменить приложение по умолчанию в Mac OS
Шаг 4. Убедитесь, что файл WRL заполнен и не содержит ошибок
Если вы выполнили инструкции из предыдущих шагов, но проблема все еще не решена, вам следует проверить файл WRL, о котором идет речь. Вероятно, файл поврежден и, следовательно, недоступен.
1. WRL может быть заражен вредоносным ПО - обязательно проверьте его антивирусом.
Если WRL действительно заражен, возможно, вредоносное ПО блокирует его открытие. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. Если файл WRL действительно заражен, следуйте инструкциям ниже.
2. Проверьте, не поврежден ли файл
3. Проверьте, есть ли у вашей учетной записи административные права
Некоторые файлы требуют повышенных прав доступа для их открытия. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл VRML World.
4. Проверьте, может ли ваша система обрабатывать TurboCAD
Если в системе недостаточно ресурсов для открытия файлов WRL, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами VRML World. Возможно, файлы WRL работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла WRL мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле WRL.
Технология виртуальной реальности VRML
VRML, Virtual Reality Modeling Language — язык моделирования виртуальной реальности, стандартный формат файлов для демонстрации трёхмерной интерактивной векторной графики, чаще всего используется в веб-технологиях.
VRML предназначен для описания трехмерных изображений и оперирует объектами, описывающими геометрические фигуры и их расположение в пространстве.
Vrml-файл представляет собой обычный текстовый файл, интерпретируемый браузером. Поскольку большинство браузеров не имеет встроенных средств поддержки vrml, для просмотра Vrml-документов необходимо подключить вспомогательную программу - Vrml-браузер, например, Live3D или Cosmo Player.
Как и в случае с HTML, один и тот же vrml-документ может выглядеть по-разному в разных VRML-браузерах. Кроме того, многие разработчики VRML-браузеров добавляют нестандартные расширения VRML в свой браузер.
Существует немало VRML-редакторов, делающих удобней и быстрее процесс создания Vrml-документов, однако несложные модели, рассматриваемые в данной статье, можно создать при помощи самого простого текстового редактора.
Формат VRML
VRML — это текстовый формат файлов, где, например, вершины и грани многогранников могут указываться вместе с цветом поверхности, текстурами, блеском, прозрачностью и так далее. URL могут быть связаны с графическими компонентами, таким образом, что веб-браузер может получать веб-страницу или новый VRML-файл из сети Интернет тогда, когда пользователь щёлкает по какому-либо графическому компоненту. Движение, звуки, освещение и другие аспекты виртуального мира могут появляться как реакция на действия пользователя или же на другие внешние события, например таймеры. Особый компонент Script Node позволяет добавлять программный код (например, Java или JavaScript (ECMAScript)) к VRML-файлу.
VRML-файлы обычно называются мирами и имеют расширение .wrl (например: island.wrl). Хотя VRML-миры используют текстовый формат они часто могут быть сжаты с использованием алгоритма компрессии gzip для того, чтобы их можно было передавать по сети за меньшее время. Большинство программ трёхмерного моделирования могут сохранять объекты и сцены в формате VRML.
Стандарты VRML
Для дальнейшей коллективной разработки формата был создан консорциум Web3D.
Первая версия VRML была выпущена в ноябре 1994 года. Эта версия была основана на API и файловом формате программной компоненты Open Inventor, изначально разработанной в SGI. Текущая и функционально завершенная версия — VRML97 (ISO/IEC 14772-1:1997). Сейчас VRML вытесняется форматом X3D (ISO/IEC 19775-1).
Появление, популярность и упадок
Понятие VRML было введено Дэйвом Раджеттом (Dave Raggett) в документе представленом на Первой Международной Конференции по Всемирной Паутине (1994 год) и впервые обсуждалось на WWW94 VRML BOF, учреждённой Тимом Бернерсом-Ли где Марк Песке (Mark Pesce) представил демо-программу Labirinth (“Лабиринт”), разработанную им совместно с Тони Паризи (Tony Parisi) и Питером Кеннардом (Peter Kennard).
VRML достиг вершины популярности после выхода VRML 2.0 в 1997 году, когда он стал использоваться на некоторых персональных страницах и сайтах, в основном для 3D-чатов. Формат поддерживался SGI Cosmo Software (основной костяк программистов этого подразделения находился в Москве и сейчас это компания Parallel Graphics). Когда в 1998 году SGI была реструктурирована это подразделение было продано Platinum Technologies, которое было затем куплено Computer Associates. Последняя не стала развивать и распространять программы для VRML. Пустота была заполнена различными недолговечными коммерческими 3D-web форматами, появившимися за последние несколько лет, включая Microsoft Chrome, Adobe Atmosphere и Shockwave 3D, ни один из этих форматов не поддерживается сегодня. Возможности VRML оставались прежними, тогда как возможности трёхмерной компьютерной графики, работающей в реальном времени росли. VRML Consortium сменил своё название на Web3D Consortium и начал работать над потомком VRML — X3D.
Хотя VRML ещё продолжает использоваться в некоторых областях, особенно в образовательной и исследовательской сфере, где наиболее ценятся открытые спецификации, можно сказать, что он вытеснен форматом X3D. MPEG-4 Interactive Profile (ISO/IEC 14496) был основан на VRML (теперь на X3D) и X3D, по большей части, обратно-совместим с ним. VRML также продолжает использоваться в качестве файлового формата для обмена 3D-моделями, особенно в САПР.
Альтернативы
3DMLW — Язык 3D-разметки для веб (англ. 3D Markup Language for Web)
COLLADA — управляется Khronos Group
O3D — разработан Google
U3D — стандарт Ecma International ECMA-363
OrientationInterpolator
Нетрудно догадаться, что OrientationInterpolator позволяет организовать вращение. Только не забывайте, что значения ПРОМЕЖУТОЧНЫЕ между keyValues вычисляются из ЛИНЕЙНОЙ интерполяции.
Программы, которые поддерживают VRML расширение файла
В следующем списке перечислены программы, совместимые с файлами VRML, которые разделены на категории 3 в зависимости от операционной системы, в которой они доступны. Файлы с расширением VRML, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Вращение
Для вращения фигур вокруг осей координат применяется узел Rotation.
Первые три цифры определяет будет ли осуществлен поворот вокруг соответственно осей x, y и z, а четвертая задает угол вращения в радианах. В приведенном выше листинге поворот осуществляется вокруг оси y на 90 градусов.
Составим букву T из двух цилиндров. По умолчанию цилиндр ориентирован вертикально (см. рисунок). Поэтому для успешного выполнения задачи повернем его вокруг оси z на 90 градусов.
Как открыть файл VRL?
Причин, по которым у вас возникают проблемы с открытием файлов VRL в данной системе, может быть несколько. Что важно, все распространенные проблемы, связанные с файлами с расширением VRL, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Мы подготовили список, который поможет вам решить ваши проблемы с файлами VRL.
Шаг 1. Скачайте и установите TurboCAD
Проблемы с открытием и работой с файлами VRL, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами VRL на вашем компьютере. Решение простое, просто скачайте и установите TurboCAD. В верхней части страницы находится список всех программ, сгруппированных по поддерживаемым операционным системам. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт TurboCAD и загрузите установщик.
Шаг 2. Убедитесь, что у вас установлена последняя версия TurboCAD
Если проблемы с открытием файлов VRL по-прежнему возникают даже после установки TurboCAD, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия TurboCAD. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Это может быть одной из причин, по которой VRL файлы не совместимы с TurboCAD. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью TurboCAD.
Шаг 3. Настройте приложение по умолчанию для открытия VRL файлов на TurboCAD
Если у вас установлена последняя версия TurboCAD и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления VRL на вашем устройстве. Метод довольно прост и мало меняется в разных операционных системах.
Выбор приложения первого выбора в Windows
- Щелкните правой кнопкой мыши на файле VRL и выберите « Открыть с помощью опцией».
- Выберите Выбрать другое приложение → Еще приложения
- Чтобы завершить процесс, выберите Найти другое приложение на этом. и с помощью проводника выберите папку TurboCAD. Подтвердите, Всегда использовать это приложение для открытия VRL файлы и нажав кнопку OK .
Выбор приложения первого выбора в Mac OS
Шаг 4. Проверьте VRL на наличие ошибок
Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл VRL действительным. Отсутствие доступа к файлу может быть связано с различными проблемами.
1. Проверьте VRL файл на наличие вирусов или вредоносных программ.
Если файл заражен, вредоносная программа, находящаяся в файле VRL, препятствует попыткам открыть его. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. VRL файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.
2. Убедитесь, что файл с расширением VRL завершен и не содержит ошибок
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.
4. Убедитесь, что ваше устройство соответствует требованиям для возможности открытия TurboCAD
Операционные системы могут иметь достаточно свободных ресурсов для запуска приложения, поддерживающего файлы VRL. Закройте все работающие программы и попробуйте открыть файл VRL.
5. Проверьте, есть ли у вас последние обновления операционной системы и драйверов
Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом VRML Virtual World. Устаревшие драйверы или программное обеспечение могли привести к невозможности использования периферийного устройства, необходимого для обработки файлов VRL.
TimeSensor
Исключительно важный узел. В 90 процентах случаев Вы не обойдетесь без него при организации анимации, поскольку именно здесь можно регулировать СКОРОСТЬ протекания процессов.
Обратите внимание, что по умолчанию выставлено enabled TRUE. Это означает, что если Вы не указали в явном виде enabled FALSE (а также не меняли поле startTime 0), то после загрузки сцены TimeSensor сразу начинает генерировать разнообразные eventOut'ы ! Т.е. по умолчанию TimeSensor НЕ ПРИХОДИТСЯ АКТИВИРОВАТЬ, и этим он принципиально отличается от остальных узлов-сенсоров.
НО. Не забудьте, что кроме поля enabled, есть поля startTime и stopTime, которые имеют больший приоритет, чем enabled. Но об этом - чуть позднее.
А пока разберемся с остальными полями.
Цикл работы TimeSensor'а может быть либо один (loop FALSE) либо при loop TRUE циклов будет много, (бесконечно, если stopTime меньше, чем startTime, иначе пока не наступит stopTime). Длительность цикла задается полем cycleInterval.
Что же происходит хронологически?
eventOut isActive Посылается значение TRUE до тех пор, пока TimeSensor не будет деактивирован
eventOut cycleTime Посылается в момент наступления startTime и в начале каждого последующего цикла при loop TRUE.
eventOut time Посылает абсолютное значение времени, прошедшего с начала цикла.
eventOut fraction_changed В отличие от eventOut time посылает ОТНОСИТЕЛЬНОЕ значение степени завершенности цикла: в начале цикла fraction_changed=0, в конце цикла fraction_changed=1. Это один из наиболее часто используемых eventOut'ов. При loop TRUE почти всегда используется волшебная связка
.fraction_changed - .set_fraction - .value_changed,
где .fraction_changed - это часть от TimeSensor, .set_fraction - часть от интерполятора, .value_changed - часть от узла, у которого изменяются свойства.
Теперь поговорим о startTime и stopTime.
Как известно, в сетевых технологиях счет времени ведется с 00:00:00 1 января 1970 года, и значения полей startTime и stopTime в том числе. Но поскольку эти значения надо указать в секундах (т.е. сколько прошло с 00:00:00 1 января 1970 года), то чтобы пользоваться этими замечательными средствами управления TimeSensor'а не обойтись без маленького скрипта. Если дальнейшее изложение Вам непонятно, читайте раздел Скрипты.
Знаете ли Вы, например, сколько секунд прошло с 00:00:00 1 января 1970 года на момент открытия Вами страницы? А вот сколько:
Можете сделать пару reload'ов страницы и убедиться, что число обновляется.
Это можно было бы легко использовать для запуска анимации в заданное время. НО . надо быть очень осторожным. Самым удобным методом для запуска анимации мог бы быть - getTime(), который должен возвращать количество миллисекунд с 00:00:00 1 января 1970 года. В случае Cosmoplayer и Cortona это действительно так, но MS VRML 2.0 Viewer возвращает количество СЕКУНД, т.е. число в тысячу раз меньше.
Вот пример, который работает в случае MS VRML Viewer и ни в чем другом.
Просмотр. Движение шара начинается ровно через 2 секунды после открытия файла и длится 4 секунды.
А вот тот же пример, модифицированный для работы в Cosmoplayer, (хотя в в Кортоне он и в таком виде не работае, почему - хоть убейте не понимаю).
Просмотр. Если Вы сравните код, то увидите, что он отличается только тем, что пришлось перевести миллисекунды в секунды (поделить на 1000),
В общем, как бы то ни было:
ВЫВОД: никогда не связывайтесь с вычислением в явном виде абсолютных значений при измерении времени (time, startTime, stopTime) ! А если Вам нужно запустить анимацию в определенное время, пользуйтесь средствами, работающими с относительными значениями (cycleInterval).
И тут есть два противоположных случая: первый - если после запуска в определенное время далее анимация циклично повторяется (loop TRUE), второй - если после запуска в определенное время анимация должна совершиться ОДИН РАЗ.
Первая задача решается очень легко. Посмотрите пример и поймете сами:
Просмотр. Шарик начнет двигаться через 4 секунды после открытия файла и будет двигаться бесконечно!
Вторая задача несколько сложнее, поскольку нам необходимо получить сигнал set_startTime.
Кто разберется в примере, надеюсь оценит идею.
Просмотр. Шарик начинает двигаться через 4 секунды и движется 5 секунд.
Положение объектов в пространстве
Ссылки
Определитель VRML плагинов и браузеров - показывает какие плагины у вас установлены
Cortona 3D - фирма, разрабатывающая ПО для VRML
Физический вакуум - понятие релятивистской квантовой физики, под ним там понимают низшее (основное) энергетическое состояние квантованного поля, обладающее нулевыми импульсом, моментом импульса и другими квантовыми числами. Физическим вакуумом релятивистские теоретики называют полностью лишённое вещества пространство, заполненное неизмеряемым, а значит, лишь воображаемым полем. Такое состояние по мнению релятивистов не является абсолютной пустотой, но пространством, заполненным некими фантомными (виртуальными) частицами. Релятивистская квантовая теория поля утверждает, что, в согласии с принципом неопределённости Гейзенберга, в физическом вакууме постоянно рождаются и исчезают виртуальные, то есть кажущиеся (кому кажущиеся?), частицы: происходят так называемые нулевые колебания полей. Виртуальные частицы физического вакуума, а следовательно, он сам, по определению не имеют системы отсчета, так как в противном случае нарушался бы принцип относительности Эйнштейна, на котором основывается теория относительности (то есть стала бы возможной абсолютная система измерения с отсчетом от частиц физического вакуума, что в свою очередь однозначно опровергло бы принцип относительности, на котором постороена СТО). Таким образом, физический вакуум и его частицы не есть элементы физического мира, но лишь элементы теории относительности, которые существуют не в реальном мире, но лишь в релятивистских формулах, нарушая при этом принцип причинности (возникают и исчезают беспричинно), принцип объективности (виртуальные частицы можно считать в зависимсоти от желания теоретика либо существующими, либо не существующими), принцип фактической измеримости (не наблюдаемы, не имеют своей ИСО).
Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.
Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.
Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.
Однако такая постановка является внутренне противоречивой (виртуальные частицы ненаблюдаемы и их по произволу можно считать в одном случае отсутствующими, а в другом - присутствующими) и противоречащей релятивизму (то есть отрицанию эфира, так как при наличии таких частиц в вакууме релятивизм уже просто невозможен). Подробнее читайте в FAQ по эфирной физике.
Программы, которые поддерживают VRL расширение файла
Следующий список содержит программы, сгруппированные по 2 операционным системам, которые поддерживают VRL файлы. Файлы с суффиксом VRL могут быть скопированы на любое мобильное устройство или системную платформу, но может быть невозможно открыть их должным образом в целевой системе.
Сенсоры
Основное назначение сенсоров - сгенерировать EventOut после срабатывания. Срабатывание сенсора может быть вызвано разными причинами: наступление определенного времени, клик мышкой, наведение курсора, приближение к объекту, столкновение с объектом и т.д.)
Сфера
Параметр у сферы только один, это radius. текст визуальной VRML-модели
Заголовок VRML-файла
Как уже говорилось, Vrml-документ представляет собой обычный тестовый файл.
Для того, чтобы VRML-браузер распознал файл с VRML-кодом, в начале файла ставится специальный заголовок - file header:
Такой заголовок обязательно должен находиться в первой строке файла, кроме того, перед знаком диеза не должно быть пробелов.
PlaneSensor
Этот сенсор отслеживает перемещения курсора в плоскости с Z=0 локальной системы координат (по умолчанию в плоскости экрана).
Как только над объектом, к которому привязан PlaneSensor, происходит нажатие кнопки мыши, генерируется eventOut isActive. После этого при перемещении курсора при нажатой кнопке мыши отслеживаются текущие значения координат курсора (eventOut trackPoint_changed) и вектора перемещения (eventOut translation_changed).
Поле autoOffset определяет, будут ли суммироваться смещения (autoOffset TRUE) или каждое смещение будет отсчитываться от исходного положения объекта (autoOffset FALSE).
Просмотр. Для обоих шариков проделайте следующее: сдвиньте, отпустите кнопку мыши и попробуйте сдвинуть снова. Тот, что слева начнет двигаться с того места, на котором Вы его бросили (autoOffset TRUE), а тот что слева начнет двигаться с того места, в котором он был изначально (autoOffset FALSE)
Поле enabled TRUE/FALSE разрешает/запрещает работу сенсора.
Пара полей maxPosition и minPosition позволяют организовать двумерное движение в ограниченном регионе (как это было в предыдущем примере) или даже свести движение к одномерному. Просмотр. Если maxPosition меньше, чем minPosition, то движение не ограничивается.
Поле оffset определяет первоначальное смещение, относительно исходного положения объекта, а значит и точку, с которой будет каждый раз начинать движение объект при autoOffset FALSE.
ProximitySensor
- о самом факте пересечения границ (eventOut isActive)
- о времени входа (eventOut enterTime), если Вы попали внутрь параллелепипеда или времени выхода (eventOut exitTime), если Вы выбрались из него
- если Вы движетесь (eventOut position_changed)
- если Вы поворачиваетесь (eventOut orientation_changed)
Сколько бы у Вас в сцене ни было ProximitySensor'ов, все они работают независимо друг от друга. При этом они могут пересекаться в пространстве, быть вложенными один в другой или даже полностью совпадать (при этом при пересечении их общей границы Вы сработают оба).
Пример. Хотите всегда проезжать на зеленый свет? Нет проблем. Просто приближайтесь к светофору.
Обратите внимание: три ProximitySensor'а и eventOut каждого из них напрямую меняет значение DirectionLight ON/OFF. По-моему, довольно изящно.
ColorInterpolator
Этот интерполятор позволяет отсылать объектам (через узел Material) RGB значения цвета.
Определение собственных объектов
VRML предоставляет прекрасную возможность сократить и сделать более понятным исходный код VRML-файла путем описания собственных объектов. Это значит, что если в изображении несколько раз повторяется одна и та же фигура, то ее можно описать всего лишь один раз и в дальнейшем только ссылаться на нее.
Объект описывается одним из способов:
Для того, чтобы вставить в VRML-файл ранее определенную фигуру, используется команда USE
Создадим VRML-файл, описывающий стул, при этом ножку стула опишем как объект LEG:
Как видите, нам не понадобилось описывать каждую ножку в отдельности - в результате объем VRML-кода стал меньше, а сам код более читабельным.
Еще один способ уменьшить размер VRML-файла - вставлять фигуры из другого файла.
Это позволяет делать узел WWWInline:
Параметр name - это путь к файлу, параметры bboxSize и bboxCenter не обязательны и показывают пользователю размеры и положение вставляемого объекта, пока объект подгружается.
SphereSensor
После описания PlaneSensor и CylinderSensor здесь нечего рассказывать. Разве что пример привести. Просмотр.
Как открыть файл VRML?
Отсутствие возможности открывать файлы с расширением VRML может иметь различное происхождение. К счастью, наиболее распространенные проблемы с файлами VRML могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Получить FreeWRL
Шаг 2. Проверьте версию FreeWRL и обновите при необходимости
Вы по-прежнему не можете получить доступ к файлам VRML, хотя FreeWRL установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Если у вас установлена более старая версия FreeWRL, она может не поддерживать формат VRML. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью FreeWRL.
Шаг 3. Настройте приложение по умолчанию для открытия VRML файлов на FreeWRL
Если у вас установлена последняя версия FreeWRL и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления VRML на вашем устройстве. Метод довольно прост и мало меняется в разных операционных системах.
Изменить приложение по умолчанию в Windows
- Щелкните правой кнопкой мыши на файле VRML и выберите « Открыть с помощью опцией».
- Выберите Выбрать другое приложение → Еще приложения
- Наконец, выберите Найти другое приложение на этом. , укажите папку, в которой установлен FreeWRL, установите флажок Всегда использовать это приложение для открытия VRML файлы свой выбор, нажав кнопку ОК
Изменить приложение по умолчанию в Mac OS
Шаг 4. Проверьте VRML на наличие ошибок
Вы внимательно следили за шагами, перечисленными в пунктах 1-3, но проблема все еще присутствует? Вы должны проверить, является ли файл правильным VRML файлом. Проблемы с открытием файла могут возникнуть по разным причинам.
1. Проверьте VRML файл на наличие вирусов или вредоносных программ.
Если VRML действительно заражен, возможно, вредоносное ПО блокирует его открытие. Немедленно просканируйте файл с помощью антивирусного инструмента или просмотрите всю систему, чтобы убедиться, что вся система безопасна. Если сканер обнаружил, что файл VRML небезопасен, действуйте в соответствии с инструкциями антивирусной программы для нейтрализации угрозы.
2. Убедитесь, что структура файла VRML не повреждена
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл VRML Format.
4. Убедитесь, что ваше устройство соответствует требованиям для возможности открытия FreeWRL
Если в системе недостаточно ресурсов для открытия файлов VRML, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом VRML Format. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами VRML, влияющими на более старые версии данного программного обеспечения.
Расширение файла WRL используется VRML (язык моделирования виртуальной реальности). WRL - это стандартный формат для интерактивной векторной 3D-графики, разработанный в основном для WWW-приложений. Файлы WRL содержат описание виртуальной реальности, включая информацию, такую как начальная точка трехмерного вида, координаты, объекты, цвета, текстуры, свойства элементов сцены, а также объекты и формы сцен.
WRL файлы, так называемые «миры»
Файлы WRL, обычно называемые «мирами», хранят данные в текстовом формате ASCII. Виртуальные миры WRL позволяют пользователям свободно перемещаться по всем 3 направлениям.
Дополнительная информация
Файлы WRL обычно используются плагинами веб-браузера для создания трехмерных сред виртуальной реальности.
Хотя файлы WRL хранят данные в виде простого текста, их можно сжать с помощью GZIP - такие файлы имеют расширение WRZ.
Формат файла WRL был заменен форматом X3D (Extensible 3D).
Программы, которые поддерживают WRL расширение файла
Следующий список содержит программы, сгруппированные по 4 операционным системам, которые поддерживают WRL файлы. WRL файлы можно встретить на всех системных платформах, включая мобильные, но нет гарантии, что каждый из них будет должным образом поддерживать такие файлы.
Программы, обслуживающие файл VRL
Windows
MAC OS
Читайте также: