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} ); //材质

相关文章
|
2月前
ThreeJs创建球体
这篇文章讲解了如何在Three.js中创建并添加一个球体到场景中,包括定义球体的几何形状、赋予材质以及最终渲染球体的过程。
56 1
|
2月前
ThreeJs创建圆环
这篇文章介绍了如何在Three.js中创建一个圆环(torus),包括设置圆环的几何形状、材质以及将其添加到场景中的具体步骤。
57 0
ThreeJs创建圆环
|
2月前
ThreeJs绘制圆柱体
这篇文章介绍了在Three.js中绘制圆柱体的方法,包括创建圆柱体几何体、设置材质以及将其正确放置在三维场景中的技巧。
55 0
ThreeJs绘制圆柱体
|
2月前
|
JavaScript API 图形学
ThreeJS入门-创建一个正方体
这篇文章介绍了如何使用Three.js创建一个基本的正方体模型,并提供了实现这一功能的详细步骤和代码示例。
49 0
ThreeJS入门-创建一个正方体
|
4月前
|
前端开发 API
【threejs教程】让你的场景动起来!深入了解threejs场景及坐标轴
【8月更文挑战第5天】让你的场景动起来!深入了解threejs场景及坐标轴
45 0
【threejs教程】让你的场景动起来!深入了解threejs场景及坐标轴
Photoshop使用钢笔路径绘制网状条纹
Photoshop使用钢笔路径绘制网状条纹
98 0
|
前端开发 JavaScript
【Three.js入门】渲染第一个场景及物体(轨道控制器、坐标轴辅助器、移动缩放旋转)
【Three.js入门】渲染第一个场景及物体(轨道控制器、坐标轴辅助器、移动缩放旋转)
303 0
|
前端开发 JavaScript API
⚡初识Three.js,在场景中创建一个旋转的正方体~
⚡初识Three.js,在场景中创建一个旋转的正方体~
352 3
⚡初识Three.js,在场景中创建一个旋转的正方体~
|
数据可视化 图形学
R可视乎|圆环图
对于饼图,上一次学习《R语言数据可视化之美》的时候主要利用graphics包和ggplot包(可见R可视乎|饼图)。这几天的学习中发现还有一个更加简便的方法——ggpie包。接下来做简单描述,然后进入圆环图的学习。
525 0
R可视乎|圆环图
|
C#
怎么把控件贴到三维空间里的一个面上
原文:怎么把控件贴到三维空间里的一个面上 今天有人在问:怎么把控件贴到三维空间里的一个面上?我想,可以看看这篇文章:使用 WPF 向控件和三维表面添加视频(http://msdn.microsoft.com/zh-cn/magazine/cc163455.aspx),看完之后你举一返三,一定会有收获。
801 0