Проверка корректности масштабов объектов графики в VR

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

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Проверка корректности масштабов объектов графики в VR
Простая
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

tags: [vr-ar]

Проверка корректности масштабов объектов графики в VR

В обычных играх масштаб — условность. Меч может быть чуть длиннее или короче — никто не заметит. В VR пользователь стоит рядом с объектами. Стол высотой 90 см воспринимается мозгом как «правильный» или «слишком низкий» — потому что у человека есть опыт взаимодействия с реальными столами. Дверной проём в 1.9 м заставляет пользователя инстинктивно пригнуться. Объект размером «с кулак» в игре, который в VR выглядит размером с голову — разрушает восприятие.

Проверка масштабов в VR — это не «посмотреть и показалось нормальным». Это измерение в Unity единицах против реальных физических размеров.

Калибровка: 1 Unity Unit = 1 метр

Базовое правило Unity для VR: 1 unit = 1 метр. Это не рекомендация — это требование. Если сцена моделировалась в других единицах (сантиметры, дюймы) и была импортирована без пересчёта, все объекты окажутся либо гигантскими, либо микроскопическими в VR.

Частый источник проблем — импорт из 3D-редакторов. Blender по умолчанию работает в метрах, Autodesk Maya — в сантиметрах. FBX-файл из Maya без явного указания единиц при экспорте попадает в Unity со Scale Factor 0.01 на ModelImporter. Объект «корректно» выглядит только если где-то по цепочке трансформов компенсируется этот factor. Если нет — он либо в 100 раз меньше нужного, либо разработчик вручную ставит Scale (100, 100, 100) на GameObject, что ломает физические расчёты и NavMesh.

Правильный подход при импорте: в ModelImporterModelScale Factor выставляем значение, приводящее объект к реальным метровым размерам. Для Maya FBX это обычно 0.01. После — верифицируем: человеческий персонаж должен быть 1.7–1.85 м от ног до макушки.

Эталонные объекты и VR Height Reference

Для верификации масштабов в VR используем эталонные объекты — референсные меши с известными реальными размерами:

  • Рост среднего взрослого человека: 1.75 м (от пола до макушки)
  • Стандартный дверной проём: 2.0 м высота, 0.9 м ширина
  • Обеденный стол: 0.75 м высота
  • Стул: 0.45 м сиденье от пола
  • Автомобиль (легковой): ~1.5 м высота, 4.5 м длина
  • Кирпич: 25 × 12 × 6.5 см

Создаём сцену ScaleVerificationScene с этими эталонами и плоскостью пола. Каждый новый или изменённый ассет помещается рядом с эталонами в VR и верифицируется визуально. Это занимает 2–3 минуты на ассет и исключает класс проблем «выглядело нормально в редакторе, в VR выглядит странно».

VR Height Reference — специальная инструмент в XR Interaction Toolkit Samples: виртуальный манекен со стандартными пропорциями, который размещается в сцене для быстрой визуальной проверки масштабов интерактивных объектов.

Масштаб рук и зона досягаемости

В VR руки игрока — часть игровой геометрии. Если виртуальные руки визуально «коротки» по сравнению с рукоятками и кнопками в сцене — игрок тянется к объекту, но рука не достаёт. Дискомфорт без очевидной причины.

Зона досягаемости: рука среднего взрослого вытянута на 0.7–0.8 м от плеча. В VR XRRig.cameraFloorOffsetObject определяет высоту камеры над полом. Интерактивные объекты должны размещаться в зоне комфортной досягаемости: 0.5–1.2 м высота, не далее 0.6 м от центра тела горизонтально.

Тест: каждый интерактивный объект сцены проходит проверку на достижимость. Метод: в редакторе используем Gizmos с отрисовкой сферы радиуса 0.7 м от XRRig.centerEyeAnchor — все интерактивные объекты должны пересекаться с этой сферой хотя бы частично.

Автоматизация проверки масштабов

Для проектов с большим количеством ассетов ручная верификация нерациональна. Пишем редакторный инструмент — EditorWindow в Unity — который:

  1. Собирает все GameObject с тегом Interactable или компонентом XRBaseInteractable
  2. Проверяет их Bounds.size против заданных min/max для категории объекта (оружие: 0.15–1.5 м, мебель: 0.3–2.5 м)
  3. Выводит список объектов, выходящих за пределы нормы

Пороги задаются в ScriptableObject ScaleVerificationConfig. Это не заменяет визуальную проверку в VR, но отсеивает явные ошибки — случайный scale 0.01 или 100 на импортированном объекте.

Дополнительная проверка: ModelImporter для всех FBX в проекте — убеждаемся, что нет объектов с scaleFactor != 1 после нормализации. Это решается пост-процессором импорта (AssetPostprocessor.OnPreprocessModel), который логирует или автоматически корректирует неправильный scale factor.

Процесс верификации

Этап Содержание
Аудит настроек импорта Проверка FBX Scale Factor для всех ассетов
Верификация эталонными объектами Ключевые ассеты рядом с человеческим манекеном в VR
Автоматические тесты в редакторе Скрипт проверки Bounds.size по категориям
Тест достижимости Интерактивные объекты в зоне 0.5–1.2 м

Ориентировочные сроки: базовый аудит — 2–5 дней, полная верификация всех ассетов крупного проекта — 2–4 недели. Стоимость рассчитывается после оценки числа ассетов и сложности сцены.