【threejs】每天一个小案例讲解:常见几何体

发布于:2025-06-12 ⋅ 阅读:(61) ⋅ 点赞:(0)

 代码仓

GitHub - TiffanyHoo/three_practices: Learning three.js together!

可自行clone,无需安装依赖,直接liver-server运行/直接打开chapter01中的html文件

运行效果图

知识要点

在Three.js中,常用几何体可分为基础形状、参数化几何体和特殊类型:

一、基础几何体(Primitive Geometries)

1. 立方体(BoxGeometry)

• 特点:六面体,可定义长、宽、高及分段数。

• 应用:搭建建筑、箱子等基础模型。

• 示例:new THREE.BoxGeometry(1, 1, 1)(1x1x1的立方体)。

2. 球体(SphereGeometry)

• 特点:完整球体或半球,通过phiStart/phiLength控制弧度。

• 应用:地球、星球、球类模型。

• 示例:new THREE.SphereGeometry(5, 32, 32)(半径5,经纬分段各32)。

3. 圆柱体(CylinderGeometry)

• 特点:可定义上下底面半径、高度及分段,支持开口(如管道)。

• 应用:柱子、管道、笔筒等。

• 示例:new THREE.CylinderGeometry(1, 1, 5, 32)(上下半径1,高5,圆周分段32)。

二、参数化几何体(Parametric Geometries)

1. 平面(PlaneGeometry)

• 特点:二维平面,可定义宽高及分段,常用于地面、墙面或纹理贴图载体。

• 应用:地面、UI面板、水面(配合材质动画)。

• 示例:new THREE.PlaneGeometry(10, 10, 1, 1)(10x10平面,无分段)。

2. 圆环(TorusGeometry)

• 特点:环形几何体,由两个半径(环半径和管道半径)控制形状。

• 应用:手环、轮胎、环形装饰。

• 示例:new THREE.TorusGeometry(3, 1, 16, 32)(环半径3,管道半径1,分段数16和32)。

3. 圆锥(ConeGeometry)

• 特点:底面为圆形,顶部汇聚为点,可定义高度和底面半径。

• 应用:冰淇淋、金字塔、锥形物体。

• 示例:new THREE.ConeGeometry(2, 5, 32)(底面半径2,高5,圆周分段32)。

三、特殊几何体(Special Geometries)

1. 多面体(IcosahedronGeometry)

• 特点:正多面体(如二十面体),通过radius和detail(细分层级)控制精度。

• 应用:低多边形风格模型、抽象艺术造型。

2. 文本几何体(TextGeometry)

• 依赖:需引入THREE.TextGeometry和字体文件(如JSON格式字体)。

• 应用:3D文字标题、UI文字特效。

• 示例:
const textGeometry = new THREE.TextGeometry('Hello', {
  font: 'Arial', size: 1, height: 0.1, curveSegments: 12
});

3. 挤出几何体(ExtrudeGeometry)

• 特点:沿二维路径(如线段、曲线)挤出三维形状,需配合Shape对象使用。

• 应用:复杂轮廓的三维模型(如LOGO、雕花)。

核心运行代码

// create a cylinder
var cylinderGeometry = new THREE.CylinderGeometry(1, 1, 5, 32); // 圆柱体(CylinderGeometry)
var cylinderMaterial = new THREE.MeshLambertMaterial({color: 0xffff00});
var cylinder = new THREE.Mesh(cylinderGeometry, cylinderMaterial);

// position the cylinder
cylinder.position.x = 10;
cylinder.position.y = 0;
cylinder.position.z = 0;

// add the cylinder to the scene
scene.add(cylinder);

// ……可根据需求调整几何体……

参考官网:three.js docs