build a vr pawn with unreal engine luis cataldi russian

71
Luis Cataldi - Education Evangelist Epic Games Создаём с нуля VR Project, VR Pawn и VR Player Controller!

Upload: unreal-engine

Post on 20-Jan-2017

181 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Luis Cataldi - Education Evangelist – Epic Games

Создаём с нуля VR Project, VR Pawn и VR

Player Controller!

Page 2: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

2

Создайте новый Блупринт и выберите Pawn Class➔ На свободном месте в

content browser кликните

правой кнопкой мыши и

выберите Create Basic

Asset > Blueprint Class

➔ Теперь назовите его,

например “MyVR-Pawn”

Page 3: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

3

Ознакомьтесь со множеством различных настроек Blueprint editor➔ Components

➔ Menu Bar

➔ Details

➔ Viewport

➔ Construction Script

➔ Graph Editor

➔ My Blueprint: Variables,

Functions, Components

➔ Debug

➔ Compiler Results

Page 4: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

4

Начинаем работать с VR-Pawn➔ Добавьте Camera

Component

➔ Нажмите Compile и Save

Page 5: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

5

Обновлённые камеры автоматически закрепляются к HMDs(шлему виртуальной реальности) ➔ Обновлённые camera

components отныне

автоматически

закрепляются к

поддерживаемому HMDs

➔ В UE 4.13 управление

камерой в VR не требует

выполнения

дополнительных действий

Page 6: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

6

Откройте World Settings из меню настроек (Settings menu)➔ Выберите World Settings из

выпадающего списка в

настройках (Settings menu)

➔ Справа от вкладки Details

появится новая вкладка

World Settings. В ней будет

находиться несколько под-

меню, включая Game Mode

и Gamemode Overrides

Page 7: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

7

Создайте новый GameMode Override ➔ Для создания нового

override кликните + справа

от GameMode Override

➔ Назовите GameMode

Override, например,

MyVRGameMode

➔ Теперь его можно

сохранить в папку Blueprints

Page 8: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

8

Назначьте ваш MyVRPawn к Default Pawn Class➔ Выберите Default Pawn

Class и назначьте в него

только что созданный

MyVRPawn Blueprint

Page 9: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

9

Создайте PlayerController Class Blueprint в меню GameMode Override ➔ Для создания нового override

кликните + справа от Player

Controller Class

➔ Назовите PlayerController

Override, например,

MyVRPlayerController

➔ Теперь его также можно

сохранить в папку Blueprints

Page 10: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

10

Перейдите во вкладку Event Graph в вашем новом MyVRPlayerController ➔ Как только новый

MyVRPlayerController

Blueprint будет создан, он

сразу откроется в новом

окне и будет доступен для

редактирования

➔ Выберите третью по счёту

вкладку, которая называется

Event Graph

Page 11: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

11

Перейдите в Project Settings для создания новых инпутов (imputs)➔ Здесь в разделе Input section,

мы можем добавить новые

Axis Mappings и Action

Mapping, которые и будут

нашими инпутами

Page 12: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

12

Создайте 2 новых Action Mappings➔ Создайте MyGlide Action

Mapping и назначьте для него

Middle Mouse Button (Средняя

кнопка мыши)

➔ Создайте MyInteraction Action

Mapping и назначьте для него

Right Mouse Button (правую

кнопку мыши)

Page 13: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Вернитесь к MyVRPlayerController и создайте MyGlide Linetrace Blueprint➔ Во вкладке EventGraph в

MyVRPlayerController, кликните правой кнопкой мыши и добавьте InputAxis для Glide

➔ Добавьте (Get) Player Camera Manager

➔ Вытяните GetActorLocation➔ Вытяните GetActorFowardVector➔ Умножьте (Multiply) Float x Float

из GetActorForwardVector и поставьте значение, например, 10000 units в нижний float

➔ Создайте LineTraceByChannel➔ Соедините его с ExecutionPin из

MyGlide InputAxis➔ Соедините Start и

GetActorLocation➔ Соедините End с суммой

(Addition) GetActorLocation и умноженного значения (multiply node)

Page 14: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

14

Создайте 2 новые переменные (Variables) с типом Vector ➔ Создайте переменную

StartTrace Vector

➔ Создайте переменную

EndTrace Vector

Page 15: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

15

Вытяните EndTrace чтобы его засетить (Set)➔ Выберите и вытяните

переменную EndTrace в Event

Graph и выберите Create Setter

(Set)

Page 16: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

16

Подключите EndTrace➔ Соедините Execution Pin из

Line Trace с EndTrace

➔ Вытяните Trace End vector из

Break Hit Result в инпут

EndTrace для того, чтобы

установить его значение

Page 17: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

17

Установите (Set) StartTrace➔ Выберите и вытяните

переменную StartTrace в Event

Graph и выберите Create Setter

(Set)

Page 18: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

18

Соедините Set StartTrace с Actor Location➔ Кликните правой кнопкой

мыши чтобы вызвать функцию

GetPlayerPawn

➔ Протяните из Return Value для

создания функции

GetActorLocation node

➔ Соедините вновь созданную

функцию с инпутом (input)

вектора StartTrace Vector,

чтобы передать в него нужное

значение

Page 19: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

19

Соедините BreakHitResult с EndTrace➔ Соедините Set End Trace с Set

Start Trace

➔ Вызовите функцию

GetPlayerPawn, соедините её с

функцией GetActorLocation,

которую, в свою очередь, уже

подключите к StartTrace

Page 20: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

20

Создайте Timeline и назовите его, к примеру, MyGlideCruve➔ Создайте FloatCurve и назовите

её, к примеру, GlideFloat

➔ Добавьте 2 Ключа (Keys)

➔ Первый Ключ (Key) установите в

значения 0 и 0

➔ Второй Ключ (Key) установите в

значения, к примеру, .9 и .9

➔ Установите флажок в чекбокс Use

Last Keyframe

Page 21: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Используйте Timeline Component для получения функции SetPlayRate, с помощью которой можно будет регулировать скорость передвижения

➔ Подключите функцию SetPlayRate

к StartTrace

➔ Разделите значение NewRate на 1

для нормализации значения

➔ Создайте новую Переменную

RateOfGlide и установите в неё,

для начала, значение 20

➔ Соедините output функции

SetPlayRate с инпутом Play from

Start в MyGlideCurve’s

Page 22: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Добавьте Lerp (Vector) для более плавного передвижения➔ Протянув из GlideFloat в

MyGlideCurve’s вы сможете создать

Lerp (Vector). Соедините его с

инпутом Alpha

➔ Соедините output EndTrace с

инпутом B в Lerp (Vector)

➔ Соедините output StartTrace с

инпутом A в Lerp (Vector)

➔ Протянув из ReturnValue (Lerp

(Vector)) создайте функцию

SetActorLocation. Соедините его с

NewLocation, чтобы игрок мог понять

куда и как ему передвигаться

Page 23: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Используйте колёсико мыши для определения glide distance (расстояния скольжения)➔ Создайте новый инпут Axis

Mapping и назовите его

MyTraceDistance

➔ Назначьте на него

MouseWheelAxis

Page 24: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Вернитесь в MyVRPlayerController➔ Создайте новую переменную с

типом Float и назовите её

MouseWheelAxis

Page 25: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Вернитесь в SetPlayRate для работы с MyGlideCurve ➔ MouseWheelAxis разделите на 500

и умножьте (Multiply) RateOfGlide

➔ Это позволит вам управлять

дистанцией трейса с помощь

колёсика мыши

➔ ** Убедитесь в том, что вы вернули

значение RateOfGlide в 5 вместо

20

Page 26: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Используйте MouseWheelAxis, чтобы определить дистанцию трейса для line trace➔ Вернитесь к функции

LineTraceByChannel и замените

установленной там по умолчанию

значение 10000 на переменную

флоат MouseWheelAxis, чтобы

регулировать дистанцию, на

которую игрок будет

перемещаться за каждый клик

Page 27: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Давайте создадим preview mesh, что бы можно было определить конец нашего line trace

Page 28: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Давайте создадим новый Actor Class Blueprint➔ Создайте новый Actor Class

Blueprint в папке с блупринтами

(Blueprints folder)

➔ Назовите его, к примеру,

MyPreviewMesh-BP

Page 29: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Добавьте в него mesh component➔ В выпадающем списке +Add

Component найдите и выберите

компонент Sphere (Basic Shape) и

добавьте его к MyPreviewMesh-BP

➔ Назовите его, к примеру,

PreviewMesh

Page 30: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Давайте создадим новый материал для нашего preview mesh➔ В папке Blueprints folder кликните

правой кнопкой мыши и создайте

новый Basic Asset > Material

➔ Назовите его MyPreview-MAT

Page 31: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Установите базовый материал➔ Измените Blend Mode на >

Translucent

➔ Измените Shading Model на >

Unlit

Page 32: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Создайте Emissive Color (излучающий цвет)➔ Создайте Vector3

➔ Измените цвет на 1,1,1 белый

(white)

➔ Конвертируйте его в Параметр под

названием BaseColor

➔ Соедините его с инпутом А функции

умножения (Multiply)

➔ Добавьте Parameter Node и

назовите её GlowPower

➔ Соедините её с инпутом B функции

умножения (Multiply)

➔ Соедините функцию умножения с

каналом Emissive Color в материале

Page 33: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настройка прозрачности (Opacity)➔ Соедините Power node с каналом

Opacity в материале

➔ Подключите Fresnel Node в Base

(Power Node)

➔ Создайте функцию Scalar

Parameter с названием Fresnel

Power и присоедините её к

Exponent в Fresnel Node

➔ Сохраните и примените материал

(Save and apply the material)

Page 34: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Давайте создадим новый материал инстанс для нашего preview mesh➔ Найдите в контент браузере

MyPreview-MAT. Кликните по нему

ПКМ и выберите Create Material

Instance

Page 35: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Давайте создадим новый материал инстанс для нашего preview mesh➔ Выбрав MyPreview-Mat_Inst вы

можете изменить ряд параметров.

Page 36: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Назначьте новый Material Instance к вашему preview mesh➔ Выберите Сферу (Sphere Mesh

component)

➔ Назначьте Material Instance к

материалу to the Material в слот

Element 0 кликнув на стрелочку

(assign arrow)

Page 37: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь вернитесь в MyVRPlayerController, пришло время спавнить (spawn) вашу preview sphere

➔ Для начала, мы можем

полностью скопировать

первую часть нашего MyGlide

linetrace Blueprint

Page 38: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Давайте подключим Tick event, чтобы запустить line trace➔ Создайте Event Tick и

подключите его ко входу в

lineTrace

Page 39: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь заспавним (Spawn) Preview Mesh Blueprint➔ Кликните правой кнопкой

мыши и создайте Event

BeginPlay

➔ Протяните из него и создайте

SpawnActor of Class

➔ В выпадающем списке Класса

(Class dropdown), найдите ваш

MyPreviewMesh-BP

Page 40: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Добавьте к SpawnActor новый трансформ (New Transform)➔ Соедините Trace End из Break

Hit Result с Spawn Transform в

функции SpawnActor

➔ Не переживайте если

создастся новая функция

(Сonvert) для того, чтобы

учесть преобразование Vector

в Transform

Page 41: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Преобразуйте (Promote) значение ReturnValue (SpawnActor)➔ Преобразуйте (Promote)

значение RetunValue в

SpawnActor в Переменную и

назовите её MyPreviewSphere

➔ Это добавит ссылку на неё в

вашем списке переменных

(Variables List)

Page 42: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте создадим Функцию, которая будет изменять цвет Сферы при её столкновении с поверхностью

➔ Кликните на + Function key для

создания новой функции

➔ Назовите её SphereColor-F

Page 43: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте создадим Функцию, которая будет изменять цвет Сферы при её столкновении с поверхностью

➔ Добавьте ссылку

MyPreviewSphere

➔ Потяните из MyPreviewSphere

и начните набирать “dynamic”

для создания

DynamicMaterialInstance

Page 44: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте создадим Функцию, которая будет изменять цвет Сферы при её столкновении с поверхностью

➔ Назначьте MyPreview-

MAT_Instance в Source Material

Page 45: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте создадим Функцию, которая будет изменять цвет Сферы при её столкновении с поверхностью

➔ Потяните из ReturnValue и

создайте

SetVectorParameterValue

Page 46: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте создадим Функцию, которая будет изменять цвет Сферы при её столкновении с поверхностью

➔ В Parameter Name впишите

BaseColor

➔ Создайте (Promote to Variable)

новую переменную NewColor

➔ Compile and Save

Page 47: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте закончим работу с Preview Graph➔ Создайте Branch Node,

потянув из execution pin

LineTrace

➔ Соедините Blocking Hit из

BreakHitResult с Condition

➔ Из аутпута True вызовите

SphereColor-F Function и

установите цвет NewColor в

синий с помощью Set

NewColor Node

➔ Сделайте тоже самое для

False, установив жёлтый цвет

Page 48: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте закончим работу с Preview Graph➔ Создайте Branch Node,

потянув из execution pin

LineTrace

➔ Соедините Blocking Hit из

BreakHitResult с Condition

➔ Из аутпута True вызовите

SphereColor-F Function и

установите цвет NewColor в

синий с помощью Set

NewColor Node

➔ Сделайте тоже самое для

False, установив жёлтый цвет

Page 49: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте закончим работу с Preview Graph➔ Создайте новую переменную

SurfaceNormal из Location в

BreakHitResult при помощи

Promote to Variable

Page 50: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте закончим работу с Preview Graph➔ Перетяните назначение (Set)

новой переменной в конец

выполнения True (после

назначения синего цвета)

Page 51: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте закончим работу с Preview Graph➔ Создайте новую переменную

TraceEnd из Trace End в

BreakHitResult при помощи

Promote to Variable

➔ Как и в прошлый раз,

перетяните назначение (Set)

новой переменной в конец

выполнения False (после

назначения жёлтого цвета)

Page 52: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Теперь давайте закончим работу с Preview Graph➔ Создайте SetActorLocation

потянув из MyPreviewSphere

➔ Соедините Set SurfaceNormal с

SetActorLocation и в значение

NewLocation передайте

SurfaceNormal

➔ Сделайте тоже самое ещё раз

для ноды Set TraceEnd

Page 53: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

А теперь добавим интерактивности нашим механикам

Page 54: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Давайте построим interaction graph➔ Еще раз скопируйте первую

часть из графа linetrace и

вставьте её ниже

Page 55: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Давайте построим interaction graph (всё ещё в MyVRPlayerController)➔ Создайте InputAction для

MyInteraction, который мы

создали в разделе инпутов в

настройках проекта (Input

section of the Project Settings)

➔ Соедините Pressed c инпутом

скопированного LineTrace

Page 56: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Создаём новый Blueprint Interface➔ В папке с блупринтами

кликните ПКМ и в разделе

Blueprints выберите Blueprint

Interface

➔ Назовите его MyInteract-BPI

Page 57: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Создаём новый Blueprint Interface➔ Blueprint Interface позволит

вам создавать новые Функции

➔ Создайте новую функцию

LookingAt

➔ Вы можете добавлять инпуты

и аутпуты (Inputs and Outputs),

но пока обойдёмся без этого

➔ Compile and Save

Page 58: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Возвращаемся к MyVRPlayerController➔ Для создания функции IsValid

со знаком ? Потяните из

BreakHitResult > HitActor

Page 59: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Возвращаемся к MyVRPlayerController➔ Чтобы добавить LookingAt

потяните из HitActor снова и

наберите название вашего

Blueprint Interface - MyInteract-

BPI

➔ Соедините его с аутпутом ? Is

valid, который в свою очередь

соединён с LineTrace

➔ Compile and Save

Page 60: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Давайте создадим интерактивный элемент

Page 61: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора с помощью sight based interaction

➔ Если вы переместитесь к той

части локации, где находятся

вентиляторы, то увидите, что они

уже контролируются

Блупринтами

➔ Мы можем заменить

существующие Блупринты на

новые, которые добавят

взаимодействие с нашим line

trace

➔ Откройте существующий

Блупринт, чтобы найти ссылку на

тот меш, который используется в

данной сцене

Page 62: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора➔ Создайте новый Actor Class

Blueprint в папке Blueprints

➔ Назовите его MyVRFan-BP

➔ Откройте его для

редактирования

Page 63: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора➔ Добавьте Static Mesh

Component вентилятора в

Блупринт

Page 64: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора➔ Добавьте Rotating Movement

Component в Блупринт

Page 65: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора➔ Выбрав Rotating Movement

Component, установите новое

значение Rotation Rate X,

например 450

Page 66: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора➔ Теперь отключите AutoActive

(снимите галочку) для того,

чтобы вентилятор не

включался автоматически, а

только после выполнения

определённых действий

игроком

Page 67: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора➔ Кликните на кнопку Class

Settings в верхней панели для

того, чтобы перейти к его

настройкам (Class Settings)

➔ В Details Panel, в разделе

Interfaces, воспользуйтесь

кнопкой Add для назначения

MyInteract-BPI Blueprint как

вашего нового BP interface

➔ Обязательно Compile and Save

после этого, чтобы применить

ваш новый BP Interface

Page 68: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора➔ Как только мы применили наш

новый BP Interface, мы можем

кликнуть в нём правой кнопкой

мыши и получить доступ к

Event LookAt-BPI

➔ Это создаст Событие (Event),

которое мы сможем соединить

с ToggleActive для активации

RotatingMovement нашего

вентилятора (Component of the

Fan Mesh)

➔ Compile and Save

Page 69: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора➔ Убедитесь в том, что на

объектах, которые окружают

наш вентилятор нет коллизий,

чтобы дать возможность

взаимодействовать с ним

Page 70: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

Настроим Включение и Выключение вращения лопастей вентилятора➔ Для замены Блупринта, выберите

Actor в сцене, кликните по нему

ПКМ для вызова меню. В

появившемся меню выберите

Replace Selected Actors with

➔ Убедитесь в том, что в контент

браузере выделен необходимый

Блупринт

➔ Save All

➔ Теперь MyVRFan-BP размещён в

нужном месте и вы можете с ним

взаимодействовать. Для этого

направьте Preview Sphere на него

используя ПКМ

Page 71: Build a VR Pawn with Unreal Engine   Luis Cataldi Russian

71

VR с помощью Unreal Engine это круто.Ознакомьтесь с UE4 VR learning resouces

для получения более исчерпывающей информации.

[email protected]