Как сделать передвижение персонажа в ue4

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024

Здравствуйте! Вопрос. Когда будут уроки по строительству в игре. Думаю многим нужно ввести строительство в выживалки, песочницы и т д.

Хочу обратить ваше внимание на то, что если вы анимируете компонент, а не внешний объект, то нужно получать Local координаты и при установке координат использовать Set Relative Transform.

Было бы здорово услышать от вас урок по стандартной упаковке под разные платформы. Особенно интересна упаковка под HTML5. Спасибо!

Спасибо! Прям как раз требовалась эта информация.
А есть такой вопрос: можно ли задавать форму сплайна процедурно? Не фиксировано в редакторе, а изменять в самой игре.

+Unreal Engine Rus Благодарю

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

Таким образом анимируют движение автомобилей?
А возможно сделать так что при завершении пути одного сплайна, объект выбирал один из двух других сплайнов, и двигался по нему?

Спасибо за ваш труд.

Классные уроки, всё достаточно подробно и понятно обьясняется. Спасибо.

Пытался сделать эскалатор по этому принципу, то есть спаунить каждую ступеньку в начале сплайна, потом прогонять по всему сплайну и в конце уничтожать её - с одной ступенькой всё получилось, а вот как несколько соспаунить друг за другом не догоняю пока ))

непривычно смотреть уроки по ае4 в 60 фпс :)

I don't speak a word of Russian. But this tutorial is Great!

+Alexotronic How can you be so sure? :)

Как перемещать объекты к примеру как в HL2 и как осматривать объекты вблизи, вертя их как хочется?

Спасибо,теперь я знаю больше.

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

Всё по видео отлично получилось, но когда перезашёл в проект на следующий день "точки" для добавления сплайна (т.е. линия) больше не появляется при размещении Актора на сцене. Анимация работает, но её теперь ни изменить ни просмотреть
P.s. перезашел ещё раз - сновая всё Ок

А В секвенции анимации как по сплайну объекты перемещать?

можно ли делать подобное с експортированными объектами?

+NizzY 86 В каком смысле экспортированными?

Попробовал таким образом запустить уже созданный actor, но по сплайну поехала только его тень, в чём может быть проблема?

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

Как сделать перемещение игрока после кат-сцены?

Скажи пожалуйста, почему у тебя на некоторых видео стоит ограниченный доступ? я не могу посмотреть видео из плейлиста "ИИ"

Этот летающий стул - просто произведение искусства!

Здравствуйте. Знаю, что немного не по теме видео, но все же. Как правильно реализовать субтитры? Уж точно, что не через UMG. Заранее спасибо.

+Iqo s При активации паузы вы просто скрываете все виджеты с экрана. После чего обратно показываете. Правда я не знаю, остановится ли звук из этих виджетов (если вы вызываете его из виджетов), но на крайний случай, можно просто сделать интерфейс для виджетов, котовый будет вызываться у всех при паузе. Ну и внутри них уже прописывается логика приостановлении работы того, что внутри виджета обрабатывается. Например для виджета HUD он будет просто скрываться, а для диалогов, скрываться и останавливать звуки, при этом запоминая, на каком моменте остановился. Ну и при вызове паузы вызываете циклом на всех виджетах это через Get All Actors With Interface > Loop > Call *Название интерфейса*. Как-то так. Это не самый лучший вариант, правда, но тут другой очень сложно будет объяснить.

+Unreal Engine Rus Ну допустим мы установили, что кнопка esc ставит игру на паузу и если игру поставить на паузу, UMG все равно продолжает работать и допустим текст будет продолжать выводиться на экран. А это не правильно. Мне придется как-то останавливать его работу? Ну если UMG самый наилучший вариант, то подскажите пожалуйста, как более верно реализовать? Мне нужно будет очень много выводить текста на экран. У персонажей довольно много реплик будет.

+Iqo s А, извиняюсь. Я прочитал "Титры". Ну UMG самый наилучший вариант. По поводу паузы не очень понятна мысль..

+Unreal Engine Rus UMG продолжает работу когда игра стоит на паузе. А это в данном случае недопустимо. Есть ли более правильный вариант реализовать речь текстом на экране?

+Iqo s Можно и через UMG, на самом деле.. А можно просто видео сделать и включить его когда нужно (через тот же UMG).

Нигде не смог найти, подскажите пожалуйста. Я делаю анимацию
открывающейся двери, для этого нужно установить курсор-манипулятор на
угол двери, чтобы показать ей вектор, по которому она будет открываться
(от угла двери по дуге). Курсор-манипулятор по умолчанию стоит в стороне
от объекта и от двери, соответсвенно тоже. Когда делаю им rotate -
дверь двигается вся целиком, а не за угол. Пробовал перемещать курсор
вручную, но каждый раз это делать долго и он слетает на положение по
умолчанию. Быть может есть какое-то сочетание клавиш или настройка,
позволяющая установить курсор в той части объекта, в которой нужно мне.

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

А как сделать так чтобы когда объект дошел до конца он возвращался назад?

Запусти заново таймлайн

Почему когда я выбираю блупринт , слева в колонке детаилс , нету пункта дефаульт и соответственно нету пипетки и я не могу выбрать объект? И еще какой должен быть тип объекта чтобы его можно было анимировать таким образом ?

+Роман Мокров Возможно вы не раскрыли переменную, что бы её можно было редактировать на той панели. Так анимировать можно любой Actor (и все дочерние от него (Character, Pawn и так далее)).

Как в один сплайн поместить несколько объектов что бы они двигались от начало до конца одновременно с небольшим интервалом (на примере Tower Defence)? При попытке циклить, объект едет, останавливается и из его значений начинает ехать второй, а первый останавливается, грубо говоря слетает ссылка.

Сплайн по сути - 10-мерная кривая, где для каждого значения координаты T на промежутке от 0 до SplineDuration определены остальные 9 значений (3 координаты для позиции, 3 координаты для поворота и 3 координаты для размера). В объекте, который движется анимируешь таймер (чтоб не зависело от ФПС - просто сделай переменную t = флоат, в которую каждый тик передаёшь dt [t = t + DeltaSeconds]). Делаешь интерфейс, который в сплайн передаёт таймер а обратно получает трансформ и забываешь, зачем вообще нужна была ссылка на движущийся объект. Т.к. у тебя для каждого объекта свой собственный таймер, то из сплайна он получит свои собственные координаты, поворот и размер. Профит. Запускай по одному сплайну хоть миллион мобов. Если мобы должны идти с разной скоростью или ты захочешь задать смещение относительно сплайна - лучше сделать, чтоб мобы могли проходить друг друга насквозь.

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

Не заполняй масссив. Вообще не делай ссылку на объект. Анимируй таймер в объекте и интерфейсом запрашивай трансформ из сплайна.

+DanilFOX Просто повернуть вашу модель в 3д редакторе в сторону оси X и экспортировать. Уже зависит от того, каким редактором вы пользуетесь..

а не знаешь как это сделать?

+DanilFOX Да, я вам про это и говорю, что бы вы в своем 3д редакторе изменили поворот модели.

Спасибо большое, а в 3D max это получится сделать?

+DanilFOX Способов много, на самом деле.. Либо в логике добавить поворот к объекту через add Local Rotation, либо модель импортировать так, что бы перед был спереди (ось X это перед/зад), либо же положить компонент модели под другой компонент с поворотом заготовленным. Если у вы новичок, то вам проще всего будет просто импортировать модель правильно. Так, что бы перед смотрел в сторону оси X.

3:03 что ты нажал? от куда у тебя выскочили другие окна? короче, урок для тех кто в курсе. я понял. ну ладно. узнаю больше посмотрю
.

Он открыл блупринт заранее, затем развернул его, перешёл во вкладку Event Graph. Сверху есть подсказка о том, что открыто(название).

@Murad Dusov Редактор не поддерживает. Сам движок поддерживает.

Мой кубик дергается, будто у него нервные тики.

Не активен таймлайн, тоесть при создании ключей с шифтом в кривой полоска не красная, а серая. анимация не работает. что делаю не так?

У меня персонаж движется с помощью InputAxis на кнопки WASD. Камера игрока находится сверху. Но моделька не поворачивается в сторону движения.

Находил уроки где поворот персонажа идет в сторону указателя, но там определяется вектор от персонажа до указателя мыши.

А в моем случае как сделать? Подскажите, пожалуйста.

А как ты сам представляешь такое управление? Если не вводить мыш с указателем, то что по твоему должно будет произойти?
Поворот персонажа против часовой стрелки при нажатии "A" и по часовой при нажатии "D"?

Хотя наверное я не так понял вопрос.
Вообще ты можешь воспользоваться MakeRotFromX, используя в качестве вектора инпуты. Для x - вверх, вниз, для y - влево, вправо.

Мне кажется должен быть какой-то более изящный способ, но хз.

Alex.L
Спасибо за ответ. Я сейчас пробую просто поворот в зависимости от значения InputAxis (Compare float>SetControlRotation>MakeRotator). Вроде получается.

А я думал у движка есть автоматическое определение поворота от направления движения. Ведь AI персонажи которые бегут за игроком сами как-то поворачиваются. Но блюпринты относящиеся к этому я не нашел.

Epic Games выпустила подробную документацию по созданию реалистичных персонажей в игровом движке Unreal Engine 4. В качестве примера приведён персонаж Дуплет (ранее Твинбласт) из игры Paragon, MOBA от Epic на PC и PS4.

Создание аутентичных, правдоподобных персонажей является фундаментальной задачей для многих современных 3D художников и разработчиков игр. В течение последних нескольких лет Epic привносит в UE4 новые функции рендеринга, которые улучшают шейдинг кожи, глаз, волос и других атрибутов персонажа.

Цель данной документации - дать возможность любому человеку научиться создавать такие же материалы и модели, как это делает команда Epic. Чтобы начать работу, откройте лаунчер и загрузите проект со вкладки Learn. Когда вы его откроете, нажмите Play в Editor и покрутите бюст героя в реалтайме.

Перевод - Photorealistic Character Unreal Engine 4

Для получения дополнительной информации о технологиях, используемых для создания персонажей, обратитесь к этому лайфстриму от Epic Games: Tech & Techniques Behind Creating the Characters for Paragon - ссылка.

Skin Shading

Кожа представленного ниже персонажа сделана благодаря UE4 Subsurface Profile.

Создание персонажа в Unreal Engine 4 - Изображение 1

Это специальный метод используется для рендера реалистичной кожи или воска, он аналогичен методу "Subsurface", но имеет принципиальное отличие в том, как он визуализирует: Subsurface Profile основан на пространстве экрана. Рендеринг экранного пространства более эффективен для отображения тонких эффектов слоёв кожи, где рассеивание при отражении является вторичным эффектом, которое наблюдается только в нескольких случаях, например, на ушах.

Обратите внимание на использование Material Functions для настройки основы материала кожи. Это делается как многоразовый авторский подход к созданию материалов для персонажей из Paragon. Таким образом, художники могут стандартизировать подходы к созданию определенных типов поверхностей, зная, что изменение одной функции будет обновлять все элементы, в которых она используется.

Skin Shader Textures

Текстуры, используемые на коже персонажа, имеют разрешение 4K и первоначально были получены благодаря сканированию лица актера. Текстуры были затем очищены и изменены художниками из Epic. Эта настройка кожи использует пять текстурных карт: Diffuse, Roughness, Specularity, Scatter и Normal.

Диффузная текстура поставляет базовый цвет для материала. Если приблизить 4K, то можно заметить крошечные капилляры. Любое потемнение морщин будет подчеркивать Normal Map.

Карта Roughness сохраняется в альфа канале Diffuse карты. Это общий метод, используемый для уменьшения количества текстур. Обратите внимание, что шероховатость увеличивается в местах с порами и морщинами. Это заставляет эти области казаться менее блестящими, подчеркивая глубину Diffuse и Normal карт.

Карта отражений отвечает за то, как материал будет реагировать на свет. Текстура отображает только свет со сцены, а не объекты + свет, как это делает Reflection Map. Важно отметить, что значение по умолчанию для отражения - 0.5. Эта карта должна отражать свет в тех местах, где кожа немного растянута, а уменьшать этот параметр она должна в тех местах, где мы не хотим видеть отражение, например, в центре пор и около морщин.

Карта рассеивания отвечает за то, как много света будет рассеиваться на поверхности кожи. Темные участки, такие как щеки, практически не будут рассеивать свет, в то время как светлые зоны носа и ушей, изображенные на фото, будут рассеивать свет. Цвет рассеивания управляется в Subsurface Profile Asset.Normal Map

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

Hair Shading

Обрабатывается в Unreal Engine 4 Hair Shader Model. Этот шейдер - модель PBS, основанная на исследованиях Steve Marschner, Eugene dEon и Hanika Johannes, и в настоящее время используется Weta Digital.

Чтобы начать работу с шейдером, установите параметр Shading Model вашего материала на Hair.

Создание реалистичного персонажа в Unreal Engine 4

Волосы и блики

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

Создание персонажа в Unreal Engine 4 - Изображение 2

1. Более светлые волосы являются первичными бликами. 2. Более яркие и рыжие волосы представляют вторичные блики.

Алгоритм аппроксимации, используемый в UE4 Hair, создаёт эти эффекты аналогично тому, как они сделаны в реальном мире. Когда свет попадает на волосяной фолликул, он не просто отталкивается от поверхности. Волосы просвечиваются, они позволяют пропускать через них некоторый свет, после чего свет отталкивается и выходит за пределы. Шейдер для волос достигает такого результата благодаря трем возможным путям движения света, как показано на анимированном GIF ниже:

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

Направление роста (от корня до кончика) волосяного фолликула.

Только отражающийся луч, отталкивающийся от поверхности. Это создаёт первичный блик.

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

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

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

Волосы и их прозрачность

Hair Shader использует Masked Blend Mode вместо прозрачности. Masked Blend Mode даёт бинарный результат - поверхности либо полностью непрозрачны, либо полностью прозрачны. Noisy Dither Pattern постоянно перемещается по поверхности, становясь непрозрачной в более плотных местах. Dither используется как способ смешивания Masked Transparency, но работает только когда TemporalAA активен.

Создание персонажа в Unreal Engine 4 - Изображение 3

Создание персонажа в Unreal Engine 4 - Изображение 4

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

Edge Masking

Настройка Edge Mask Unreal Engine 4

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

Урок Unreal Engine 4 - Создание персонажа

Создание волос для игрового персонажа

Перед тем как создать геометрию волос, следует посмотреть, как команда Epic конструирует волосы для игровых персонажей.

Геометрия волос

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

Нет никаких жестких правил для детализации геометрии волос вашего персонажа, но следует отметить, что Дуплет использует около 800 отдельных плейнов, в общей сложности около 18000 треугольников. Также обратите внимание, что материал для волос установлен двусторонний в свойствах Material Node Properties.

Урок Unreal Engine 4 -создание реалистичного персонажа

Текстуры волос

При использовании UE4 Hair шейдера конечный результат достигается следующими текстурами: Diffuse, Depth, Alpha, Root и Unique ID. В Epic эти текстуры обычно генерируются с помощью системы волос 3ds Max, которая проецирует имитируемые волосы на кусок геометрии. Однако есть много других вариантов для подобных результатов.

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

Альфа текстура обеспечивает прозрачность тех участков, где нет текстуры волос.

Текстура Root является маской для изменения цвета волос от корня до кончика. Полезна при осветлении или затемнении волос по их длине.

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

Текстура The Unique ID просто дает уникальное значение от 0 до 1 (от черного до белого) для каждой пряди на заданной части геометрии волос. Это используется для обеспечения различной вариации волос.

Свойства Hair Shader

Когда вы будете использовать Hair Shader, то увидите новые свойства, доступные в ноде материала: Scatter, Tangent и Backlit.

Scatter

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

Тем не менее, рассеивание света по-прежнему имеет решающее значение для того, насколько реалистичными окажутся волосы в игре. Чтобы контролировать это, Hair Shader имеет параметр Scatter, который заменяет Metallic основного нода шейдера и ограничивается значениями от 0.0 до 1.0. Scatter контролирует, сколько света проходит на всех волосах персонажа, как если бы это была одна поверхность.

Devgam, девгам, devgamcom

devgam, девгам, devgamcom

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

Tangent

Tangent Unreal Engine 4

Свойства Tangent заменяют свойства Normal на шейдере волос. Tangent вычисляется как вектор, который проходит параллельно каждой пряди волос, направленный назад к корню. Цель Tangent заключается в том, чтобы помочь настроить правильное анизотропное отражение. Если вы не знакомы с этим, то анизотропное отражение - это то, что происходит, когда свет отскакивает от поверхности с микро-порезами, например, шлифованный металл.

Волос Unreal Engine 4

На этом изображении желтая линия представляет вектор вдоль пряди волос, направленный к корню.

Tangent может отображаться одним из двух способов: автоматически или с помощью карты Flow. Автоматический метод просто требует, чтобы текстуры для каждого листа волос были ориентированы таким образом, чтобы корень был направлен вверх, а кончики - вниз. Если волосы короткие, и никакие плейны не изгибаются и слишком сильно скручиваются, то этот метод является адекватным. Он используется и на персонаже, представленном в этом уроке (мужчина).

Flow Maps

Другой метод требует создания Flow карты. Это будет полезно, если волосы вашего персонажа длинные, а также они должны казаться изгибающимися и завитыми больше, чем фактическая геометрия, или если отдельные участки текстуры для волос ориентированы по-разному (не сверху вниз, как описано выше). В проекте Photoreal Character Bust вы можете найти неиспользованную Flow карту с именем T_Hair_Flow. Ниже приведено сравнение этой карты и финального результата.

Unreal Engine 4 - создание фотореалистичного персонажа

Реалистичный персонаж в Unreal Engine 4 - Devgam

Здесь вы можете увидеть, как текстурирована Flow Map на примере волос Сойки (Sparrow). Обратите внимание, что карта используется только на некоторых участках, а не на всей голове.

Использование Pixel Depth Offset и Hair Shader

Pixel Depth Offset (PDO) не является свойством, уникальным для Hair Shader. С точки зрения непрофессионала, PDO заставляет пиксели отдаляться от камеры, создавая искусственное ощущение глубины. Так как волосы состоят из простых плейнов, как описано в разделе "Волосы и геометрия", использование PDO может обеспечить ощущение глубины формы волос в целом.

Unreal Engine 4 - урок создания персонажа

Как создать волосы в Unreal Engine 4

Редакция Devgam

Благодарим наших читателей и подписчиков за проявленный интерес. Поделитесь постом в социальных сетях.

Я сделал простую анимацию в Blender и экспортировал ее в Unreal Engine 4. В игре персонаж появился с точки зрения третьего лица, но я сделал его похожим на первого лица, отрегулировав камеру.

Теперь, когда я включаю камеру в игру, я могу осмотреться в разных частях тела персонажа. (Например, если я повернуть направо, я вижу плечо своего персонажа, и если я столкнусь с фронтом, я вижу только запястья.) Всякий раз, когда я поворачиваю камеру и запускаю анимацию пуансона, она выглядит странно, потому что модель персонажа не является 't выровнен с камерой.

Как я могу заставить тело поворачиваться вместе с камерой, так что моя анимация выглядит правильно?

1 ответ

Читайте также: