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

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

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

**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} );
相关推荐
总要学点什么2 天前
第92篇:三维特效-圆(逐渐消逝)——从圆心开始,让一个洞把整片光啃到只剩外圈
gis·webgl·cesium·空间分析·1024程序员节
总要学点什么3 天前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
GoldenSpider.AI3 天前
一张户型图做成浏览器 3D 漫游:house.json 统一模型、1.2 m 剖切图纸与分阶段验收
ai编程·webgl·three.js·3d漫游·claude code
Jmyd01236 天前
WebGL 三维党史馆怎么扛住 720 度全景与移动端弱网?
webgl·三维数字化
limit00758 天前
三维 WebGIS 工具选型:加载、样式、分析、交付,一套界面能做完什么
android·前端·web3·安卓·webgl
总要学点什么9 天前
第79篇:数据可视化-模拟迁徙效果——把三十条航线画成会飞的弧
3d·信息可视化·数据挖掘·数据分析·gis·webgl·cesium
limit00759 天前
三维模型悬空与切片偏移的排查顺序
低代码·3d·arcgis·web3·安卓·webgl
Sakura_j_h_10 天前
Three.js 单文件离线机械臂工作台:爆炸图、透明外壳与剖面
前端·机械臂·webgl·three.js·1024程序员节·esbuild
总要学点什么16 天前
第65篇:地图卷帘控件——点「关闭卷帘」,消失的却是右边那半张地图
信息可视化·gis·webgl·cesium·空间分析
总要学点什么17 天前
第63篇:3DTiles-大雁塔模型——190 块瓦片不是八叉树,抬高的却是球心那条法线
3d·数据挖掘·数据分析·gis·webgl