Полезное
Мы Вконтакте
Discord канал
При создании миров для игр иногда требуется возможность размещать и спавнить предметы в мире. Target Point позволяет сделать именно это. Она даёт вам общую точку в мире, из которой вы можете спавнить объекты.
Если вы знакомы с другими 3D — приложениями, такими как 3Ds Max или Maya то Target Point может вам показаться знакомой.
Target Point можно найти в Modes панели в категории All Classes. Просто выберите её на Modes панели, а затем перетащить в мир.
Target Point может использоваться для многих задач внутри Unreal Engine 4. Вот список некоторых из них:
Ниже приведен пример, показывающий, как Target Point была использована в блупринте, в качестве точки спавна.
Способность спавнить игрока в мир в любом месте — это очень полезная функция для любой игры. Unreal Engine 4 предлагает специальный объект — Player Start, который позволит вам сделать это.
Player Start определяет только начально положение игрока в мире.
Player Start может быть найден в Modes панели в Basic категории. Для того, чтобы разместить объект в мире, перетащите его из Modes панели на уровень.
После нажатия на кнопку Play игрок будет отспавнен в том месте где находится Player Start. Вы так же можете взаимодействовать с Player Start объектом через блупринты.
Есть несколько советов и трюков которые могут помочь вам в процессе разработки.
Нет Player Start: Если вы пытаетесь играть в свою игру, не добавляя Player Start в мир, игрок начнет с 0,0,0. По этому всегда убеждайтесь, что у вас есть Player Start в вашем мире.
Play From Here: Иногда вы можете захотеть, чтобы начать играть с определенного места, а не от Player Start. Вы можете сделать это с помощью нажатия правой кнопки мыши и выбора Play From Here.
Bad Size: Иногда у вашего Player Start может измениться значек контроллера на значок который говорит «BADsize». Если это произойдет, все, что вам нужно сделать, это переместить Player Start так что бы его капсула ничего не задевала.
Триггеры это объекты которые используются чтобы вызвать событие при взаимодействии с другим объектом в уровне. Другими словами, они используются для запуска событий в ответ на какое либо действие.
Все триггеры по умолчанию, как правило, одинаковы, отличаются лишь формой — короба, капсула и сфера эти объемы используются триггером для обнаружения столкновений.
![]() Box Trigger |
![]() Capsule Trigger |
![]() Sphere Trigger |
Триггеры могут быть размещены на уровне путем перетаскивания одного из типов триггеров из Modes панели.
Триггеры используются для активации события, помещенного внутри Level Blueprint. Есть несколько различных типов событий которые триггер может активировать.
Главные из них происходят в ответ на какой — то тип столкновения с другим объектом, такимм полное или частичное проникновения объекта или персонажа.
Выберите триггер во Viewport:
После чего в текущий граф будет добавлено событие связанное с триггером:
В примере выше, событие будет срабатывать каждый раз когда объект выходит из триггера.
Декали обеспечивают лучшую производительность и более легкое обслуживание. Запись в GBuffer не требует перерасчета освещения и имеет ряд преимуществ:
Декаль отображает рамку в редакторе вокруг затрагиваемой области.
Самый простой способ добавить декаль на сцену — выбрать соответствующий материал декали в Content Browser, а затем щелкнуть правой кнопкой мыши внутри View области и выбирать Place Actor из контекстного меню.
Декаль затем может быть изменена и ориентирована с помощью инструментов трансформации.
После того, как декаль будет создана, она может быть расположена и ориентирована с помощью инструментов манипуляций.
Масштабирование виджета контролирует ширину, высоту и глубину объема наложения декали.
Свойство | Описание |
Material | Указывает материал, который будет использоваться в качестве декали. |
Sort Order | Это позволяет пользователю установить значение для управления тем как несколько декалей будут сортироваться при наложении друг на друга. Более высокие значения оказываются сверху. |
DecalBlendMode параметр определяет свойства материала (диффузное, зеркальным, нормальный, непрозрачности, …), записываемое в GBuffer.
Opacity используется чтобы смешать несколько декалей. Эффективные декали манипулируют только несколькими GBuffer свойствами. В настоящее время некоторым свойствам, в целях оптимизации, представлена альтернатива: DBM_Diffuse, DBM_Specular, DBM_Emissive, DBM_Normal.
Свойство | Описание |
Translucent | Используется для полупрозрачных декалей. |
Stain | Моделирует BaseColor но не работает для запеченного освещения. |
Normal | Отображает Normal свойство и не работает для запеченного освещения. |
Emissive | Лишь добавляет к текущему цвету цвет декали. |
DBuffer_Translucent Color, Normal, Roughness | Трансформируется в DBM_TranslucentNormal если Normal не используется. Для неметаллов, работает для запеченного освещения. |
DBuffer_Translucent Color | Для неметаллов, работает для запеченного освещения. |
DBuffer_Translucent Color, Normal | Трансформируется в DBM_DBuffer_Color если Normal не используется. Для неметаллов, работает для запеченного освещения. |
DBuffer_Translucent Color, Roughness | Для неметаллов, работает для запеченного освещения. |
DBuffer_Translucent Normal | Для неметаллов, работает для запеченного освещения. |
DBuffer_Translucent Normal, Roughness | Трансформируется в DBM_DBuffer_Roughness если Normal не используется. Для неметаллов, работает для запеченного освещения. |
DBuffer_Translucent Roughness | Для неметаллов, работает для запеченного освещения. |
Volumetric Distance Function (experimental) | Будет выводить знаковое расстояние в Opacity в зависимости от вектора освещения. |
DBM_ScreenSpaceMask является особенным, влияет на специальный канал маскирования, который в настоящее время используется SSAO (Ambient Occlusion). Позволяет переопределить вклад декали в SSAO в некоторых областях.
DBM_DiffuseSpecularEmissive режим, который влияет на несколько каналов GBuffer.
Обратите внимание, что режим смешивания материала также влияет на то как значения GBuffer смешиваются друг с другом.
Вы можете использовать режим просмотра GBuffer что бы просмотреть значения GBuffer, которые хранятся для каждого из пикселей.
Сложность мешей на которые накладывается декаль не влияет на производительность. Производительность для декали зависит от сложности шейдера и её размера на экране.
Мы можем дополнительно улучшить производительность. В идеале ограничивающий прямоугольник декали должен быть мал, чтобы получить лучшую производительность. Его можно изменить вручную.
Автоматизированный метод возможен, но хороший дизайнер может также регулировать размещение самостоятельно.
Режим просмотра ShaderComplexity может быть использован чтобы увидеть влияние на производительность, он использует оценку стоимости пиксельного шейдера и накапливается, где несколько декалей перекрывают друг друга.
На данный момент прозрачность не оказывает никакого влияния на производительность. Ниже показана сцена без (слева) и с декалью (справа), в нормальном режиме рендеринга (вверху) и с ShaderComplexity (внизу):
Более темный цвет указывает на более высокую стоимость производительности этих пикселей. Эта информация может быть использована для оптимизации шейдеров, удаления едва видимых декалей или размещения их более эффективно.
Декали могут иметь артефакты, в виде блоков 2х2 пикселя, по краям, как показано на рисунке ниже.
Исправить это можно использовав Decal Derivative (однако осторожно, ибо эта нода имеет большое влияние на производительность). Она возвращает производные по X и Y оси текстуры декали в координаты по умолчанию,
это необходимо для анизотропной фильтрации текстур, но вычисляется иначе чтобы избежать артефакта.
Итог:
DecalMipmapLevel не поддерживает пользовательские UV.
Когда играете в видео игры использующие UE4, персонаж которым вы управляете, часто сделан из специального меша, называемым Skeletal Mesh Actor. Скелетал меш экторы потому специальные, потому что они могут быть использованы для показа сложной анимации сделанной в стороннем 3D приложении, и импортированной в UE4. Данные пособие расскажет и покажет, как использовать скелетал меш экторов внутри UE4.
Скелетал меш эктор — это специальный тип Эктора, который используются для показа сложной анимации сделанной в стороннем 3D приложении, и импортированной в UE4.Скелетал меши отличны от Статик мешей, потому что Скелетал меши содержат внутри себя сложный скелет, который помогает двигать вершины статик меша для соответствия той анимации которая проигрывается в данный момент.Так как Скелетал меши поддерживают скелет, то часто и густо они используются для персонажей, существ, сложных механизмов, или для любых других потребностей деформации, в том числе и для сложных движений. Внутри UE4 вы можете также найти Скелетал меш экторов которые используются не только для персонажей, но также и в Matinee, для создания кинематографических видеороликов.
Скелетал меш экторы располагаются на карте посредством стандартных методов расположения экторов; либо просто перетащите нужный эктор из контент браузера, либо выделив нужный эктор, нажмите ПКМ на карте.
Вы можете перетащить Скелетал меш эктор прямо из контент браузера прямо на уровень, следуя этим шагам:
Вы также можете разместить Скелетал меш эктор на уровне посредством нажатия ПКМ контекстного меню, следуя этим шагам:
Для того, чтобы Скелетал меш проиграл анимацию во время игры, у вас есть 2 варианта — использовать Animation Blueprint (который даст вам возможность проиграть и смешать несколько анимаций) либо использовать Animation Asset для воспроизведения одной анимации. В данной статье вы сфокусируемся на Animation Sequence для воспроизведения нашей анимации во время игры.
Настройка Скелетал меша для проигрывание анимации довольна проста:
Теперь, когда Скелетал меш эктор добавлен на уровень, пришло время добавить ему анимации посредством следующих шагов:
Теперь, удостоверьтесь, что оба пунктика Looping и Playing выбраны (впринципе, они по дефолту такими являются), после чего нажмите Play Button для того, чтобы воспроизвести анимации во время игры.
Если вам понадобилось применить иной, от текущего материала на ваш скелетал меш эктор, то новый материал может быть назначен путь простого перетаскивания на материала на сам эктор скелетал меша во вьюпорте редактора.Смена материала на скелетал меш экторе ничем не отличается от смены материала на любом другом экторе.
Используемый на экторе скелетал меша материал должен иметь отмеченный галочкой пунктик Used with Skeletal Mesh для того, чтобы всё работало правильно. Найти этот пунктик вы можете во вкладке Usage на панели Details материала.
Обычное создание коллизии не работает со скелетал меш экторами. Если вы хотите, чтобы вам скелетал меш взаимодействовал с объектами на уровне, вам необходимо создать Physics Asset для вашего скелет меш эктора.
Для создания физичесского ассета для вашего меша нужно всего лишь жмакнуть ПКМ по мешу в контент браузере, после чего выбрать Create -> Create Physics Asset. Больше информации про создание физичесского ассета вы можете прочитать в документации.
После того как вы создали физичесский ассет — необходимо его применить. Откройте скелетал меш и в разделе Physics в слот Physics Asset укажите требуемый физичесский ассет.
Вы также можете переназначить физичесский ассет, путём простого выбора нужного физического ассета во вкладке Physics на панели Details в пунктике Physics Asset Override.
Volumes (далее Зоны) являются 3х-мерными областями, которые имеют определенную цель. Некоторые из этих целей:
Есть много типов зон, которые выполняют различные задачи. В этом документе будет описано создание зон на Ваших уровнях и будет дано описание каждому типу зоны, доступных в Unreal Engine 4.
Самое главное, что нужно знать дизайнерам уровней о зонах:
Поскольку зоны невидимы, игроки, как правило, не знают, что они находятся в ней, поэтому дизайнер уровня должен немного помочь игроку. Зоны, как правило, следует рассматривать как компонент большего эффекта, где другой элемент уровня выступает в качестве визуального эффекта, дающий понять, что находится перед игроком.
Возьмем, например Pain Causing Volume (применяет повреждение к чему — либо внутри зоны). Если поставить эту зону посередине уровня…
![]() Размещение зоны |
![]() Что увидит игрок |
Так игрок не поймет, почему персонажу стало вдруг больно, когда он вошел в область. Но если добавить огненный эффект частиц в середину зоны…
![]() Размещение зоны |
![]() Что увидит игрок |
Теперь игрок будет понимать, почему стоять там больно!
Для создания зоны ее нужно выбрать из вкладки Volumes меню Modes и перетащить на уровень.
После того, как зона была помещена на уровень, Вы можете изменить размер и (или) переместить её.
Blocking Volume служит поверхностью коллизии, за которую не могут пройти объекты. Регулируя каналы коллизий зоны (на рисунке ниже), Вы можете контролировать, каким типам объектов можно пройти, а каким будет вызвано событие перекрытия
(overlap event), когда они подойдут к зоне. Смотрите Collision Documentation для получения более подробной информации.
Blocking Volume могут быть использованы в качестве коллизии для статического меша (Static Mesh), особенно, в случае стен здания.
При таком использовании зон, обычно имеется несколько преимуществ в сравнении с коллизией самого меша. Во-первых, ее легче вычислить, чем более сложные модели столкновений. Во-вторых, по природе зоны, которая знает, какие объекты находятся в ее пределах, она может быть более полезной при столкновении с физическими высокоскоростными объектами (может избавить от бага, когда объекты пролетают сквозь стены).
Camera Blocking Volumes аналогична по своей природе Blocking Volume тем, что она используются для определения места, куда нельзя пройти актеру камеры. Например, в перспективе от третьего лица, чтобы держать камеру у Вашего игрока в границах игрового пространства, не позволяя камере видеть обратную сторону игрового мира.
Свойства Camera Blocking Volume можно регулировать таким же образом, как у Blocking Volume — изменять каналы коллизий.
Trigger Volumes используются для вызова события, когда игрок или другой объект входит или выходит из неё. Они могут быть использованы с Level Blueprint, для проверки событий, геймплея или другого функционала без использования дополнительного Blueprint.
Например: Вы можете разместить TriggerVolume на Вашем уровне, и связать его с Level Blueprint, создав overlap event для этой зоны, которое запустит SoundCue, кат-сцену или откроет британским ученым дверь.
Nav Mesh Bounds Volumes используются для определения зоны расчета Nav Mesh на уровне. Nav Mesh используются для вычисления навигационных путей для Искусственного Интеллекта.
В данной зоне, Nav Mesh строится на всех поверхностях с углом, по которому можно передвигаться. Вы можете создавать области в определенных местах на уровне, чтобы создать нужную навигационную геометрию.
Для построения навигационных путей, просто создайте один (или более) Volume Nav Mesh Bounds, который будет пересекаться с землей уровня и навигационная геометрия будет построена автоматически.
Для визуализации Nav Mesh в окне просмотра, нажмите кнопку P.
Пожалуйста, посмотрите примеры в Content Examples и Документацию по Nav Mesh для получения более подробной информации.
Physics Volumes — зоны, в которых устанавливаются физические параметры, которые влияют на персонажей и другие физические. Обычно используются для создания воды, в которой игрок будет плавать. Но Вы могли бы так же легко использовать его, чтобы создать область с низкой или нулевой гравитацией и повлиять на предельную скорость (terminal velocity) объектов, проходящих через него.
Ниже описаны свойства данной зоны, настроить которые можно на панели Details.
Параметр | Описание |
Terminal Velocity | Определяет конечную скорость Pawn‘ов с использованием CharacterMovement при падении (falling). |
Priority | Определяет, какой из PhysicsVolume будет воздействовать, если они перекрывают друг друга. |
Fluid Friction | Определяет величину трения во время перемещения Pawn’а через зону, с использованием CharacterMovement. Чем выше это значение, тем труднее передвигаться через зону. |
Water Volume | Делает зону с жидкостью, например с водой. |
Physics on Contact | Применяет эффекты зоны при прикосновении к ней (по умолчанию, актер должен быть внутри зоны, чтобы применились эффекты). |
Pain Causing Volumes по сути Physics Volume с дополнительной способностью наносить ущерб игрокам. Обычно размещается в таких областях уровня, где игрок не должен пройти, например, лава, облако токсичного газа, и так далее.
Наряду со свойствами, которые могут быть назначены для Physics Volume, Pain Causing Volume имеет свой собственный набор специфических свойств, описанных ниже.
Параметр | Описание |
Pain Causing | Включает повреждающее воздействие зоны. |
Damage Per Sec | Количество урона в секунду актерам, находящимся в зоне, если Pain Causing параметр включен. Количество урона вычисляется как Damage = Damage Per Sec * Pain Interval |
Damage Type Определяет тип повреждения, наносимого Актерам. | |
Pain Interval | Временной интервал, в секундах, между повреждающими воздействиями, если Pain Causing параметр включен. |
Entry Pain | Если включено, то наносит повреждение сразу при входе в зону, если Pain Causing параметр включен, иначе повреждение применяется после времени Pain Interval |
Kill Z Volume или «Kill-Brush» по существу уничтожает любой актер, который попал в эту зону (включая персонажей). Используется эта зона под уровнем, на случай, если игрок каким-то образом выпал из игровой зоны, или под высокой скалой, чтобы наверняка убить игрока или актера, который упадает с нее.
Level Streaming Volumes используются в процессе Level Streaming (пожгрузка уровня). Они «объединяют» часть уровня и контролируют его загрузку и выгрузку из памяти, если игрок входит или выходит из зоны.
Вы можете настроить, обработку уровня Volume Level Streaming обрабатывает уровень потоковой передачи путем корректировки свойств на Details панели, изображенной ниже.
Параметр | Описание |
Streaming Levels | Отображает пути уровней, зависящих от зоны. |
Editor Pre Vis Only | Является ли streaming volume только для просмотра подгружаемого уровня в редакторе (без подгрузки его в игре). |
Disabled | Если включено, streaming volume игнорируется кодом streaming volume code. Также используется для отключения Level Streaming Volume без разъединения его с уровнем, для переключения управления подгрузкой уровня между Blueprint и Streaming Volume. |
Streaming Usage | Определяет, как используется зона, например, следует ли контролировать подгрузку, подгрузку и видимость, или только видимость (остановка при подгрузке уровня). |
Cull Distance Volumes являются инструментом оптимизации, который заставляет движок не обрабатывать объекты — не отображать их на экране, которые меньше определенного размера, основываясь на расстоянии от этого объекта до камеры. Это может помочь оптимизировать сцену, не отрисовывая объекты заданного размера. Размер рассчитывается по самой большой стороне bound box.
Настройки Cull Distance Volume зависят от Cull Distances параметра, в Details панели.
На изображении выше, показаны свойства, определяющие следующее поведение:
Настройка начинается с добавления нового массива Cull Distances, который можно добавить нажатием кнопки . Далее, заполняем размер объекта и требуемое расстояние, на котором Вам нужно скрыть объекты меньшего размера. Эти свойства должны быть созданы в определенном порядке.
Audio Volumes позволяют контролировать и применять различные звуки на Вашем уровне, а также обеспечивает зоны слышимости, где Вы можете настраивать, что слышно внутри, а что снаружи зоны. Благодаря использованию аудио зон, Вы можете создавать переходы громкости между звуками и управлять параметрами Ambient Zone внутри самой зоны.
Некоторые свойства можно изменить на панели Details этой зоны, показанной ниже.
Параметр | Описание |
Priority | В случае пересечения зон, будет работать зона с наибольшим приоритетом. Порядок будет не определен, если две или более пересекающихся зоны имеют одинаковый приоритет. |
Apply Reverb | Включает параметры реверберации. |
Reverb Effect | Ассет реверберации для использовании в зоне. |
Volume | Общий уровень громкости эффекта реверберации. |
Fade Time | Время (в секундах), чтобы перейти от текущих настроек реверберации к параметрам зоны. Enabled Определяет, включена ли в настоящее время зона и способна ли влиять на звуки. |
Ambient Zone определяют, как Sound Actors, расположенные внутри связанного с ним Audio Volume будет изменены в зависимости от местоположение игрока. Настройки Ambient Zone настраиваются в Details панели.
Параметр | Описание |
Exterior Volume | Уровень громкости внешних звуков (звуков, находящихся вне зоны, а точнее настроенных как внешние), когда игрок находится внутри зоны. |
Exterior Time | Время, затухания (перехода) к новому уровню громкости внешних звуков в секундах. |
Exterior LPF | Множитель низкочастотного фильтра, применяемого к внешним звукам зоны, когда игрок внутри (1.0 – максимальный фильтр НЧ). |
Exterior LPFTime | Время, перехода к новому уровню фильтра низких частот в секундах. |
Interior Volume | Громкость внутренних звуков, когда игрок находится вне зоны. |
Interior Time | Время, перехода до нового уровня громкости внутренних звуков в секундах. |
Interior LPF | Множитель низкочастотного фильтра, применяемого к внутренним звукам зоны, когда игрок находится вне зоны (1.0 – максимальный фильтр НЧ). |
Interior LPFTime | Время, перехода к новому уровню фильтра низких частот в секундах. |
Post Process Volume представляет собой зону, в которой переопределяются параметры пост обработки, применяемые к камере, на параметры из Details панели.
Для получения дополнительной информации по пост обработке, прочтите Документацию по Post Processing.
Lightmass Importance Volume используется для оптимизации объема обработки, при создании предварительного рассчитанного света на уровне. Lightmass Importance Volume должна покрывать область уровня с геометрией, где необходимо рассчитать Lightmass, игнорируя остальное за его пределами. Lightmass является предварительно рассчитанным освещением и глобальной системой освещения использующейся в Unreal Engine 4.
Для получения дополнительной информации по Lightmass и Lightmass Importance Volume, обратитесь к Документации по Lightmass.
Lightmass Character Indirect Detail Volume похож на Lightmass Importance Volume и генерирует indirect light samples (зоны отраженного света, для их просмотра в окне редактора включите Show – Visualize – Volume Lighting Samples) по всей зоне, а не только на высоту игрока над геометрией. Хорошим примером использования этой зоны будет шахта лифта, в которой персонаж будет достоверно освещаться по всей длине шахты.
Precomputed Visibility Volume используются прежде всего для оптимизации производительности. Эти зоны хранят видимость Актеров при их расположении на сцене. Эти зоны должны быть размещены только в тех областях, куда игрок может добраться.
Precomputed Visibility Override Volume позволяют вручную изменить видимость актеров для своего места в мире, если не удовлетворяет автоматический результат Precomputed Visibilty Volume. Они также используются для оптимизации производительности и должны быть размещены только в тех областях, куда игрок может добраться.