Threejs实现模拟管道液体流动
1,介绍
该示例使用的是 r95版本Three.js库。
主要实现功能:模拟管道液体流动。效果图如下:
2,主要说明
模拟管道液体流动实现步骤:创建管道,添加纹理,位移纹理实现流动效果。
如下函数:定义管道位置坐标,创建管道并赋予材质,并添加到场景中
function initTubeModel() {var pointsArr = [[42, 0, 10],[21, 0, 10],[21, 0, 1],[-3, 0, 1],[-3, 0, -18],[-10, 0, -18],[-10, 0, 5],[1, 0, 5],[1, 0, 24],[-27, 0, 24],[-27, 0, 18],[-46, 0, 19],[-46, 0, -4],[-25, 0, -6],[-25, 0, -19],[-35, 0, -20],[-35, 0, -26],[-30, 0, -30],[3, 0, -30]];var curve = createPath(pointsArr)var tubeGeometry = new THREE.TubeGeometry(curve, 1000, 0.5, 100, false);var textureLoader = new THREE.TextureLoader();texture = textureLoader.load('assets/textures/arrow1.jpg'); //./ZS箭头.svg ./arrow.jpg// 设置阵列模式为 RepeatWrappingtexture.wrapS = THREE.RepeatWrappingtexture.wrapT = THREE.RepeatWrappingtexture.repeat.x = 50;texture.repeat.y = 2;texture.offset.y = 0.5;var tubeMaterial = new THREE.MeshPhongMaterial({map: texture,transparent: true,color: 0x47d8fa,side: THREE.DoubleSide,//opacity: 0.4,});// 设置数组材质对象作为网格模型材质参数var mesh = new THREE.Mesh(tubeGeometry, tubeMaterial); //网格模型对象Meshmesh.position.y = 2;mesh.rotateZ(3.14);mesh.scale.set(2, 2, 2);scene.add(mesh); //网格模型添加到场景中
}
function createPath(pointsArr) {pointsArr = pointsArr.map((point) => new THREE.Vector3(...point)); // 将参数数组转换成点数组的形式// 方法一:自定义三维路径 curvePathconst path = new THREE.CurvePath();for (let i = 0; i < pointsArr.length - 1; i++) {const lineCurve = new THREE.LineCurve3(pointsArr[i], pointsArr[i + 1]); // 每两个点之间形成一条三维直线path.curves.push(lineCurve); // curvePath有一个curves属性,里面存放组成该三维路径的各个子路径}return path;
}
流动效果关键一步,动态刷新调用,位移材质
function renderScene() {TWEEN.update();orbit.update();// 使用requestAnimationFrame函数进行渲染requestAnimationFrame(renderScene);renderer.render(scene, camera);texture.offset.x -= 0.04
}
Threejs实现模拟管道液体流动相关推荐
- android 控件随手指移动_液体流动控件,隔壁产品都馋哭了
作者:彭也 链接: https://www.jianshu.com/p/4f0844c72e8a 模拟液体流动的展开特效,适合一些需要侧边展开进行辅助说明的页面,如用户在填写某个表单,需要操作很多步骤 ...
- WPF随笔(九)--使用路径动画模拟管道流体流向
WPF的一大特性就的动画系统,使用动画能够实现很多在WinForm很难实现的效果.最近在网上偶然看到大神用WPF动画实现对象沿特定路径正向或反向移动的效果,就想参考着自己试一试. 1.简单路径动画 先 ...
- 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 详细的数学模型及参考文献
[江西省研究生数学建模竞赛]题目之一 蒸汽发生器倒U型管内液体流动 相关链接 [江西省研究生数学建模竞赛]第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 [江西省研究生数学建模竞赛 ...
- wincc做皮带动画_WINCC中制作管道流体流动动画的一种方法
WINCC 中制作管道流体流动动画的一种方法 采用自定义对象的方法制作,不需要使用全局变量及外部量. 以制作横向向右流动流动块为例: 1 .画两个高度相等的矩形,分为是 rec1 和 rec2 , r ...
- threejs进阶,管道几何体高级应用,geometry几何体应用,可拖拽改变形状的管道
threejs进阶,管道几何体高级应用,geometry几何体应用,可拖拽改变形状的管道 一.threejs是什么? 二.geometry几何体使用步骤 1.引入库 2.如果使用谷歌浏览器打不开报错, ...
- 基于精灵(Sprite)管道烟雾流动效果
效果 概念 首先要明白threejs中精灵的概念,官网中对精灵的描述是: A sprite is a plane that always faces towards the camera, gener ...
- 网页ui设计模板素材|液体流动效果!
如今拟物化设计的热潮褪去,但是在设计UI和网页的时候依然更加深层的表现物理规则.运动特征和质感. 潮流渐变时尚背景抽象化底纹液态AI矢量 潮流渐变时尚背景抽象化底纹液态 物理是一门相当古老的学科,但是 ...
- Threejs实现模拟河流,水面水流,水管水流,海面
1,介绍 使用Three.js引入Water.js,实现模拟河流水面,水管流水. 效果图如下: 参考案例:three.js webgl - shaders - ocean (threejs.org)h ...
- Shader Graph学习各种特效案例(持续更新)
文章目录 前言 案例 unity 2019.4.10 外发光 进阶 带方向的外发光 裁剪 进阶 带边缘色的裁剪 溶解 进阶 带边缘色溶解 卡通阴影 水波纹 积雪效果 不锈钢效果 UV抖动 水波纹 红旗 ...
最新文章
- java动态代理【一】
- Java基础教程,第三讲,运算符 变量定义 数据类型转换
- [转]卓越科技回应所谓的最牛,最受歧视的招聘
- 华农保险 × 神策数据 OpenDay:保险如何从 0 到 1 落地数字化转型?
- 乙肝疫苗该怎么打(转)
- 8s nfs 挂载文件_把你的树莓派家庭实验室变成一个网络文件系统 | Linux 中国
- vim查找关键字_vim常用命令及操作
- OceanBase云平台简介
- Power of Four(Leetcode 342)
- 华为手机助手 linux,HiSuite-华为手机助手上线!从此再也不担心手机数据导不进Mac电脑啦!...
- 5、JSP面试题总结
- MAC前端开发环境搭建
- JavaSE项目——嗖嗖移动大厅(详细注释,java基础知识基本上都包含了)
- android 自定义控件viewgroup,Android 之 自定义控件 之 ViewGroup
- IP范围表示法(网络子网划分)
- Invalid bound statement (not found): com.sxt.sys.mapper.MenuMapper.insert
- 摄像模组中光学相关知识(三)
- stc89c51单片机音乐盒系统设计_基于单片机数字音乐盒的设计与实现(附PCB,电路图,程序)...
- git push -u origin master提示 fatal: repository 'https://gitlab.com/xx.git/' not found
- Eclipse中Android SDK Manager无法打开
热门文章
- ERA5气象数据下载经验分享
- python 函数修饰器 父类_Python函数嵌套、回调函数、闭包、装饰器和类
- 图像处理——gamma矫正
- 零基础学习Hadoop
- 为什么cinder-volume在删除volume时无反应 (by quqi99)
- 在函数fnl()中定义一个静态变量n,fnl()中对n的值加1,在主函数中,调用fnl()10次,显示n的值,c++
- 【每日分享】我做程序员那些年犯下的罪,此时此刻我自己的笑出猪叫~
- linux环境安装部署RF+Jenkins+Git(非完整版)
- 职场34个必备的沟通技巧
- opencv训练自己的模型,实现特定物体的识别