Пожалуйста, может ли кто-нибудь подтвердить правильность следующего предполагаемого ограничения? ...
Для рендеринга ортогональной камеры three.js в область просмотра (и во избежание искажения) левая, правая, нижняя и верхняя плоскости камеры должны определять фронтальную усеченную грань (ocWidth, ocHeight), соотношение сторон которой (ширина / высота) равно такое же, как соотношение сторон области просмотра?
В следующем примере сначала устанавливаются ширина и высота камеры, а затем высота области просмотра ограничивается желаемой шириной области просмотра и заданным соотношением сторон камеры. (Альтернативный подход - сначала установить ширину и высоту области просмотра, а затем ограничить высоту камеры желаемой шириной камеры и заданным соотношением сторон области просмотра.)
//Orthographic Camera
ocWidth = 99000; //... World Units
ocHeight = 33000; //... World Units
var myCamera = new THREE.OrthographicCamera(
ocWidth / - 2, ocWidth / 2,
ocHeight / 2, ocHeight / - 2,
NEAR = 1, FAR = 1000 );
oc_aspect_ratio = ocWidth / ocHeight;
//Viewport
vp_aspect_ratio = oc_aspect_ratio;
vpXwidth = 800; //... pixels
vpYheight = vpXwidth /vp_aspect_ratio; //... pixels, to ensure no distortion
vpXmin = -vpXwidth /2; vpXmax = vpXwidth /2; //... pixels
vpYmin = -vpYheight /2; vpYmax = vpYheight /2; //... pixels
myRenderer.setViewport( vpXmin, vpYmin, vpXwidth, vpYheight );
Таким образом (в общем случае) ширина и высота RENDERER не имеют значения для ортогональной камеры (исключение составляют случаи, когда эффективное окно просмотра заполняет весь модуль визуализации, что является значением по умолчанию, если окно просмотра не определено явно. В этом случае соотношение сторон средства визуализации должно соответствовать соотношению сторон камеры).
я учусь
-
которые все полезны, но явно не подтверждают предполагаемое ограничение.
X_Width
пикселям? Если да, то почему вы передаете пиксели конструктору камеры? Вы визуализируете сцену или полноэкранный квад? Каковы мировые единицы вашей сцены? - person WestLangley   schedule 16.03.2015