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为啥需要用边缘几何体处理呢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936114.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】每日一题 2024_12_13 K 次乘运算后的最终数组 I(暴力)

前言 每天和你一起刷 LeetCode 每日一题~ 小聊两句 1、今天是 12.13 南京大屠杀国家公祭日。铭记历史,勿忘国耻。 2、今天早上去看了 TGA 年度游戏颁奖,小机器人拿下了年度最佳游戏,所有人都震惊了,大伙纷纷问到,谁…

向达梦告警日志说声hello

为了调试和跟踪一些业务功能,通常会创建一个日志表,写入每个关键步骤的信息。也可以向达梦数据库的告警日志输出信息,然后通过查看告警日志即可。 在达梦的告警日志中输出一个信息可以这样 SQL> DBMS_SYSTEM.KSDWRT(2,hi dm);

MySQL 索引事务

目录 1. 索引是什么 2. 索引的相关操作 3. 索引的原理 4. 事务是什么 5. 事务的使用 6. 事务的原理 1. 索引是什么 索引是用来加快查询的机制,是针对某个表的指定列来设置的,查询条件如果就是使用这个带有索引的列来查询,那么查询速度…

基于django协同过滤的音乐推荐系统的设计与实现

一、摘要 随着现代音乐的快速发展,协同过滤的音乐推荐系统已成为人们业余生活的需求。该平台采用Python技术和django搭建系统框架,后台使用MySQL数据库进行信息管理;通过用户管理、音乐分类管理、音乐信息管理、歌曲数据管理、系统管理、我的…

代码随想录算法训练营第51期第14天 | 226. 翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

226. 翻转二叉树 226. 翻转二叉树https://leetcode.cn/problems/invert-binary-tree/1.昨天忘了声明,如果都用C的话,我大概率写不完,所以思路方面,我可能考虑用pyhon先写,后续会用文心一言转换成C 2.这里可以直接用层…

雨晨 24H2 IoT 企业版 ltsc 2024 Hotpatch 极简 26100.2605

文件: 雨晨 24H2 IoT 企业版 ltsc 2024 Hotpatch 极简 26100.2605 install.esd 大小: 1970652896 字节 修改时间: 2024年12月13日, 星期五, 18:06:39 MD5: 3DCB989B62B6656B2CB34B0D88EBEE45 SHA1: C6E890223892B7A3EDA59E4881C70214DD546DB7 CRC32: 13EDFA89 与往版&#xff…

AI大模型开发实战:基于LangGraph、Ollama构建本地AI智能体

一、理解 AI 智能体 AI 智能体是能够感知其环境并采取行动以实现特定目标的实体或系统。这些智能体可以从简单的算法到能够进行复杂决策的复杂系统。 以下是关于 AI 智能体的一些关键点: (1)感知(Perception)&#x…

SpringCloud微服务开发(三)网关

目录 1.网关概述 2.网关路由 3.网关登录校验 3.1自定义过滤器 3.2实现登录校验 3.3微服务获取用户 3.4OpenFeign在不同微服务之间传递用户 4.网关配置管理 5.配置热更新 6.动态路由 1.网关概述 顾明思议,网关就是网络的关口。数据在网络间传输&#xff0…

利用DFT画有限长序列的DTFT

MATLAB中没有DTFT函数,计算机不可能给出连续结果,可以只能利用DFT的fft函数来实现。 %% L 7; x ones(1, L) figure; tiledlayout(2,3,"TileSpacing","tight") nexttile; stem([0:L-1],x) box off title([num2str(L), points rect…

MYSQL索引的分类和创建

目录 1、聚簇索引和非聚簇索引 tips: 小问题:主键为什么建议使用自增id? 2、普通索引 (常规索引)(normal) 3、唯一索引(UNIQUE ) 唯一索引和主键的区别: 唯一约束和唯一索引的区别&#…

Artec Leo3D扫描仪在重型机械设备定制中的应用【沪敖3D】

挑战:一家加拿大制造商需要有效的方法,为富于变化且难度较高的逆向工程,快速、安全、准确地完成重型机械几何采集。 解决方案:Artec Leo, Artec Studio, Geomagic for SOLIDWORKS 效果:Artec Leo三维扫描代替过去的手动…

数据驱动模型预测控制应用于自动驾驶车辆转向

Application of Data-driven Model Predictive Control for Autonomous Vehicle Steering 数据驱动模型预测控制应用于自动驾驶车辆转向 Abstract With the development of autonomous driving technology, there are increasing demands for vehicle control, and MPC has b…

Elasticsearch 架构及 Lucene 索引结构原理入门

文章目录 Elasticsearch 整体架构Lucene 索引结构Lucene 倒排索引核心原理倒排索引倒排表(Posting List) Elasticsearch 整体架构 一个 ES Index 在集群模式下,有多个Node(节点)组成,每个节点就是ES的 inst…

【源码阅读系列】(四)进程间通信(一)

进程间的通信 为什么需要进程间通信? 操作系统中的进程隔离机制确保了各个进程在独立的内存空间中运行,并通过严格的机制防止进程间的非法访问。然而,在某些场景下,进程间的通信(Inter-process Communication, IPC&a…

直线导轨使用润滑脂和润滑油的区别

直线导轨在使用过程中,润滑是非常重要的一环,它能够减少摩擦、降低磨损、防止腐蚀,并提高导轨的精度和使用寿命。润滑脂和润滑油是两种常用的润滑剂,它们各自有不同的特点和适用场景。 润滑脂是由基础油、增稠剂和添加剂组成的半固…

echarts绘制自定义展示排名和数据等信息(数据排名进度条)

目录 一、结构分析 二、配置图表各部分 1.名称及排序 2.进度条绘制 3.数据末端圆形绘制 (1)基本配置 (2)数据 (3)坐标轴配置 (4)点的样式 (5)项的样…

CV(4)--边缘提取和相机模型

前言 仅记录学习过程,有问题欢迎讨论 边缘提取(涉及语义分割): 图象的边缘是指图象局部区域亮度变化显著的部分,也有正负之分,暗到亮为正 求边缘的幅度:sobel,Canny算子 图像分高频分量和低…

【Linux】Nginx一个域名https一个地址配置多个项目【项目实战】

👨‍🎓博主简介 🏅CSDN博客专家   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入&#xff01…

【sgFileLink】自定义组件:基于el-link、el-icon标签构建文件超链接组件,支持垃圾桶删除、点击预览视频/音频/图片/PDF格式文件

sgFileLink源代码 <template><div :class"$options.name"><el-link click.stop"clickFile(data)"><img :src"getSrc(data)" /><span>{{ getFileNameAndSize(data) }}</span></el-link><el-linkcl…

如何用VScode恢复误删文件-linux

如果你用vscode远程在服务器上办公&#xff0c;有一天你用了&#xff1a; rm -rf *然后你发现你的文件不见了&#xff0c;不要着急。 这种方法只适用于不多的几个文件。 这个时候你要做的是&#xff0c;查看右侧的1&#xff1a; 从1里面查找你删除的文件&#xff0c;然后点…