Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Загрузка объектов в 3D-среду
При инициализации программного комплекса происходит создание внутренней среды (контейнера), инициализация камеры (наблюдателя), подготовка материалов для вывода видео, текста, создание элементов интерфейса и загрузка объектов во внутреннюю среду комплекса из файла в формате 3DS. После чего назначаются функции обработчики событий (листенеры). Во всех выше перечисленных действиях используется функционал движка для низкоуровневой архитектурой приложения. Программный комплекс – высокоуровневая абстракция для управления самым важным функционалом приложения. Схема работы представлена на рисунке 5.5.
Рисунок 5.5 – Работа с библиотекой Альтернатива Внутренняя среда (контейнер) создается в виде BSP-дерева (см. пункт «Описание технологий. BSP дерево»). Код представлен в листинге 5.14. Листинг 5.14 – Создание нового BSP-контейнера private var rootContainer: BSPContainer = new BSPContainer(). Для создания наблюдателя используется абстракция «камера» по аналогии с кинокамерой. Её положение можно изменять и задавать алгоритмы ее движения и направления взгляда. Код представлен в листинге 5.15.
Листинг 5.15 – Инициализация камеры // Создание камеры и вьюпорта Камере устанавливается начальная точка отображения, линия взгляда и «окно», через которое видится 3D-мир (вьюпорт), оно равно размеру окна приложения. Код представлен в листинге 5.16. Листинг 5.16 – Создание контроллера камеры controller = new SimpleObjectController(stage, camera, 200). Контроллер необходим для управления камерой и обсчета столкновений ее с объектами в 3D-мире, иначе камера будет пролетать сквозь них, что может показаться пользователю странным и нереалистичным. Код представлен в листинге 5.17. Листинг 5.17 – Создание кнопок управления текстом и видео infoButton.label = " Информация об аудитории". videoButton.label = " Видео об аудитории". Продолжение листинга 5.17
Кнопки размещаются по абсолютным координатам, им присваиваются названия, параметр видимости переключается на false для скрытия, после чего кнопки добавляются в контейнер и им назначаются обработчики событий (EventListener). При загрузке объектов из файла производится их обход, проверка, являются ли они опорной геометрией (стены, пол, потолок) и вычисление их местоположения (по аудиториями) и в зависимости от этого они распределяются по массивам – массив объектов опорной геометрии, которую необходимо сразу же отобразить и массивы (по 1 на каждую аудиторию), объекты которых будут показаны при необходимости (камера окажется в этой аудитории). После этого строится BSP-дерево и для объектов загружаются материалы. Код представлен в листинге 5.18. Листинг 5.18 – Построение BSP-дерева и загрузка материалов для объектов var sourceGeometry: Vector.< Mesh> = new Vector.< Mesh> (). parser.parse((e.target as URLLoader).data, " textures/"). Продолжение листинга 5.18 aud801[aud801.length] = mesh. } else { Также, на каждый объект назначается обработчик события «CLICK», для последующей создания интерактивности(обработки мышиных кликов на объектах и показ зависимого контента).
|