Настройка 2D вида в Three.js
Я новичок в three.js
и я пытаюсь установить, что составляет 2D-визуализацию (для ассортимента многослойных спрайтов) с использованием этих 3D-инструментов. Я хотел бы получить некоторые рекомендации по PerspectiveCamera()
аргументы и camera.position.set()
аргументы. У меня уже есть толчок в правильном направлении от этого ответа на связанный вопрос, который сказал, чтобы установить z
координата равна 0
в camera.position.set(x,y,z)
,
Ниже приведен фрагмент кода, который я модифицирую, на одном из примеров three.js для stemkoski. Части, которые вешают меня на данный момент, являются значениями для VIEW_ANGLE
, x
, а также y
, Предполагая, что я хочу иметь плоский вид камеры на плоскости размером с экран, как мне назначить эти переменные? Я пробовал диапазон значений, но по визуализации трудно сказать, что происходит. Заранее спасибо!
var SCREEN_WIDTH = window.innerWidth, SCREEN_HEIGHT = window.innerHeight;
var VIEW_ANGLE = ?, ASPECT = SCREEN_WIDTH / SCREEN_HEIGHT, NEAR = 0.1, FAR = 20000;
camera = new THREE.PerspectiveCamera( VIEW_ANGLE, ASPECT, NEAR, FAR);
scene.add(camera);
var x = ?, y = ?, z = 0;
camera.position.set(x,y,z);
camera.lookAt(scene.position);
ОБНОВЛЕНИЕ - перспектива против орфографической камеры:
Спасибо @GuyGood, я понимаю, что мне нужно сделать выбор в пользу перспективной камеры по сравнению с ортографической камерой. Теперь я вижу, что PerspectiveCamera()
даже в этом двухмерном контексте можно учесть такие вещи, как параллакс, тогда как OrthographicCamera()
позволит буквально визуализировать размеры (без уменьшения с расстоянием) независимо от того, на каком слое находится мой 2D-элемент. Я склонен думать, что я все еще буду использовать PerspectiveCamera()
для таких эффектов, как небольшое количество параллакса между слоями спрайтов (так что я предполагаю, что мой проект не является чисто 2D!).
Тогда кажется, что главное сделать все слои спрайтов параллельными плоскости просмотра, и это camera.position.set()
является ортогональной линией обзора к центру поля зрения. Это должно быть основным для очень многих людей здесь; это такой новый мир для меня!
Я думаю, что мне все еще трудно обернуть голову вокруг роли VIEW_ANGLE
, x
, а также y
и расстояние между камерой и дальним и ближним плоскостями наблюдения в 2D-визуализации. С орфографической камерой это довольно несущественно - вам просто нужна достаточная глубина, чтобы включить все слои, которые вы хотите, и плоскость просмотра, которая соответствует масштабу ваших спрайтов. Тем не менее, с точки зрения камеры роль глубины и поля влияет на эффект параллакса, но есть ли и другие соображения?
ОБНОВЛЕНИЕ 2 - Угол обзора и другие переменные:
Пройдя немного больше времени в поисках того, как думать об угле зрения (поле зрения или поле зрения) для камеры и аргументах x,y,z для положения камеры, я наткнулся на это полезное видео-резюме роли поля зрения в игровом дизайне (достаточно близкий аналог, чтобы ответить на мои вопросы для моей 2D визуализации). Наряду с этим учебным пособием по полю зрения для фотографов, которое я также нашел полезным (если, может быть, слегка дерзким;), эти два ресурса помогли мне понять, как выбрать поле зрения для моего проекта и что происходит с очень широким или узкие поля зрения (которые измеряются количеством градусов из 360). Наилучшие результаты представляют собой сочетание того, что ощущается человеком как естественное поле зрения, в зависимости от расстояния экрана или проекции от его лица, а также тесно связано с относительным масштабом вещей на переднем плане по сравнению с фоном в визуализация (более широкие поля зрения уменьшают фон, более узкие поля увеличивают фон - похоже, хотя и не так заметно, как эффект от орфографической камеры). Я надеюсь, что вы найдете это столь же полезным, как и я!
ОБНОВЛЕНИЕ 3 - Дальнейшее чтение
Любой, кто хочет получить более подробную информацию о спецификациях камеры в различных областях, может найти главу 13 " Принципы и практика компьютерной графики" такой же полезной, как и я, для решения моих вышеупомянутых вопросов и многого другого.
ОБНОВЛЕНИЕ 4 - Соображения по измерению z в ортогональной камере
Продолжая свой проект, я решил использовать орфографическую камеру, чтобы я мог увеличивать z-размеры моих спрайтов, чтобы избежать z-боев, но при этом они, по-видимому, постепенно не уходили вдаль. Напротив, если я хочу, чтобы спрайт уходил вдаль, я могу просто настроить его размер. Однако сегодня я наткнулся на глупую ошибку, на которую я хотел указать, чтобы спасти других от такой же проблемы. Хотя орфографическая камера не отображает отступающий размер, так как объекты находятся на более отдаленном расстоянии, позаботьтесь о том, чтобы по-прежнему оставалась задняя плоскость, за которой объекты будут отбраковываться из поля зрения. Сегодня я случайно увеличил значения z нескольких моих объектов за этой плоскостью и не мог понять, почему они не отображаются на экране. Может быть легко забыть этот фактор о координате z при работе с орфографической камерой.
1 ответ
Какова ваша цель? Если вам не нужно искажение перспективы, используйте орфографическую камеру. Также просто проверьте документацию:
Угол обзора /Fieldof View не требует пояснений, если вы не знаете, что это такое, читайте об этом.
http://www.incgamers.com/wp-content/uploads/2013/05/6a0120a85dcdae970b0120a86d9495970b.png
Относительно значений x y и z. Ну, это зависит от размера вашего самолета и расстояния до камеры. Вы можете установить положение камеры или положение самолета и оставить камеру на уровне (0,0,0). Просто представьте самолет в трехмерном пространстве. Вы можете рассчитать положение камеры в зависимости от размера вашего самолета или просто попробовать и ошибиться... Для использования орфографической камеры смотрите этот пост: