ФГБОУ ВО «Мордовский государственный педагогический институт имени М. Е. Евсевьева» Факультет физико-математический Кафедра информатики и вычислительной техники Реферат На тему: Моделирование в среде Unity. Студент Пихиенко Виктория Валерьевна подпись Направление подготовки Курс Группа дата Педагогическое образование Профиль Математика. Информатика III МДМ-115 Саранск 2017 ФИО Моделирование в среде Unity. Введение Что такое Unity ? Unity является современным кросс-платформенным движком для создания игр и приложений, разработанный Unity Technologies. С помощью данного движка можно разрабатывать не только приложения для компьютеров, но и для мобильных устройств (например, на базе Android), игровых приставок и других девайсов. Unity - это инструмент для разработки двухи трёхмерных приложений и игр, работающий под операционными системами Windows, Linux[1] и OS X. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Windows Phone, Android, Apple iOS, Linux[2], а также на игровых приставках Wii, PlayStation 3, PlayStation 4, Xbox 360, Xbox One и MotionParallax3D дисплеях (устройства для воспроизведения виртуальных голограмм), например, Nettlebox. Есть возможность создавать приложения для запуска в браузерах с помощью специального подключаемого модуля Unity (Unity Web Player), а также с помощью реализации технологии WebGL. Ранее была экспериментальная поддержка реализации проектов в рамках модуля Adobe Flash Player[3], но позже команда разработчиков Unity приняла сложное решение по отказу[4] от этого. Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL. Активно движок используется как крупными разработчиками (Blizzard[5], EA, QuartSoft, Ubisoft[6]), так и разработчиками Indie-игр (например, ремейк Мор. Утопия (Pathologic), Kerbal Space Program, Slender: The Eight Pages, Slender: The Arrival, Surgeon Simulator 2013, Baeklyse Apps: Guess the actor и т. п.) в силу наличия бесплатной версии, удобного интерфейса и простоты работы с движком. Игровая сцена в разметке объектов Unity. Характеристики движка Поговорим немного о характеристиках движка. Во-первых, стоит отметить то, что в среду разработки Unity интегрирован игровой движок, иными словами, вы можете протестировать свою игру не выходя из редактора. Вовторых, Unity поддерживает импорт огромного количества различных форматов, что позволяет разработчику игры конструировать сами модели в более удобном приложении, а Unity использовать по прямому назначению — разработки продукта. В-третьих, написание сценариев (скриптов) осуществляется на наиболее популярных языках программирования — C# и JavaScript [1]. Таким образом, Unity3d является актуальной платформой, с помощью которой вы можете создавать свои собственные приложения и экспортировать их на различные устройства, будь то мобильный телефон или приставка Nintendo Wii. Для того чтобы создать свою игру, вам, как минимум, нужно владеть одним из доступных (на Unity) языков программирования: C#, JavaScript или Boo. Сцены Готовая игра — это набор сцен, соединенных между собой (точно так же, как и жизнь — это набор дней). Об оптимальном проектировании игры мы сейчас и поговорим. Прежде чем создать свой проект — подумайте, что он должен в себя включать (какие сцены). Составьте список сцен (на листочке), обдумайте, что каждая сцена будет в себе содержать. Теперь постарайтесь каждую сцену разбить на подсцены, чем больше их будет, тем легче будет вашему ЦП. Конечно, не стоит перебарщивать с количеством сцен. Предположим, что ваш игрок находится в здании и из него никогда не выходит, в здании есть, например, пару этажей, крыша, а на каждом этаже имеется три комнаты. В данном случае, по моему мнению, было бы оптимально «разбить» здание на две сцены — два этажа и крыша. Дробление же каждого этажа на сцены с комнатами — не оптимально. Это просто не нужно, если каждая из комнат слабо загружена. Иными словами, надо грамотно расходовать память процессора, но и забывать о получении удовольствия от игры тоже не стоит. Отладка Самый очевидный и важный момент отладки — оптимизация приложения под различные разрешения экранов. Это важный момент и создатель игры обязательно должен обратить на него свое внимание, в противном случае, результатом своей работы сможет быть доволен только он один. Структурирование При конструировании игры важно помнить о структурировании данных — немаловажном аспекте. Имеется ввиду, что все должно быть на своем месте. Создаете скрипты? — создайте папку для скриптов, там и храните их, с большой вероятностью, у вас будет не один скрипт, разбрасывать их по всему проекту не есть хорошо, сами потом будете мучиться. Когда вы создаете тот или иной скрипт, помните о том, что название переменных, классов и т.п. должны говорить все сами за себя. Если вы хотите создать скрипт для инвентаря (поднять предмет, использовать предмет), то лучше все скрипты однообразных действий (например, поднятия) начинать с ключевого слова, например: Catch<имя предмета>; Use<имя предмета>, в таком случае вам будет легче ориентироваться в проекте, да и выглядит так намного симпатичнее. Возможности Редактор Unity имеет простой Drag&Drop интерфейс, который легко настраивать, состоящий из различных окон, благодаря чему можно производить отладку игры прямо в редакторе. Движок поддерживает два скриптовых языка: C#, JavaScript (модификация). Ранее была поддержка Boo (диалект Python), но его убрали в 5-ой версии. Расчёты физики производит физический движок PhysX от NVIDIA. Проект в Unity делится на сцены (уровни) — отдельные файлы, содержащие свои игровые миры со своим набором объектов, сценариев, и настроек. Сцены могут содержать в себе как, собственно, объекты (модели), так и пустые игровые объекты — объекты, которые не имеют модели («пустышки»). Объекты, в свою очередь содержат наборы компонентов, с которыми и взаимодействуют скрипты. Также у объектов есть название (в Unity допускается наличие двух и более объектов с одинаковыми названиями), может быть тег (метка) и слой, на котором он должен отображаться. Так, у любого объекта на сцене обязательно присутствует компонент Transform — он хранит в себе координаты местоположения, поворота и размеров объекта по всем трём осям. У объектов с видимой геометрией также по умолчанию присутствует компонент Mesh Renderer, делающий модель объекта видимой. К объектам можно применять коллизии (в Unity т. н. коллайдеры — collider). Существует несколько типов коллайдеров: Character controller — вид физической модели, созданный специально под использование его для игровых персонажей; Box collider (физическая модель образует куб, в который попадает вся модель объекта); Sphere collider (физическая модель образует сферу, в которую попадает вся модель объекта); Capsule collider (физическая модель образует капсулу, в которую попадает модель объекта. В отличие от предыдущего типа размеры можно менять и по одной, и по трём осям сразу); Mesh collider (физическая модель полностью повторяет реальную геометрию объекта); Wheel collider (физическая модель колеса); Terrain collider — тип физической модели, созданный специально для использования на объекте типа Terrain — земля, генерируемая редактором Unity с возможностями скульптинга и окрашивания местности. Также Unity поддерживает физику твёрдых тел и ткани, а также физику типа Ragdoll (тряпичная кукла). В редакторе имеется система наследования объектов; дочерние объекты будут повторять все изменения позиции, поворота и масштаба родительского объекта. Скрипты в редакторе прикрепляются к объектам в виде отдельных компонентов. При импорте текстуры в Unity можно сгенерировать alpha-канал, mip-уровни, normal-map, light-map, карту отражений, однако непосредственно на модель текстуру прикрепить нельзя — будет создан материал, которому будет назначен шейдер, и затем материал прикрепится к модели. Редактор Unity поддерживает написание и редактирование шейдеров. Редактор Unity имеет компонент для создания анимации, но также анимацию можно создать предварительно в 3D-редакторе и импортировать вместе с моделью, а затем разбить на файлы. Помимо пустого игрового объекта и моделей, на сцену можно добавлять ещё такие объекты типа GameObject: Система частиц; Камера; GUI текст; GUI текстура; 3D текст; Точечный свет; Направленный свет; Освещение территории; Источник света, имитирующий солнце; Стандартные примитивы; Деревья; Terrain (земля). Unity 3D поддерживает систему Level Of Detail (сокр. LOD), суть которой заключается в том, что на дальнем расстоянии от игрока высокодетализированные модели заменяются на менее детализированные, и наоборот, а также систему Occlusion culling, суть которой в том, что у объектов, не попадающих в поле зрения камеры не визуализируется геометрия и коллизия, что снижает нагрузку на центральный процессор и позволяет оптимизировать проект. При компиляции проекта создается исполняемый(.exe) файл игры (для Windows), а в отдельной папке — данные игры (включая все игровые уровни и динамически подключаемые библиотеки). Движок поддерживает множество популярных форматов, таких как: .3ds, .max, .obj, .fbx, .dae, .ma, .mb, .blend для трёхмерных моделей; .mp3, .ogg, .aiff, .wav, .mod, .it, .sm3 для звуковых файлов; .psd, .jpg, .png, .gif, .bmp, .tga, .tiff, .iff, .pict, .dds для изображений; .mov, .avi, .asf, .mpg, .mpeg, .mp4 для видеофайлов. .txt, .htm, .html, .xml, .bytes для текста Модели, звуки, текстуры, материалы, скрипты можно запаковывать в формат .unityassets и передавать другим разработчикам, или выкладывать в свободный доступ. Этот же формат используется во внутреннем магазине Unity Asset Store, в котором разработчики могут бесплатно и за деньги выкладывать в общий доступ различные элементы, нужные при создании игр. Чтобы использовать Unity Asset Store, необходимо иметь аккаунт разработчика Unity. Unity имеет все нужные компоненты для создания мультиплеера. Также можно использовать подходящий пользователю способ контроля версий. К примеру, Tortoise SVN или Source Gear. Компьютерное моделирование технических систем. Компьютерное моделирование применяется для решения различных задач в области анализа технических систем. Также разнообразны и способы перевода патетических моделей в форму программы ПЭВМ. Одним из распространённых средств может являться моделирование технических систем с помощью графов [2], однако данный метод решает ограниченный круг задач и не может в полной мере решить задачи виртуального моделирования. Другим распространенным способом компьютерного моделирования является перевод математической (физической) модели технической системы, в программный код написанный на одном из распространённых языков программирования. Виртуальное моделирование технических средств с помощью системы Unity 3D. С точки зрения методологии разработки создание виртуальной модели во многом идентично другим способам компьютерного моделирования. Так, например при разработке виртуальной системы необходимо разработать полную ее модель. Важным фактором при разработке модели является составление ее иерархической структуры, системный синтез и анализ, математический и физический аппарат составления модели. Пример иерархической структуры модели представлен на рисунке 1, составление анной структуры является одним из первых этапов разработки виртуальной модели. Основной особенностью, усложняющей разработку виртуальной модели, является необходимость проработки модели функционирования окружающего пространства включая законы взаимодействия объектов в нем. Таким образом создание интерактивной виртуальной модели является сложным процессом, однако разработка стандартизованных моделей окружения (в том числе применяемых и в компьютерных играх) способны облегчить процесс разработки. Так созданная модель ранее трехмерного окружающего пространства может быть перенесена и на другие модели технических систем [7] Инструментарий среды разработки Unity 3D позволяет разработать виртуальное окружение, в том числе и действующее в рамках определённых законов физики, после чего поместить в это окружение управляемый пользователем объект наделив его функциями интерактивного взаимодействия с окружающим пространством и объектами Основные преимущества. Рассмотрим основные преимущества Unity 3D с точки зрения разработки игр [9]: Первое преимущество — язык C#. Данный язык высокоуровневый и позволяет программисту легко войти в разработку игры. Это важный момент, потому что в отличие от других движков, где используется язык C++, в C# есть много элементов и приемов, которые уже реализованы, и программисту нужно только воспользоваться ими. Второе преимущество — кроссплатформенность, т. е. один и тот же код, написанный на движке Unity, с минимальными изменениями может быть перенесен на различные платформы (PC, Mac, Android, iOS, Web, игровые консоли). Это огромный плюс, который сокращает время на разработку игры в несколько раз. Третье преимущество — хорошее Community. Это означает, что у различных функций движка есть четкое описание с примерами на сайте разработчика, обратиться к которому можно в любой момент. И четвертым преимуществом является Asset Store, где имеется огромное количество различных плагинов и ресурсов для создания игры. Разумеется, какие-то из них бесплатные, какие-то платные, но все они собраны в одном месте с удобным поиском и возможностью загрузить, интегрировать и получить сразу рабочий функционал. Следует отметить, что поскольку у процесса виртуального моделирования множество точечек пересечения с процессором разработки современных компьютерных игр, то указанные преимущества справедливы и для задач, рассматриваемых в данной статье. История Июнь 2005, Unity 1.0.1. Первый выпуск. Август 2005, Unity 1.1. Добавлена сборка игр под Windows и поддержка плагинов C/C++. Декабрь 2005, Unity 1.2. Добавлены эффекты постобработки, рэгдолл, тени, встроенный скрипт управления персонажем, расширены возможности редактора скриптов. Октябрь 2008, Unity iPhone 1.0. Unity приходит на iPhone. Октябрь 2008, Unity iPhone 1.0. Начало официальных продаж Unity iPhone. Март 2009, Unity 2.5.0. Добавлена поддержка Windows средой разработки, переработан редактор скриптов. Апрель 2009, Unity приходит на рынок игр для Wii Октябрь 2009, Unity получает инвестиции от Sequoia Capital в размере 5 500 000 долларов США. Октябрь 2009, Unity 2.6.0. Indie-версия стала бесплатной. Декабрь 2009, журнал Gamasutra назвал движок Unity одним из самых значительных участников на рынке игровых компаний[7]. Март 2010, Unity iPhone 1.6 Добавлена поддержка .NET 2.1, встроенная поддержка сети и прочие множественные улучшения. Апрель 2010, Unity iPhone 1.7 Добавлена поддержка iPad. Сентябрь 2010, Unity Technologies и Electronic Arts (EA) заключили контракт о многолетнем сотрудничестве[8]. Ноябрь 2012, Unity 4.0.0. Улучшена система анимации (добавлен скиннинг на GPU), освещения. Добавлены визуальные эффекты. Добавлена сборка игр под Linux и Adobe Flash. DirectX 11 Ноябрь 2013, Unity 4.3. Поддержка 2D-спрайтов, интеграция физического движка Box2D, возможность собирать игры для iOS в версии движка для Windows. Март 2014, Unity 5. Новые шейдеры и интеграция с технологией глобального освещения в режиме реального времени Geomerics Enlighten. Это принесёт в игры появление реалистичного освещения и визуальных эффектов консольного уровня, а также математически точное отображение теней. Новые инструменты WebGL позволяют создавать в браузерах более продвинутые проекты с более высокой производительностью. Март 2015, Полноценная Unity 5. (Выше перечисленное) + Добавление всех возможностей из Pro. версии в Free. а в Unity Pro. остались : Unity Analytics, Team License, Prioritized bug handling, Beta access, Dark Skin и другое. Скриптовый язык Boo был убран из пятой версии движка, как и примеры кода на официальном сайте документации. По состоянию на лето 2013 года количество зарегистрированных пользователей Unity 3D выросло до 2 миллионов пользователей[9]. В основном это связано с тем, что indie-версия движка стала бесплатной. 3D-моделирование. На основе собранных материалов моделируются виртуальные трехмерные геометрические объекты, а так же создаются текстуры, для придания реалистичности поверхностям объектов [1]. Математическое моделирование. Изучение протекающих физикохимических процессов, разработка математической модели, исследование и подбор настроечных коэффициентов. Тестирование и исследование модели на контрольных примерах и реальных условиях Разработка приложения в Unity. Создание компонентов. В системе создается минимальный набор обязательных компонентов – проект и сцена, а также направленный источник света (Direction light) и контроллер от первого лица . Контроллер представляет собой геометрический компонент простой формы с камерой и набором скриптов, описывающих перемещение и обрабатывающих события клавиатуры и мыши. Все остальные объекты условно разделяются на категории: статические (стены, крыша, балки, корпус оборудования, лестницы и т.д.), интерактивные и/или анимированные (взаимодействующие с пользователем и движущиеся и/или трансформирующиеся объекты) и явления рассчитываемые математической моделью (процесс сжигания водоугольного топлива в вихревой печи). Согласно описанным категориям для объектов (импортированная геометрия) создаются анимации и системы частиц . Идея. Unity делает процесс разработки игры простым, давая Ваш ряд логических шагов, чтобы построить любой мыслимый сценарий игры. Чтобы ваша игра не была привязана к определенному жанру, Unity предлагает Вам чистый холст и ряд простых последовательных процедур, чтобы позволить Вашему воображению творить и раскрывать Ваш творческий потенциал. Вы в состоянии в процессе игры, изменить её часть, вы можете превратить обычный статический объект в вашей игре в управляемый, который будет состоять из многих отдельных составных частей. Вы в состоянии расширять свою игру в логично-прогрессивной манере. В свою очередь, каждая составная часть объекта имеет свои настройки и парамеры, которые позволяют управлять поведением объекта. Вы можете их регулировать, и тем самым у вас есть полный контроль над полученным результатом. Материалы - общее понятие ко всем трехмерным формам, поскольку они дают возможность настроить визуальных характеристики трехмерной модели. От основных цветов до карты отражения, содержащей информацию об окружающих объектов. Материал работает с шейдером (Shader), который является сценарием, который отвечает за способ отрисовки того или иного объекта, на который он был применен. В Unity очень легко использовать систему материалов. Любые материалы, созданные в пакете трехмерного моделирования, будут импортированы и обновлены движком автоматически и будут также созданы как ассеты (Assets), чтобы их можно было использовать позже. Вы можете с такой же простотой создавать свои собственные материалы, назначая изображения как файлы необходимые текстуры для материала и выбирая шейдер из большой встроенной библиотеки. Вы также можете написать свои собственные шейдеры, или использовать шейдеры, написанные другими разработчиками сообщества Unity. Многоугольники, ребра, грани, меши. При построении трехмерных фигур все объекты в конечном счете составляются из связки обычных двухмерных форм, известных как многоугольники. При импорте моделей из среды моделирования в Unity, все многоугольники преобразуются в треугольники, они же полигоны. В свою очередь треугольник состоит из трех вершин, связанных ребрами. Зная эти вершины, движок игры в состоянии производить вычисления точек столкновений, используя сложный алгоритм обнаружения с коллайдером Меша. Такие вычисления позволяют точно определить местоположения пересечения, например точка попадания пули в контексте разработки шутера. Комбинируя множество связанных между собой полигонов, используя трехмерное моделирование, позволяют Вам строить сложные формы, известные, как Меши (Mesh). Во время разработки игры, разработчику крайне важно понимать важность количества отображаемых полигонов на экране. Чем выше число полигонов, тем больше работы требуется проделать компьютеру, прежде чем вывести все необходимые объекты на экран. Это именно то, что мы могли наблюдать в прошедшие пару десятков лет - увеличения уровня детализации от ранних трехмерных игр до сегодняшнего дня. Просто сравните визуальное оформление таких игр, как ХХХ (199*) и YYYY (200*) и ZZZZ (201*). Это происходит в результате появления более производительного оборудования, и теперь разработчики могут позволить размещать на экране более высокополигональные модели и эта тенденция будет неизбежно продолжаться. Но, всегда помните, что оптимизацией не стоит пренебрегать. Камеры. Камеры существуют в трехмерном мире, поскольку они являются портами вывода (View port) результирующего изображения на экран. Камеры могут быть расположены в любой точке игрового мира Unity, имеют поле зрения (FOV), которое представляет собой форму пирамиды. Они имеют много различных свойств и могут быть заскриптованы и вписываться в необходимый сценарий вашей игры. С изменением параметра поля зрения (FOV) трехмерной камеры - меняется и порт вывода (view port). В игровом движке вы можете заметить, что такие эффекты, как освещение, тени и пост эффекты применяются к камере. Чтобы помочь движку с моделированием реалистичного изображения, вы можете добавить несколько дополнительных кинематографических эффектов, такие как вспышки линзы при взгляде на солнце. Большинство современных трехмерных игр использует сразу несколько камер, чтобы показать различные части мира игры, но действующей камерой является только одна. Unity позволяет с легкостью добавлять много камер на сцене, которые можно заранее подготовить и переключить, при необходимости, на главную в любой момент времени. Переключение между камерами можно использовать не только для смены вида игрового мира, но и для оптимизации. Например, объекты игровой сцены могут быть сгруппированы в различных слоях, и камерам можно назначить видимые слои. Ассеты - это стандартные блоки всех проектов Unity. От графики в форме файлов изображений до трехмерных моделей и звуковых файлов. Unity обращается к этим файлам, которые вы будете использовать во время создания игры, как ассеты. Это как раз та причина, почему в любой папке проекта Unity, все используемые файлы хранятся в основной папке "Assets" Список литературы. 1.Ульянов Р. С., Прокопьев С. В., Делибалтов В. В. Моделирование технических систем в среде Unity 3D // Молодой ученый. — 2015. — №11. — С. 452-455. 2. Федоткин И.М. Математическое моделирование технологических процессов. Либроком, 2011 – 416с. ISBN 978-5-397-01905-7; 3. Sue Blackman. Beginning 3D Game Development with Unity: All-inone, multi-platform game development. Apress, 2011 – 992c. ISBN 1430234229; 4. Ryan Henson Creighton. Unity 3D Game Development by Example. Packt Publishing. 2010 – 384c. ISBN 1849690545; 5. Volodymyr Gerasimov, Devon Kraczla. Unity 3.x Scripting. Packt Publishing. 2012 – 292c. ASIN: B008AWTYSY 6. Will Goldstone. Unity 3.x Game Development Essentials. Packt Publishing. 2011 – 488c. ISBN 1849691444; 7. http://xgm.guru/p/unity/179223#h7