2014-10-31 1 views
1

У меня есть большая 2D-плоскость кругов, которую я увеличивал и увеличивал (и хорошо отслеживал TrackballControls), используя положение Z камеры (PerspectiveCamera).Должен ли я использовать поле зрения или положение камеры z для увеличения/уменьшения масштаба?

Недавно я добавил camera.fov в свои элементы управления DAT GUI, чтобы поиграть с ним, и обнаружил, что могу полностью увеличить или уменьшить масштаб сцены, используя диапазон от 0 до 180 для поля обзора.

Какой метод использовать и почему?

Отредактировано:

Есть несколько способов, чтобы сделать объект, кажется, ближе и дальше от камеры:

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

Чтобы иметь возможность плавно прокручивать, используя колесико мыши, в и из сцены, содержащей большие геометрии (миллионы вершин), есть причина, по которой я не должен или должен использовать один из методы выше других?

+0

Вы также можете использовать 'camera.zoom (2); camera.updateProjectionMatrix(); 'Ваш вопрос, к сожалению, основан на мнениях. – WestLangley

+0

Изменение масштаба изображения, похоже, изменяет fov - https://github.com/mrdoob/three.js/blob/master/src/cameras/PerspectiveCamera.js#L95 – dps27a

+0

Все дороги указывают на изменение значения fov, но это не так. Не играйте хорошо с TrackballControls. После того, как вы увеличили масштаб достаточно далеко, а затем попытайтесь передвигаться, движения не учитывают, насколько вы близки, и поэтому панорамирование действует как ваш гораздо дальше. – dps27a

ответ

1

Ну, если вы измените положение камер, вы вообще не увеличиваете масштаб, вы просто перемещаете его ближе или дальше.

Используя переменную Field of View, вы увеличиваете масштаб изображения, но это обычно связано с искажением, если вы достигаете крайних значений.

Так что это зависит от того, что вам нужно для вашего приложения. Если искажение в порядке, и вам действительно нужно ощущение «масштабирования», вы должны перейти к переменной FoV камеры. Если вам нужно избегать искажений и хотите увеличить масштаб, лучше двигаться по «векторному вектору камеры». Затем вы можете решить, перемещаете ли вы цели камеры, когда вы «увеличиваете», или если вы замедляете движение камеры, если оно приближается к цели, точка фокусировки a.k.a. Просто используйте то, что подходит для вашего случая использования.

Может быть, некоторые интересные вещи:

http://blog.tartiflop.com/2008/08/understanding-zoom-focus-and-field-of-view-in-papervision3d/

+0

На самом деле ваши первые два утверждения ошибочны. Если вы перемещаете положение камеры, вы фактически увеличиваете/уменьшаете масштаб. И если вы измените поле обзора камеры, вы не увеличиваете масштаб, а изменяете перспективную проекцию. Подумайте об этом как о стационаре и о том, чтобы использовать различные типы линз. Вот почему у вас есть искажения. – gaitat

+0

Можете ли вы объяснить, как добиться масштабирования с помощью камеры? – dps27a

+0

Сложная часть добавляет концепцию в DAT.GUI, так что все это имеет смысл. Управление 3D-вектором с помощью двумерных элементов управления не очень интуитивно. Также я бы использовал положение камеры для масштабирования, а не для просмотра. Играйте с вектором lookat здесь: http://jsfiddle.net/VsWb9/991/. Это не для масштабирования. – gaitat

1

Есть два способа увеличения/уменьшения масштаба. Либо вы перемещаете камеру ближе/ближе к объекту, либо перемещаете объект ближе/дальше к камере. Какой из них вы выбрали, зависит только от того, что еще вы хотите сделать. Поэтому, если вы находитесь в городе, и хотите приблизиться к машине, хорошо, вы не собираетесь перемещать город. Но если вы изучаете вещи (разные модели), возможно, лучше переместить камеру. (Может быть, не очень хороший пример).

+0

Да, я не собираюсь перемещать свой мир только для увеличения. Вот почему нам разрешено перемещать камеру, которую я себе представляю. Я тоже не хочу искажать. – dps27a

+2

Кроме того, ваш ответ ничего не помогает, чтобы помочь dps27a, потому что он хочет знать, какой метод он должен использовать. И фактически перевод всех объектов вместо камеры не является решением, говорящим в терминах three.js. Так зачем вообще предлагать это. Вы либо перемещаете камеру, либо используете поле зрения, в зависимости от того, чего вы хотите достичь. – GuyGood

0
  • перемещения положения камеры = лучший вариант, так как он более совместим с взаимодействием
  • изменения FOV свойства = лучший вариант камеры, если вы хотите «зум» в истинном смысле этого слова, хотя Безразлично» т играть хорошо с TrackballControls
  • изменяющимися свойство масштабирования камеры = на самом деле влияет на значение FOV

 Смежные вопросы

  • Нет связанных вопросов^_^