Geometry库
在我们提供的ore.geometry库中,提供了以下几种封装好的几何,您通过简单的接口就可以程序中生成它们,不需要像上面那样详细地定义VBO和IBO数据。最后我们通过一个简单案例,来学习怎么如何使用接口。
| 几何接口 | 描述 |
|---|---|
| triangle(v0, v1, v2) | 三角形,需要指定三个顶点的位置坐标 |
| quad(v0, v1, v2, v3) | 四边形,需要指定四个顶点的位置坐标 |
| cube(min, max) | 立方体,可以指定最低点和最高点的位置坐标 |
| cylinder(slices) | 圆柱体,可以指定分割面个 数 |
| arrow(slices) | 箭头,可以指定分割面个数 |
| pipe(slices) | 圆管面,可以指定分割面个数 |
| sphere(slices, stacks, radius) | 球面,可以指定两个方向的分割面个数和半径 |
| cone(slices) | 圆锥面,可以指定分割面个数 |
| disk(slices) | 圆平面,可以指定分割面个数 |
| capsule(slices, stacks, height) | 椭球面,可以指定两个方向的分割面个数以及高度 |
| torus(radius, tubeRadius, sides, rings) | 圆环面,可以指定圆环半径、圆截面的半径、圆截面的分割个数和环分割个数 |
此外我们也提供了一些斯坦福标准模型,包括teapot、dragon、beast、buddha和bunny,并提供loadStanford接口方便用户使用。在下面这个例子中,我们会创建一个teapot几何,还为它设置一个卡通的光影材质。
import { toon } from 'ore.material';
const color = clr3(0.5, 0.6, 0.8);
const material = toon(color);
const geometry = await loadStanford('teapot');
const node: JNode = {
mesh: {
primitives: [{ geometry, material }]
}
};
下面是运行结果: