Разработка скрипта на Three.js для навигации по по помещению как в FPS играх
Разработать скрипт на Three.js, который предоставляет функционал для навигации по сцене(помещение) от первого лица и с обзором сверху. Скрипт должен загружать сцену, сохраненную в формате JSON, добавлть возможность перемещения как в играх от первого лица и режим облета.
Основной функционал
Загрузка сцены:
Отображать заставку с изображением и текстом "Нажмите, чтобы загрузить и исследовать сцену" перед началом работы.
Обеспечить отображение прогресса загрузки JSON-файла.
Имя JSON-файла задается в теле скрипта.
После загрузки сцены автоматически открывается режим от первого лица с позиции и параметров камеры "cam01".
Режимы навигации:
Режим от первого лица:
Перемещение с клавиатуры (WASD, стрелки).
Обзор и направление с помощью мыши (вращение камеры).
Камера двигается по объекту "collidermesh", с учетом высоты (1700) и рельефа коллайдера. Колайдер может быть “2х этажным”, проходить над головой т.е. raycasting должен быть с текущего уровня камеры до первого пересечения.
Камера не выходит за границы "collidermesh" и скользит вдоль границ.
Режим обзора сверху:
Камера перемещается вокруг сцены, orbit когда правая кнопка мыши зажата, вращение вокруг точки под курсором мыши. Dolly с помощью скролла мыши. Pan левой кнопкой мыши.
Объекты "roof_", "Roof_", "skybox_", "Skybox_" скрываются в этом режиме, а "wall_" (или "Wall_") отображаются.
При включении режима обзора сверху камера плавно перемещается из текущего положения в положение объекта "cam02".
При двойном клике на точку на "collidermesh" режим переключается на первый, при этом камера плавно перемещается в указанную точку (с добавлением высоты 1700).
Переключение между режимами с помощью кнопок интерфейса
Версия для мобильных устройств:
Использование TouchControls для управления, как в мобильных играх.
Автоматический переход в полноэкранный режим после загрузки.
Кнопка выхода из полноэкранного режима.
Полноэкранный режим:
Для настольных устройств кнопка перехода в полноэкранный режим.
Для мобильных устройств полноэкранный режим активируется автоматически.
Работа с объектами сцены:
"cam01": используется как начальная камера для режима от первого лица (позиция, вращение, FOV, near/far range).
"cam02": используется как конечная точка перемещения камеры при переключении на режим обзора сверху.
"collidermesh": используется для передвижения камеры, учитывая рельеф и границы.
"roof_", "Roof_", "skybox_", "Skybox_": скрываются в режиме обзора сверху, отображаются в режиме от первого лица.
"wall_" или "Wall_": скрываются в режиме от первого лица, отображаются в режиме сверху.
Требования к интерфейсу
Интерактивные элементы:
Кнопки для переключения между режимами (от первого лица / обзор сверху).
Кнопка перехода/выхода в полноэкранный режим.
Адаптация интерфейса:
Скрипт должен корректно работать как в iframe, так и в качестве единственного скрипта на странице. (когда мышь внутри окна со скриптом, перехватывать нажатия кнопок WASD и др. управление)
Планы на будущее расширение
Статистика посещения по зонам:
Отслеживание времени нахождения в пределах отдельных коллайдеров.
Динамическая загрузка сцен:
Загрузка нового JSON-файла при клике на заданную зону или при нахождении в зоне более 5 секунд.
Запись пути камеры для каждого сеанса:
Админпанель для просмотра статистики:
Визуализация времени посещения зон.
Воспроизведения движения камеры.
Отображение пути камеры на сцене линией
Приложения 1
-
717 21 2 1 Приветствую! Могу сделать, большой опыт с three.js. Радует детальное описание) Хотя всё равно есть ещё уточнения.
Единственно что не могу гарантировать большой так сказать оперативности, так как вот сейчас заболел и скорее всего в ближайшие дни не смогу работать с достаточной производительностью.
-
174 4 0 Добрый день.
Готов выполнить задание.
Можно посмотреть ваш json?
-
2718 35 0 Здравствуйте!
Можем приступить сращу после обсуждения.
Есть хороший опыт с Three.js, смогу выполнить эту задачу.
Можете в личные скинуть модель json, чтобы я мог её проверить?
Пишите, буду рад сотрудничеству с Вами!
Актуальные фриланс-проекты в категории AR и VR разработка
Удалённая настройка и запуск интерактивной стены (Unity / TouchDesigner / Kinect)О проектеСоздаётся детская интерактивная стена в помещении. Оборудование: • Проектор Acer H6518STi (короткофокусный) • Kinect for Xbox One (Kinect v2) • ПК под Windows • Проекция на стену размером примерно 3 × 2 м Необходимо удалённо настроить оборудование и программное… AR и VR разработка, Веб-программирование ∙ 2 дня 3 часа назад ∙ 5 ставок |