Статьи

Создание приложения 3D Flight Simulator для iOS и Android — Создание среды

В этой серии руководств мы создадим приложение для симулятора полета с использованием ShiVa3D Suite. Чтобы создать это приложение, мы рассмотрим все темы, необходимые для создания 3D-игр, образовательных приложений и новых 3D-приложений. Этот урок, часть 2 серии, будет охватывать создание окружающей среды и ландшафта.

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


  1. Создайте приложение 3D Flight Simulator для iOS и Android — теоретический обзор
  2. Создание приложения 3D Flight Simulator для iOS и Android — Создание среды
  3. Создать приложение 3D Flight Simulator для iOS и Android — Программирование симулятора
  4. Создайте приложение 3D Flight Simulator для iOS и Android — Project Export

Давайте сначала кратко расскажем о различных модулях, доступных в редакторе ShiVa. Мы заимствуем большую часть этой информации из справочной документации редактора ShiVa.

Data Explorer — это менеджер ресурсов, обеспечивающий доступ к различным элементам игры, включая саму игру, сцены, AIModels, материалы и т. Д. Его пользовательский интерфейс представляет эти ресурсы в иерархической структуре папок.

Game Editor — основной модуль редактора, позволяющий разработчику редактировать игровой ресурс. Например, с помощью редактора игры разработчик может определить сцены и AIModel, связанные с игрой.

Scene Viewer позволяет разработчику визуализировать сцены в игре и модели в этих сценах.

Scene Explorer — это отдельный модуль, независимый от средства просмотра сцены. Разработчик будет в основном использовать проводник сцены для поиска и управления ресурсами в сцене.

Редактор окружения используется для редактирования визуальных атрибутов сцены, таких как цвет, освещение и различные визуальные эффекты.

AIModel Editor позволяет разработчику редактировать AIModels. С помощью редактора AIModel вы можете определять переменные, функции, состояния и обработчики для AIModel.

Редактор скриптов используется для редактирования скриптов модели AIModel.


Шаги для создания симулятора могут быть организованы следующим образом:

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

Запустите редактор ShiVa. В верхнем меню выберите «Основные» -> «Проекты» -> «Добавить». Введите путь к папке для хранения вашей игры. (Мы выбрали D: \ ShProj \ Projects \ Flight_Simulator.) Это показано ниже.


Закройте диалог, нажав Закрыть.

В проводнике данных выделите папку «Игры», а затем щелкните правой кнопкой мыши меню «Создать» -> «Игра».


Назовите игру Симулятор. Нажмите ОК


В Data Explorer выделите папку Scenes и в контекстном меню щелкните Create -> Scene.


Назовите сцену Scene1. Нажмите ОК


Откройте редактор игр и в проводнике данных в папке «Игры» дважды щелкните «Симулятор». В редакторе игр вы должны увидеть различные свойства симулятора.


В редакторе игр выберите вкладку Сцены. В проводнике данных в папке «Сцены» выберите «Сцена1» и перетащите его на вкладку «Сцены» в редакторе игр. Вы должны увидеть что-то вроде этого:


На вкладке «Сцены редактора игр» дважды щелкните «Сцена1» Вы увидите зеленый флажок под столбцом с названием Loaded.



Единственным наиболее важным визуальным элементом в симуляторе является ландшафт, потому что, кроме неба, ландшафт — это то, что пользователь увидит в течение всего моделирования. ShiVa Editor позволяет нам создавать сложные ландшафты. Для целей этой серии мы создадим относительно простой ландшафт. Для получения дополнительной информации о возможностях ландшафта ShiVa Editor см. Главу 16 книги Шандо Шива и эту статью о создании ландшафта .

Воспользуйтесь редактором ландшафта. В Обозревателе данных в папке «Сцены» дважды щелкните «Сцена1». В меню Terrain Editor выберите Create.


В редакторе ландшафта выберите меню «Создать».

  • Проверьте Создать пустые чанки
  • Выберите количество блоков: 32×32
  • Выберите размер куска: 32×32
  • Выберите размер блока: 4

Нажмите ОК


Мы определили квадрат, края которого являются границами местности. На каждой стороне есть 32 блока, размер блока которых равен 128 (4 x 32). С этими определениями каждая сторона ландшафта составляет 4096 (4 x 32 x 32) единиц.

Теперь мы добавим неровности, то есть холмы и впадины, к местности. В редакторе ландшафта выберите раздел «Куски». Нажмите на верхний левый угол местности (показано ниже):


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


Пока все фрагменты в ландшафте выбраны, перейдите в раздел «Геометрия» в редакторе ландшафта и нажмите на прямоугольник слева, на котором есть синяя стрелка вниз.


В раскрывающемся меню выберите «Шум».


Подставьте следующие значения:

  • Оператор: заменить
  • Сумма: 0.53
  • Мягкие границы: 0.50
  • Частота: 0,008
  • Постоянство: 0,411
  • Октавы: 6
  • Амплитуда: 44

Нажмите ОК


  • Значение оператора «Заменить» указывает редактору ландшафта, что текущий слой должен заменить предыдущий. Поскольку у нас будет только один слой, эта переменная действительно не имеет существенного значения.
  • Сумма — это число от 0 до 1, и ее можно считать своего рода значением непрозрачности. Это имеет значение, когда этот слой комбинируется с предыдущим слоем. Опять же, поскольку существует только один слой, эта переменная не имеет существенного значения.
  • Переменная Soft Borders влияет на смешивание фрагментов на границе выделения с соседними фрагментами. Поскольку мы выбрали все чанки и существует только один слой, эта переменная не должна иметь значения.
  • Другие переменные Частота, Постоянство, Октавы и Амплитуда определяют высоту и глубину холмов и впадин, определяя, соответственно, как часто они повторяются и насколько острыми и остроконечными выглядят пики.

На данный момент мы создали неровности местности. Теперь нам просто нужно добавить немного цвета.

Теперь перейдите в раздел Материалы в редакторе ландшафта. Установите флажки «Получить динамическое освещение» и «Получить динамические тени». Убедитесь, что значение AO равно 0,00, а расстояние AO равно 10.


Тем не менее, в разделе Материалы выберите Ambient. В диалоговом окне «Выбрать цвет» введите:

  • Красный: 38
  • Зеленый: 74
  • Синий: 56

Нажмите «ОК».


В разделе «Материалы» нажмите «Диффузия», а затем в диалоговом окне «Выбор цвета» введите:

  • Красный: 15
  • Зеленый: 77
  • Синий: 18

Нажмите ОК

В разделе материалов нажмите Specular и в диалоговом окне Select Color введите:

  • Красный: 16
  • Зеленый: 29
  • Синий: 22

Нажмите ОК

Наконец, в разделе «Материалы» нажмите кнопку «Производство».


Когда спросили «Действительно сделать выбор?» нажмите Да.


Теперь, когда поверхность ландшафта создана, в разделе Chunks редактора Terrain вы увидите что-то вроде ниже (хотя минимальная и максимальная высота могут немного отличаться).



Далее нам нужно создать небо над местностью. Это будет сделано с помощью функции Skybox редактора ShiVa. Skybox имеет шесть сторон: спереди, сверху, слева, справа, сзади и снизу. Ландшафт лежит над дном, а глобальные оси X, Y и Z указывают на правую, верхнюю и заднюю стороны скайбокса соответственно. Для каждой стороны (кроме нижней части, потому что она покрыта ландшафтом), мы предоставим изображение 512 x 512 пикселей для построения нашего Skybox. (См. ниже).


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

В меню «Проводник данных» выберите «Импорт» -> «Текстура».


В диалоговом окне «Импортировать текстуру» нажмите «…» рядом с «Файлом» для импорта и выберите следующие пять файлов из архива кода, сопровождающего это руководство:

  • обратно-crop.jpg
  • передний crop.jpg
  • левый crop.jpg
  • правой crop.jpg
  • топ-crop.jpg

Диалог Import A Texture будет выглядеть так:


Нажмите кнопку «Импорт», чтобы завершить импорт. Теперь в Data Explorer, если вы выберете папку Textures, вы увидите импортированные файлы (выделено ниже):


Откройте Редактор окружения и в Data Explorer дважды щелкните Scene1 в папке Scenes (если вам предлагается сохранить Scene1, выберите «Да»).


Редактор окружения будет выглядеть так:


В редакторе окружения откройте раздел Небо. Под Skybox щелкните стрелку рядом с Front (-Z) и выберите front_crop .


Аналогично, выберите right_crop для Right (-X), back_crop для Back (+ Z), left_crop для Left (+ X) и top_crop для Top (+ Y). Вы должны иметь следующее.



Теперь мы добавим источник света в Scene1. В ShiVa Editor есть встроенный динамический источник света по умолчанию DefaultDynamicLightSet, который является встроенной моделью (Примечание. Из документации ShiVa Editor динамическое освещение используется для перемещения источников света / объектов с рендерингом света в реальном времени, тогда как статическое освещение используется для статического освещения и теней, на статических объектах. Для наших целей мы выбрали динамический источник света).

Откройте Scene Viewer и Data Explorer рядом друг с другом. В Обозревателе данных в папке Scenes дважды щелкните Scene1 (если вам предлагается сохранить Scene1, выберите «Да»).

Вы должны увидеть что-то похожее на картинку ниже в Scene Viewer


В проводнике данных откройте папку «Модели», которая находится непосредственно под папкой Flight_Simulator верхнего уровня. Выберите DefaultDynamicLightSet, затем перетащите его в средство просмотра сцен.

В проводнике данных перейдите в папку Scenes и дважды щелкните Scene1. Когда будет предложено сохранить Scene1, выберите Да. Теперь откройте Scene Explorer. На вкладке Objects вы должны увидеть DefaultDynamicSet, а также DefaultCamera.


В Scene Explorer, на вкладке Models вы должны увидеть следующее.



Теперь мы создадим AIModel для игры. Это будет использоваться для хранения кода и переменных для симулятора. В проводнике данных щелкните правой кнопкой мыши папку AIModels в папке ресурсов. В меню выберите «Создать» -> «AIModel».


Назовите AIModel MainAI. Нажмите ОК


Теперь нам нужно связать MainAI с симулятором. Откройте редактор игр и проводник данных. В Обозревателе данных в папке «Игры» дважды щелкните «Симулятор». Симулятор теперь загружен в редакторе игр. Откройте вкладку «Главная» в редакторе игр. Вы увидите, что раздел «Главный AI» пользователя пуст.


В Обозревателе данных в папке «Ресурсы -> AIModels» выберите «MainAI», перетащите его в раздел «Основные ИИ пользователя» в редакторе игр. Вы должны увидеть следующее.



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