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

CesiumJS 实战:打造动态呼吸脉冲围栏(含发光线与闪烁点)

在三维地理可视化项目中电子围栏Geo-fence是一个常见需求。但静态围栏缺乏视觉冲击力。本文将带你使用CesiumJS构建一个带呼吸脉冲效果的动态围栏系统包含墙体呼吸动画底部发光轮廓线✨顶部闪烁警示点并提供完整可复用代码适用于安防、区域监控、智慧城市等场景。 技术栈说明技术用途Cesium.WallGeometryPrimitive构建墙体几何体支持自定义 Shader 动画PolylineGlowMaterialProperty实现底部发光线条Entity APICallbackProperty SVG 图标实现顶部动态闪烁点自定义 GLSL 材质实现呼吸脉冲效果为什么混合使用 Primitive 和 EntityPrimitive适合高性能、自定义 Shader 的几何体如墙体Entity适合简单图形、内置材质如发光线条、图标 最终效果预览组件效果描述墙体深蓝色半透明墙体亮度和透明度随时间正弦波动呼吸感底部线蓝色辉光线条宽度 5px柔和发光顶部点红色圆形 SVG 图标每个点独立闪烁相位不同✅ 支持任意多边形围栏只需传入坐标数组 核心代码详解1️⃣ 定义围栏坐标与高度首先我们定义围栏的角点坐标和高度。这些数据决定了围栏的位置和大小。// 定义围栏的四个角点按顺序连接形成闭合多边形 const fencePositions [ { lon: 116.397194, lat: 39.909768 },// 第一个角点左下 { lon: 116.397194, lat: 39.900768 },// 第二个角点右下 { lon: 116.392194, lat: 39.900768 },// 第三个角点右上 { lon: 116.392194, lat: 39.909768 }// 第四个角点左上 ]; // 设置围栏墙体的垂直高度单位米 const fenceHeight 60.0;⚠️ 注意最后一个点会自动连接到第一个点形成闭环。2️⃣ 呼吸脉冲材质GLSL Shader这是整个效果的核心我们通过自定义 GLSL 片元着色器实现墙体的呼吸动画。// Cesium 自定义材质入口函数必须命名为 czm_getMaterial czm_material czm_getMaterial(czm_materialInput materialInput) { // 初始化一个默认材质结构体 czm_material material czm_getDefaultMaterial(materialInput); // 获取当前帧号并乘以时间系数控制动画速度值越小越慢 float time czm_frameNumber * 0.01; // 生成 [0, 1] 范围内的正弦波动值模拟“呼吸”节奏 float pulse 0.5 0.5 * sin(time); // 定义基础颜色深蓝色R0, G0.6, B1.0 vec3 baseColor vec3(0.0, 0.6, 1.0); // 透明度随 pulse 波动最小 0.3最大 0.9避免完全透明或不透明 float alpha 0.3 0.6 * pulse; // 设置漫反射颜色物体主色 material.diffuse baseColor; // 设置透明度需配合 ALPHA_BLEND 才生效 material.alpha alpha; // 设置自发光强度随 pulse 增强最大为原色的 1.8 倍增强视觉冲击 material.emission baseColor * pulse * 1.8; // 返回最终计算出的材质 return material; }参数作用可调范围0.01动画速度越小越慢0.3 0.6 * pulse透明度范围[0.3, 0.9]pulse * 1.8发光强度越大越亮3️⃣ 构建墙体使用 Primitive为了高性能渲染我们使用Primitive而非Entity来构建墙体。// 遍历每一条边从第 i 个点到第 i1 个点 for (let i 0; i fencePositions.length; i) { // 获取当前边的起点 const start fencePositions[i]; // 获取当前边的终点% 实现闭环最后一个点连回第一个点 const end fencePositions[(i 1) % fencePositions.length]; // 创建墙体几何体WallGeometry 自动拉伸成垂直面 const wallGeometry new Cesium.WallGeometry({ // 将两个经纬度点转换为笛卡尔坐标数组 positions: Cesium.Cartesian3.fromDegreesArray([ start.lon, start.lat, // 起点经度、纬度 end.lon, end.lat // 终点经度、纬度 ]), // 设置墙体顶部高度两个顶点高度相同 maximumHeights: [fenceHeight, fenceHeight], // 设置墙体底部高度贴地 minimumHeights: [0, 0], // 指定顶点包含位置和纹理坐标供 Shader 使用 vertexFormat: Cesium.VertexFormat.POSITION_AND_ST }); // 将几何体包装为可渲染的实例 const wallInstance new Cesium.GeometryInstance({ geometry: wallGeometry }); // 创建底层渲染对象Primitive性能优于 Entity const wallPrimitive new Cesium.Primitive({ // 绑定几何实例 geometryInstances: wallInstance, // 设置外观使用自定义呼吸材质 appearance: new Cesium.MaterialAppearance({ material: createPulseMaterial(), // 应用前面定义的脉冲材质 closed: false, // 不闭合墙体是开放面 flat: false, // 启用光照计算非纯平色 renderState: { // 启用 Alpha 混合实现半透明效果 blending: Cesium.BlendingState.ALPHA_BLEND, // 启用深度测试正确处理遮挡关系 depthTest: { enabled: true }, // 不写入深度缓冲避免遮挡其他物体 depthMask: false } }) }); // 将墙体添加到 3D 场景中 cesiumViewer.scene.primitives.add(wallPrimitive); }✅WallGeometry天然支持“墙”结构无需手动 extrude。4️⃣ 底部发光轮廓线Entity API为了简化开发我们使用EntityAPI 添加底部发光线。// 构建闭合折线的坐标数组格式lon, lat, height, ... const bottomLine []; // 遍历所有围栏点添加到底部线高度设为 0.1 米略高于地面 fencePositions.forEach(p bottomLine.push(p.lon, p.lat, 0.1)); // 闭合多边形将第一个点再次添加到末尾 bottomLine.push(fencePositions[0].lon, fencePositions[0].lat, 0.1); // 使用 Entity API 添加发光折线开发更简单 cesiumViewer.entities.add({ polyline: { // 将经纬度高度数组转换为 3D 笛卡尔坐标 positions: Cesium.Cartesian3.fromDegreesArrayHeights(bottomLine), // 线条宽度像素 width: 5, // 使用 Cesium 内置的发光材质 material: new Cesium.PolylineGlowMaterialProperty({ glowPower: 0.4, // 发光强度值越大光晕越扩散 color: Cesium.Color.BLUE.withAlpha(0.7) // 蓝色70% 透明度 }) } });表格属性推荐值说明width3~8线条粗细glowPower0.2~0.6越大光晕越扩散5️⃣ 顶部闪烁警示点最后我们在每个角点上方添加一个动态闪烁的红色警示图标。// 定义一个红色圆形 SVG 图标Base64 编码内联使用无外部依赖 const imgBillboard data:image/svgxml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOCIgc3Ryb2tlPSIjZmY2NjAwIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9IiNmZjY2MDAiIGZpbGwtb3BhY2l0eT0iMC44Ii8Cjwvc3ZnPgo; // 为每个围栏角点创建一个闪烁的图标 fencePositions.forEach((pos, idx) { cesiumViewer.entities.add({ // 设置图标位置在围栏顶部上方 5 米处 position: Cesium.Cartesian3.fromDegrees(pos.lon, pos.lat, fenceHeight 5), billboard: { image: imgBillboard, // 使用内联 SVG 图标 scale: 0.8, // 图标缩放比例 // 动态颜色每帧根据时间计算透明度 color: new Cesium.CallbackProperty(() { // 获取当前时间毫秒乘以系数控制闪烁速度 const t Date.now() * 0.003; // 计算透明度0.7 ~ 1.0 之间波动并加入相位偏移idx * 1.5 const intensity 0.7 0.3 * Math.sin(t idx * 1.5); // 返回红色透明度由 intensity 控制 return Cesium.Color.RED.withAlpha(intensity); }, false), // false 表示不缓存每帧重新计算 heightReference: Cesium.HeightReference.NONE // 使用绝对高度不贴地 } }); });✨ 每个点使用idx * 1.5实现错峰闪烁避免同步。 性能与兼容性对比方案渲染性能开发难度动画灵活性适用场景Primitive Custom Shader⭐⭐⭐⭐☆⭐⭐⭐☆⭐⭐⭐⭐⭐高性能、复杂动画Entity MaterialProperty⭐⭐⭐⭐⭐⭐⭐⭐快速原型、简单效果混合方案本文⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐推荐兼顾性能与开发效率 使用方式将上述逻辑封装为函数后使用非常简单// 1. 引入函数 import { loadPulseFence } from ./pulseFence.js; // 2. 初始化 Cesium Viewer const viewer new Cesium.Viewer(cesiumContainer); // 3. 调用函数加载呼吸围栏 loadPulseFence(viewer);✅ 支持多次调用绘制多个围栏。 自定义建议需求修改位置改变颜色修改baseColor和Cesium.Color调整高度修改fenceHeight改变闪烁频率调整Date.now() * 0.003中的系数增加更多点在fencePositions中添加坐标/** * 加载呼吸脉冲围栏效果墙体 底部发光 顶部闪烁点 * param {Cesium.Viewer} cesiumViewer - Cesium Viewer 实例 */ export const loadPulseFence (cesiumViewer) { // 定义围栏的四个角点坐标经纬度按顺时针或逆时针顺序排列 const fencePositions [ { lon: 116.397194, lat: 39.909768 }, { lon: 116.397194, lat: 39.900768 }, { lon: 116.392194, lat: 39.900768 }, { lon: 116.392194, lat: 39.909768 } ]; // 设置围栏墙体的高度单位米 const fenceHeight 60.0; /** * 创建呼吸脉冲材质用于墙体 * 使用自定义 GLSL Shader 实现正弦波动的透明度和自发光效果 * returns {Cesium.Material} 返回一个可复用的材质对象 */ const createPulseMaterial () { return new Cesium.Material({ // 定义材质的 fabric织物结构 fabric: { // 自定义材质类型名称任意命名用于内部识别 type: PulseFenceMaterial, // GLSL 片元着色器源码核心动画逻辑 source: // Cesium 内置函数根据输入生成默认材质 czm_material czm_getMaterial(czm_materialInput materialInput) { // 初始化一个默认材质 czm_material material czm_getDefaultMaterial(materialInput); // 获取当前帧号并乘以系数控制动画速度0.01 较慢 float time czm_frameNumber * 0.01; // 生成 [0, 1] 范围内的正弦波动值模拟“呼吸”节奏 float pulse 0.5 0.5 * sin(time); // 定义基础颜色深蓝色 (R0, G0.6, B1.0) vec3 baseColor vec3(0.0, 0.6, 1.0); // 透明度随 pulse 波动范围 [0.3, 0.9] float alpha 0.3 0.6 * pulse; // 设置漫反射颜色主色 material.diffuse baseColor; // 设置透明度必须配合 blending 才生效 material.alpha alpha; // 设置自发光强度随 pulse 增强最大为 baseColor * 1.8 material.emission baseColor * pulse * 1.8; // 返回最终材质 return material; } }, // 启用半透明渲染必须为 true否则 alpha 无效 translucent: true }); }; // 第一部分构建围栏墙体使用 Primitive 高性能渲染 // 遍历每个边从点 i 到点 i1 for (let i 0; i fencePositions.length; i) { // 获取当前起点 const start fencePositions[i]; // 获取下一个终点取模实现闭环最后一个点连回第一个点 const end fencePositions[(i 1) % fencePositions.length]; // 创建墙体几何体WallGeometry 天然支持垂直拉伸 const wallGeometry new Cesium.WallGeometry({ // 将经纬度数组转换为笛卡尔坐标数组格式[lon1, lat1, lon2, lat2] positions: Cesium.Cartesian3.fromDegreesArray([ start.lon, start.lat, end.lon, end.lat ]), // 设置每个顶点的最大高度墙体顶部高度 maximumHeights: [fenceHeight, fenceHeight], // 设置每个顶点的最小高度墙体底部高度0 表示贴地 minimumHeights: [0, 0], // 指定顶点属性格式包含位置和纹理坐标ST供 Shader 使用 vertexFormat: Cesium.VertexFormat.POSITION_AND_ST }); // 将几何体包装为 GeometryInstancePrimitive 的基本单元 const wallInstance new Cesium.GeometryInstance({ geometry: wallGeometry }); // 创建 Primitive底层渲染对象性能优于 Entity const wallPrimitive new Cesium.Primitive({ // 绑定几何实例 geometryInstances: wallInstance, // 设置外观使用自定义材质 appearance: new Cesium.MaterialAppearance({ // 应用呼吸脉冲材质 material: createPulseMaterial(), // 不闭合墙体是开放面 closed: false, // 使用 Phong 光照false 表示启用光照计算 flat: false, // 渲染状态配置 renderState: { // 启用 Alpha 混合实现半透明 blending: Cesium.BlendingState.ALPHA_BLEND, // 启用深度测试正确处理前后遮挡 depthTest: { enabled: true }, // 不写入深度缓冲避免遮挡其他物体 depthMask: false } }) }); // 将墙体添加到场景中 cesiumViewer.scene.primitives.add(wallPrimitive); } // 第二部分添加底部发光轮廓线使用 Entity 简化开发 // 构建闭合的折线坐标数组格式[lon1, lat1, height1, lon2, lat2, height2, ...] const bottomLine []; // 遍历所有围栏点添加到底部线 fencePositions.forEach(p bottomLine.push(p.lon, p.lat, 0.1)); // 闭合将第一个点再次添加到末尾 bottomLine.push(fencePositions[0].lon, fencePositions[0].lat, 0.1); // 使用 Entity API 添加发光折线 cesiumViewer.entities.add({ polyline: { // 将经纬度高度数组转换为笛卡尔坐标 positions: Cesium.Cartesian3.fromDegreesArrayHeights(bottomLine), // 线条宽度像素 width: 5, // 使用内置的发光材质 material: new Cesium.PolylineGlowMaterialProperty({ // 发光强度0.0~1.0值越大光晕越扩散 glowPower: 0.4, // 发光颜色蓝色带 70% 透明度 color: Cesium.Color.BLUE.withAlpha(0.7) }) } }); // 第三部分添加顶部闪烁警示点使用 SVG 图标 动态颜色 // 定义一个红色圆形 SVG 图标Base64 编码避免外部依赖 const imgBillboard data:image/svgxml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOCIgc3Ryb2tlPSIjZmY2NjAwIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9IiNmZjY2MDAiIGZpbGwtb3BhY2l0eT0iMC44Ii8Cjwvc3ZnPgo; // 为每个围栏角点添加一个闪烁的 billboard图标 fencePositions.forEach((pos, idx) { cesiumViewer.entities.add({ // 设置图标位置在围栏顶部上方 5 米处 position: Cesium.Cartesian3.fromDegrees(pos.lon, pos.lat, fenceHeight 5), billboard: { // 使用内联 SVG 图标 image: imgBillboard, // 图标缩放比例 scale: 0.8, // 动态颜色使用 CallbackProperty 实现每帧更新 color: new Cesium.CallbackProperty(() { // 获取当前时间毫秒乘以系数控制闪烁速度 const t Date.now() * 0.003; // 计算透明度0.7 ~ 1.0 之间波动并加入相位偏移idx * 1.5使各点错峰闪烁 const intensity 0.7 0.3 * Math.sin(t idx * 1.5); // 返回红色透明度由 intensity 控制 return Cesium.Color.RED.withAlpha(intensity); }, false), // false 表示不缓存结果每帧都重新计算 // 高度参考NONE 表示使用绝对高度不贴地 heightReference: Cesium.HeightReference.NONE } }); }); // 打印日志确认加载完成 console.log(【呼吸脉冲围栏】加载完成Primitive 版本); };

相关文章:

CesiumJS 实战:打造动态呼吸脉冲围栏(含发光线与闪烁点)

在三维地理可视化项目中,电子围栏(Geo-fence) 是一个常见需求。但静态围栏缺乏视觉冲击力。本文将带你使用 CesiumJS 构建一个 带呼吸脉冲效果的动态围栏系统,包含:🌊 墙体呼吸动画💡 底部发光轮…...

OpenClaw技能市场挖掘:QwQ-32B支持的5个实用自动化插件

OpenClaw技能市场挖掘:QwQ-32B支持的5个实用自动化插件 1. 为什么需要关注OpenClaw技能市场? 第一次接触OpenClaw时,我被它"本地化AI助手"的定位吸引,但真正让我感到惊艳的是它的技能市场(ClawHub&#xf…...

大模型微调新选择:Llama Factory可视化工具使用体验分享

大模型微调新选择:Llama Factory可视化工具使用体验分享 1. 工具概览 Llama Factory是一款专为大模型微调设计的可视化工具,它让原本复杂的模型训练过程变得简单直观。这个工具最大的特点就是"零代码"——用户不需要编写任何代码就能完成从数…...

性能优化工具矩阵:从系统瓶颈到效率提升的全栈解决方案

性能优化工具矩阵:从系统瓶颈到效率提升的全栈解决方案 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atla…...

网盘资源搜索工具使用体验分享

最近在找一些学习资料和影视资源时,试用了几个网盘搜索网站,记录下使用体验,希望能帮到有同样需求的朋友。 竹云盘搜(zhuyunso.top) 这个站给我的第一印象就是简洁。打开页面就一个搜索框,没有任何弹窗广…...

6-2一帮一

“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学…...

WSL2新手必看:VcXsrv配置xfce4图形界面的5个常见错误及解决方法

WSL2图形化实战:避开VcXsrv与xfce4配置的五大深坑 第一次在WSL2中看到xfce4桌面环境成功加载时的兴奋,很快被接踵而至的报错信息冲淡——这可能是许多开发者的真实写照。作为连接Windows与Linux生态的桥梁,WSL2的图形界面配置过程中暗藏着不…...

ZLMediaKit编译webrtc:从依赖版本到端口映射的实战避坑指南

1. 环境准备:云服务器选型与基础配置 在Autodl这类云服务器上编译ZLMediaKit,首先要解决的是环境适配问题。我实测过阿里云、腾讯云等多种云服务商,发现Autodl这类提供GPU实例的平台有个共性特点:默认环境干净到近乎"裸奔&qu…...

winServer系统重:Windows IIS服务器安装

一、打开服务器管理器 Windows搜索“服务器管理器”,直接进入。找不到“服务器管理器”要怎么办呢? 先不要慌,参考我下一篇文章即可。https://blog.csdn.net/Leewayah/article/details/131683594 ​ 二、点击右上角的“管理” ​ 三、点击…...

【边缘AI部署生死线】:为什么你的C节点总在OTA升级时崩溃?——静态链接剥离、符号表裁剪与段重定向三重编译加固术

第一章:C语言边缘计算节点轻量化编译方法概论在资源受限的边缘计算场景中,C语言因其零成本抽象、内存可控性及广泛工具链支持,成为构建轻量级节点程序的首选。然而,传统编译流程常引入冗余符号、未使用库函数及调试信息&#xff0…...

软件测试基础5天学习总结(思维导图)

...

MoE 架构:给 AI 找 8 个 “专属专家“ 打工,效率直接拉满!

MoE(混合专家模型)是一种高效的大模型架构设计范式,核心思想是用多个"专家"模型分工处理不同类型的输入,再通过门控网络整合结果,既能提升模型容量,又能控制计算成本。下面从基础概念、核心原理、…...

REX-UniNLU与Python爬虫结合:零样本语义分析实战指南

REX-UniNLU与Python爬虫结合:零样本语义分析实战指南 1. 场景引入:当爬虫遇到语义理解 电商公司的运营小张最近遇到了一个头疼的问题:他们用爬虫收集了上万条竞品评论数据,但面对海量的文本信息,手动分析变得几乎不可…...

漫画脸描述生成效果展示:时间维度角色演变(‘三年后’‘转生后’‘黑化后’设定生成)

漫画脸描述生成效果展示:时间维度角色演变 基于Qwen3-32B的二次元角色设计工具,让角色随"时间"生动演变 1. 引言:当漫画角色穿越时间线 你有没有想过,自己创作的漫画角色在"三年后"会变成什么模样&#xff1…...

Unity中InputField光标位置精准控制与焦点保持技巧

1. 为什么需要精确控制InputField光标位置? 在Unity开发中,InputField是最常用的UI组件之一,特别是需要用户输入文本的场景。但很多开发者都遇到过这样的困扰:当我们需要通过代码动态修改InputField内容时,光标位置经常…...

为什么你的PADS Layout泪滴添加不成功?可能是这5个细节没注意

为什么你的PADS Layout泪滴添加总失败?5个工程师不愿透露的细节 在PCB设计领域,泪滴(Teardrop)是连接焊盘与走线之间的过渡结构,它能有效增强机械强度、改善信号完整性和提高生产工艺良率。但许多设计师在使用PADS Lay…...

电动汽车时代必看:用新版APQP第三版搞定电池供应链质量管控

电动汽车时代必看:用新版APQP第三版搞定电池供应链质量管控 当特斯拉的4680电池量产遇到瓶颈时,工程师们发现传统质量控制方法在新型电池体系面前显得力不从心。这正是新能源汽车行业面临的典型挑战——当技术迭代速度远超标准更新周期,质量管…...

LFM2.5-1.2B-Thinking模型迁移学习实战:领域适配指南

LFM2.5-1.2B-Thinking模型迁移学习实战:领域适配指南 1. 引言 你是不是曾经遇到过这样的情况:好不容易找到一个性能不错的AI模型,但在自己的专业领域使用时,效果总是不尽如人意?比如用通用模型来处理医疗报告、法律文…...

Yi-Coder-1.5B企业级部署方案:Kubernetes集群调度优化

Yi-Coder-1.5B企业级部署方案:Kubernetes集群调度优化 1. 引言 在当今AI应用快速发展的环境中,如何高效部署和管理代码生成模型成为许多企业面临的实际挑战。Yi-Coder-1.5B作为一个参数仅15亿但性能出色的代码生成模型,为企业提供了轻量级但…...

Beta-VAE的隐藏玩法:除了图像解纠缠,还能在推荐系统里做什么?

Beta-VAE在推荐系统中的隐藏玩法:从图像解纠缠到用户兴趣因子分离 想象一下,你正在为一家大型流媒体平台优化推荐系统。传统协同过滤算法给出的推荐结果准确率不错,但总感觉缺少了点什么——当用户同时喜欢科幻电影和浪漫喜剧时,系…...

ChatGLM-6B模型并行推理:多GPU加速方案

ChatGLM-6B模型并行推理:多GPU加速方案 1. 引言 如果你尝试过在单张GPU上运行ChatGLM-6B模型,可能会遇到显存不足或者推理速度不够理想的情况。随着对话长度的增加,显存占用会不断增长,导致性能下降甚至无法运行。这时候&#x…...

Carla自动驾驶模拟器Python实战:从环境搭建到第一个自动驾驶Demo(避坑指南)

Carla自动驾驶模拟器Python实战:从零搭建到避障Demo的完整避坑指南 第一次打开Carla模拟器时,我被那座精致的虚拟城市震撼了——阳光在建筑间投下动态阴影,雨滴在挡风玻璃上留下逼真痕迹,甚至连轮胎与不同路面的摩擦声都清晰可辨。…...

BM25 向量检索 混合检索

...

Browser MCP智能快照技术解析:构建高效可扩展的浏览器自动化状态管理

Browser MCP智能快照技术解析:构建高效可扩展的浏览器自动化状态管理 【免费下载链接】mcp Browser MCP is a Model Context Provider (MCP) server that allows AI applications to control your browser 项目地址: https://gitcode.com/gh_mirrors/mcp16/mcp …...

成本会计看BOM:从80g钢材到精密部件,9层工艺如何逐级累加成本

说起来,做工厂成本会计的都懂这句话:BOM不准,一切白干。但今天我要说的不是简单的物料清单,而是工业制造中的工艺BOM。特别是多工序、多层级的精密制造企业,BOM不仅是材料清单,更是从原料到成品的完整加工路径,也是成本核算最核心的数据基础。一、为什么要搞懂工艺BOM?前段时间…...

2026 AI 工业化元年:从“算力霸权”向“链路稳定性”的权力移交

进入 2026 年,大模型行业的竞争维度发生了根本性偏移。如果说 2024 年是参数规模的军备竞赛,那么 2026 年则是接入链路的工程化内战。当企业不再满足于实验室里的 Demo,而是试图通过 OpenClaw 等框架构建能够自主执行任务的智能体&#xff08…...

Phi-3 Forest Laboratory 自动化办公:Matlab脚本生成与数据分析思路辅助

Phi-3 Forest Laboratory 自动化办公:Matlab脚本生成与数据分析思路辅助 如果你经常和Matlab打交道,不管是做信号处理、图像分析还是控制系统仿真,肯定有过这样的经历:面对一个数据分析需求,脑子里有大概的想法&#…...

《告别“信号迷宫”:沃虎ChipLAN如何为工业4.0设备打造“直连高速路”》

在工业4.0设备向小型化、高密度、高速率演进的浪潮中,传统环形网络变压器正面临严峻挑战。其固有的绕线工艺、体积限制以及难以精确控制的寄生参数(如分布电容和漏感),在高频信号传输中极易形成“信号迷宫”,导致插入损…...

残差块(Residual Block)在深度神经网络中的关键作用与实现细节

1. 残差块的定义与核心思想 第一次听说残差块这个概念时,我也是一头雾水。直到在项目中实际使用ResNet模型后,才真正理解它的精妙之处。简单来说,残差块就像是给神经网络装上了"记忆芯片",让信息可以跳过某些层直接传递…...

向量相似度计算原理解析

向量相似度怎么算?一文讲透! 在今天的 AI 世界里,「向量」成了我们理解语义、匹配兴趣、检索信息的核心工具。不理解这个就不能称之为合格的AI工程师。 但问题来了:两个向量到底有多像? 这可不是靠肉眼比划能解决的——…...