2014-02-03 3 views
4

Как я могу получить значение от каждого угла моей перспективной камеры в 3D-сцене. Я использую библиотеку Three.js.Как получить углы зрения перспективной камеры в Three.js?

Чтобы быть более точным, я должен отметить, что я хочу, чтобы получить известный со следующим знаком:

enter image description here

Какие координаты мне нужно знать:

enter image description here

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

То, что я пытаюсь достичь доступна здесь: http://www.zephyrosanemos.com/windstorm/current/live-demo.html

Как вы можете видеть, в этом примере, новый рельеф загружается с пересекающимися новое место (ранее не были доступны с сборщика мусора, когда камера покидает старое окно просмотра):

enter image description here

Теперь я хочу, чтобы показать кусочек экрана от моего three.js применения:

enter image description here

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

И его можно контролировать только нажатием кнопки клавиатуры (например, 3D-сцена находится в новом месте, нажимая на клавиатурные стрелки, а также вы можете видеть пустое пространство на карте :) это только из-за подготовки вырезать данные в БД для целей тестирования, когда приложение будет готово - оно не будет меня пустым, он легко работает с подсчетом количества записей в БД). Все ячейки удаляются, и с каждым новым движением загружаются новые данные и визуализируется новое здание.

Но я хочу, чтобы они загружались динамически с помощью движения камеры. Поэтому я хочу, чтобы он мог динамически загружаться, как в примере создания динамической местности. Я предлагаю, чтобы я подготовил большую плоскую матрицу, которая загружает данные только для 8 плоскостей (как и в примере генерации местности) и делает логику с камерой, интеркассирующей/leawing старый вид для такой динамичной работы.

Итак ... Я хочу, чтобы вы мне помочь с этой частью сложной задачи :)

+1

Это должно помочь вам: http://stackoverflow.com/questions/13350875/three-js-width-of-view/13351534#13351534 – WestLangley

ответ

0

Чтобы получить поле угла обзора просто получить значение этого поля:

Three.PerspectiveCamera.fov

С этим углом вы должны иметь воображаемый кубический конус и проверять его на столкновение. Для столкновений части относятся к этому вопросу:

How to detect collision in three.js?