THREE.js 正交相机纵横比必须与视口纵横比一致吗?
THREE.js Orthographic camera aspect must match viewport aspect?
请有人确认以下“假定约束”是否正确?...
为了将 three.js 正交相机渲染到视口(并避免失真),相机的平截头体左、右、下和顶平面必须定义正面平截头体面 (ocWidth, ocHeight),其方面ratio(width/height) 和viewport的纵横比一样吗?
在下面的示例中,首先设置相机宽度和高度,然后视口高度受所需视口宽度和给定相机纵横比的约束。 (另一种方法是先设置视口宽度和高度,然后将相机高度限制为所需的相机宽度和给定的视口纵横比。)
//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 的宽度和高度与正交相机无关(例外情况是有效视口填满整个渲染器,如果没有显式定义视口,这是默认设置. 在这种情况下,渲染器纵横比必须与相机纵横比匹配)。
我学过
-
-
this SO question
这些都有帮助,但没有明确确认假设的约束。
如果您使用正交相机渲染场景,并且希望防止渲染场景失真,则需要设置视口纵横比以匹配相机视锥体的纵横比。
请有人确认以下“假定约束”是否正确?...
为了将 three.js 正交相机渲染到视口(并避免失真),相机的平截头体左、右、下和顶平面必须定义正面平截头体面 (ocWidth, ocHeight),其方面ratio(width/height) 和viewport的纵横比一样吗?
在下面的示例中,首先设置相机宽度和高度,然后视口高度受所需视口宽度和给定相机纵横比的约束。 (另一种方法是先设置视口宽度和高度,然后将相机高度限制为所需的相机宽度和给定的视口纵横比。)
//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 的宽度和高度与正交相机无关(例外情况是有效视口填满整个渲染器,如果没有显式定义视口,这是默认设置. 在这种情况下,渲染器纵横比必须与相机纵横比匹配)。
我学过
this SO question
这些都有帮助,但没有明确确认假设的约束。
如果您使用正交相机渲染场景,并且希望防止渲染场景失真,则需要设置视口纵横比以匹配相机视锥体的纵横比。