Перевірка коректності масштабів об'єктів графіки у VR

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

Від імерсивних застосунків до ігрових світів і 3D-сцен

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Перевірка коректності масштабів об'єктів графіки у VR
Проста
~2-3 робочих дні
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    685
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    866
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    492
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    534

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 тижні. Вартість розраховується після оцінки числа ассетів та складності сцени.