Разработка инструментов для быстрой расстановки объектов графики в сцене

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

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

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

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Разработка инструментов для быстрой расстановки объектов графики в сцене
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    683
  • 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

Разработка инструментов для быстрой расстановки объектов графики в сцене

Дизайнер уровней для VR-проекта расставляет 300 объектов вручную через стандартный Unity Transform gizmo. Каждый объект — позиция, ротация, масштаб руками. На одну комнату уходит два дня. Это не проблема художника — это проблема отсутствия инструмента. Кастомный Editor Tool снижает это время до нескольких часов, и разрабатывается один раз на весь проект.

Что входит в кастомный placement tool

В Unity Editor Tools API (доступен с 2021.2 через EditorTool базовый класс) позволяет создать инструмент с полностью кастомным Handles-интерфейсом в Scene View. Для расстановки объектов в VR-сценах типичный набор функций:

Snap to surface. Объект ставится на любую поверхность сцены через Physics.Raycast из точки курсора — пол, стены, наклонные плоскости. Без этого каждый объект нужно вручную поднимать или опускать по Y, чтобы он не провалился в пол и не висел в воздухе. Реализуется через HandleUtility.GUIPointToWorldRay() + Physics.Raycast() в OnToolGUI() с последующим Undo.RecordObject() для поддержки Ctrl+Z.

Randomized placement. Щелчок левой кнопкой выбирает случайный префаб из набора, случайную ротацию в заданном диапазоне, случайный масштаб. Для organic-looking сцен — кусты, камни, мусор — инструмент делает то, что вручную занимало бы часы.

Grid and radial distribution. Выбрал площадь — инструмент расставил объекты по сетке или окружности с заданным шагом и случайным jitter. Полезно для регулярных структур: забор, колонны, лампы.

Alignment helpers. Выравнивание выбранных объектов по X/Y/Z, распределение с равным интервалом между крайними объектами. Стандартный Unity Align Tools этого не умеет в нужном виде.

Реализация через EditorWindow и EditorTool

Для сложных инструментов с UI — EditorWindow + SceneView.duringSceneGui callback. Окно содержит список префабов (рисуется через GUILayout с превью через AssetPreview.GetAssetPreview()), настройки рандомизации, кнопки включения режимов.

Важный момент для VR-проектов: инструмент должен учитывать VR-специфику расстановки. Объекты в VR видны со всех сторон — нужна функция автоматической проверки «не пересекается ли объект с другими» через Physics.OverlapBox() или Physics.OverlapSphere(). Пересечение выделяется красным highlight через Handles.DrawWireCube() прямо в Scene View — дизайнер видит конфликты немедленно.

Serialization состояния инструмента — через EditorPrefs для простых настроек или ScriptableObject для сохранения пресетов расстановки между сессиями. Команда из 3 человек может шарить пресеты через VCS.

Кейс: инструмент расстановки NPC в VR-escape room

Для одного проекта — escape room на 8 комнат — потребовался инструмент расстановки интерактивных объектов с автоматическим назначением InteractionZone компонента. Клик по поверхности — объект ставится, к нему автоматически добавляется XRGrabInteractable, настраивается InteractionLayerMask по типу объекта (grabbable, pressable, turnable), выставляется colliderOffset под VR-захват.

Без инструмента настройка одного интерактивного объекта занимала 5–7 минут ручной работы в Inspector. С инструментом — 15 секунд. Восемь комнат с 40–60 объектами каждая: разница в неделю работы.

Тип инструмента Ориентировочные сроки разработки
Базовый snap-to-surface placer 2–3 рабочих дня
Placer с рандомизацией и пресетами 4–7 рабочих дней
Полноценный level-dressing toolkit 2–4 недели

Стоимость определяется после анализа workflow команды и требований к функциональности инструмента.