当前位置: 首页 > news >正文

Three.js 快速入门教程【七】常见几何体类型

请添加图片描述

系列文章目录

Three.js 快速入门教程【一】开启你的 3D Web 开发之旅
Three.js 快速入门教程【二】透视投影相机
Three.js 快速入门教程【三】渲染器
Three.js 快速入门教程【四】三维坐标系
Three.js 快速入门教程【五】动画渲染循环
Three.js 快速入门教程【六】相机控件 OrbitControls
Three.js 快速入门教程【七】常见几何体类型


文章目录

  • 系列文章目录
  • 一、前言
  • 二、常见几何体类型
    • 1、长方体(BoxGeometry)
    • 2、球体(SphereGeometry)
    • 3、 圆柱体(CylinderGeometry)
    • 4、 圆锥(ConeGeometry)
    • 5、 矩形平面(PlaneGeometry)
    • 6、 圆平面(CircleGeometry)
    • 7、 圆环(TorusGeometry)
  • 三、几何体相关属性设置
    • 1. 位置(position)
    • 2.旋转(rotation)
    • 3. 缩放(scale)
  • 五、总结


一、前言

      在Three.js的三维世界中,几何体(Geometry)是构建所有可视对象的基础骨架。它定义了物体的形状和结构,如同建筑中的钢筋混凝土框架,理解几何体是掌握Three.js开发的关键一步。本文将带你快速了解 Three.js 中常见的几何体类型及其基本使用方法。


二、常见几何体类型

在这里插入图片描述

类型构造函数参数示例适用场景
长方体new THREE.BoxGeometry(1, 1, 2)建筑、箱子等方块物体
球体new THREE.SphereGeometry(1, 32, 16)行星、眼球等球状物体
圆柱体new THREE.CylinderGeometry(5, 5, 2, 32)柱子、管道等圆柱物体
圆锥new THREE.ConeGeometry(1, 32, 16)吊灯、穹顶等圆锥形状物体
矩形平面new THREE.PlaneGeometry(5, 5, 32, 32)地面、墙面等平面物体
圆平面new THREE.CircleGeometry(5, 32)仪表盘、齿轮等圆形物体
圆环new THREE.TorusGeometry(5, 2, 16, 32)环形物体、装饰元素

1、长方体(BoxGeometry)

长方体是最基本的几何体之一。可以通过 BoxGeometry 来创建一个长方体,它接受三个参数:长度、宽度和高度

// 创建一个场景
const scene = new THREE.Scene();
// 创建一个10x3x5长方体几何体
const geometry = new THREE.BoxGeometry(10, 3, 5);
// 创建一个材质
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
// 创建一个网格对象,将几何体和材质组合在一起
const cube = new THREE.Mesh(geometry, material);
// 将长方体添加到场景中
scene.add(cube);

在这里插入图片描述

2、球体(SphereGeometry)

SphereGeometry 用于创建球体,它接受两个主要参数:半径和分段数(分别控制经线和纬线的分段数量)。

// 创建一个半径为5球体
const geometry = new THREE.SphereGeometry(5, 32, 32);
//创建材质
const material = new THREE.MeshBasicMaterial({ color: 0x0000ff });
// 创建一个网格对象,将几何体和材质组合在一起
const mesh = new THREE.Mesh(geometry, material);
//添加到场景中
scene.add(mesh);

在这里插入图片描述

3、 圆柱体(CylinderGeometry)

CylinderGeometry 用于创建圆柱体,它接受底面半径、顶面半径、高度、径向分段数、圆周分段数等参数。

// 创建一个上下面半径为3高为10的圆柱
const geometry = new THREE.CylinderGeometry(3, 3, 10, 32);
//创建材质
const material = new THREE.MeshBasicMaterial({ color: 0xffff00 });
// 创建一个网格对象,将几何体和材质组合在一起
const mesh = new THREE.Mesh(geometry, material);
//添加到场景中
scene.add(mesh);

在这里插入图片描述

4、 圆锥(ConeGeometry)

ConeGeometry用于创建圆锥,它接受半径、高度、径向分段数等参数。

// 创建一个半径5,高度8圆锥几何体
const geometry = new THREE.ConeGeometry(5, 8, 32);
//创建材质
const material = new THREE.MeshBasicMaterial({ color: 0xfff0f0 });
// 创建一个网格对象,将几何体和材质组合在一起
const mesh = new THREE.Mesh(geometry, material);
//添加到场景中
scene.add(mesh);

在这里插入图片描述

5、 矩形平面(PlaneGeometry)

PlaneGeometry 用于创建一个矩形平面,它接受宽度和高度两个参数,还可以设置宽度分段数和高度分段数。

// 创建一个宽10高5矩形平面
const geometry = new THREE.PlaneGeometry(10, 5, 32, 32);
//创建材质
const material = new THREE.MeshBasicMaterial({ color: 0xffffff });
// 创建一个网格对象,将几何体和材质组合在一起
const mesh = new THREE.Mesh(geometry, material);
//添加到场景中
scene.add(mesh);

在这里插入图片描述

6、 圆平面(CircleGeometry)

CircleGeometry用于创建一个圆平面,它接受半径和分段数两个参数

// 创建一个半径为5的圆平面
const geometry = new THREE.CircleGeometry(5, 32);
//创建材质
const material = new THREE.MeshBasicMaterial({ color: 0xFF8E40 });
// 创建一个网格对象,将几何体和材质组合在一起
const mesh = new THREE.Mesh(geometry, material);
//添加到场景中
scene.add(mesh);

在这里插入图片描述

7、 圆环(TorusGeometry)

TorusGeometry用于创建一个圆环,它接受内半径、外半径、管状分段数、半径分段数等参数

// 创建一个圆环几何体
const geometry =  new THREE.TorusGeometry(5, 1, 16, 32);
//创建材质
const material = new THREE.MeshBasicMaterial({ color: 0xC046C4 });
// 创建一个网格对象,将几何体和材质组合在一起
const mesh = new THREE.Mesh(geometry, material);
//添加到场景中
scene.add(mesh);

在这里插入图片描述

ps:上面很多几何体都有可选的入参——分段数,分段数指的是在创建几何体时,将几何体的表面划分为多个更小的部分(通常是三角形面片)的数量。3D 图形库实际上是通过将复杂的几何形状拆分成大量简单的三角形面片来进行渲染的,分段数决定了这种拆分的精细程度。较高的分段数能带来更平滑、更精确的几何体外观,但会增加渲染负担;较低的分段数可以提高性能,但可能牺牲一定的视觉质量。开发者需要根据具体的应用场景和设备性能,合理调整分段数,以达到最佳的效果

三、几何体相关属性设置

1. 位置(position)

每个网格对象(Mesh)都有一个 position 属性,用于设置几何体在场景中的位置,它包含 x、y、z 三个分量。

mesh.position.set(1, 1, 1);

2.旋转(rotation)

rotation 属性用于设置几何体的旋转角度,它包含 x、y、z 三个分量,单位是弧度。

mesh.rotation.x = Math.PI / 4;//绕x轴旋转 π/4 弧度
mesh.rotation.y = Math.PI / 4;//绕y轴旋转 π/4 弧度

3. 缩放(scale)

scale 属性用于设置几何体的缩放比例,它包含 x、y、z 三个分量。

//几何体缩小2倍
mesh.scale.set(2, 2, 2);

五、总结

       通过以上对 Three.js 常见几何体类型和相关属性设置的介绍,相信你已经对如何创建和操作几何体有了基本的了解。在实际应用中,你可以根据具体需求选择合适的几何体类型,并灵活设置其属性,以构建出丰富多样的 3D 场景。

更多three.js入门知识点请关注该系列教程后续的更新。

相关文章:

  • ROS 2入门 - 机器人操作系统ROS2的安装
  • Mac下Python版本管理,适用于pyenv不起作用的情况
  • Dify怎么创建数据交易的智能体
  • [GESP202406 六级] 二叉树
  • [C++]使用纯opencv部署yolov12目标检测onnx模型
  • 开启开源新时代:DeepSeek引领人工智能技术开放化
  • YOLOv8与BiFormer注意力机制的融合:提升多场景目标检测性能的研究
  • Visual studio 2022 将打开文件的方式由单击改为双击
  • Java 数学函数库
  • 【电机控制器】ESP32-C3语言模型——豆包
  • k8s容器运行时环境选型指南
  • Hutool - DFA:基于 DFA 模型的多关键字查找
  • Eclipse 透视图 (Perspective)
  • 北斗模块的“低功耗“秘诀:如何在物联网设备中延长续航?
  • linux驱动编程(一)
  • 【JavaWeb学习Day17】
  • 深度解析:网站快速收录与服务器性能的关系
  • 【datax系列】datax-web容器化部署搭建(①)
  • 【20250221更新】WebStorm2024.3.3版本安装+使用方法
  • windwos与linux环境下Iperf3带宽测试工具的安装、使用
  • 英欧再“牵手”,友好“靠美国”
  • 河北6人在河道倒污泥被控污染环境案撤诉后,已拿到国赔决定书
  • 消费维权周报丨上周涉汽车类投诉较多,涉加油“跳枪”等问题
  • 4月份国民经济顶住压力稳定增长
  • 意德首脑会谈,梅洛尼警告欧盟绿色政策面临“工业荒漠化”
  • AI赋能科学红毯,机器人与科学家在虚实之间叩问“科学精神”