Смекни!
smekni.com

Задачи проекта 6 Специальная часть 6 1 Роль интерактивных информационных моделей 6 2 Роль интерактивного тренажера «Видеостудия» в учебной системе 18 Выбор инструментальной среды для функциональной ре (стр. 8 из 12)

Ряд каналов Quest3D специально разработан для внесения логики в программу.

Оператор Каналов (Channel Caller).Как гласит название, Channel Caller просто вызывает каналы, связанные с ним. Он используется для добавления структуры в проект. Channel Caller могут быть видны, как разделители, или даже ‘главы’ в программе Quest3D.

Изображение ниже показывает пример структуры программы, разделенной Channel Caller.

Рис.24. Logic

Как и Channel Caller, канал If вызывает своих потомков. Тем не менее, канал If вызывает потомков лишь в случае выполнения определенного условия. Это условие может быть привязано к первому потомственному входу канала If, и должно быть значением (value). Только если значение НЕ ‘0’ (условие истинно, ‘true’), канал, подключенный к If вызывается.

Рис.25. Канал if

Если/Иначе (If Else).Канал IfElse подобен каналу If. Если подключенное условие не соблюдается (т.е. значение равно ‘0’), вызывается третий потомственный вход. Если условие соблюдается, вызывается канал, подключенный ко второму потомственному входу.

Рис.26. Канал if else

Каналы Trigger работают подобно каналам If. Trigger также вызывает своих потомков в зависимости от условия.

Рис.27. Канал trigger

Существует большая разница между каналами If и Trigger.

Первая, когда условие соблюдено, Trigger запускает своего потомка лишь единожды. Для повторной активации Trigger условие сначала должно стать ложным (false), затем снова истинным (true). Пример: триггер сработал при нажатии пробела. Для его повторного срабатывания, пробел должен быть отпущен и нажат снова.

Вторая разница состоит во вводе для условия. Помимо формы от ‘0’ до ‘1’, также может быть выбрана одна из опций в окне настроек:

Рис.28. Настройка канала trigger

Пользовательский Ввод (User Input).Канал User Input может регистрировать активность со стороны ряда источников, таких, как клавиатура и мышь. В Quest3D, пользовательский ввод выражается одним из трех типов:

· Двоичное (бинарное) значение ‘0’ или ‘1.0’(пример, нажатие клавиши или кнопки мыши)

· Аналоговое значения от ‘0’ до ‘1.0’(пример, движение джойстика).

· Значение экранных координат.

Переключатель Каналов (Channel Switches). Channel Switches позволяет выбирать между различными каналами почти любого типа. Channel Switch сначала должен быть выставлен на тот же базовый тип (base type), что и его потомок.

Рис.29. Канал Channel Switch

Далее, его первый потомок определяет, какая из подключенных версий используется: значение ‘0’ приводит к тому, что будет использоваться первый вариант, ‘1’ - второй, и т.д.

Рис.30. Работа канал Channel Switch

2.4.2.2 МАТЕМАТИКА

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

Значения в проекте Quest3D часто меняются. Рядовая математика может быть использована для высчитывания новых значений.

Математические выражения могут быть описаны в Quest3D с помощью канала Expression Value. Он служит в качестве продвинутого калькулятора. Окно его настроек содержит бокс для фактической формулы и вспомогательный текст, описывающий возможные переменные и операторы. Справочный Материал описывает каждый из этих элементов в более подробных деталях.

Рис.31. Канал Expression Value

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

Значения, подключенные к потомственным входам Expression Value могут быть использованы, как часть выражения в канале. Первый потомок представлен буквой ‘A’, второй - буквой ‘B’ и т.д.

Рис.32. Работа канала Expression Value

При помощи Expression Value можно реализовать логические выражения, так как : |,&.>>,<<,<=,>=,<,>,==,!=

Результатом такого выражения будет либо 0, либо 1.

2.4.2.3. ЦИКЛ

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

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

Цикл For Loop.Как и многие другие языки программирования, Quest3D использует так называемую функцию ‘For Loop’. Цикл For Loop запускает определенную часть программы необходимое количество раз в каждом кадре. Только когда все ‘повторения’ цикла For Loop будут запущены, программа перейдет к следующей части.

Рис.33. Цикл For Loop

На изображении выше, сначала обрабатывается ‘Part 1’. Далее, 10 раз запускается ‘Part 2’ с помощью функции For Loop. Наконец, программа переходит к ‘Part 3’.

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

2.4.2.4 МАССИВЫ

Переменные (Variables) могут хранить определенные типы информации. Наиболее часто используемыми типами переменных в Quest3D являются value (значение), vector (вектор), matrix (матрица) и text (текст). Все они могут хранить один экземпляр своего типа. Канал Value, например, может хранить строго одно значение.

Массивы (Arrays) могут хранить множество экземпляров информации определенного типа. Каждый из этих экземпляров или записей (records) имеет фиксированное место в массиве и может быть доступен с помощью значения индекса (index value).

Рис.34. Канал Array

Менеджер Массивов (Array Manager).Array Manager в Quest3D управляет и отображает содержимое всех массивов проекта, таблично.

Рис.35. Настройка канала Array

2.4.2.5. Lua-script

Каналы Quest3D - это строительные блоки, содержащие предварительно скомпилированный код C++ и DirectX. Весь набор каналов предоставляет функциональность для многих аспектов разработки 3D реального времени.

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

Lua в Quest3D особенно применяем в таких случаях, как загрузка и выгрузка групп каналов, сложных просчетов и повторяющихся структур (циклов ‘for loop’).

Скрипт канала Lua отображается в окне настроек:

Рис.36. Скрипт канала Lua

Функции Lua (Lua functions). Каналы Lua могут иметь одну из двух функций, или обе:

1. ‘CallChannel’ запускается, когда вызывается канал.

2. ‘GetValue’ запускается, когда канал Lua используется, как значение (value). Фактическое значение канала Lua равно значению, которое ‘возвращает’ скрипт в конце функции.

2.5.Объектное проектирование

При проектировании тренажера «Видеостудия», необходимо учитывать следующие компоненты:

· Объекты

· Свойства объектов

· Взаимосвязи между объектами

Базовые классы объектов:

1) интерьер или окружение

2) предметы

Основные отличия:

· интерьер или окружение статичны

· предметы интерактивны

Предметы можно дополнительно разделить на

· предметы интерьера или мебель

· оборудование

Оборудование делим на:

· камеры

· осветительные приборы

Класс объектов представлен в виде информационной модели и проиллюстрирован в Приложении №1.

Все предметы имеют общее свойство-местоположение на сцене.

Дополнительные свойства для камеры (наследование от предметов):

1) zoom регулировка высоты

Дополнительные свойства для светильника:

1) высота

2) положение створок

3) яркость

Методы

Методы для предметов в целом

1) перемещение вдоль плоскости XOZ

2) проверка на пересечение

Методы для камеры:

1) изменение высоты

2) изменение zoom

Методы для светильника:

1) Изменение положения створок

2) Изменение яркости

Взаимодействие между объектами проявляется в виде:

1) Пересечения на плосткости

2) Попадание света от светильника

Реакция при пересечении:

· Отталкивание объектов друг от друга при попытке пересечься

Реакция объекта при попадании света:

· Визуализация тени

Класс объектов представлен в виде информационной модели и проиллюстрирован в Приложении №1.

2.6. Конструирование интерактивной модели

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