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

相关文章
|
1月前
ThreeJs创建球体
这篇文章讲解了如何在Three.js中创建并添加一个球体到场景中,包括定义球体的几何形状、赋予材质以及最终渲染球体的过程。
39 1
|
1月前
ThreeJs创建圆环
这篇文章介绍了如何在Three.js中创建一个圆环(torus),包括设置圆环的几何形状、材质以及将其添加到场景中的具体步骤。
42 0
ThreeJs创建圆环
|
1月前
ThreeJs绘制圆柱体
这篇文章介绍了在Three.js中绘制圆柱体的方法,包括创建圆柱体几何体、设置材质以及将其正确放置在三维场景中的技巧。
38 0
ThreeJs绘制圆柱体
|
1月前
ThreeJs绘制线
这篇文章详细说明了如何使用Three.js来绘制线条,包括创建线几何体、设置材质以及将线条添加到3D场景中的具体步骤。
19 1
|
1月前
|
JavaScript API 图形学
ThreeJS入门-创建一个正方体
这篇文章介绍了如何使用Three.js创建一个基本的正方体模型,并提供了实现这一功能的详细步骤和代码示例。
32 0
ThreeJS入门-创建一个正方体
|
3月前
|
API
【threejs教程】让你的场景五颜绿色:纹理贴图与环境贴图
【8月更文挑战第6天】【threejs教程】让你的场景五颜绿色:纹理贴图与环境贴图
125 11
教你一招学会Echarts绘制瀑布图
教你一招学会Echarts绘制瀑布图
|
4月前
|
前端开发
Canvas绘画之三条二次方贝塞尔曲线构成的复选框标记对号
Canvas绘画之三条二次方贝塞尔曲线构成的复选框标记对号
Photoshop使用钢笔路径绘制网状条纹
Photoshop使用钢笔路径绘制网状条纹
88 0
|
前端开发 JavaScript
【Three.js入门】渲染第一个场景及物体(轨道控制器、坐标轴辅助器、移动缩放旋转)
【Three.js入门】渲染第一个场景及物体(轨道控制器、坐标轴辅助器、移动缩放旋转)
290 0
下一篇
无影云桌面