Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции»



Скачать 112.86 Kb.
Дата11.07.2014
Размер112.86 Kb.
ТипДиплом


Московский государственный институт электроники и математики

Кафедра «Информационно-коммуникационные технологии»

Отчёт о преддипломной практике

по теме:
«Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции»



Исполнитель:

Шубин С. С.



Группа

С-105


Руководитель:

Куприянов Ю. В.


Дата:

26.03.2012

Москва 2012

Оглавление


Анализ задания 3

Обзорно-аналитическая часть 4

Анализ актуальности 4

Требования к программному продукту 4

Анализ аналогичных решений 4

Autodesk 3ds Max и Autodesk Maya 4

Graphisoft Archicad 4

The Sims 5

The Movies 5

Игровые 3D-движки 5

Анализ графических движков. Возможность передачи потокового видео. 6

Выбор средств разработки 6

Технологическая часть 7

Обзор OGRE 3D 7

Обзор дополнительных компонентов для графического движка 7

Обзор среды разработки MS Visual Studio Express 7

Разработка 8

Создание среды для визуализации 8

Рабочий цикл OGRE-приложения 8

Подготовительные процедуры 8

Создание сцены 9

Запуск цикла рендеринга 10

Реализация протокола передачи команд управления виртуальными камерами из внешней программы 12

Реализация протокола передачи изображения с виртуальных камер во внешнюю программу 14





Анализ задания


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

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

В качестве графической среды для обучения комплекса предложено спроектировать программное обеспечение со следующими функциями:


  • моделирование сцены съемки;

  • настройка виртуальной видеоаппаратуры;

  • составление сценария мероприятия;

  • визуализация процесса съемки.

Данная графическая среда должна достигать следующих целей:

  1. Взаимодействие с системой обучения автоматизированного комплекса видеосъёмки с помощью следующих потоков информации:

Входные данные: управляющие сигналы на камеры (угол поворота и zoom);

Выходные данные: изображения с камер.

  1. Демонстрация процесса съёмки мероприятия.


В дипломной работе, в рамках проекта комплекса автоматизированной многокамерной съёмки, будет спроектирован и реализован программный продукт с указанными параметрами.

Обзорно-аналитическая часть

Анализ актуальности


Данное программное обеспечение является частью одного большого аппаратно-программного комплекса. Так как в результате исследования аналогичных решений (см. ниже) было выяснено, что не существует полностью подходящей среды, выполняющей поставленные задачи, то вопрос о необходимости разработки отпадает.

Требования к программному продукту


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

Так как содержимое видеопотоков должно соответствовать таковому с реальных камер, то это накладывает следующие ограничения на виртуальное моделирование:



  • детализация помещений должна быть достаточна, чтобы на изображении с камеры явно различалась мебель в помещении;

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

  • его анимация приближена к реальному поведению людей.

Анализ аналогичных решений

Autodesk 3ds Max и Autodesk Maya


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

Официальный сайт 3ds Max: http://www.autodesk.ru/3dsmax

Официальный сайт Maya: http://www.autodesk.ru/maya

Graphisoft Archicad


3D-редактор для моделирования архитектурных объектов, прежде всего, зданий и их интерьера. Оперирует такими объектами, как перекрытия, стены, окна, двери, мебель и другими готовыми трёхмерными элементами.

Данный редактор предоставляет богатые средства для моделирования сцены съёмки, но он не позволяет смоделировать персонажей на этой сцене и сам процесс съёмки.

Официальный сайт: http://www.graphisoft.com/products/archicad/

Пример работы: http://www.youtube.com/watch?v=SP9cqy9rvtA


The Sims


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

Ключевая особенность симулятора персонажей – точность в контролировании хода действий персонажей: детализация действий на уровне «подошёл к столу», «включил телевизор», но детализация уровня «поднял руку», «сделал три шага вперёд» отсутствует.

Официальный сайт: http://thesims.com/ru_ru/home

Пример работы в редакторе:



http://www.youtube.com/watch?v=7QK8malxCSA

The Movies


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

Официальный сайт: http://lionhead.com/Games/TheMovies/

Пример готовой работы: http://www.youtube.com/watch?v=vcLSrv6SH5Q

Игровые 3D-движки


Некоторые разработчики трёхмерных компьютерных игр выпускают графические движки этих игр, как отдельные продукты. Как правило, такие движки предоставляют необходимые средства для моделирования сцен, персонажей и их анимации, камер. Среди этих программных пакетов есть и те, которые можно получить бесплатно.

Примеры:


Движок

Пример работы

Unreal Engine 3

http://www.youtube.com/watch?v=uxjhvPj6FlA

CryEngine 3

http://www.youtube.com/watch?v=v0o_hLYLOrU

Source Engine

http://www.youtube.com/watch?v=MpeBR8iBilw

Unity 3D

http://www.youtube.com/watch?v=5wxe1IUu5QA

OGRE 3D

http://www.youtube.com/watch?v=woHZRUlOQqo

Анализ графических движков. Возможность передачи потокового видео.


Ключевые характеристики при выборе движка:

  • бесплатность;

  • поддержка форматов данных популярных трёхмерных редакторов;

  • возможность вывода потокового видео во внешнюю программу;

  • наличие широкой аудитории разработчиков и готовых решений;

  • доступность средств реализации графического интерфейса пользователя.

Игровые 3D-движки можно условно подразделить на свободные и коммерческие. В свою очередь существуют бесплатные версии коммерческих движков – Unreal Engine 2 и 3, CryEngine 2 и 3, Unity 3D. Главным фактором, отбрасывающим большинство продуктов, является возможность вывода потокового видео. Это низкоуровневая и редко используемая функция, которая не включается в бесплатные версии коммерческих движков.

Таким образом, платформа для программного продукта выбирается из свободных решений. К свободно распространяемым движкам относится серия id Tech, на которых были сделаны серии игр Doom и Quake. Но у него узкая аудитория разработчиков и практическое отсутствие поддержки.

Из других известных движков имеется OGRE 3D. Он уже удовлетворяет всем указанным требованиям.

Выбор средств разработки


Приложение разрабатывается на движке OGRE 3D. Изначальный язык программирования для этого пакета – C++, на нём же написаны и необходимые для разработки дополнительные модули – CEGUI и OgreSocks. Приложение разрабатывается под среду Windows, все указанные пакеты имеют возможность сборки в среде разработки MS Visual Studio. Таким образом, в качестве среды разработки используется MS Visual Studio Express 2008.

Технологическая часть

Обзор OGRE 3D


OGRE 3D – это свободно распространяемый графический движок. Он разрабатывается с 2005 года и имеет широкое коммьюнити, полную документацию и набор готовых примеров и дополнений для работы с ним.

Этот движок поддерживает низкоуровневые операции с графикой, в частности, он позволяет вывести изображение с внутриигровой камеры на текстуру, после чего с ней можно оперировать, как с набором данных – сохранять в файл и отправлять по сети.

Среди дополнительных материалов OGRE 3D есть средства для импорта моделей, материалов, текстур, частиц и анимации из редакторов трёхмерной графики – Blender и Autodesk Maya. Также присутствует дополнительный модуль для реализации графического интерфейса пользователя – CEGUI. Для создания сетевого взаимодействия в потоковой передаче видео может использоваться пакет сетевых библиотек OgreSocks.

Выбор данного графического движка является одним из условий для выбора редактора трёхмерной графики в смежной дипломной работе «Разработка технологии анимации виртуальных персонажей и сцен для моделирования процесса многокамерной автоматизированной съемки».


Обзор дополнительных компонентов для графического движка


Модуль OgreSocks для своей компиляции требует библиотек из пакета Microsoft Platform SDK – он доступен для свободного скачивания с сайта Microsoft.

Для экспорта моделей, материалов, текстур и анимации используется редактор Autodesk Maya 2011 с плагином Ogre-Maya Exporter.


Обзор среды разработки MS Visual Studio Express


Microsoft Visual Studio Express — линейка бесплатных интегрированных сред разработки, облегчённая версия Microsoft Visual Studio, разработанной компанией Microsoft. В данной работе используется версия MS Visual Studio Express для языка C++.

Разработка

Создание среды для визуализации

Рабочий цикл OGRE-приложения


Простейший рабочий цикл приложения на движке OGRE 3D состоит из следующих этапов:

  1. Создание корневого объекта (Root).

  2. Определение ресурсов, используемых приложением.

  3. Выбор и настройка системы рендеринга (DirectX, OpenGL).

  4. Создание окна для рендеринга (RenderWindow).

  5. Инициализация ресурсов, которые будут использоваться.

  6. Создание сцены с использованием этих ресурсов.

  7. Настройка сторонних библиотек и плагинов.

  8. Создание обработчиков кадров, одного или нескольких (Frame Listener).

  9. Запуск цикла рендеринга.

Подготовительные процедуры


Корневой объект – это ядро библиотеки OGRE и должен быть создан до того, как что-либо делать в движке.

mRoot = new Ogre::Root(mPluginsCfg);

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

OgreApplication::OgreApplication(void)

: mRoot(0),

mResourcesCfg(Ogre::StringUtil::BLANK),

mPluginsCfg(Ogre::StringUtil::BLANK)

...


Ogre::ConfigFile cf;

cf.load(mResourcesCfg);

Базовая версия OGRE 3D поддерживает две системы рендеринга – OpenGL и DirectX. Так как приложение ориентировано на семейство операционных систем Windows, то предпочтительнее использование DirectX.

RenderSystem *rs = mRoot->getRenderSystemByName("Direct3D9 Rendering Subsystem");

mRoot->setRenderSystem(rs);

rs->setConfigOption("Full Screen", "No");

rs->setConfigOption("Video Mode", "800 x 600 @ 32-bit colour");

Окно для рендеринга RenderWindow содержит в себе выводимое изображение.

mWindow = mRoot->initialise(true, "Ogre Render Window");

Необходимо определить, какие ресурсы будут подгружены и использованы в программе:

// Set default mipmap level (note: some APIs ignore this)

Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);

// initialise all resource groups

Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();


Создание сцены


Создание сцены состоит из трёх подэтапов:

  1. Создание менеджера сцены (SceneManager).

  2. Создание камеры (Camera).

  3. Создание порта просмотра (Viewport).

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

mSceneMgr = mRoot->createSceneManager("DefaultSceneManager");

Камеры (одна или несколько) используются для вывода изображения, попадающего в их объектив, на порт просмотра Viewport, который необходимо ассоциировать с окном рендеринга RenderWindow.

mCamera = mSceneMgr->createCamera("PlayerCam");

mCamera->setPosition(Ogre::Vector3(0,0,80));

mCamera->lookAt(Ogre::Vector3(0,0,-300));

Ogre::Viewport* vp = mWindow->addViewport(mCamera);

vp->setBackgroundColour(Ogre::ColourValue(0,0,0));

mCamera->setAspectRatio(Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight()));

На сцену необходимо добавить предварительно созданную модель аудитории:

Ogre::Entity* scene = mSceneMgr->createEntity("Scene", "504.mesh");

Ogre::SceneNode* sceneNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();

sceneNode->attachObject(scene);

Запуск цикла рендеринга


После завершения приготовительных операций запускается рендеринг:

void Root::startRendering(void)

{

assert(mActiveRenderer != 0);



mActiveRenderer->_initRenderTargets();

clearEventTimes();

mQueuedEnd = false;

while( !mQueuedEnd )

{

WindowEventUtilities::messagePump();



if (!renderOneFrame())

break;


}

}

При рендере каждого кадра обновляются состояния объектов и вызываются методы, требующие обработки на каждом кадре:



bool Root::renderOneFrame(void)

{

if(!_fireFrameStarted())



return false;

if (!_updateAllRenderTargets())

return false;

return _fireFrameEnded();

}

Данных действий достаточно, чтобы получить модель сцены в движке (см. рис. 1).





Рисунок 1: Сцена съёмки в движке OGRE 3D

Реализация протокола передачи команд управления виртуальными камерами из внешней программы


Сетевое взаимодействие осуществляется посредством библиотеки OgreSocks. В проект добавляется объект-сервер, которому передаётся указатель на виртуальную камеру:

mStrLsnr = new StreamListener(mCamera);

Перед использованием OgreSocks необходимо инициализировать:

OgreSocks::OgreSocksManager::GetSingleton()->Initialise();

mRemoteControl = NULL;

Описываются методы, которые будут вызваны в случае сетевых событий:

try

{

OgreSocks::OgreSocksManager::GetSingleton()->CreateSocket(mRemoteControl, LISTENING_PORT);



mRemoteControl->SetConnectListener(OgreSocks::MakeConnectCallback(StreamListener, RemoteConnect));

mRemoteControl->SetReceiveListener(OgreSocks::MakeReceiveCallback(StreamListener, RemoteReceive));

mRemoteControl->SetDisconnectListener(OgreSocks::MakeDisconnectCallback(StreamListener, RemoteDisconnect));

}

catch(OgreSocks::OgreSocksException& e)



{

MessageBox(NULL, "Caught OgreSocks Exception!", e.getFullDescription().c_str(), MB_OK);

}

Здесь LISTENING_PORT – порт, на котором работает данный сервер. Если на этот порт приходят данные, они разбиваются на символы и обрабатываются:



for(std::list::iterator iter=data.begin(); iter!=data.end(); iter++)

{

char c = (*iter);



switch(c)

{

case 'w':



m_pCam->pitch(Ogre::Degree(mRotate));

break;


case 's':

m_pCam->pitch(Ogre::Degree(-mRotate));

break;

case 'a':



m_pCam->yaw(Ogre::Degree(mRotate));

break;


case 'd':

m_pCam->yaw(Ogre::Degree(-mRotate));

break;

}

}



Виртуальная камера вращается нажатием на символы WASD при удалённом управлении.

Реализация протокола передачи изображения с виртуальных камер во внешнюю программу


Для организации передачи изображений добавляется транслирующий сервер:

OgreSocks::OgreSocksManager::GetSingleton()->CreateSocket(mStreamingServer, STREAMING_PORT);

mStreamingServer->SetConnectListener(OgreSocks::MakeConnectCallback(StreamListener, StreamConnect));

mStreamingServer->SetDisconnectListener(OgreSocks::MakeDisconnectCallback(StreamListener, StreamDisconnect));

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

// Creating render-to-texture

m_spTex = Ogre::TextureManager::getSingleton().createManual("StreamTex" ,

Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,

Ogre::TEX_TYPE_2D, CAMERA_WIDTH, CAMERA_HEIGHT,

0, Ogre::PF_R8G8B8, Ogre::TU_RENDERTARGET);

pRenderTex = m_spTex->getBuffer()->getRenderTarget();

pRenderTex->addViewport(m_pCam);

Ogre::Viewport* vp = pRenderTex->getViewport(0);

vp->setClearEveryFrame(true);

vp->setBackgroundColour(Ogre::ColourValue::Black);

vp->setOverlaysEnabled(true);

pBox = Ogre::PixelBox(CAMERA_WIDTH, CAMERA_HEIGHT, 1, m_spTex->getFormat());

pBox.data = new Ogre::uchar[m_spTex->getBuffer()->getSizeInBytes()];

pRenderTex->addListener(this);

pRenderTex->setAutoUpdated(true);

После каждого цикла рендера осуществляется отправка полученного кадра:

// Sending videostream

if (mStreamingServer->GetNumConnections())

{

pRenderTex->copyContentsToMemory(pBox, Ogre::RenderTexture::FB_FRONT);



img.loadDynamicImage((Ogre::uchar*)pBox.data, CAMERA_WIDTH, CAMERA_HEIGHT, m_spTex->getFormat());

img.encode("jpg");

const char* char_buffer = (const char*)img.getData();

m_buffer.assign(char_buffer, char_buffer + CAMERA_WIDTH * CAMERA_HEIGHT);

mStreamingServer->Send(m_buffer);

m_buffer.clear();



}


Похожие:

Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» iconРазработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съёмки и видеотрансляции

Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» iconРазработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съёмки и видеотрансляции

Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» iconПрограммный комплекс для математического моделирования ядерно-физических приборов и устройств
В работе освещена актуальность проблемы создания программного комплекса для математического моделирования ядерно-физических приборов....
Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» icon1. 2 Обзор программного комплекса «Учет и контроль компьютеров в сети»
Анализ существующих программных продуктов для диагностики программного и аппаратного обеспечения ЭВМ
Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» iconПеречень работ по тематике спо, выполненных в рамках государственных контрактов в период с 2003 по 2009 гг
Икт. Разработка предложений по развитию в Российской Федерации рынка программного обеспечения со свободной лицензией. Разработка...
Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» iconРазработка программного обеспечения для пзс-систем на основе uml-моделирования
Поэтому подобную систему управления и сбора данных можно отнести к классу параллельных приложений с элементами приложений реального...
Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» iconИнженер-тестировщик программного обеспечения
Целью данной программы является: Обеспечение комплекса необходимых знаний и практических навыков, соответствующих квалификации инженер-тестировщик...
Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» iconИнженер-тестировщик программного обеспечения
Целью данной программы является: Обеспечение комплекса необходимых знаний и практических навыков, соответствующих квалификации инженер-тестировщик...
Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» iconРабочая программа По дисциплине «Разработка программного обеспечения» По специальности
Основная задача курса – сформировать фундаментальные знания у студентов о принципах построения, реализации и функционирования программного...
Дипломной практике по теме: «Разработка программного обеспечения для моделирования комплекса многокамерной автоматизированной съемки и видеотрансляции» iconРазработка типового программно-технологического обеспечения региональной системы мониторинга хода реализации приоритетных национальных проектов и социально-экономического развития на территории субъекта российской федерации
Состав аппаратно-программного комплекса, необходимого для внедрения типового решения
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org