Skip to main content

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 }]
}
};

下面是运行结果:

teapot几何