Skip to content

three.js 中几何体自带的顶点结构都是基于,父类 BufferGeometry 的

three.js 提供的矩形平面 PlaneGeometry、长方体 BoxGeometry、球体 SphereGeometry 等各种形状的几何体,他们都有一个共同的父类 BufferGeometry,这意味着这些几何体有哪些属性或方法,你可以查询文档关于 BufferGeometry 的介绍.

查看几何体顶点位置和索引数据

可以用顶点索引 index 数据构建几何体,也可以不用,threejs 默认的大部分几何体都有三角形的顶点索引数据,具体可以通过浏览器控制台打印几何体数据查看.

js
const geometry = new THREE.PlaneGeometry(100, 50); // 矩形平面几何体
// const geometry = new THREE.BoxGeometry(50,50,50); // 长方体

console.log('几何体', geometry);
console.log('顶点位置数据', geometry.attributes.position);
console.log('顶点索引数据', geometry.index);

材质属性.wireframe

线条模式渲染, 可以用来查看几何体三角形结构

js
const material = new THREE.MeshLambertMaterial({
  color: 0x00ffff,
  wireframe: true, //线条模式渲染mesh对应的三角形数据
});

几何体细分数

Three.js 很多几何体都提供了细分数相关的参数,这里以矩形平面几何体 PlaneGeometry 为例介绍.

矩形平面几何体至少需要两个三角形拼接而成.

js
//矩形几何体PlaneGeometry的参数3,4表示细分数,默认是1,1
const geometry = new THREE.PlaneGeometry(100, 50, 1, 1);

把一个矩形分为 2 份,每个矩形 2 个三角形,总共就是 4 个三角形

js
const geometry = new THREE.PlaneGeometry(100, 50, 2, 1);

把一个矩形分为 4 份,每个矩形 2 个三角形,总共就是 8 个三角形

js
const geometry = new THREE.PlaneGeometry(100, 50, 2, 2);

球体 SphereGeometry 细分数

球体 SphereGeometry 参数 2、3 分别代表宽、高度两个方向上的细分数,默认 32,16,具体多少以你所用版本为准.

js
const geometry = new THREE.SphereGeometry(50, 32, 16);

如果球体细分数比较低,表面就不会那么光滑

js
const geometry = new THREE.SphereGeometry(15, 8, 8);

三角形数量与性能

对于一个曲面而言,细分数越大,表面越光滑,但是三角形和顶点数量却越多.

几何体三角形数量或者说顶点数量直接影响 Three.js 的渲染性能,在不影响渲染效果的情况下,一般尽量越少越好

上次更新于: