Skip to main content

Geometry库

在我们提供的illustrator::geometry库中,提供了以下几种封装好的几何,您通过简单的接口就可以程序中生成它们,不需要像上面那样详细地定义VBO和IBO数据。最后我们通过一个简单案例,来学习怎么如何使用接口。

几何接口描述
_triangle(v0, v1, v2)三角形,需要指定三个顶点的位置坐标
_quad(v0, v1, v2, v3)四边形,需要指定四个顶点的位置坐标
_cube(min, max)立方体,需要指定最低点和最高点的位置坐标
_cylinder(radius, height, slices)圆柱体,需要指定半径、高度和分割面个数
_pipe(radius, height, slices)圆管面,需要指定半径、高度和分割面个数
_sphere(radisu, slices, stacks)球面,指定半径、和两个方向的分割面个数
_cone(radius, height, slices)圆锥面,指定半径、高度和分割面个数
_disk(radius, slices)圆平面,指定半径和分割面个数
_capsule(radius, height, slices, stacks)椭球面,指定半径和高度,以及两个方向的分割面个数
_torus(radius, tubeRadius, sides, rings)圆环面,指定圆环半径、圆截面的半径、圆截面的分割个数和环分割个数
_teapot(), _dragon(), _capsule(), _beast(), _buddha(), _bunny()这几个都是斯坦福标准模型,提供接口方便用户使用

在下面这个例子中,我们会创建一个teapot几何,还为它设置一个卡通的光影材质。

auto pixelSize = widget->pixelSize();
auto background = _simpleBackground(_ivec2(pixelSize), _clr4(0.9, 0.8, 0.7, 1.0));

auto material = _toon(_clr3(0.5, 0.6, 0.8));
// 使用geometry库中的_teapot接口,便捷构建几何体
auto geometry = _teapot();
auto primitive = _primitive(geometry, material);
auto node = _node({ primitive });
auto camera = _camera();
auto pass = _pass(node, background, camera);
auto scene = _scene({ pass });

下面是运行结果:

teapot几何