Threejs创建圆环结

简介: 这篇文章讲解了如何在Three.js中创建一个圆环结(例如绳结状的几何体),包括生成圆环结几何体、应用材质以及将其渲染到场景中的过程。

上一章节实现了圆环的绘制,这节来绘制一个和圆环很相近的立体模型:圆环结,圆环结在真实数字孪生场景应用不多,但会常用于AR宣传,广告,建筑设计等领域,使得看起来更有立体和科技感,如上文一样,先要创建出基础的组件,包括场景,相机,灯光,渲染器。代码如下:

 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);
    },

圆环结是由多个相互交织的圆环组成的复杂 3D 结构。我们可以将其看作是多个圆环在特定的位置和角度上进行组合和缠绕而成。Three.js 中的 TorusKnotGeometry 类专门用于创建圆环结。它接受一些参数来控制圆环结的形状和大小。参数列表如下:

  • radius - 圆环的半径。默认值为1
  • tube — 管道的半径。默认值为0.4
  • tubeSegments — 默认值为64
  • radiusSegments — 默认值为8
  • p — 该值决定几何体绕其旋转对称轴旋转的次数。默认值为2
  • q — 此值决定几何体在圆环内部绕一圈的次数。默认值为3。

代码如下:

    //创建环形纽结
    initTorusKnotGeometry(){
      // 创建环形纽结,圆环的半径为10,环的半径为3,分段数100,环的分段数16
      const geometry = new THREE.TorusKnotGeometry( 10, 3, 100, 16 );
      const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
      const torusKnot = new THREE.Mesh( geometry, material );
      this.scene.add( torusKnot );
    },

最终效果显示如下:

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

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

相关文章
webp格式图片在html里不显示的解决方法
webp格式图片在html里不显示的解决方法
1641 0
webp格式图片在html里不显示的解决方法
|
开发框架
threejs做特效:实现物体的发光效果-EffectComposer详解!
【8月更文挑战第7天】实现物体的发光效果-EffectComposer详解!
2870 6
threejs做特效:实现物体的发光效果-EffectComposer详解!
|
7月前
|
安全 JavaScript 前端开发
Wappalyzer-网站技术栈识别
Wappalyzer 是一款网站技术指纹识别工具,可识别网站使用的 Web 服务器、前端框架、CMS、电商平台、编程语言、数据库、安全防护及统计工具等技术栈,常用于渗透测试中的信息收集。支持命令行和浏览器插件使用,可单个或批量检测目标网站,输出详细技术信息,便于安全分析与漏洞挖掘。
933 0
Wappalyzer-网站技术栈识别
|
9月前
|
人工智能 数据可视化 Java
什么是低代码(Low-Code)?低代码核心架构技术解析与应用展望
低代码开发正成为企业应对业务增长与IT人才短缺的重要解决方案。相比传统开发方式效率提升60%,预计2026年市场规模达580亿美元。它通过可视化界面与少量代码,让非专业开发者也能快速构建应用,推动企业数字化转型。随着AI技术发展,低代码与AIGC结合,正迈向智能化开发新时代。
|
自然语言处理 算法 API
一文揭秘|如何速成RAG+Agent框架大模型应用搭建(一)
一文揭秘|如何速成RAG+Agent框架大模型应用搭建
701 0
|
前端开发 JavaScript 开发者
前端开发的终极技巧:如何让你的代码既简洁又高效,还能减少bug?
【10月更文挑战第30天】前端开发充满挑战与创新,如何编写简洁高效且少bug的代码是开发者关注的重点。本文介绍五大技巧:1. 模块化,提高代码复用性;2. 组件化,降低代码耦合度;3. 使用现代框架,提高开发效率;4. 统一代码规范,降低沟通成本;5. 利用工具,优化代码质量。掌握这些技巧,让前端开发更高效。
604 1
ThreeJs创建圆环
这篇文章介绍了如何在Three.js中创建一个圆环(torus),包括设置圆环的几何形状、材质以及将其添加到场景中的具体步骤。
371 0
ThreeJs创建圆环
CSS3 flex 布局在 wrap 换行模式下,让中间指定元素换行
CSS3 flex 布局在 wrap 换行模式下,让中间指定元素换行
1705 0
|
数据可视化 定位技术
【threejs】可视化大屏酷炫3D地图附源码
【threejs】可视化大屏酷炫3D地图附源码
12524 131
【threejs】可视化大屏酷炫3D地图附源码
|
前端开发 JavaScript
前端框架的选型、分类、常用框架整理(含官网链接)
前端框架的选型、分类、常用框架整理(含官网链接)
932 7
下一篇
开通oss服务