Threejs创建胶囊体

简介: 这篇文章介绍了在Three.js中创建胶囊体(两端为半球形中间为圆柱形的模型)的方法,包括建立几何体、设置材质以及将其添加到场景中的步骤。

上一章节实现了圆环结的绘制,这节来绘制胶囊体,胶囊体就是胶囊的形状,上下是一个半球,中间是一个圆柱体,如上文一样,先要创建出基础的组件,包括场景,相机,灯光,渲染器。代码如下:

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

胶囊形状由一个圆柱体和两个半球组成。它在三维空间中呈现出一种流畅且具有一定实用性的形状。

  • 圆柱体部分提供了主体的长度和粗细,可以通过参数调整其高度和半径。
  • 两端的半球使得整体形状更加平滑,减少了尖锐的边角。

CapsuleGeometry的构造函数参数如下:

  1. radius:胶囊圆柱体部分的半径。决定了胶囊的粗细程度。
  2. height:胶囊的总高度,包括圆柱体部分的高度和两个半球的直径之和。这个参数可以控制胶囊的整体长度。

代码如下:

 //胶囊模型
initCapsuleGeometry(){ 
    const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8 );
    const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
    const capsule = new THREE.Mesh( geometry, material );
    this.scene.add( capsule );
},

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

const material = new THREE.MeshBasicMaterial( {color: 0x00ff00, wireframe:true} );

相关文章
|
TensorFlow 算法框架/工具 Python
TensorFlow的历史版本与对应Python版本
TensorFlow的历史版本与对应Python版本
TensorFlow的历史版本与对应Python版本
|
12月前
Threejs制作窗户透亮效果
这篇文章讲解了如何在Three.js中制作窗户的透亮效果,包括设置透明材质和光照以实现逼真的窗户渲染效果的技术细节。
267 1
|
12月前
|
存储 JavaScript
ThreeJS创建关键帧动画
这篇文章讲解了如何在Three.js中利用关键帧轨道 (`KeyframeTrack`) 创建动画效果,并提供了详细的步骤和代码示例。
239 0
|
12月前
|
JavaScript 前端开发 开发者
ThreeJs控制模型骨骼实现数字人
这篇文章讲解了如何使用Three.js通过控制模型的骨骼来实现数字人的动态表现,包括加载模型、获取骨骼信息以及通过编程控制骨骼动作的具体方法。
1209 1
|
9月前
|
人工智能 自然语言处理 API
阿里云百炼xWaytoAGI共学课DAY3 - 更热门的多模态交互案例带练,实操掌握AI应用开发
本文章旨在帮助读者了解并掌握大模型多模态技术的实际应用,特别是如何构建基于多模态的实用场景。文档通过几个具体的多模态应用场景,如拍立淘、探一下和诗歌相机,展示了这些技术在日常生活中的应用潜力。
1996 20
PACS系统,覆盖医院所有科室,实现了全院医学影像和报告的信息共享
PACS系统整合医院放射、CT、MR等检查设备,与HIS系统无缝对接,实现自动化申请与报告。支持DICOM及非DICOM影像获取与强大分析功能,覆盖多科室,促进全院影像资源共享,提升医疗服务效率。超声工作站支持灵活报告生成与管理,具备断网离线工作能力,优化病例检索与影像采集流程,配备统计模块以图表形式展示多维度数据分析,助力高效决策。
417 0
PACS系统,覆盖医院所有科室,实现了全院医学影像和报告的信息共享
|
12月前
Threejs实现闪电效果
这篇文章讲解了如何利用Three.js实现闪电效果,包括设置粒子系统、调整材质属性以及控制闪电路径的方法。
181 1
Threejs实现闪电效果
|
12月前
|
JavaScript
ThreeJs通过DragControls实现物体拖动
这篇文章详细讲解了如何在Three.js中使用DragControls实现3D物体的鼠标拖动功能。
447 1
ThreeJs通过DragControls实现物体拖动
|
12月前
|
UED
ThreeJs模拟工厂生产过程三
这篇文章介绍了在Three.js中通过使用mergeGeometries技术来合并大量车间模型,以减少浏览器渲染负担,提高性能,并提供了实现模型合并的具体方法和步骤。
186 5
|
12月前
Threejs使用CubeCamera实现环境映射
这篇文章详细介绍了如何在Three.js中使用CubeCamera来实现环境映射,包括创建CubeCamera、设置反射材质以及实时更新渲染结果的具体步骤。
280 3