使用相机库
我们提供了相机库illustrator::camera,开发者直接使用其中的相机操作接口,避免直接与视角矩阵数学打交道。
快速操纵相机
下面介绍了您可以直接在业务层中使用的几个函数,便捷操纵相机平移、旋转和缩放。
home
home接口是用来自动调整视图矩阵和投影矩阵,使得整个场景模型在设备窗口中完全可见,并且从(1,1,1)方向观察。
// 定义了背景,其大小等于窗口的像素大小。
auto pixelSize = widget->pixelSize();
auto background = _simpleBackground(_ivec2(pixelSize),
_clr4(0.9, 0.8, 0.7, 1.0));
...
// 定义了一个相机对象
auto camera = _camera();
auto pass = _pass(node, background, camera);
auto scene = _scene({ pass });
// 定义了场景中完整模型的几何包围盒
auto boundingBox = _bbox(-38.21760177612305, 43.67150115966797, -25.4783992767334, 25.4783992767334, 0, 40.12839889526367);
// 使用home函数,自动按照几何包围盒、背景大小调整当前的相机
home(camera, *boundingBox, *background->size);
fit
fit函数可以自动调整投影矩阵,使得在当前观察场景不变的情况下,整个模型场景可见。
// 自适应窗口,以看到整个场景
fit(camera, *boundingBox);
look
look函数可以用来自动调整相机位置,使相机从某个指定的轴向去观察场景。
// 从z方向观察场景
look(camera, *boundingBox, "z");