当前位置: 首页 > news >正文

threejs——无人机概念切割效果

主要技术采用着色器的切割渲染,和之前写的风车可视化的文章不同,这次的切割效果是在着色器的基础上实现的,并新增了很多可调节的变量,兄弟们,走曲儿~

线上演示地址,点击体验

源码下载地址,点击下载


在这里插入图片描述

正文

从图中大概可以看出以下信息,一个由线组成的无人机模型,一个由粒子组成的无人机模型,那么这些粒子、线都是从一个无人机的gltf模型中提取出来的,无人机模型由很多个小的Mesh组成的一个大的group,那么为了着色器的效果好处理,我们将所有的顶点信息收集起来,文中不讲加载gltf模型的内容哦~不了解的童鞋可以参考博主之前的文章。

收集点位信息

收集点位信息主要应用到threejs提供的实用工具BufferGeometryUtils中的mergeGeometriesAPI,将所有的geometry合并为同一个BufferGeometry。

...
let geometries: BufferGeometry[] = [];
gltf.scene.traverse((child: any) => {
if (child.isMesh) {geometries.push(child.geometry);
}
});let combinedGeometry = BufferGeometryUtils.mergeGeometries(geometries);
...

这样我们就得到一个新的geometry: BufferGeometry,但是里面包含了所有无人机的零部件。这样就可以统一处理这些信息了

创建线条模型和点阵模型

代码中封装了一个创建线条的方法(也包含了创建点阵的方法,这里不细介绍),代码主要逻辑:拿到顶点信息,通过边缘几何体(EdgesGeometry)计算相邻面和法线角度判断当前顶点信息是否需要渲染,也是过滤顶点信息,减缓浏览器渲染压力,得到一个过滤后的geometry,再将顶点信息渲染为 线段(LineSegments),这里有同学要问哦,同样都是接受一个geometry为啥需要用边缘几何体处理呢

http://www.lryc.cn/news/504079.html

相关文章:

  • electron学习笔记(一)
  • 基于Arduino蹲便器的自动清洁系统(论文+源码)
  • 【JavaWeb后端学习笔记】使用HttpClient发送Http请求
  • 2024告别培训班 数通、安全、云计算、云服务、存储、软考等1000G资源分享
  • 【C++】- 掌握STL List类:带你探索双向链表的魅力
  • 基于streamlit搭简易前端页面
  • Harmony Next开发通过bindSheet绑定半模态窗口
  • YOLOv11改进,YOLOv11添加DLKA-Attention可变形大核注意力,WACV2024 ,二次创新C3k2结构
  • 【51单片机】矩阵按键快速上手
  • 一文说清:git reset HEAD原理
  • 【前端面试题】书、定位问题、困难
  • WADesk 升级 Webpack5 一些技术细节认识5和4的区别在哪里
  • 学习 Dockerfile 常用指令
  • day11 性能测试(3)——Jmeter 断言+关联
  • ES6中的map和set
  • UE5中实现Billboard公告板渲染
  • 泊松编辑 possion editing图像合成笔记
  • #渗透测试#漏洞挖掘#红蓝攻防#SRC漏洞挖掘
  • 系列2:基于Centos-8.6Kubernetes 集成GPU资源信息
  • Coturn 实战指南:WebRTC 中的 NAT 穿透利器
  • 基于卷积神经网络的Caser算法
  • 自闭症在学校:了解自闭症的特点,优化学校教育方式
  • 多线程的知识总结(8):用 thread 类 或全局 async (...) 函数,创建新线程时,谁才是在新线程里第一个被执行的函数
  • ArcGIS地理空间平台manager存在任意文件读取漏洞
  • HarmonyOS Next 元服务新建到上架全流程
  • 【Linux】makefile项目管理
  • Lumos学习王佩丰Excel第二十一讲:经典Excel动态图表实现原理
  • Linux框架(二)——pinctrl和gpio子系统
  • C++ string的基本概念
  • MAC虚拟机上安装WDA环境