请有人确认以下“假定的约束”是正确的吗?...
为了将三个正交相机渲染到视口(并避免失真),相机的平截头体左,右,底和顶平面必须定义正面平截头体面(ocWidth,ocHeight),其纵横比(宽度/ height)与视口的宽高比相同吗?
在下面的示例中,首先设置相机宽度和高度,然后视口高度受所需视口宽度和给定相机纵横比的约束。 (另一种方法是首先设置视口宽度和高度,然后将摄像机高度限制为所需的摄像机宽度和给定的视口宽高比。)
//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的宽度和高度与正交相机无关(例外情况是有效视口填充整个渲染器时,如果没有明确定义视口,则默认为默认值。在这种情况下,渲染器纵横比必须与相机纵横比匹配。)
我已经学习了
这些都很有用,但没有明确确认所谓的约束。
答案 0 :(得分:2)
如果使用正交相机渲染场景,并且希望防止渲染场景失真,则需要将视口宽高比设置为与相机的宽高比相匹配。