Разработка виртуальной рабочей среды факультета университета средствами мультиплатформенного инструмента для разработки трехмерных приложений Unity
Unity как мощный инструмент для разработки интерактивных браузерных и настольных приложений с трехмерной графикой, обрабатываемой в реальном времени. Система рендеринга - промежуточное программное обеспечение для визуализации компьютерной графики.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 26.09.2017 |
Размер файла | 347,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Введение
В современных условиях, когда столь актуальным является внедрение информационно-компьютерных технологий в систему образования страны, растет количество учебных заведений, которые дополняют традиционные формы обучения дистанционной. Тем более, что сегодня большинство молодых людей свободно владеют персональным компьютером и умело используют сведения, полученные из Интернета; им часто удобнее заглянуть в глобальную сеть, чем искать интересующий материал в традиционной печатной учебной литературе. К сожалению, подобного нельзя сказать об учителях, тут нас молодое поколение серьезно обгоняет.
Сегодня большинству уже знакомы понятия - дистанционное образование, виртуальное обучение, веб-обучение и т.д.
Информатизация образования и растущие требования к качеству и количеству высококвалифицированных специалистов приводят к необходимости разработки и внедрения инновационных образовательных методик и технологий, способствующих формированию новых форм обучения, не ограниченных пространственно-временными рамками. Этим требованиям отвечает идея виртуального обучения, которое позволяет получать качественное образование через интернет независимо от географического местоположения учащегося, без отрыва от работы и с учетом индивидуальной образовательной траектории.
Объект исследования: процесс дистанционного обучения на базе трехмерной виртуальной рабочей среды факультета.
Предмет исследования: организация трехмерной виртуальной рабочей среды факультета.
Цель работы: изучение специфики организации взаимодействия виртуальной рабочей среды и пользователя и применение этих знаний на практике.
Задачи работы:
Выявить специфику организации виртуальных сред.
Изучить особенности трехмерной виртуальной образовательной среды, как рабочего места пользователя.
Изучить возможности и организовать взаимодействие пользователя с виртуальной рабочей средой факультета с использованием скриптов.
1. Виртуальная образовательная среда
1.1 Современная виртуальная образовательная среда
Айвен Сазерленд в 1965 году на одной из своих лекций говорил, указывая на экран компьютерного монитора: «Не думайте об этом, как об экране монитора, думайте об этом как об окне - окне, через которое каждый может заглянуть в виртуальный мир».
Появившееся в последнее десятилетие технологии сделали популярными два новых понятия - виртуальная реальность и киберпространство. Виртуальная реальность состоит из двух слов и если разобрать эти два понятия по отдельности, то слово виртуальный или виртуальные - это те существительные, которые обозначают что-то недоступное органам чувств, т.е. эти понятия не материальны и не воплощаются в каком-либо предмете. Отсюда следует, что к виртуальным понятиям относятся: власть, собственность, любовь, добро, зло, ценность денег, справедливость, чувства, долг, красота, закон и др. Все виртуальные понятия это лишь продукт мозга многих людей. Нам они подчас кажутся чем-то материальным, но реального материального воплощения они не имеют. Для того, чтобы воплотить виртуальное понятие в жизнь достаточно создать материальные атрибуты.
Перейдём ко второму слову реальность, в переводе с латинского означает вещественный, действительный. Реальность - всё сущее; материальный мир, объективно существующий в действительности. Реальность приписывается всему тому, что может возникнуть и возникло во времени, что существует и является преходящим.
С появлением персональных компьютеров, стало общепринятым среди подростков понятие «киберпространство», т.е. такие игры в которых дети играют в компьютерные войны. В конце 20 столетия эти игры были очень популярными и на волне этой популярности создавались коммерческие клубы, где дети часами просиживали время и деньги. Под «киберпространством» же мы будем подразумевать конечную среду, основой которой будут являться компьютерные технологии, предназначенные для создания или имитации виртуальной реальности
Так что же такое виртуальная реальность? Это реальность, отличная от действительного, материального мира, основой которой будут являться нематериальные понятия - информация, мысли и образы. Смысл виртуальной реальности - это «ощущение присутствия» в виртуальной среде. Это область технологии, которая обсуждалась в течение многих десятилетий, но начинает развиваться только сейчас.
Термин виртуальная реальность относится к любой ситуации, когда искусственно создаётся ощущение пребывания человека в определённой среде. Например, автомобильный тренажёр-машина, который даёт человеку ощущение езды на автомобиле в «реальных условиях». В такую машину (или точнее компьютер, который ею управляет) можно ввести характеристики реального автомобиля и тем самым создать ощущение от езды.
В течение последних 10 лет широко распространились виртуальные образовательные лаборатории, которые могут моделировать поведение объектов реального мира в компьютерной образовательной среде и помогают учащимся овладевать новыми знаниями и умениями по разным предметам: по химии, физике, математике, биологии, астрономии. Одна из целей создания виртуальных лабораторий - стремление к всесторонней визуализации изучаемых процессов, а одна из главных задач - обеспечение возможности подготовки обучаемого к наиболее полному восприятию и пониманию их сущности.
В современных условиях, когда столь актуальным является внедрение информационно-коммуникационных технологий в систему образования страны, растет количество учебных заведений, которые дополняют традиционные формы обучения дистанционной. Тем более что сегодня большинство молодых людей свободно владеют персональным компьютером и умело используют сведения, полученные из Интернета; им часто удобнее заглянуть в глобальную сеть, чем искать интересующий материал в традиционной печатной учебной литературе.
Создание высококачественной и высокотехнологичной информационно-образовательной среды рассматривается в основном как достаточно сложная техническая задача, позволяющая коренным образом модернизировать технологический базис системы образования, осуществить переход к открытой образовательной системе, отвечающей требованиям постиндустриального общества.
Вместе с тем нельзя отрицать, что создание информационно-образовательной среды это не только чисто техническая задача. Для ее создания, развития и эксплуатации необходимо полностью задействовать научно-методический, организационный и педагогический потенциал всей системы образования.
В связи с этим необходимо учитывать также и проблемы педагогики в условиях функционирования современных информационно-образовательных сред.
Чтобы поближе познакомиться с понятием виртуальной образовательной среды приведем ниже несколько ее определений из разных источников.
Под виртуальной образовательной средой мы будем понимать совокупность информационных ресурсов, обеспечивающую комплексную методическую и технологическую поддержку дистанционного процесса, включая обучения, управление образовательным процессом и его качество.
Виртуальная обучающая среда ? комплекс компьютерных средств и технологий, позволяющий осуществить управление содержанием образовательной среды и коммуникацию участников. [5]
Под виртуальной образовательной средой мы понимаем информационное содержание и коммуникативные возможности локальных, корпоративных и глобальных компьютерных сетей, формируемые и используемые для образовательных целей всеми участниками образовательного процесса. Под виртуальной образовательной средой понимается среда, которая способствует творческому постижению Себя - Нового, т.е. личности, находящейся в процессе образовательного становления, осваивающей как новые знания, так и новые степени свободы.
Виртуальная образовательная среда - это быстроразвивающаяся, многоуровневая и многофункциональная система, которая объединяет:
педагогические, дидактические и методические технологии, специфические для взаимодействия участников учебного процесса;
информационные ресурсы: базы данных и знаний, библиотеки, электронные учебные материалы и т.п.;
современные программные средства: программные оболочки, средства электронной коммуникации.
Виртуальным коллективом является географически-распределенный коллектив, объединенный общей задачей и взаимодействующий посредством информационно-телекоммуникационных технологий. В применении к области образования участниками виртуального образовательного коллектива являются преподаватели и студенты, взаимодействующие в рамках виртуальной образовательной среды.
Виртуальное обучение - это процесс и результат коммуникации участников образовательного процесса в виртуальной среде.
Функции виртуальной образовательной среды:
информационно-обучающая (мы предоставляем необходимую учебную информацию);
коммуникационная (обучение проходит в диалоге с участниками учебного процесса);
контрольно-административная (проводятся комплексные меры по контролю уровня знаний, умений и навыков и администрированию).
Виртуальное образование - это процесс и результат взаимодействия субъектов и объектов образования, сопровождаемый созданием ими виртуального образовательного пространства, специфику которого определяют именно данные объекты и субъекты.
Существование виртуального образовательного пространства вне коммуникации учителей, учеников и образовательных объектов невозможно. Другими словами, виртуальная образовательная среда создаётся только теми объектами и субъектами, которые участвуют в образовательном процессе, а не классными комнатами, учебными пособиями или техническими средствами.
Важно подчеркнуть, что обучение в новом информационном пространстве не является антагонистичным в отношении к существующим формам обучения и не отрицает имеющиеся образовательные тенденции. Новое естественным образом интегрируется в эти системы, дополняя и развивая их, и способствует созданию мобильной образовательной среды.
1.2 Особенности Unity в создании виртуальной рабочей среды
Мало кто в наше время напрямую использует низкоуровневые API для разработки в сравнительно быстрые сроки многопользовательского проекта. В основном, производители берут на вооружение готовые игровые движки (Game Engine), которые уже включают в себя движок рендеринга, физический движок, звук, систему скриптов, анимацию, искусственный интеллект, сетевой код, а также управление памятью и многопоточность. На крайний случай, разработав и протестировав игровой движок один раз, компания может сэкономить немалые средства и время, повторно используя свой продукт как основу для многих игровых проектов.
Большинство игровых движков содержит в себе интегрированную среду разработки, что позволят тестировать скрипты и все игровые действия в буквальном смысле «на лету».
Для нашей виртуальной рабочей среды мы решили использовать Unity - мульти платформенный инструмент для разработки трехмерных приложений, работающих в частности под операционной системой Windows.
Unity3d - это мощный мультиплатформенный инструмент для разработки и программирования интерактивных браузерных и настольных приложений с двух- и трехмерной графикой, обрабатываемой в реальном времени.
Проект Unity3d основан в 2005 году в Дании компанией Unity Technologies, имеет штаб-квартиру в San Francisco и рабочие группы в Копенгагене, Лондоне, Стокгольме, Вильнюсе, Сеуле, Токио.
Все версии проекта Unity3d содержат интегрированный редактор проектов, поддерживают импорт графических и неграфических ресурсов (моделей, в том числе анимированных, текстур, скриптов и т. д.), содержат встроенные ландшафты, шейдерную систему, сочетающую простоту использования, гибкость и производительность. Программирование графики в Unity3d осуществляется средствами JavaScript, Boo (диалект Phyton) и C# на основе .NET; реализована работа с сетью, используется физический движок Ageia PhysX, смешивание 3D-графики реального времени с потоковым аудио и видео. Сервер ресурсов Unity обеспечивает контроль версий в Unity.
Unity3d поддерживает широкий диапазон платформ: Windows (XP /Vista / W7), MacOs X, iPhone, iPod, iPad, Xperia PLAY, PS3, Flash 3D player.
В 2013г. проект Unity дошел до финальной стадии версия Unity 4.1, в которой список поддерживаемых платформ расширился до iOS, Android, Wii, XBox 360, PlayStation 3, Linux. Поддерживаемые браузеры: IE, FireFox, Chrome, Opera, Safari.
Разработчиками выпускаются две версии программного продукта: обычная версия и платная версия Unity3d Pro. Первая отличается ограниченным функционалом, вторая позволяет осуществить все этапы графического конвейера, включая рендер в текстуру, эффекты пост-процесса, удаление из процесса рендеринга невидимых вершин и полигонов.
Инструментарий Unity3d построен на использовании для разработки интерактивных приложений с двух- и трехмерной графикой, обрабатываемой в реальном времени, концепции игрового движка (Game Engine).
Несмотря на специфичность названия, игровые движки широко используются в других типах интерактивных приложений, использующих 3D-графику в реальном времени, таких, как демонстрационные рекламные ролики, архитектурные визуализации, обучающие симуляторы и среды моделирования.
Игровой движок (Game Engine) - это центральный программный компонент интерактивных приложений с трехмерной графикой, обрабатываемой в реальном времени, в том числе компьютерных и видеоигр. Он обеспечивает основные технологии моделирования и 3D-визуализации, упрощает процесс разработки проектов, обеспечивает возможность их запуска на нескольких платформах, таких как игровые консоли и настольные операционные системы, например, GNU/Linux, Mac OS X и Microsoft Windows.
Игровой движок обеспечивает основную функциональность пакета Unity3d. Он включает в себя многократно используемые программные компоненты: графический движок («визуализатор»), физический движок, звуковой движок, систему скриптов, анимацию, искусственный интеллект, сетевой код, управление памятью и многопоточность.
В дополнение к многократно используемым программным компонентам, игровые движки, как правило, предоставляют набор визуальных инструментов для разработки проектов. Эти инструменты обычно составляют интегрированную среду для упрощенной, быстрой разработки интерактивных приложений на манер поточного производства, предоставляя гибкую и многократно используемую программную платформу со всей необходимой функциональностью для разработки приложения, сокращая затраты, сложность и время разработки.
Часто игровые движки имеют компонентную архитектуру, позволяющую заменять или расширять некоторые подсистемы движка более специализированными (и часто более дорогими) компонентами, например, для симуляции физической природы взаимодействия (Havok), звука (FMOD) или рендеринга (SpeedTree). Однако некоторые игровые движки, такие как RenderWare, проектируются как набор слабосвязанных компонентов, которые могут выборочно комбинироваться для создания собственного движка, вместо более традиционного подхода, который заключается в расширении или настройке гибкого интегрируемого решения.
Рассмотрим основные компоненты любого игрового движка - графический и физический движки.
Графический 3D-движок (англ. 3D-graphics engine; система рендеринга или «визуализатор») - промежуточное программное обеспечение (ППО), основной задачей которого является визуализация (рендеринг) двух- или трехмерной компьютерной графики. Может существовать как отдельный продукт или в составе игрового движка и использоваться для визуализации отдельных изображений или компьютерного видео. Графические движки, использующиеся в программах по работе с компьютерной графикой (таких, как 3ds Max, Maya, Cinema 4D, Zbrush, Blender), обычно называются «рендерерами», «отрисовщиками» или «визуализаторами». При этом основное и важнейшее отличие «игровых» графических движков от «неигровых» состоит в том, что первые должны обязательно работать в режиме реального времени, тогда как вторые могут тратить по несколько десятков часов на вывод одного изображения. Вторым существенным отличием является то, что, начиная приблизительно с 1995-1997 года, графические движки производят визуализацию с помощью графических процессоров (GPU) видеокарт. Программные графические движки используют только центральные процессоры (CPU).
Физический движок (англ. physics engine) - программный движок, который производит компьютерное моделирование физических законов реального мира в виртуальном пространстве 3D-сцены с той или иной степенью аппроксимации. Чаще всего физические движки используются не как отдельные самостоятельные программные продукты, а как составные компоненты других программ. Выделяют игровые и научные физические движки.
Первый тип используется в компьютерных играх как компонент игрового движка. В этом случае он также должен работать в режиме реального времени, то есть воспроизводить физические процессы в игре с той же самой скоростью, в которой они происходят в реальном мире. Вместе с тем от игрового физического движка не требуется точности вычислений.
Современные физические движки симулируют не все физические законы реального мира, а лишь некоторые, причем с течением времени и прогресса в области информационных технологий и вычислительной техники список «поддерживаемых» законов увеличивается. Современные физические движки, как правило, могут симулировать следующие физические явления и состояния: динамику абсолютно твердого и деформируемого тела, динамику жидкостей и газов, поведение тканей и веревок (тросы, канаты и т. д.).
На практике физический движок позволяет наполнить виртуальное 3D-пространство статическими и динамическими объектами - телами (англ. body), указать некие общие законы взаимодействия тел и среды в этом пространстве, в той или иной мере приближенные к физическим, задавая при этом характер и степень взаимодействий.
Собственно расчет взаимодействия тел движок и берет на себя. Когда простого набора объектов, взаимодействующих по определенным законам в виртуальном пространстве, недостаточно, в силу неполного приближения физической модели к реальной, возможно добавлять к телам связи (англ. joint, «соединение»). Связи представляют собой ограничения объектов физики, каждое из которых может накладываться на одно или два тела.
Рассчитывая взаимодействие тел между собой и со средой, физический движок приближает физическую модель получаемой системы к реальной, передавая уточненные геометрические данные в графический движок.
Unity3d в качестве физического движка использует Nvidia's PhysX engine.
Основной концепцией Unity3d является использование в сцене легко управляемых объектов, которые, в свою очередь, состоят из множества компонентов. Создание отдельных игровых объектов и последующее расширение их функциональности с помощью добавления различных компонентов позволяет бесконечно совершенствовать и усложнять проект.
2. Организация взаимодействия персонажа с виртуальной рабочей средой
2.1 Среда Unity как инструмент разработки
Unity -- это мультиплатформенный инструмент для разработки двух- и трёхмерных приложений и игр, работающий под операционными системами Windows и OS X. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Android, Apple iOS, Linux, а также на игровых приставках Wii, PlayStation 3 и Xbox 360. Есть возможность создавать интернет-приложения с помощью специального подключаемого модуля к браузеру Unity, а также с помощью экспериментальной реализации в рамках модуля Adobe Flash Player. Позже от поддержки Flash отказались. Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL.
Unity характеризуется следующими возможностями:
Сценарии на C#, JavaScript (модификация) и Boo;
Игровой движок полностью увязан со средой разработки. Это позволяет прямо в редакторе испытывать игру;
Работа с ресурсами возможна через простой Drag&Drop.
Интерфейс редактора настраиваемый;
Осуществлена система наследования объектов;
Поддержка импорта из очень большого количества форматов;
Встроенная поддержка сети;
Есть решение для совместной разработки -- Asset Server;
Также можно использовать подходящий пользователю способ контроля версий. К примеру, Tortoise SVN или Source Gear.
К особенностям данной среды разработки можно отнести:
широкие возможности импорта,
полностью настраиваемый и доступный большинству людей интерфейс,
кроссплатформенность,
гибкость и расширяемость,
гибкая ценовая политика,
доступно для VITV и epichnoetv,
поддержка физики ткани (PhysX Cloth),
Assets Store, так называемый магазин компонентов,
наличие бесплатной версии с некоторыми ограничениями,
скиннинг на CPU.
Основной концепцией Unity3d является использование в сцене легко управляемых объектов, которые, в свою очередь, состоят из множества компонентов. Создание отдельных игровых объектов и последующее расширение их функциональности с помощью добавления различных компонентов позволяет бесконечно совершенствовать и усложнять проект.
Влияние компонента на поведение или положение того или иного объекта в сцене (свойства компонента) определяется с помощью переменных компонента.
Ресурсы (Assets) проекта - это строительные/составные блоки всех проектов Unity, в качестве которых могут быть использованы файлы изображений (текстур), 3D-моделей, звуковые файлы, которые будут использоваться при создании в качестве ресурсов. Поэтому в любой папке проекта Unity всегда существует подкаталог с именем Assets, где хранятся все файлы ресурсов.
Когда какой-либо ресурс (например, геометрическая 3D-модель) используется в сцене игры, он становится в терминологии Unity игровым объектом (Game Object). Все эти объекты изначально имеют хотя бы один компонент, задающий его положение в сцене и возможные преобразования (компонент Transform). Переменные компонента Transform определяет положение (position), поворот (rotation) и масштаб (scale) объекта в его локальной декартовой прямоугольной системе координат X, Y, Z. Наличие переменных у каждого компонента обусловливает возможность обращения к ним из соответствующей программы (скрипта).
Компоненты (components) в Unity3d имеют различное назначение: они могут влиять на поведение, внешний вид и многие другие функции объектов, к которым прикрепляются (attaching). Unity предоставляет множество компонентов различного назначения.
Для обеспечения интерактивности различных 3D-приложений в Unity3d используются скрипты, которые также рассматриваются средой как компоненты. Помимо JavaScript, Unity3d также предоставляет возможность использовать для написания скриптов языки C# и Boo (производный от языка Python). Для написания скриптов можно воспользоваться встроенным редактором Unity3d MonoDevelop.
В качестве языка для написания скриптов в Unity применяются C#, JavaScript и Boo. Наиболее приоритетными языками для нас были C# и JavaScript.
Оба языка используют в качестве синтаксической основы язык программирования C. В частности, от него унаследованы без изменений:
обозначения начала/конца блока кода фигурными скобками;
обозначения, ассоциативность и приоритет большинства встроенных операций (присвоение, арифметические, логические, побитовые операции, операции инкремента/декремента);
синтаксис описания и использования переменных и функций (порядок «тип имя», использование модификаторов, обязательность скобок для функций, описание формальных параметров);
синтаксис всех основных конструкций: условного оператора, циклов, оператора множественного выбора;
отсутствие процедур (их заменяют функции типа void);
наименования встроенных элементарных типов (кроме bool, в JavaScript этот тип называется boolean);
использование точки с запятой.
Всё это приводит к тому, что программы на JavaScript и C# внешне на первый взгляд выглядят чрезвычайно похоже на C-программы. В обоих языках сделаны однотипные расширения и дополнения по отношению к C (или C++), в частности, расширен алфавит и введён собственный синтаксис, поддерживающий пакеты, импорт описаний, определение единиц компиляции.
Оба языка позволяют определить класс внутри класса. Внутренние классы JavaScipt имеют доступ к нестатическим членам родительского класса; кроме того, внутри методов можно определять локальные классы, имеющие доступ по чтению к локальным переменным, и безымянные (анонимные) локальные классы, которые фактически позволяют создавать экземпляры объектов и интерфейсов, перекрывающие методы своего класса, непосредственно в месте их использования. На этом механизме в JS-программах может строиться обработка событий (событие генерирует вызов метода, в исходном классе-обработчике являющегося абстрактным; там, где нужен конкретный обработчик события, программист создаёт экземпляр локального анонимного класса -- наследника базового класса-обработчика и непосредственно использует его). Таким образом, исчезает необходимость в специальном типе и синтаксической поддержке для событий, но сам код, создающий обработчики, несколько более сложен для понимания.
Подход C# более напоминает C++. Внутренние классы в C# имеют доступ только к статическим членам внешнего класса, а для доступа к нестатическим членам нужно явно указывать экземпляр внешнего класса. Локальные внутренние классы в C# не поддерживаются, обработка событий в нём не требует таких классов, поскольку строится на других механизмах.
JavaScript старше, чем C# и построен на большой и активной пользовательской базе. JavaScript доминирует в курсах программирования американских университетов и колледжей, и литературы по JavaScript сегодня намного больше, чем по C#.
C#, в свою очередь, развивается быстрее, гораздо слабее ограничивая себя в добавлении новых проблемно-ориентированных возможностей. Особенно эта тенденция проявилась в версии C# 3.0, в которой, например, появились SQL-подобные запросы. Новые возможности при этом строятся так, чтобы язык оставался языком общего назначения.
C# -- язык относительно новый. Microsoft изучила существующие языки, такие как Java, Delphi и Visual Basic, и изменила некоторые аспекты языка для лучшего соответствия нуждам некоторых типов приложений.
Это определило наше решение в выборе языка. C#, определенно, гораздо более приспособлен для работы в проектах нашего типа, благодаря своей гибкости, стремительному развитию и общей адаптированности.
2.2 Программирование скриптов в среде Unity
Большое значение при организации взаимодействия 3d-объектов в пространстве имеет обнаружение столкновений (Сollision detection).
Сollision detection - это способ, с помощью которого анализируется 3D-пространство сцены на предмет столкновений между объектами. Присваивая объекту компонент Collider, мы фактически размещаем вокруг него невидимую сетку - так называемый коллайдер, который имитирует форму объекта и информирует о наличии столкновения с другим объектом. Например, в игре-симуляторе боулинга шары будут иметь простую сферическую форму коллайдера (Sphere collider), в то время как у объектов-кеглей коллайдер будет иметь форму цилиндра/капсулы или, для большей реалистичности столкновений, будет использовать меш (mesh), который является не чем иным, как описанием геометрии 3d-модели. Информация о столкновении коллайдеров поступает в физический движок, который сообщает столкнувшимся объектам их дальнейшую реакцию на это столкновение, основанную на направлении и силе удара, скорости и других факторах. Отметим, что использование коллайдеров, повторяющих форму меша модели, с одной стороны, дает более точное определение столкновений, но в то же время приводит к увеличению затрат на их вычисление.
Рассмотрим особенности столкновений объектов как с использованием непосредственного функционала Сollision detection, предоставляемого Unity3d, так и с помощью программирования такого взаимодействия на языке C#.
Для этого добавим в созданную ранее сцену новый кубический объект, выполняющий роль некоторого препятствия для падающего куба, смоделированного ранее (GameObject > Create Other > Cube), и придадим ему форму параллелепипеда.
Для изменения его формы можно воспользоваться свойствами компонента Transform на панели инспектора компонентов, либо с помощью инструмента масштабирования «Scale», предварительно выбрав геометрический объект. При этом в сцене можно увидеть три разноцветных квадратных куба по разным сторонам объекта, выполняющих роль узлов для изменения его размера в направлении, соответствующем осям координат сцены. Центральный куб позволяет изменять размер одно временно по всем осям координат.
Чтобы лучше увидеть картину взаимодействия куба и прямоугольного препятствия, необходимо развернуть исходное положение падающего куба - на ребро. Вращение выбранного объекта (куба) осуществляется в Unity3d c помощью инструмента «Rotate». При активации этого инструмента вокруг объекта появляется своеобразная сфера, определяющая углы его вращения в трехмерном пространстве. Захватывая и перемещая одну из ее сторон, можно вращать объект произвольным образом.
Рис. 1
Далее переключившись в режим просмотра Game, можно наблюдать сцену взаимодействующих в ней объектов. Для определения факта столкновения объектов в Unity3d необходимо отличать эти объекты по их названию. Переименовать объект «Plane» (Плоскость) в объект «Ground», а параллелепипед, представляющий стену (препятствие), в объект «Wall», можно непосредственно выбрав объект в окне иерархии и применив к нему команду «Rename» из контекстного меню, после чего задать новое имя объекта. Отметим, что при разработке проектов в Unity3d разрешается ввод русскоязычных символов, однако при работе со скриптами необходимо использовать латиницу.
Для того чтобы заставить взаимодействовать между собой имеющиеся в сцене трехмерные модели, создадим скрипт на языке программирования C# и назовем его «Dialog» (Project > Create > C# Script).
Создание скриптов - один из наиважнейших моментов в разработке. Код, написанный для использования в Unity, опирается на ряд готовых встроенных классов.
Рассмотрим следующий код:
using UnityEngine;
using System.Collections;
public class Dialog : MonoBehaviour
{
// Метод-функция, вызываемая при столкновении объектов
void OnCollisionEnter() {
Debug.Log("Hit Something"); // Передаем сообщение в консоль Unity
}}
Первые две строки подключают к скрипту используемые пространства имен. Далее необходимо запомнить, что главным классом в Unity3d является MonoBehaviour. Любой пользовательский скрипт (в описанном случае это Dialog) должен быть его наследником, и неспроста - ведь именно этот класс реализует интеграцию всех объектов в основной цикл программы. Именно это наследование позволяет пользовательскому скрипту (классу) исполнять роль компонента и быть привязанным к игровому объекту.
Здесь метод «OnCollisionEnter» определяет столкновение объекта с другими объектами. А статический метод «Log» класса «Debug» пишет сообщение "Hit Something" в консоль Unity.
После сохранения скрипта добавляем его в качестве компонента для падающего куба. Для этого необходимо сначала выбрать соответствующий объект в окне иерархии и перетащить на него вновь созданный скрипт «Dialog». При этом необходимо обратить внимание на то, что добавленный скрипт также отображается внизу в окне «Inspector» в качестве компонента объекта, к которому он привязан.
Теперь, перейдя в режим Play, можно наблюдать, что в тот момент, когда созданный объект куб коснется плоской поверхности, в консоли среды Unity3d (Window > Console) появляется соответствующее сообщение.
Заметьте, что такое сообщение будет выдаваться при каждом столкновении объектов. Причем последнее консольное сообщение отображается в статус (внизу окна).
Для выяснения того, с какими именно объектами столкнулся исходный объект, необходимо использовать значение параметра класса «Collision», которое будет принимать метод «OnCollisionEnter».
Открываем редактор скрипта и вставляем в него следующий код:
// Теперь метод принимает объект класса Collision, с которым происходит столкновение
void OnCollisionEnter(Collision myCollision) {
// определение столкновения с двумя разноименными объектами
if (myCollision.gameObject.name == "Ground") {
// Обращаемся к имени объекта, с которым столкнулись
Debug.Log("Stolknulsya s Zemlei");
}
else if (myCollision.gameObject.name == "Wall") {
Debug.Log("Stolknulsya sо Stenoi ");
}}
После открытия консоли (Window > Console) мы увидим, с какими именно объектами в сцене столкнулся куб. Таким образом, Unity3d позволяет нам оценить возможности взаимодействия объектов внутри среды.
Необходимо добавить префаб в проект (Project > Create > Prefab). В результате на панели Project в окне проекта появится префаб с именем «New Prefab». Переименуем его в «UprugostCube».
Префаб (Prefabs) - это конструкция подготовленных объектов и компонентов, предназначенная для их многократного использования в проекте. Экземпляр префаба может быть добавлен в любое количество сцен, а также многократно в одну сцену. Все экземпляры являются ссылками на оригинальный префаб и, фактически, его «клонами»; имеют те же свойства и компоненты, что и оригинальный объект.
Свойства созданного префаба «UprugostCube» описываются на панели инспектора, а его предварительный вид доступен в окне «Preview».
Для создания пары экземпляров префаба на плоскости необходимо просто его перетащить. В результате на плоскости появятся два куба, а в окне «иерархии» добавится объект с именем соответствующего префаба «UprugostCube».
Переключившись в режим просмотра «Game» и запустив сцену, можно увидеть, что добавленный куб ведет себя точно так же, как и оригинальный, обладая одинаковыми физическими свойствами.
Рассмотрим, каким образом можно удалять объекты в Unity3d в скриптах на языке C#. Для этого в окне «Project» создадим новый скрипт с именем «Destroy» и откроем его в редакторе скриптов MonoDevelop.
Как уже говорилось, при создании C# скрипта Unity создает некий каркас, состоящий из подключенных библиотек и основного класса (используемого скриптом) с методами Start() и Update().
В предыдущих случаях нами рассматривался метод Update, который вызывается каждый раз в новом кадре для каждого компонента всех объектов на сцене.
В данном случае мы воспользуемся методом Start(), который выполняется единожды для каждого компонента сразу после нажатия на кнопку «Play» и, соответственно, должен использоваться для инициализации переменных и придания им каких-либо начальных значений. Добавим в тело метода Start() функцию Destroy() и передадим в нее gameObject, указав таким образом, что скрипт должен уничтожить объект, компонентом которого он является:
// метод Start() выполняется единожды, сразу после окончания загрузки сцены
Start() {
// уничтожить объект, к которому прикреплен данный скрипт
Destroy(gameObject);
}
Добавим этот скрипт к кубическому объекту, который должен удаляться, с помощью меню компонентов. Теперь после запуска сцены можно убедиться, что добавленный куб при запуске программы сразу пропадает.
Теперь попробуем уничтожить другой объект с помощью его поиска в среде. Для этого воспользуемся статическим методом Find() основного класса GameObject:
// ищем объект с именем Stena и если таковой есть - уничтожаем его
Destroy(GameObject.Find(“Wall”));
В случае необходимости уничтожения объекта не сразу, а спустя какое-то время, можно задать значение во второй параметр функции Destroy:
// Теперь уничтожаем стену, спустя две секунды после загрузки сцены
Destroy(GameObject.Find(“Wall”), 2);
Далее рассмотрим скрипты, описывающие управление персонажем в трехмерной рабочей среде факультета. Наша среда представляет собой трехмерную модель учебного корпуса №2 ВГСПУ, который полностью занят помещениями факультета МИФ. Первое, что обеспечивает интерактивность, - это возможность обзора 3D пространства с помощью мыши.
Подключаем мышь с помощью данного отрезка скрипта. Переменные sensitivityX и sensitivityY отвечают за чувствительность мыши по вертикальной и горизонтальной осям. Переменные minimumX, maximumX, minimumY, maximumY указывают на какой угол может отклониться камера от начального положения. По оси Х эти значения равны -360 и 360, что означает, что игрок может свободно вращать камеру по оси Х. В вертикальной оси, эти значения равны -60 и 60. То есть, пользователь может отклонить камеру на 60 градусов вверх либо вниз. Для стандартных игр от первого лица эти значения равны -90 и 90.
Этот скрипт привязывается к объекту «камера» и вращает его в сторону, которую смещается мышь, в соответствии с чувствительностью. Если значение угла, принимаемое камерой, выходит за рамки, указанные в максимуме и минимуме, то оно будет возвращено до допустимого значения. Вращение осуществляется стандартной функцией transform.rotate, примененной к объекту «камера».
public class MouseLook : MonoBehaviour {
public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationY = 0F;
void Update ()
{
if (axes == RotationAxes.MouseXAndY)
{
float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
}
else if (axes == RotationAxes.MouseX)
{
transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
}
else
{
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
}
}
void Start ()
{
// Make the rigid body not change rotation
if (rigidbody &&(PlayerPrefs.GetString("objName") == gameObject.name))
rigidbody.freezeRotation = true;
}
}
Теперь, рассмотрим скрипт перемещения в другую локацию по клику мышью на двери.
Рис. 2
using UnityEngine;
using System.Collections;
public class doorClick : Photon.MonoBehaviour
{
public string auditory;
private void Update ()
{
}
void OnMouseDown ()
{
GlobalParams.players = GameObject.FindGameObjectsWithTag("Player");
foreach(GameObject Obj in GameObject.FindGameObjectsWithTag("Player"))
{
GameObject.Destroy(Obj);
Debug.Log(Obj.name);
}
Application.LoadLevel (auditory);
}}
Мы перетаскиваем его на объект Door, тем самым, применяя его к данному объекту.
Когда пользователь, находясь в виртуальной среде, кликает мышью по двери аудитории, все объекты текущей его локации уничтожаются и только после этого загружается сцена аудитории. Такой подход позволяет не держать постоянно в памяти все объекты, задействованные в данном проекте, и выгружает их из памяти, когда они не нужны.
Таким образом достигается увеличение быстродействия, что вкупе с использованием запеченых текстур и прочих упрощений позволяет достичь хороших результатов оптимизации.
Заключение
рендеринг программный трехмерный
В ходе нашего исследования все поставленные задачи были решены.
Мы определили сущность виртуальной рабочей среды - это совокупность информационных ресурсов, обеспечивающая комплексную методическую и технологическую поддержку процесса работы. Также, мы определили специфику виртуальной рабочей среды во множестве программных продуктов. Виртуальная учебная среда обеспечивает максимальную интерактивность обучения, повышая качество образования и уменьшая временные затраты на обучение. Мы рассмотрели классификацию и особенности и выявили специфику рабочей среды, условности организации взаимодействия между пользователем и интерфейсом. Рассмотрели виртуальную среду, как средство обучения и как инструмент для саморазвития.
Мы изучили особенности виртуальной среды, как рабочего и учебного места. Такая среда предоставляет практически неограниченные возможности для моделирования и экспериментов. Пределом сложности устанавливаемых задач может служить сложность внутренней организации среды, а также, производительность аппаратной части проекта.
Мы изучили устройство виртуальной среды с помощью среды разработки Unity. Это довольно сложный пакет программ, позволяющий разрабатывать виртуальные игровые миры. Он находится среди лидеров по производительности среди 3D рендереров. Также, Unity обладает целым рядом преимуществ по сравнению со своими ближайшими аналогами. Среди достоинств этой среды разработки следует, также, упомянуть мультиплатформенность.
В ходе выполнения курсовой нашей командой была разработана виртуальная рабочая среда факультета МИФ ВГСПУ. Мы изучили дидактические возможности трехмерной виртуальной рабочей среды и заключили, что видео-лекции являются, на наш взгляд, самой приемлемой формой лекций в нашей среде. Также наш проект не страдает нехваткой практики, и учащиеся всегда могут выполнить различные эксперименты и опыты. Для учащихся всегда в наличии электронная библиотека, которая в состоянии заменить обычную традиционную библиотеку.
Наш проект позволяет полностью окончить курс обучения или даже получить специальность. График занятий гибкий и подстроен под учащихся. Виртуальные практические занятия вполне могут заменить традиционные. Этот проект - это еще один шаг на пути развития информационного общества, поэтому он может быть внедрен.
Литература
Вайндорф-Сысоева М.Е., Хапаева С.С., Шитова В.А. Алгоритм деятельности при сетевом взаимодействии для решения образовательных задач в виртуальной образовательной среде МГОУ. - М., 2008.
Герасимов В. Unity 3.x Scripting. - Packt Publishing, 2011.
Калмыков Д.А., Хачатуров Л.А. Опыт реализации виртуальных образовательных сред. Школьные технологии №2, 2002.
Карташева О.В. Использование адаптивной системы тестирования АСТ-тест для контроля знаний при дистанционном изучении темы «Базы данных» // Материалы международной конференции-выставки «Информационные технологии в образовании». - Москва, 2001.
Князев А.С. Организация виртуального рабочего пространства факультета вуза на базе инструментария Unity3D // Материалы Всероссийской научно-практической конференции «Прикладная информатика и компьютерное моделирование» г. Уфа. Том 3. Уфа: БГПУ им. М. Акмуллы, 2012. С. 15-17.
Репкин Д. Виртуальная реальность или киберпространство. 2002.
Седова Д.В. Организация учебного процесса в виртуальной образовательной среде с применением социальных сетей. - Дубна, 2008.
Степчева З.В. Основы геометрического моделирования в Unity 3D. Учебное электронное издание. УлГТУ - Ульяновск, 2012.
Этко И.Г. Компьютерные тесты по информатике и информационным технологиям в сети Интернет. Журнал «Педагогическая информатика», № 1, 2005, с. 77-83.
Размещено на Allbest.ru
...Подобные документы
Характеристика виртуальной образовательной среды Unity. Особенности трехмерной виртуальной образовательной среды, как рабочего места пользователя. Организация взаимодействия пользователя с виртуальной рабочей средой факультета с использованием скриптов.
курсовая работа [373,7 K], добавлен 22.08.2013Игровой движок Unity, его использование для создания приложений, связанных с архитектурой, обучением, визуализацией данных и электронными книгами. Разработка системы освещения для работы с двухмерными объектами в виде расширения редактора Unity.
дипломная работа [2,5 M], добавлен 11.02.2017Платформа Unity 3D как средство разработки компьютерных деловых игр. Рассмотрение реализации взаимодействия между подсистемой проведения деловых игр и модулем визуализации. Формирование игровых уровней на примере компьютерной игры "Проезд перекрестка".
дипломная работа [2,8 M], добавлен 22.08.2017Определение понятия трехмерной компьютерной графики. Особенности создания 3D-объектов при помощи булевых операций, редактируемых поверхностей, на основе примитивов. Моделирование трехмерных объектов при помощи программного пакета Autodesk 3ds Max.
дипломная работа [4,2 M], добавлен 13.04.2014Изучение особенностей работы универсальной системы RTWin, которая представляет собой мощный и гибкий инструмент для проектирования систем контроля и управления технологическими процессами. Характеристика Delphi - системы быстрой разработки приложений.
реферат [452,8 K], добавлен 11.06.2010Назначение компьютерной графики. Особенности трехмерной анимации. Технология создания реалистичных трехмерных изображений. Компьютерная графика для рисования на SGI: StudioPaint 3D. Пакет PowerAnimator как одна из программ трехмерной анимации на SGI.
реферат [25,7 K], добавлен 31.03.2014Средства разработки, ориентированные на конкретные СУБД. Наиболее известные приложения на основе Eclipse Platform. Проект NetBeans IDE, его возможности. KDevelop — свободная интегрированная среда разработки для UNIX-подобных операционных систем.
реферат [107,5 K], добавлен 14.04.2014Разработка пользовательского интерфейса. Характеристика процесса покадрового рендеринга графики. Ознакомление с архитектурой программного приложения. Анализ системы визуализации – сложной, продуманной структуры для предоставления информации пользователю.
дипломная работа [7,8 M], добавлен 10.07.2017Вопросы программирования в Maple версий 6-11 и разработка приложений. Рассматривает эффективные приемы программирования и разработки приложений для многих разделов техники, математики, физики, для решения которых пакет не имеет стандартных средств.
монография [4,8 M], добавлен 13.03.2008Основные этапы разработки web-сайта. Классификации современных бирж. Выбор программного средства для разработки сайта. Требования к сайту. Расчет прогнозируемой цены и прибыли на программное средство. Описание языков для разработки web–приложений.
дипломная работа [1,4 M], добавлен 02.09.2016Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.
курсовая работа [197,5 K], добавлен 19.11.2009Разработка адресных и технических требований к игре. Написание сценария. Общая концепция разработки приложения. Разработка схем алгоритмов приложения. Игровые технологии. Выбор среды и программированного языка. Описание пользовательского интерфейса.
курсовая работа [1,6 M], добавлен 14.06.2014Подходы и алгоритмы автоматизации тестирования. Анализ специфики работы с локальными и веб-приложениями, внедрение автоматических тестов в процесс контроля качества приложений Global XB, GCube и Thistle. Оптимальный инструмент разработки скриптов.
дипломная работа [1,5 M], добавлен 15.01.2012Назначение и принципы работы библиотеки OреnGL с графическими примитивами, освещением, эффектом тумана и проекциями. Программное обеспечение для разработки трехмерной модели объекта "Планетарная система" с встроенными настройками и понятным интерфейсом.
курсовая работа [42,5 K], добавлен 26.06.2011Знакомство с этапами разработки трёх приложений для системы семейства Linux с использованием языка программирования С++. Анализ особенностей операционной системы Ubuntu 12.10. Характеристика способов тестирования команд с помощью стандартных средств.
контрольная работа [732,1 K], добавлен 06.08.2013Понятие клиентских приложений, их основные задачи. Программное обеспечение сети Интернет. Характеристика веб-браузеров как основных клиентских приложений Интернет. Сравнительная характеристика существующих веб-браузеров, выбор оптимального варианта.
дипломная работа [2,6 M], добавлен 23.06.2012Описание и изучение техники построения плоских и трехмерных изображений чертежей машиностроительных деталей средствами компьютерной графики: втулка, гайка, штуцер. Выполнение упрощенного теоретического чертежа судна на плоскости: бок, корпус, полуширота.
курсовая работа [832,6 K], добавлен 15.08.2012Создание автоматизированного каталога режущего инструмента предприятия с использованием современного программного обеспечения: СУБДFireBird 2.5 и среда разработки приложений C++ Builder 6. Разработка программного модуля для работы и автоматизации.
курсовая работа [3,2 M], добавлен 14.12.2012Понятие и основные этапы развития информационных технологий, предъявляемые требования к структуре и взаимосвязь элементов. Современные и перспективные информационные технологии в системе дистанционного обучения, принципы их разработки и эффективность.
курсовая работа [1,2 M], добавлен 27.09.2013Операционная система (ОС) как комплекс служебных и программных средств. Базовое программное обеспечение компьютера, BIOS - опора для программного обеспечения, прикладных и служебных приложений. Функции ОС, файловая система, базовые объекты Windows.
контрольная работа [505,3 K], добавлен 24.11.2009