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

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

 代码仓

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

相关文章:

  • FastAPI 教程:从入门到实践
  • 主键(PRIMARY KEY)与唯一键(UNIQUE KEY)的区别详解
  • React Native 导航系统实战(React Navigation)
  • OOM模拟排查过程记录
  • 解决helm Doris重启后由于root密码修改导致加入集群不成功的问题
  • DevSecOps实践:CI/CD流水线集成SAST工具详解
  • 理解 Spring Cloud Config:配置文件发现与命名规范
  • Python爬虫基础之Selenium详解
  • iOS26 深度解析:WWDC25 重磅系统的设计革新与争议焦点
  • 【iOS】cell的复用以及自定义cell
  • Vim 匹配跳转与搜索命令完整学习笔记
  • ios 26官宣:car play升级提升车载体验
  • React---day12
  • SpringBoot自动化部署实战
  • 生成xcframework
  • <7>-MySQL内置函数
  • 51c嵌入式※~电路~合集32~PWM
  • BERT情感分类
  • BERT 位置嵌入机制与代码解析
  • Python 自动化临时邮箱工具,轻松接收验证码,支持调用和交互模式(支持谷歌gmail/googlemail)
  • 给公司建立一个网站吗/每日军事新闻
  • wordpress做简单的商城/广州网站seo
  • 做视频网站成本高吗/全国疫情最新数据
  • 中小企业网站建设与管理主要讲授什么/百度搜索关键词指数
  • 网站建设工具品牌有哪些/临沂百度seo
  • 石家庄 网站编辑/南宁seo推广