Обзор существующих решений


Скачать 0.66 Mb.
Название Обзор существующих решений
страница 5/10
Тип Обзор
rykovodstvo.ru > Руководство эксплуатация > Обзор
1   2   3   4   5   6   7   8   9   10

4.4 Разработка пользовательского интерфейса



GUI – graphical user interface (графический пользовательский интерфейс).

Интерфейс приложения реализован при помощи сторонней графической библиотеки CEGUI. В интерфейсе реализованы кнопки возврата камеры на исходную позицию, кнопка выхода, текстовые поля и интерфейс меню настроек.

4.4.1 Интерфейс главного экрана


Каркасом графического интерфейса является менеджер виджетов к которому дочерними объектами прикрепляются все графические элементы. Исходные файлы всех графических элементов хранятся в полигональном атласе, который также подгружается при запуске программы. Параметры графических элементов в атласе описаны в xml файлах, поэтому при создании кнопки происходит обращение сначала к названию атласа, а затем к элементу этого атласа, например OgreTray/Button [8].

Для расположения GUI элементов на экране, используются UV-координаты – текстурные координаты, содержащие информацию для наложения текстуры.

Например, реализация кнопки выхода выглядит следующим образом: создаётся экземпляр кнопки, далее при помощи менеджера виджетов кнопке задаётся исходный текстурный файл из атласа. Также необходимо настроить текст кнопки, размер, расположение на экране и задать в обработчике кнопки к какой функции она будет обращаться при нажатии.
CEGUI::WindowManager &wmgr = CEGUI::WindowManager::getSingleton();

CEGUI::Window *buttonQuit;

buttonQuit = wmgr.createWindow("OgreTray/Button", "CEGUI/QuitButton");

buttonQuit->setText(“Выход”);

buttonQuit->setSize(CEGUI::UVector2(CEGUI::UDim(0.15, 0), CEGUI::UDim(0.05, 0)));

buttonQuit->setPosition(CEGUI::UVector2(CEGUI::UDim(0, 0), CEGUI::UDim(0.05, 0)));

sheetMgr->addChildWindow(buttonQuit);

CEGUI::System::getSingleton().setGUISheet(sheetMgr);

buttonQuit->subscribeEvent(CEGUI::PushButton::EventClicked, CEGUI::Event::Subscriber(&BasicApp::quit, this));

Также необходимо добавить тестовое поле, которое будет выводить информацию о модели в том случае, если камера указывает на модель. Так как графическая библиотека не поддерживает кириллические символы по умолчанию, нужно реализовать конвертацию из кодировки юникод (Unicode) в кодировку широкого символа (WCHAR).
CEGUI::String encodeRussian(wchar_t string[100])

{

wchar_t strw[100] = L"";

wcscat(strw, string);

CEGUI::String str;

for (int i=0; i < wcslen(strw); i++)

{

str += strw[i];

}
return str;

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

4.4.2 Меню настроек


Для удобного манипулирования 3D моделями реализовано меню настроек, которое включает в себя манипуляцию объектов при помощи пользовательского интерфейса. Манипулирование включает в себя: перемещение модели в пространстве, изменение угла поворота модели и изменение масштаба модели.

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

Реализация кода масштабирования модели выглядит так: в цикле проходим по списку моделей и с выделенной моделью из списка каждый кадр проводим масштабирование на 1.001 от предыдущего размера модели по всем осям.
for(int i = 0; i < myVector.size(); i++)

{

if ( mSceneMgr->getSceneNode(myVector[i])

->getShowBoundingBox() && static_cast(scalePlusButton)->isPushed() )

{

Ogre::Vector3 needScale = mSceneMgr

->getSceneNode(myVector[i])->getScale() * 1.001f;

mSceneMgr->getSceneNode(myVector[i])->setScale(needScale);

}

}
Учитывая то, что приложение не ограничено на количество подгружаемых пользователем 3D моделей, а также после реализации манипулирования с моделями логично добавить масштабирование комнаты в целях увеличение пространства на случай переизбытка моделей. Чтобы равномерно увеличить комнату, требуется масштабировать её только по двум осям.
if (static_cast(scaleRoomPlusButton)->isPushed() )

{

Ogre::Real needScaleX = mSceneMgr

->getSceneNode(“Room”)->getScale().x * 1.001f;

Ogre::Real needScaleY = mSceneMgr

->getSceneNode(“Room”)->getScale().y;

Ogre::Real needScaleZ = mSceneMgr

->getSceneNode(“Room”)->getScale().z * 1.001f;

mSceneMgr->getSceneNode(“Room”)->setScale(needScaleX, needScaleY, needScaleZ);

}

1   2   3   4   5   6   7   8   9   10

Похожие:

Обзор существующих решений icon Описание предметной области
Обзор существующих программных продуктов систем обработки данных c использованием ip-телефонии 7
Обзор существующих решений icon Метода очистки
Целью настоящей работы является разработка технических решений по усовершенствованию существующих методов зачистки резервуаров с...
Обзор существующих решений icon Генеральный план совмещенный с проектом планировки пояснительная...
Выявление проблем градостроительного развития территории поселения на основе анализа параметров городской среды, существующих ресурсов...
Обзор существующих решений icon Обзор
Оспаривание решений и действий (бездействия) органов государственной власти, органов местного самоуправления, должностных лиц, государственных...
Обзор существующих решений icon Экспериментальная медицина и детская неврология обзор
Системный обзор вмешательств у детей с церебральным параличом: статус доказательности
Обзор существующих решений icon «Выполнение работ по развитию и оказание услуг по сопровождению Федерального...
Целью работы является анализ справочников фргу на соответствие следующим критериям: актуальность и полнота существующих справочных...
Обзор существующих решений icon Теоретические основы анализа и планирования разработки управленческих решений 5
Методы планирования, используемые при разработке и принятии управленческих решений в организации 9
Обзор существующих решений icon Обзор текущего состояния и особенности государственной инновационной политики
Периодический обзор инновационной деятельности стран Европы, Америки, Азии и Африки, СНГ
Обзор существующих решений icon Методические указания Ростов-на-Дону
Целью данного курса является формирование представления о процессе принятия решений, навыков анализа ситуации при принятии решений,...
Обзор существующих решений icon Экспериментальное народное самолетостроение 2 Глава Предварительный анализ и выбор решений 2
«летающих решений», некоего ковра-самолета «небесного катера» для отдыха и путешествий, не требующего летных удостоверений и сертификации....
Обзор существующих решений icon Марка Сергеева государственные и муниципальные библиотеки иркутской...
Г 72 ежегод аналит обзор / Иркут обл гос универс науч б-ка им. И. И. Молчанова-Сибирского
Обзор существующих решений icon Решение это выбор альтернативы
Чтобы оказать вам помощь в этом, ниже мы рассмотрим типы решений, принимаемых управляющими, используемые способы, научные методы...
Обзор существующих решений icon 2 Анализ выполнения решений международных документов/решений, принятых...
На Рис. 133 наглядно представлена оценка Азербайджанской республики с точки зрения реализации основных направлений Плана действий...
Обзор существующих решений icon Учебное пособие. М.: Издательство "Март", 2004. Предыдущая
Моделирование как метод теории принятия решений и анализ ряда конкретных моделей предмет четвертой части. Приводятся методы принятия...
Обзор существующих решений icon Рабочая программа учебной дисциплины б. 3 Методы принятия управленческих...
Будущий менеджер должен научиться правильно применять готовые компьютерные программы, хорошо разработанную технику анализа количественных...
Обзор существующих решений icon Инструкция по эксплуатации на английском языке
Когда то я уже писал обзор на проектор Unic uc40 и когда увидел BlitzWolf (он же unic uc46) то решил взять его на обзор, что бы посмотреть...

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск