ThreeJs创建圆环

简介: 这篇文章介绍了如何在Three.js中创建一个圆环(torus),包括设置圆环的几何形状、材质以及将其添加到场景中的具体步骤。

ThreeJs除了创建基本的长方体,球形,圆柱等几何体,也可以创建一些特殊的几何体,比如圆环,多边体,这节就来讲怎么用Threejs绘制出圆环。首先依然是要创建出基础的组件,包括场景,相机,灯光,渲染器。代码如下:

这里还加上了鼠标控制,方便创建圆环之后更直观的观察它。

 initScene() {
      this.scene = new THREE.Scene();//创建一个Scene场景
    },
    initLight(){
      const light = new THREE.DirectionalLight(0xffffff, 1);//创建一个灯光
      this.scene.add(light)
    },
    initCamera(){
      //创建一个透视相机,视角为45度,宽高比为window窗口的宽高比,0.1为近面,10000为远面
      this.camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 10000);
      this.camera.position.set(50,50,50);//设置相机位置
      this.camera.lookAt(0,0,0);//设置相机位置
    },
 initRenderer(){//初始化渲染器
      this.renderer = new THREE.WebGLRenderer({ antialias: true });
      this.container = document.getElementById("container");//获取容器
      this.renderer.setSize(this.container.clientWidth, this.container.clientHeight);//设置渲染器的大小
      this.container.appendChild(this.renderer.domElement);//将渲染器添加到容器中
      this.renderer.setClearColor('#FFFFFF', 1.0);//设置背景颜色
    },
    initOrbitControls(){ //创建鼠标控制工具
      this.orbitControls = new OrbitControls(this.camera, this.renderer.domElement);//创建控制器
    },
    initAnimate() { //循环渲染
      requestAnimationFrame(this.initAnimate);
      this.renderer.render(this.scene, this.camera);
    },

Three.js 提供了 TorusGeometry 类来创建圆环。其原理是通过数学公式来定义圆环的形状。
圆环可以看作是由一个大圆(半径为 R)沿着一个小圆(半径为 r)旋转一周所形成的立体图形。
TorusGeometry 中,我们可以通过指定大圆半径、小圆半径、大圆的分段数(segments)和小圆的分段数(rings)来控制圆环的形状。

radius - 圆环的半径,从圆环的中心到管的中心。默认为1
tube — 管的半径。默认为0.4
radiusSegments — 默认为12
tubeSegments — 默认为48
arc — 中心角。默认为 Math.PI * 2。

代码如下:

 //创建圆环
    initTorusGeometry(){
      // 创建环形几何体,圆环的半径为10,环的半径为3,
      const geometry = new THREE.TorusGeometry( 10, 3, 16, 100 );
      const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); //材质为黄色
      const torus = new THREE.Mesh( geometry, material ); //通过几何体和材质创建网格模型
      this.scene.add( torus );
    },

最终效果如下

但是因为颜色会纯色,看不出立体效果,我们将材质修改为只显示框架,只需要将材质修改为:

const material = new THREE.MeshBasicMaterial( { color: 0xffff00 ,wireframe:true} ); //材质为黄色

以上一个圆环就绘制完成了。

相关文章
ThreeJs绘制圆柱体
这篇文章介绍了在Three.js中绘制圆柱体的方法,包括创建圆柱体几何体、设置材质以及将其正确放置在三维场景中的技巧。
636 0
ThreeJs绘制圆柱体
|
JavaScript
vue 全屏 screenfull —— 整页全屏,指定元素全屏,退出全屏,全屏切换等
vue 全屏 screenfull —— 整页全屏,指定元素全屏,退出全屏,全屏切换等
1845 0
|
监控 网络协议 应用服务中间件
深入解析:如何确定网站使用的端口号
【10月更文挑战第21天】 在网络通信中,端口号是识别特定服务的关键。一个IP地址可以有多个端口,每个端口可能运行着不同的服务。当我们在浏览器地址栏输入一个网址时,实际上是通过特定的端口与服务器进行通信。本文将探讨如何确定一个网站使用的端口号,以及端口号在网络通信中的作用。
4397 4
|
数据可视化 定位技术
【threejs】可视化大屏酷炫3D地图附源码
【threejs】可视化大屏酷炫3D地图附源码
13316 131
【threejs】可视化大屏酷炫3D地图附源码
|
开发者
手把手教你微信公众号如何给指定用户发送消息提醒
消息提醒功能是提升用户满意度的最有效方式,基于微信聊天的消息提醒也是现在最常见的消息提醒方式之一,
手把手教你微信公众号如何给指定用户发送消息提醒
|
数据可视化 JavaScript 前端开发
使用 ECharts 绘制3D饼图,立体效果华丽渲染!
使用 ECharts 绘制3D饼图,立体效果华丽渲染!
|
网络协议 Linux 应用服务中间件
一台linux服务器最多能支持多少个TCP连接?(要区分客户端还是服务端)
一台linux服务器最多能支持多少个TCP连接?(要区分客户端还是服务端)
2270 0
Threejs实现动画
这篇文章讲解了如何使用Three.js实现动画效果,并介绍了如何控制动画的时间轴。
523 3
Threejs实现动画
|
移动开发 JavaScript 算法
echarts图表坐标轴数据标签添加下划线(下)
echarts图表坐标轴数据标签添加下划线(下)
488 0
|
SQL 算法 数据挖掘
数据分析师7大能力:梳理标签体系
上期分享了数据分析师必备能力:打标签。这次分享一个更高级能力:构造标签体系。在提升能力的顺序上,当然是先会打一个标签,再会搞整个体系了。
964 0
数据分析师7大能力:梳理标签体系

热门文章

最新文章