Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Собирайте цепочки из трех и более одинаковых фишек, чтобы восстановить величие школы волшебников! Волшебство и захватывающие приключения ждут вас уже с первых шагов!

Волшебный особняк

Казуальные, Три в ряд, Головоломки

Играть

Топ прошлой недели

  • cristall75 cristall75 6 постов
  • 1506DyDyKa 1506DyDyKa 2 поста
  • Animalrescueed Animalrescueed 35 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
5
8bitsage
8bitsage

Unreal Engine 5 и VR с нуля. Часть 11. Естественный спринт в VR: Управление скоростью с помощью махов рук. Arm Swinging спринт⁠⁠

6 месяцев назад

Введение

В феврале, я проходил курс по С++ для Unreal Engine в контексте VR. В это же время я начал параллельно писать основу для VR проекта с нуля, но в какой то момент, понял насколько много вещей нужно учесть и протестировать, прежде чем двигаться дальше.

Я закомментировал весь написанный код и перешел на VR Expansion Plugin. В этом плагине уже решено множество проблем, как синхронизация камеры HMD и капсулы персонажа, поведение капсулы когда ты движешься физически упираешься в стену и так далее. Я до сих пор разбираю код этого плагина. Плагин поддерживает разные версии Unreal Engine. Всё доступно в репозитории бесплатно: https://github.com/mordentral/VRExpansionPlugin

Я полностью перенес код VR Expansion Plugin в свой проект, чтобы в последующем модифицировать его. Так как я базируюсь на коде этого плагина, я не буду описывать туториалы "как с нуля построить VR проект", вроде бы звучит логичным "покажи как перенести код из VR Expansion Plugin и модифицировать его", но у меня столько времени нет.

Статьи будут выходить, в статьях я буду стараться передавать модульный функционал. Показывая пример как его можно применить на простом примере. Так как контекст всех проектов разный, основываясь на моем примере вы можете применить его у себя (нейронки в помощь, грузите ей "свой контекст" и "мой пример", смотрите как можно интегрировать и надо ли оно вам вобще)

А сегодня поговорим про перевод персонажа в спринт с помощью махов рук. Такая механика применяется например в Blade and Sorcery или Battle Talent.

Функции вероятнее всего будут приложены скриншотами, а скопировать код можно будет из https://gist.github.com/8bitsage

Код этой статьи: https://gist.github.com/8bitsage/0e17f196d2114ec7d663e08a29204c5b

Концепция механики Arm Swinging

Идея проста: когда игрок двигается вперед и активно машет руками (как при беге), персонаж автоматически переходит в режим спринта. Это позволяет:

  • Освободить кнопки контроллера для других действий.

  • Сделать передвижение более иммерсивным.

  • Связать физическую активность игрока со скоростью персонажа в игре.

Архитектура решения

Шаг 1: Определение переменных

В заголовочном файле (h файл) класса персонажа (например, AVRPlayerCharacter.h) добавляем необходимые переменные:

// === Настраиваемые параметры ===
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement|ArmSwing",
meta = (ClampMin = "3.0", ClampMax = "15.0"))
float ArmSwingThreshold = 7.0f;
// Порог активации спринта в сантиметрах
// Определяет минимальное суммарное расстояние, которое должны пройти
// оба контроллера за один цикл проверки для активации спринта
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement|ArmSwing",
meta = (ClampMin = "0.01", ClampMax = "0.2"))
float CheckFrequency = 0.02f;
// Частота проверки движения контроллеров в секундах
// Меньшее значение = более отзывчивая механика, но больше нагрузка
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float SprintSpeed = 600.0f;
// Скорость персонажа при спринте (см/с)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float RunSpeed = 400.0f;
// Скорость персонажа при беге (см/с)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float WalkSpeed = 200.0f;
// Скорость персонажа при ходьбе (см/с)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.1", ClampMax = "0.5"))
float MinStickMagnitudeForRun = 0.3f;
// Минимальное отклонение стика для перехода от ходьбы к бегу
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.5", ClampMax = "0.9"))
float MinForwardRatioForSprint = 0.7f;
// Минимальная доля движения вперед для возможности спринта
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.3", ClampMax = "0.7"))
float MaxLateralRatioForSprint = 0.5f;
// Максимальная доля бокового движения для возможности спринта
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.1", ClampMax = "1.0"))
float BackwardSpeedMultiplier = 0.7f;
// Множитель скорости при движении назад
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.1", ClampMax = "1.0"))
float SidewaysSpeedMultiplier = 0.8f;
// Множитель скорости при движении вбок
// === Внутренние переменные ===
FVector LastLeftControllerPos;
// Предыдущая позиция левого контроллера для расчета дельты
FVector LastRightControllerPos;
// Предыдущая позиция правого контроллера для расчета дельты
FTimerHandle ArmSwingTimerHandle;
// Хэндл таймера для периодической проверки движения
bool bIsArmSwinging = false;
// Флаг текущего состояния: true если игрок машет руками достаточно интенсивно
void CheckArmSwing();
void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent);
void MoveCharacter(const FInputActionValue& Value);
void HandleMovementInput(const FVector2D& InputValue);

Логика определения скорости:

  1. Слабое отклонение стика (< MinStickMagnitudeForRun) — всегда ходьба, независимо от махов руками

  2. Сильное отклонение стика (≥ MinStickMagnitudeForRun): Движение вперед (ForwardRatio > MinForwardRatioForSprint и боковое отклонение < MaxLateralRatioForSprint):С махами руками → Спринт Без махов руками → Бег Движение назад или вбок → Только бег (спринт невозможен)

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

Ссылки на документацию:

  • UPROPERTY

  • FTimerHandle

  • Meta tags

Шаг 2: Реализация детекции махов руками

В файле реализации (AVRPlayerCharacter.cpp) создаем функцию проверки:

Как это работает:

  1. Функция вызывается каждые CheckFrequency секунд (по умолчанию 0.02с = 50 раз в секунду) Настройте для оптимальной производительности.

  2. Измеряется расстояние, пройденное каждым контроллером с последнего вызова

  3. Если суммарное расстояние превышает ArmSwingThreshold, считается что игрок "бежит"

Шаг 3: Инициализация системы

В методе BeginPlay() запускаем периодическую проверку:

Ссылки на документацию:

  • Timer Management

  • UMotionControllerComponent

Шаг 4: Интеграция с Enhanced Input System

Теперь нужно связать механику с системой ввода. Сначала настраиваем привязку action'а:

Затем реализуем функцию обработки ввода:

Шаг 5: Управление скоростью персонажа

Важно понимать! В моем примере применение скорости персонажа в зависимости от направления взгляда камеры. Например, стик отодвинут вперед (мы бежим вперед), повернули голову на 90 градусов, мы по прежнему бежим вперед, только уже в ту сторону, когда повернулась голова.

Иногда делают реализации, когда вектор движения применяется от направления капсулы. Направление "вперед" для ввода с джойстика определяется направлением "вперед" капсулы персонажа (или его тела), а не тем, куда смотрит HMD (голова). Игрок может свободно осматриваться головой, не меняя направления движения. При этом повороты самой капсулы (тела персонажа) обычно управляются отдельно, например, правым стиком (snap turn/smooth turn) или физическим поворотом игрока, если включено bUseControllerRotationYaw для персонажа и соответствующая логика в PlayerController.

Вернемся к моему примеру. Основная логика применения скорости находится в HandleMovementInput:

Ссылки на документацию:

  • Enhanced Input System

  • UCharacterMovementComponent

  • AddMovementInput

Настройка в редакторе

1. Создание Input Action

  1. Создайте новый Input Action IA_MoveCharacter

  2. Установите Value Type: Axis2D

  3. В Input Mapping Context привяжите к левому стику VR контроллера

  4. Укажите персонажу Input Mapping Context

2. Настройка параметров движения

В Blueprint персонажа или в Details панели вы можете настроить все параметры:Параметры махов руками:

  • Arm Swing Threshold — чувствительность активации спринта (см)

  • Check Frequency — частота проверки движения контроллеров

Скорости движения:

  • Sprint Speed — скорость при спринте

  • Run Speed — скорость при беге

  • Walk Speed — скорость при ходьбе

Пороги направления:

  • Min Stick Magnitude For Run — минимальное отклонение стика для бега

  • Min Forward Ratio For Sprint — доля движения вперед для спринта

  • Max Lateral Ratio For Sprint — максимальная доля бокового движения для спринта

Множители скорости:

  • Backward Speed Multiplier — коэффициент замедления при движении назад (0.7 = 70% от обычной скорости)

  • Sideways Speed Multiplier — коэффициент замедления при движении вбок (0.8 = 80% от обычной скорости)

Демонстрация этой логики на моем проекте:

Rutube: https://rutube.ru/shorts/ced7d33345b2d47e399f9f5f171dcd2e/

Youtube: https://youtube.com/shorts/4NbbaeqUZ7k

Заключение

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

Телеграм канал Unreal Engine VR

Поддержать канал

Показать полностью 5
[моё] Гайд Разработка Unreal Engine Gamedev Виртуальная реальность Oculus Rift Длиннопост
0
1
8bitsage
8bitsage

Power IK Ground — Эффективное решение для реалистичного позиционирования ног⁠⁠

6 месяцев назад

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

Документация всего проекта описана здесь, но изначально плагин существует для Unreal Engine 4.26:

https://www.fab.com/listings/b9d29157-e20b-48f8-a188-37bfd0d...

https://poweranimated.github.io/

Именно здесь на помощь приходит Power IK Ground — простой, но мощный инструмент, созданный специально для решения этой задачи. Power IK Ground — это специализированная нода (Inverse Kinematics), которая автоматически адаптирует положение ног персонажа к любым поверхностям, будь то каменистые тропинки, лестницы, наклонные плоскости или другие неровности.

Преимущества использования Power IK Ground:

  • Реалистичность: Стопы персонажа всегда выглядят естественно, независимо от формы поверхности.

  • Производительность: Power IK оптимизирован и идеально подходит даже для VR-устройств с ограниченными ресурсами, таких как Meta Quest.

  • Удобство: Минимальная настройка и интеграция с уже существующими анимационными системами.

Да, есть решения от Unreal Engine(Control Rig), где ты сам настраиваешь трассировку для правильной работы стопы. Меня зацепило, что автор обещает высокую производительность, а именно это мне нужно для VR проекта, поэтому я решил его использовать.

Недавно я адаптировал плагин Power IK под Unreal Engine 5.5 (за основу взял версию для UE5.2 от другого разработчика https://github.com/tornellihenrique/PowerIK-UE5.2), устранив проблемы компиляции и добавив поддержку сборки проектов под Android (Meta Quest). Также были решены проблемы полями в редакторе для указания костей где настраивается сгибание коленей персонажа.

Power IK теперь доступен в моем репозитории на GitHub, который можно свободно использовать и улучшать:
https://github.com/8bitsage/PowerIK_UE5.5

Как добавить плагин в проект?

1. Скачиваем плагин с бинарниками для Unreal Engine 5.5

2. качаем zip из релизов

3. Вставляем разархивированный плагин в проект, внутри должны быть сразу файлы плагина

4. Запускаете проект и включаете плагин в Plugins. Нода Power IK Ground появится в анимационном блюпринте.

Полезные уроки, которые помогут настроить Power IK Ground:

1. Урок от автора плагина - https://www.youtube.com/watch?v=g1FgBDIA2zA&amp;t=3s&amp;ab_...

2. Настройка Power IK Ground от стороннего разработчика с 3:46 - https://youtu.be/PMSxTCp0kuQ?si=A5EuogPb4dmTZPeh&t=226

Вы можете посмотреть мою короткую демонстрацию работы Power IK Ground по ссылке ниже (да, у меня RU и EN каналы):
https://www.youtube.com/shorts/vWHbCahyuKw
https://www.youtube.com/shorts/6ic3Tr9NI1I

Используйте Power IK Ground, чтобы вывести свой проект на новый уровень реалистичности!

Телеграм канал Unreal Engine VR
Поддержать канал

Показать полностью 4
[моё] Разработка Гайд Gamedev YouTube Виртуальная реальность Unreal Engine Длиннопост
0
4
8bitsage
8bitsage

Unreal Engine 5 и VR с нуля. Часть 10. Unreal Engine 5.5.3. Настройка VR проекта на С++ для Meta Quest 2, 3, 3s, PRO⁠⁠

7 месяцев назад

Введение

Давно ничего не писал, изучал базу С++ (до сих пор изучаю), знакомился с апи Unreal Engine, читаю книги и смотрю на реализации других авторов.
В общем всё по плану прошлой статьи. Думаю пора начать Pet-проект, а может и что-то интересное из этого выйдет.

В качестве IDE использую Rider, по-моему на нём куда стабильнее работать чем Visual Studio.

Общими вещами, механиками, я буду делиться в статьях. Чем то уникальным для проекта делиться смысла нет, иначе вроде и смысла тогда в проекте не будет..

Настройка Unreal Engine 5.5

https://dev.epicgames.com/community/learning/tutorials/PYP7/...

Есть видео основанное на документе по настройке UE 5.5
https://www.youtube.com/watch?v=EClbEbNcl4k&list=LL&index=6&ab_channel=MamadouBabaei

Не забываем установить пакеты под целевую платформу Android

Создание проекта

Доля рынка VR всё равно вышел на мобильных проектах, поэтому создавать проект буду на Meta Quest 2, 3, 3s, PRO.

Если что-то получится, можно расшириться на PICO. А еще в след году обещают выпустить мобильную гарнитуру Samsung и Steam.

Поэтому запускаю Unreal Engine 5.5.3 и выбираю:

проект Blank,
C++,
Target Platform: Mobile,
Quality Preset: Maximum

Добавляем плагины MetaXR, MetaXRAudio с сайта:

https://developers.meta.com/horizon/downloads/package/unreal-engine-5-integration/

https://developers.meta.com/horizon/downloads/package/meta-x...

Листай ниже если не хочешь компилировать под UE 5.5MetaXRAudio компилируем под версию Unreal Engine 5.5 (если используете 5.4, то ничего делать не надо) Инструкция по компиляции плагина под движок - https://developers.meta.com/horizon/documentation/unreal/meta-xr-audio-sdk-unreal-req-setup/#repackaing-for-a-different-version-of-unreal-engine

Помещаем их в папку

Добавил папку Android из плагина версии 5.4, без него билд не собирался

Скомпилированные плагины для Unreal Engine 5.5

Можно скачать MetaXR audio скомпилированный мной - https://drive.google.com/drive/folders/1CqixHao8yEvJhiO8BVgK8VKhBeg6Zj4m?usp=sharing

и сразу активируем его.

В папке проекта создаем папку Build (для билдов).

Создаем .gitignore для системы контроля версий (если у вас установлен Git), внутри может быть минимальный набор ограничений для Git:
.idea
.vs
*.sln
DerivedDataCache/
Intermediate/
Saved/
Binaries/
Build/

Настроим Meta XR Audio:

Справочные материалы для Meta Quest и Настройки Rendering для Mobile графики выбранные мной (не тестировал на сложных сценах).

Хочется еще подобрать настройки для ПК версии, но пока нет времени.

Описание всех настроек Rendering в Unreal Engine:

Rendering Settings in the Unreal Engine Project Settings | Unreal Engine 5.5 Documentation | Epic Developer Community

Graphics Optimization for VR Architectural Visualization -

VR Performance Features | Unreal Engine 4.27 Documentation | Epic Developer Community

Developer Insights: How to Develop with Vulkan for Mobile VR Rendering | Meta Horizon OS Developers

PC Rendering Techniques to Avoid when Developing for Mobile VR | Meta Horizon OS Developers

Using the Android Vulkan Mobile Renderer in Unreal Engine | Unreal Engine 5.4 Documentation | Epic Developer Community

[По желанию при отладке уровня] можно добавить в [/Script/Engine.RendererSettings] r.Streaming.PoolSize = 500

такое значение описано как рекомендуемое для Meta Quest (300-500 mb) О пуле потоковой передачи текстур: https://dev.epicgames.com/community/learning/knowledge-base/a3vO/unreal-engine-why-is-my-texture-streaming-pool-giving-me-a-warning

НЕ ИСПОЛЬЗУЙТЕ MOBILE HDR и MOBILE MULTI VIEW вместе! При движении камеры это вызывает ошибки рендеринга. В итоге я отказался от MOBILE HDR. Пример ошибки рендеринга в видео:

рутуб:

Ошибка рендеринга

ютуб:

Дополнительно составил список с описаниями моих настроек на которых успешно собирается билд для apk, возможно будет редактироваться в будущем:

https://8bitsage.gitbook.io/8bitsage-wiki/rendering_for_meta...

Путь - [YourProject]/Config/DefaultEngine.ini

[/Script/Engine.RendererSettings] r.Mobile.ShadingPath = 0 r.Mobile.AllowDeferredShadingOpenGL = False r.Mobile.SupportGPUScene = True r.Mobile.AntiAliasing = 3 r.Mobile.FloatPrecisionMode = 0 r.Mobile.AllowDitheredLODTransition = False r.Mobile.VirtualTextures = False r.DiscardUnusedQuality = True r.AllowOcclusionQueries = False r.MinScreenRadiusForLights = 0.050000 r.MinScreenRadiusForDepthPrepass = 0.050000 r.PrecomputedVisibilityWarning = False r.TextureStreaming = True Compat.UseDXT5NormalMaps = False r.VirtualTextures = False r.VT.EnableAutoImport = False r.VirtualTexturedLightmaps = False r.VT.AnisotropicFiltering = False bEnableVirtualTextureOpacityMask = False bEnableVirtualTexturePostProcessing = False r.VT.TileSize = 128 r.VT.TileBorderSize = 4 r.vt.FeedbackFactor = 16 r.MeshPaintVirtualTexture.TileSize = 32 r.MeshPaintVirtualTexture.TileBorderSize = 2 r.MeshPaintVirtualTexture.UseCompression = False r.StaticMesh.DefaultMeshPaintTextureSupport = False r.MeshPaintVirtualTexture.DefaultTexelsPerVertex = 4 r.MeshPaintVirtualTexture.MaxTextureSize = 4096 r.vt.rvt.EnableBaseColor = True r.vt.rvt.EnableBaseColorRoughness = True r.vt.rvt.EnableBaseColorSpecular = True r.vt.rvt.EnableMask4 = True r.vt.rvt.EnableWorldHeight = True r.vt.rvt.EnableDisplacement = True r.vt.rvt.HighQualityPerPixelHeight = True WorkingColorSpaceChoice = sRGB RedChromaticityCoordinate = (X=0.640000,Y=0.330000) GreenChromaticityCoordinate = (X=0.300000,Y=0.600000) BlueChromaticityCoordinate = (X=0.150000,Y=0.060000) WhiteChromaticityCoordinate = (X=0.312700,Y=0.329000) r.LegacyLuminanceFactors = False r.ClearCoatNormal = False r.DynamicGlobalIlluminationMethod = 0 r.ReflectionMethod = 0 r.ReflectionCaptureResolution = 128 r.ReflectionEnvironmentLightmapMixBasedOnRoughness = True r.Lumen.HardwareRayTracing = False r.Lumen.HardwareRayTracing.LightingMode = 0 r.Lumen.TranslucencyReflections.FrontLayer.EnableForProject = False r.Lumen.TraceMeshSDFs = 1 r.Lumen.ScreenTracingSource = 0 r.Lumen.Reflections.HardwareRayTracing.Translucent.Refraction.EnableForProject = False r.MegaLights.EnableForProject = False r.RayTracing.Shadows = False r.Shadow\.Virtual.Enable = 0 r.RayTracing = False r.RayTracing.UseTextureLod = False r.PathTracing = False r.GenerateMeshDistanceFields = False r.DistanceFields.DefaultVoxelDensity = 0.200000 r.Nanite.ProjectEnabled = False r.AllowStaticLighting = True r.NormalMapsForStaticLighting = True r.ForwardShading = True r.VertexFoggingForOpaque = False r.SeparateTranslucency = False r.TranslucentSortPolicy = 0 TranslucentSortAxis = (X=0.000000,Y=-1.000000,Z=0.000000) r.LocalFogVolume.ApplyOnTranslucent = False xr.VRS.FoveationLevel = 3 xr.VRS.DynamicFoveation = False r.CustomDepth = 1 r.CustomDepthTemporalAAJitter = False r.PostProcessing.PropagateAlpha = False r.Deferred.SupportPrimitiveAlphaHoldout = False r.DefaultFeature.Bloom = True r.DefaultFeature.AmbientOcclusion = False r.DefaultFeature.AmbientOcclusionStaticFraction = False r.DefaultFeature.AutoExposure = False r.DefaultFeature.AutoExposure.Method = 2 r.DefaultFeature.AutoExposure.Bias = 1.000000 r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange = True r.DefaultFeature.LocalExposure.HighlightContrastScale = 0.800000 r.DefaultFeature.LocalExposure.ShadowContrastScale = 0.800000 r.DefaultFeature.MotionBlur = False r.DefaultFeature.LensFlare = False r.AntiAliasingMethod = 0 r.TemporalAA.Upsampling = False r.MSAACount = 4 r.DefaultFeature.LightUnits = 1 r.DefaultBackBufferPixelFormat = 4 r.ScreenPercentage.Default = 100.000000 r.ScreenPercentage.Default.Desktop.Mode = 1 r.ScreenPercentage.Default.Mobile.Mode = 0 r.ScreenPercentage.Default.VR.Mode = 0 r.ScreenPercentage.Default.PathTracer.Mode = 0 r.Shadow\.UnbuiltPreviewInGame = False r.StencilForLODDither = False r.EarlyZPass = 3 r.EarlyZPassOnlyMaterialMasking = False r.Shadow\.CSMCaching = True r.DBuffer = False r.ClearSceneMethod = 1 r.VelocityOutputPass = 0 r.Velocity.EnableVertexDeformation = 2 r.SelectiveBasePassOutputs = False bDefaultParticleCutouts = False fx.GPUSimulationTextureSizeX = 1024 fx.GPUSimulationTextureSizeY = 1024 r.AllowGlobalClipPlane = False r.GBufferFormat = 1 r.MorphTarget.Mode = True r.MorphTarget.MaxBlendWeight = 5.000000 r.SupportSkyAtmosphere = True r.SupportSkyAtmosphereAffectsHeightFog = True r.SupportExpFogMatchesVolumetricFog = False r.SupportLocalFogVolumes = True r.SupportCloudShadowOnForwardLitTranslucent = False r.LightFunctionAtlas.Format = 0 r.VolumetricFog.LightFunction = False r.Deferred.UsesLightFunctionAtlas = False r.SingleLayerWater.UsesLightFunctionAtlas = False r.Translucent.UsesLightFunctionAtlas = False r.Translucent.UsesIESProfiles = False r.Translucent.UsesRectLights = False r.GPUCrashDebugging = False vr.InstancedStereo = True r.MobileHDR = False vr.MobileMultiView = True r.Mobile.UseHWsRGBEncoding = True vr.RoundRobinOcclusion = False r.MeshStreaming = False r.HeterogeneousVolumes = False r.HeterogeneousVolumes.Shadows = False r.Translucency.HeterogeneousVolumes = False r.WireframeCullThreshold = 5.000000 r.SupportStationarySkylight = True r.SupportLowQualityLightmaps = True r.SupportPointLightWholeSceneShadows = True r.Shadow\.TranslucentPerObject.ProjectEnabled = False r.Water.SingleLayerWater.SupportCloudShadow = False r.Substrate = False r.Substrate.OpaqueMaterialRoughRefraction = True r.Refraction.Blur = True r.Substrate.Debug.AdvancedVisualizationShaders = False r.Material.RoughDiffuse = False r.Material.EnergyConservation = False r.Material.DefaultAutoMaterialUsage = True r.OIT.SortedPixels = False r.HairStrands.LODMode = False r.SkinCache.CompileShaders = True r.VRS.Support = True r.SkinCache.SkipCompilingGPUSkinVF = False r.SkinCache.DefaultBehavior = 1 r.SkinCache.SceneMemoryLimitInMB = 128.000000 r.Mobile.EnableStaticAndCSMShadowReceivers = False r.Mobile.EnableMovableLightCSMShaderCulling = True r.Mobile.Forward.EnableLocalLights = 1 r.Mobile.Forward.EnableClusteredReflections = False r.Mobile.AllowDistanceFieldShadows = False r.Mobile.EnableMovableSpotlightsShadow = False r.GPUSkin.Support16BitBoneIndex = False r.GPUSkin.Limit2BoneInfluences = False r.SupportDepthOnlyIndexBuffers = False r.SupportReversedIndexBuffers = False r.Mobile.AmbientOcclusion = False r.Mobile.DBuffer = False r.GPUSkin.UnlimitedBoneInfluences = False r.GPUSkin.AlwaysUseDeformerForUnlimitedBoneInfluences = False r.GPUSkin.UnlimitedBoneInfluencesThreshold = 8 DefaultBoneInfluenceLimit = (Default=0,PerPlatform=()) MaxSkinBones = (Default=65536,PerPlatform=(("Mobile", 256))) r.Mobile.PlanarReflectionMode = 0 r.Mobile.ScreenSpaceReflections = False r.Mobile.SupportsGen4TAA = False bStreamSkeletalMeshLODs = (Default=False,PerPlatform=()) bDiscardSkeletalMeshOptionalLODs = (Default=False,PerPlatform=()) VisualizeCalibrationColorMaterialPath = /Engine/EngineMaterials/PPM\_DefaultCalibrationColor.PPM\_DefaultCalibrationColor VisualizeCalibrationCustomMaterialPath = None VisualizeCalibrationGrayscaleMaterialPath = /Engine/EngineMaterials/PPM\_DefaultCalibrationGrayscale.PPM\_DefaultCalibrationGrayscale r.AllowGlobalClipPlane = False

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

С такими настройками мне успешно удалось собрать apk для Meta Quest и запустить его на шлеме.

Телеграм канал Unreal Engine VR

Поддержать канал

Показать полностью 8 2
[моё] Разработка Unreal Engine Гайд Виртуальная реальность Gamedev Видео YouTube Короткие видео Длиннопост
0
IGROPROM
IGROPROM
Выставка видеоигр
Лига Геймеров
Серия Фестиваль-выставка в Москве

VR развлечения на ИГРОПРОМ⁠⁠

1 год назад
VR развлечения на ИГРОПРОМ

Всем привет!

Продолжаем знакомить вас с участниками нашего предстоящего Фестиваля в Москве

Сегодня познакомим вас с VR активностями от участников Portal VR — это сеть парков виртуальной реальности, ведущий игрок на российском и на международном рынке в сфере виртуальной и дополненной реальности, которые уже открыли более 90 локаций в 16 странах мира.

Что вас ждёт в развлекательной зоне Portal VR?
Коллеги представят свой новый продукт, Мини-VR Арену. Это арена для погружения в виртуальную реальность с полностью свободным передвижением!

1/4

На мероприятии запланировано много интересного, часть из них:
-Турнир по VR-играм — возможность показать свои навыки и сразиться с другими участниками!
-Розыгрыш VR-шлема — шанс выиграть современный шлем для погружения в виртуальные миры.
-Сертификаты на бесплатную игру — владельцы VIP-пакетов получают сертификаты на бесплатные игровые сессии в парке виртуальной реальности.
-Розыгрыши, подарки и интересные активности для посетителей стенда.

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

Напомним, что оно запланировано 23 и 24 ноября в Москве на одной из крупнейших и популярных площадок столицы: MAIN Stage.

Проект реализуется при поддержке Президентского фонда культурных инициатив

Спасибо за внимание!

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

Показать полностью 5
[моё] Фестиваль Компьютерные игры Косплей Игры Gamedev Виртуальная реальность Длиннопост
0
5
8bitsage
8bitsage

Meta XR Audio и MetaSounds в Unreal Engine 5 & VR⁠⁠

1 год назад

Введение

Статья будет посвящена материалу по работе со звуком, плагинах и их установке. Статья может редактироваться в будущем, чтобы всё полезное было в одном месте.

Введение в Attenuation & Spatialization Unreal Engine 5 (Затухающий и Пространственный звук)

https://rutube.ru/plst/457131/

Установка Meta XR Audio SDK

Плагин Oculus Spatializer (Oculus Audio) Был заменен на Meta XR Audio. Об этом говорится в документации Meta: https://developer.oculus.com/documentation/unreal/audio-osp-ue/

Обзор Meta XR Audio SDK для Unreal:

https://developer.oculus.com/documentation/unreal/meta-xr-au...

https://developer.oculus.com/documentation/unreal/meta-xr-au...

Скачать плагин Meta XR Audio для Unreal Engine 5:

https://developer.oculus.com/downloads/package/meta-xr-audio...

Инструкция Перепаковки Плагина Meta XR Audio для другой версии Unreal Engine (не требуется если у вас Unreal Engine 5.4):

https://developer.oculus.com/documentation/unreal/meta-xr-au...

В моем случае команда перепаковки в cmd выглядела так:

D:\Unreal_Engine\UE_5.3\Engine\Build\BatchFiles\RunUAT.bat BuildPlugin -plugin="C:\Users\userPC\Downloads\MetaXRAudio\MetaXRAudio.uplugin" -package="C:\temp\MetaXRAudio"

Спустя 2 минуты плагин упаковался

Спустя 2 минуты плагин упаковался

Далее необходимо скопировать metaxraudio64.dll из загруженного плагина v67 в скомпилированный плагин под нашу версию Unreal Engine (в моем случае 5.3.2). Иначе Unreal не сможет запуститься.

Устранение предупреждения: LogAudio: Warning: Failed to load MetaXR Reverb Submix from object path '' in MetaXRSettings. Creating 'MetaXR Reverb Submix' as stub.

После установки плагина, это поле имеет пустое значение, задайте Submix из списка.

Plugins>Meta XR Audio > задайте submix

Доп. информация от Meta по VR аудио:

«Введение в VR-аудио»

Локализация и слуховая система человека

Описывает, как люди локализуют звук.

3D-пространственное аудио

Описывает пространственные и передаточные функции, связанные с головой.

Устройства для прослушивания

Описываются различные устройства для прослушивания, их преимущества и недостатки.

Моделирование окружающей среды

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

Звуковой дизайн для пространственного оформления

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

Микширование сцен для виртуальной реальности

Как и в случае со звуковым дизайном, микширование сцены для виртуальной реальности — это не только наука, но и искусство, и следующие рекомендации могут содержать некоторые оговорки.

Глоссарий VR-аудио

Определения технических терминов. Термины VR-аудио.

Meta предоставляет бесплатные, простые в использовании плагины для пространственных преобразований для движков и промежуточного ПО, включая Unity, Unreal, FMOD и Wwise. Наши функции пространственных преобразований поддерживают разработку как для PCVR, так и для Quest, Quest 2, Quest Pro и Quest 3.

Видеоматериал по VR-Audio:

Введение Брайана Хука в VR-аудио на Oculus Connect 2014.

Выступление Тома Смурдона и Брайана Хука на GDC 2015 о VR Audio.

Oculus Connect 2 - 3D Audio Designing Sounds for VR.

Oculus Connect 4 - Прорыв в технологиях пространственного аудио.

Oculus Connect 5 - Пространственное аудио для Oculus Quest и не только.

MetaSounds Unreal Engine 5

В Unreal Engine 5 был представлен MetaSounds - встроенный процедурный звуковой движок Unreal Engine.

Документация:

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

Учебный материал от Epic Games:

https://dev.epicgames.com/community/learning/recommended-com...

Учебный материал от Brain Michael Fuller по MetaSounds:

https://rutube.ru/plst/457130/

Сборник туториалов по звуку Unreal Engine 5:

https://rutube.ru/plst/457751/

Аудио паки от Oculus/Meta:

https://developer.oculus.com/downloads/package/oculus-audio-...

https://developer.oculus.com/downloads/package/oculus-ambiso...

Телеграм канал - Unreal Engine VR

Rutube канал Unreal Engine & VR

Показать полностью 3
[моё] Unreal Engine Виртуальная реальность Разработка Gamedev Oculus Quest Oculus Rift Инди Длиннопост
0
9
8bitsage
8bitsage

Unreal Engine 5 и VR с нуля. Часть 7. Разрабатываем Дартс. Настраиваем Интерфейс настроек. Решаем проблемы⁠⁠

1 год назад

Введение

Продолжаем разрабатывать игру Дартс по курсу "Oculus VR Production for Unreal Engine". В этой статье я расскажу, какие проблемы я встретил при прохождении курса, и как я решал эти проблемы. В данный момент, я прошел 33 урока из плейлиста. Так же я продолжаю проходить <a курс по блюпринтам, чтобы лучше понимать видеоуроки.

Немного обучающего материала о Dynamic Material Instances.

В уроке 25 мы применяем Dynamic Material Instance к BP_Dartboard. Вытащил видео чтобы можно было посмотреть через яндекс перевод.

Проблема 1. Видео урок 25. Нода "vector2d-vector2d" Отсутствует в Unreal Engine 5

Для получения этой ноды, мы берем просто Subtract

И преобразуем его в вектор.

Проблема 2. Видеоурок 25. Ошибка компиляции при запуске игры.

При тестовом запуске для проверки логики определения квадранта игра не запустится и будет писать ошибки компиляции Widget Blueprint. Я удалил всю логику, которая вызывает ошибки, так как в следующих видео мы будем строить эту логику сами. Некоторая логика просто перенеслась при миграции ассетов для урока.

Проблема 3. Smoothly Move HUD не появляется перед персонажем.

Во время тестирования, у меня HUD-панель просто появлялась на экране и не скейлилась.

В уроке 31 мы создаем Ивент Smoothly Move HUD (для движения HUD за перед персонажем). Необходимо подключить ивент движения HUD перед персонажем к Event Tick.

Проблема 4. Добавление логики работы с Enhanced Input

Урок по Дартсу предназначен для Unreal Engine 4, в нем нет Enhanced Input. Поэтому пришлось немного добавить логики с системой управления. Наверно, можно было впилиться в код VR шаблона по умолчанию, изменив вызов собственного BP_Menu.

Я выбрал путь следования по уроку немного адаптируя логику Blueprint под Unreal Engine 5.1+

Объяснение логики на скриншоте:

1. При вызове меню мы добавляем Input Mapping awZXj7egeZA (IMC_Menu).

2. После закрытия меню удаляем IMC_Menu, но сразу возвращаем систему управления передвижением (IMC_SmoothLocomotionDarts) и Систему управления руками (IMC_Hands).

Проблема 5. Видеоурок 14. Не работает макрос на ограничение вида передвижения

В 14м уроке мы реализовывали макрос, для выбора вида передвижения игрока (телепорт/обычное передвижение)

Для шаблона Unreal Engine 5 достаточно простого переключения между видами передвижения.

Проблема 6. После переноса Ассетов интерфейса из стора Epic Games. Некоторые переменные стали приватными.

В уроке 33 мы назначаем функционал на кнопки, но видимо у меня при переносе переменная Button стала приватной. Верните её в публичную.

Заключение

После завершения работы по Дартс я планирую перейти на поиск материала по настройке окружения для VR и начать изучение С++. На одних блюпринтах далеко не уедешь.

Телеграм канал Unreal Engine VR

Показать полностью 11 2
[моё] Разработка Gamedev Виртуальная реальность Oculus Quest Oculus Quest 3 Unreal Engine 5 Unreal Engine Видео YouTube Длиннопост
0
4
8bitsage
8bitsage

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component⁠⁠

1 год назад

Введение

Продолжаем разрабатывать игру Дартс по курсу "Oculus VR Production for Unreal Engine". В этой статье я расскажу, какие проблемы я встретил при прохождении курса, и как я решал эти проблемы. В данный момент, я прошел 24 урока из плейлиста.

1 Проблема. Исправляем яркий свет на уровне

После импорта ассетов и уровня, на карте был замечен слишком яркий свет.

Решение проблемы нашлось на форуме:

https://forums.unrealengine.com/t/how-can-i-fix-my-scene-lig...

Далее я решил найти более подробную информацию о Post Process Volume. Документация:

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

Несколько видео на эту тему, которые мне помогли углубиться в свойства и функции Post Process Volume:

Ссылка на оригинальное видео - Unreal Engine 5 Beginner Tutorial - UE5 Starter Course!:

и еще одно видео:

Для своей сцены, я почти все эффекты выключил.

2 Проблема. Разбираемся с системой захвата предметов (UE5). Дротик не крепился к socket руки. (Решено)

В Unreal Engine 5 используется grab component, который мы должны применять к предметам, с которыми хотим взаимодействовать.

В видеоуроке 22, нашего плейлиста, мы настраиваем взаимодействие с дротиком. Как я понял, в UE4 прописывали логику захвата к каждому bp_actor отдельно. Но в UE5 мы применяем ко всему grab component из VR шаблона.

Разобраться с применением grab component мне помогли следующее видео:

В конечном итоге, при такой схеме блюпринта, дротик стал нормально браться/бросаться как в видеоуроке:

Если вы как я, используете плавное передвижение из статьи 4. То переключите коллизию всех компонентов BP_Dart на VRInteractable (в том числе и для сферы коллизий).

Для того чтобы дротик крепился к socket руки, необходимо убрать галочку на значении Weld Simulated Bodies

3 Проблема. Нет готовой анимации захвата дротика. Пересоздаем анимацию захвата дротика. (решено)

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

Сделал дубликат одной из анимации. Выправил кости руки как мне нравится и нажал "Key". Анимация сохранилась как новая. Так я сделал аналоги анимации из урока.

4 Проблема. Не менялась анимация на взятый дротик по булевому значению Holding Dart Anim. (Решено)

В Unreal Engine 4 нет grab component, и как я понял, логика захвата рукой любого Actor осуществляется в персонаже.

Мне нужно было понять, как определить момент захвата и как передать изменение анимации руки именно при захвате дротика, используя в базовый VR шаблон Unreal Engine 5. Конкретного решения проблемы в разных видео я не нашел. Люди в основном используют State Machines для работы с анимацией в различных ситуациях в игре, но тогда бы мне пришлось полностью переделать логику анимации в игре.

Я планирую в будущем изучить работу State Machines, но не для взаимодействия с одним дротиком.

Я добавил еще одно значение для моего BP_Dart в GrabType Enumeration:

Добавил логику в функцию "GetGrabComponentNearMotionController" в зависимости от значения type Grab Component присвоенному для моего Actor, а так же передал в переменную Holding Dart Anim Character (Храним в переменной событие с измененной анимацией, если персонаж держит правой руке actor с GrabType = Dart)

Теперь, мой VR Character меняет анимацию в зависимости от того в руках BP_Dart или нет:

Так же добавил изменение анимации в зависимости от местоположения дротика от камеры(головы) персонажа(симуляция размаха). Правда в уроке по Unreal Engine 4 это всё происходит в одном месте. Тут пришлось адаптировать под VR шаблон Unreal Engine 5:

Проблема 5. Ошибка "GrabComponent->SetSimulatingParent->Cast To PrimitiveComponent FAILED" при захвате дротика (Не решено)

При захвате дротика я каждый раз получаю ошибку "GrabComponent->SetSimulatingParent->Cast To PrimitiveComponent FAILED".

Я нашел место где это происходит:

Вероятно, это из-за того, что в моём BP_Dart присутствует DefaultSceneRoot component(видимо он не является примитивным компонентом), но это не точно.

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

Проблема 6. При переносе всех компонентов персонажа (VRPawnDarts) в родительского Персонажа (BPP_Pawn_Darts) и переназначении их в логике. При старте сцены создаются оба персонажа на сцене. (Не решено)

В уроке 24 мы переносим все компоненты к родительского персонажа. Я все это сделал по аналогии, но при запуске сцены у меня создаются оба персонажа.

Есть пара идей как это пофиксить, допишу в эту статью если будет решение проблемы.

Заключение

Прохождение курса по созданию мини игры Darts затянулось по причине того, что это не просто копипаст кода, а еще и адаптация под другую версию движка + оказалось не так просто для новичка.

Это позволяет глубже изучить работу с Unreal Engine 5, а так же сподвигло на прохождение еще одного курса(параллельно), по изучению основ работы с Blueprint. (да, он для Unreal Engine 4, но основные функции одинаковые)

Курс по Blueprint [RUS]

https://www.youtube.com/playlist?list=PLatwj2blGTZ7Z_Bc40P7E...

Телеграм канал Unreal Engine VR

https://t.me/unrealengine_vr

UPD:

#Проблема 6. Решено

# Update 23.07.2024

По моей ошибке, в Настройках класса GameMode_Darts в Default Pawn Class должен стоять Character, а у меня был указан BPP_Pawn_Darts. Поэтому он создавал экземпляр родительского персонажа на карте.

Показать полностью 13 6
[моё] Gamedev Разработка Виртуальная реальность Гайд Unreal Engine Видео YouTube Длиннопост
0
8
8bitsage
8bitsage

Unreal Engine 5 и VR с нуля. Часть 5. Начинаем разработку игры Дартс. Получаем права на использование данных Meta. Решаем возникшие проблемы⁠⁠

1 год назад

Введение

Сегодня расскажу про курс создания игры "Дартс", который начинал еще 2 недели назад, но пришлось откатиться на более базовые курсы. Курс называется "Oculus VR Production for Unreal Engine", он был разработан Oculus и Epic Games. По какой-то причине он был удален с обучающих материалов Unreal Engine.

Есть темы, что люди ищут этот курс, но получают только альтернативу, которая не даст возможность создать полноценную мини-игру:

https://forums.unrealengine.com/t/missing-course-oculus-vr-p...

Приложу обсуждения по проблемам по прохождению этого курса:

https://forums.unrealengine.com/t/support-thread-oculus-vr-p...

Курс рассчитан для Unreal Engine 4.24-4.25, по этому, мне пришлось сначала изучить различие систем управления персонажем между UE4 и UE5, чтобы адаптировать этот курс под Unreal Engine 5.3.2. Если вы будете учиться на Unreal Engine 4, то у вас проблем не возникнет.

Что лучше сделать заранее?

Для начала получите права разработчика, например, по инструкции в этом видео от автора ВИРТУАЛЬНЫЙ СЛОН:

Начинаем прохождение курса "Oculus VR Production for Unreal Engine" или создаем свой Дартс

Курс был перезалит автором RGB на youtube, надеюсь курс не удалят:
https://youtube.com/playlist?list=PLCWdyrWMXRVzZScOJ2uvDaQ-oteqQxJF7&si=TxoNMypj286HBIif

Исходные файлы ассетов для курса:

https://www.unrealengine.com/marketplace/en-US/product/oculu...

Готовая игра Дартс из курса:

https://www.unrealengine.com/marketplace/en-US/product/oculu...

В данный момент (29.06.2024), я прошел 15 видеоуроков из этого плейлиста. Ниже я опишу проблемы, с которыми я столкнулся, некоторые из них я смог решить. Мне пришлось так же мигрировать весь проект в Unreal Engine 5:

  • Скачал Unreal Engine 4.25.4

  • Запустил проект https://www.unrealengine.com/marketplace/en-US/product/oculus-vr-assets-only в UE4

  • Выделил все файлы проекта

  • Нажал мигрировать в папку Contents моего основного проекта Дартс Unreal Engine 5

  • Открыл свой проект Дартс Unreal Engine 5

Во время открытия проекта UE4 выпадает несколько ошибок, но если на все нажать "ок" то проект всё равно запустится.

1 проблема. Oculus Entitlment Check возвращает failed. (5-е видео из плейлиста) (решено)

Для проверки прав на приложение мы прописываем в конфиге (\путь к вашему проекту\Config\DefaultEngile.ini) наш OculusAppId и RiftAppId

Берем AppId из дашборда разработчика>настройки приложения>API:

[OnlineSubsystem]

DefaultPlatformService=Oculus

[OnlineSubsystemOculus]

bEnabled=true

OculusAppId="12***********67"

RiftAppId="12************67"

Выдайте права вашим приложениям!

Когда вы создаете свои приложения для AppLab и OculusRift. Вам необходимо:

  • Верифицировать себя как админа;

  • Получить права на UserId и UserProfile в приложении.

Получаем права админа

Переходим в дашборд разработчика oculus. https://developer.oculus.com/manage/

Нажимаем "Начать подтверждение"

Я подтверждал с помощью загран. паспорта РФ и вводил свои настоящие данные. Страну указывал "Россия".

После заполнения анкеты админа, вы увидите подобное окно:

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

Получаем права на UserId и UserProfile в приложении.

Вы уже создали два приложения Дартс (AppLab и OculusRift).

В каждом, необходимо зайти в My Apps>Edit Details(приложения)>Requirements>проверка использования данных

В каждом приложении необходимо запросить UserId и UserProfile. Обоснование запроса для этой информации можете списать с моего скриншота. Далее вам необходимо заполнить анкету:

  • резидент какой вы страны

  • кто будет обрабатывать эти данные (я ввел свою ФИО)

  • при каких условиях вы можете передать эти данные (вводим "только на законных основаниях")

Буквально за несколько часов вам одобрят ваш запрос.

Именно после этих шагов, я смог успешно пройти проверку приложения с помощью Verify Entitlement (5-е видео 4:10):

Документация, которая мне помогла решить проверку прав (документация oculus не открывается без VPN):

https://developer.oculus.com/documentation/unreal/unreal-quick-start-guide-quest#entitlement

https://communityforums.atmeta.com/t5/Platform-SDK-Developme...

https://communityforums.atmeta.com/t5/Quest-Development/Help...

https://communityforums.atmeta.com/t5/Unreal-VR-Development/...

2 проблема. Max Draw Distance для PointLight не работает. (9-е видео из плейлиста 13:20) (решено)

Я выставляю Max Draw Distance в разные значения в Unreal Engine 5.3.2 делаю ребилд света и при отдалении от лампочки, она не отключается.

По факту, решилось переоткрытием проекта, не знаю что за чудеса случились.

3 проблема. Precomputed Visibility Volume не работает в UE5.3.2 (решено)

В 9-м видео, мы включаем Precomputed Visibility Volume, но в версии UE5.3.2 он не запускается.

Я добавил этот код в файл UE_5.3\Engine\Source\Runtime\Renderer\Private\SceneVisibility.cpp

```

if (ViewState){ SCOPE_CYCLE_COUNTER(STAT_DecompressPrecomputedOcclusion);View.PrecomputedVisibilityData = ViewState->GetPrecomputedVisibilityData(View, &Scene);}else{View.PrecomputedVisibilityData = nullptr;}

```

Источник решения проблемы на форуме unreal engine:

https://forums.unrealengine.com/t/precomputed-visibility-vol...

Далее мы вводим в cmd:

r.VisualizeOccludedPrimitives 1

И получаем Предварительно рассчитанный объем видимости:

4 проблема. Появление нескольких персонажей при запуске VR сцены + не работает ввод действий в меню (решено)

Как я описывал в прошлой части статьи, Система управления была изменена на Character, чтобы я использовал своё собственное управление в Unreal Engine 5.

В 8-м уроке видео, мы настраиваем BP_PlayerStart, а так же, настраиваем свой GameMode_Darts, где мы определяем какой игрок находится на карте и определяем ему порядковый номер.

У меня в настройках был указан персонаж VRPawnDarts, а должен быть указан родительский персонаж BPP_Pawn_Darts.

Так расположен мой BP_PlayerStart на карте

Из-за этого у меня появлялось два персонажа

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

Перестало работать

Перестало работать

После того как я прописал Default Pawn Class - "BPP_Pawn_Darts" в настройки Maps & Modes, проблемы решились.

Должно так работать

Должно так работать

5 проблема. No Guardian found. Check Oculus App (не решено)

В 15-м видео (4:17), мы подключаем функцию Is Guardian Configured.

Но после всех проверок, у меня функция возвращает false.

Я не использую MetaXR Simulator. Я использую Project Settings>MetaXR>XR API > Epic Native OpenXR with Oculus with Oculus vendor extension.

Описание функции:

https://docs.unrealengine.com/4.26/en-US/BlueprintAPI/Oculus...

Как оно должно работать описано тут:

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

Я пробовал:

  • Проверял запускать VR Preview стоя через Oculus Link или через usb кабель.

Обращения других разработчиков об этой проблеме:

https://communityforums.atmeta.com/t5/Quest-Development/UE4-...

https://forums.unrealengine.com/t/how-to-get-playarea-points...

Заключение

Если у меня появятся дополнения по описанному в этой статье, то я допишу их с пометкой Update (date).

Следующая статья будет посвящена продолжению прохождения этого курса. До новых встреч!

Показать полностью 19 2
Гайд Разработка Виртуальная реальность Gamedev Unreal Engine Unreal Engine 5 Oculus Quest Oculus Quest 3 Видео YouTube Яндекс Дзен (ссылка) YouTube (ссылка) Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии