Threejs—BIM管道流向动态效果

10 篇文章 0 订阅
10 篇文章 2 订阅

Threejs—BIM管道流向动态效果

Threejs—BIM管道流向动态效果

BIM管道流向主要是描述管道内液体流动方向的一个业务场景,

在BIM管道分析展示中一个比较常用的场景,这次基于threejs的纹理流动,实现一版效果,主要如下:
在这里插入图片描述
原理很简单就是借助TubeGeometry,配合MeshPhongMaterial材质,在设置texture 的时候,给一个循环函数,让纹理的offset(偏移)每次都递增,就可以达到感觉有一个流动的特效。

// 此部分为了展示为hardcode
    const pathArr = [
      4624.99, 2329.38, -5843.11,
      4624.99, 4643.14, -5843.11,
      1437.47, 4643.14, -5819.36,
      1413.69, 4643.14, -1854.40,
      -6983.28, 4643.14, -1854.04,
      -7078.43, 4643.14, 2149.46
    ]
  const  radius =  500

核心代码函数createTube如下

// 动态创建一个管道
    function createTube(pathArr, radius) {
      let curveArr = []
      // 三个一组取出curve数据
      for(let i=0; i < pathArr.length; i+=3) {
        curveArr.push(new THREE.Vector3(pathArr[i], pathArr[i+1], pathArr[i+2]))
      }
      var curve = new THREE.CatmullRomCurve3(curveArr);
      /**
        * TubeGeometry(path : Curve, tubularSegments : Integer, radius : Float, radialSegments : Integer, closed : Boolean)
      */
      var tubeGeometry = new THREE.TubeGeometry(curve, 100, radius, 50, false);
      var textureLoader = new THREE.TextureLoader();
      var texture = textureLoader.load(`${process.env.BASE_URL}imgLib/arrow.png`);

      // 设置阵列模式 RepeatWrapping
      texture.wrapS = THREE.RepeatWrapping
      texture.wrapT = THREE.RepeatWrapping
      // 设置x方向的重复数(沿着管道路径方向)
      // 设置y方向的重复数(环绕管道方向)
      texture.repeat.x = 10;
      texture.repeat.y = 4;
      // 设置管道纹理偏移数,便于对中
      texture.offset.y = 0.5;
      var tubeMaterial = new THREE.MeshPhongMaterial({
        map: texture,
        transparent: true,
      });
      var tube = new THREE.Mesh(tubeGeometry, tubeMaterial);
      // 使用加减法可以设置不同的运动方向
      setInterval(() => {
        texture.offset.x -= 0.0076
      })
      return tube
    }

具体业务中需要定位组织数据管道路径curve,可以从boundingbox中求出一个外接圆,进而套用这个方法生成流动特效,注意组件销毁时候的setInterval函数的清除避免内存泄漏。


BIM树洞

做一个静谧的树洞君

用建筑的语言描述IT事物;

用IT的思维解决建筑问题;

共建BIM桥梁,聚合团队。

本学习分享资料不得用于商业用途,仅做学习交流!!如有侵权立即删除!!


  • 微信公众号: BIM树洞
    在这里插入图片描述

  • 知乎专栏:BIM树洞

  • 气氛组博客:http://www.31bim.com

  • BIM应用及咨询,CAD,Revit, OpenGL,图形开发交流,加Q群1083064224

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Three.js是一个十分流行的WebGL渲染库,它可以用于在Web上创建各种各样的3D场景与动画。同时,Three.js也可以被用来加载BIM模型,让建筑师和工程师们获得全新的建筑设计和构建体验。 Three.js支持多种BIM格式,例如IFC、RVT和DWG等,使用Three.js加载BIM可以让用户在操作和构建场景时获得更为流畅的体验和更为生动的视觉效果。虽然BIM模型往往相较于其他模型更为复杂,但是Three.js以其高效优化和可定制化的特点,可以轻松地将模型呈现在Web页面上。 用户可以利用Three.js强大的工具箱,例如可拖拽的场景、可旋转的物体、自由视角等功能,让BIM模型在Web上愈发立体、真实。同时,用户还可以轻松地将BIM模型与其他的数据集成,例如地图数据、传感器数据和空气质量数据等等,以帮助设计师做出更加科学、可持续的设计决策。 总之,使用Three.js加载BIM模型不仅可以为用户构建更为真实、更为可视化的设计模型,更可以帮助设计师们在构建过程中得到更全面、更精准的数据支持,以满足日益严格的市场需求和客户要求。 ### 回答2: Three.js是一款现代的JavaScript 3D引擎,可以用于在Web浏览器中创建高品质的动态3D场景,因此它在加载BIM(建筑信息模型)方面也非常有用。 首先,BIM是一种数字建模技术,被用于建筑和基础设施项目的设计,建造和运行过程中的信息管理。因此,使用Three.js加载和展示BIM数据可以帮助设计师和建筑师更好地理解和管理整个建筑过程。 在使用Three.js加载BIM时,需要首先将BIM数据转换为可见的3D模型。这可以通过转换软件来完成,例如Revit和Navisworks等软件可以将BIM数据转换为3D格式,例如OBJ,FBX,GLTF等。 一旦有了可见的3D模型,就可以使用Three.js将模型加载进Web浏览器中,并附加材质,光源和动画等特性。此外,Three.js还可以帮助创建交互式场景,例如平移和缩放模型,或者添加文本,图表和注释等信息。 使用Three.js加载BIM可以提高建筑流程的效率,减少错误,并为设计师和建筑师提供更多的增值服务。 ### 回答3: Three.js是一款基于WebGL的JavaScript 3D图形库,它提供了高度抽象的对象、灵活的渲染管线和易于操作的场景,是Web 3D开发中的一种强大工具。而BIM(Building Information Modeling,建筑信息模型)是一种通过三维数字建模将建筑信息整合于一体,以提高建筑设计、施工、维护过程的效率和精度。 在Three.js中,可以通过加载BIM文件模型,让建筑模型变得更加生动、直观。Three.js支持的BIM文件格式主要有IFC、rvt等,并且可以通过插件的方式实现加载其他的格式。 Three.js可以支持解析IFC文件,对三维物体进行转换,生成渲染三维模型。加载BIM文件可以通过将模型文件直接导入到项目中,利用Three.js提供的API将BIM模型加载到场景中。可以通过设置材质、贴图、光源、相机等参数来实现丰富的效果,从而方便地展示模型细节。 总之,利用Three.js加载BIM文件,可以让建筑模型更直观、动态,从而方便用户快速了解建筑设计;同时通过Three.js的灵活性,开发人员可以自由地调整模型的渲染效果,满足不同需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值