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

Babylon.js学习之路《六、材质与纹理:为模型赋予真实的表面效果》

在这里插入图片描述

文章目录

  • 1. 引言:材质与纹理的重要性
    • 1.1 材质与纹理的核心作用
  • 2. 基础材质:StandardMaterial
    • 2.1 材质属性详解
    • 2.2 实战:创建金属材质
  • 3. 纹理贴图:从基础到高级
    • 3.1 基础纹理映射
    • 3.2 多纹理混合技术
  • 4. 高级材质:PBRMaterial
    • 4.1 PBR 材质基础
    • 4.2 PBR 材质实战:生锈金属
  • 5. 动态材质与自定义着色器
    • 5.1 动态修改材质属性
    • 5.2 自定义 GLSL 着色器
  • 6. 实战任务
    • 任务 1:创建动态天气墙面
    • 任务 2:可交互的材质编辑器
  • 7. 性能优化与常见问题
    • 7.1 纹理优化技巧
    • 7.2 常见问题解答
  • 7. 总结与下一章预告
    • 7.1 关键知识点回顾
    • 7.2 下一章预告


1. 引言:材质与纹理的重要性

  • 上一章详解灯光与阴影,点光源、方向光、聚光灯的设置与阴影优化技巧。
  • 这一章详细介绍一下Babylon中,材质与纹理的相关知识,包含基础材质、PBR材质、着色器等。
  • 材质与纹理的好坏,决定着场景的显示效果,更决定着使用者的体验。

1.1 材质与纹理的核心作用

  • 核心作用:材质定义物体的视觉属性(颜色、反光、粗糙度),纹理提供表面细节(图案、凹凸、磨损)。
  • 案例对比
    • 无材质:物体呈现单一颜色,缺乏真实感。
    • 基础材质:通过颜色和反光增强立体感。
    • 纹理+材质:表面细节丰富(如木纹、锈迹、布料纤维)。

2. 基础材质:StandardMaterial

2.1 材质属性详解

如图,是一个没有材质的地面,下面为这个地形添加材质
在这里插入图片描述

  • 关键属性
  // 地面var ground = BABYLON.Mesh.CreateGroundFromHeightMap("ground","/textures/heightMap.png",250,250,200,0,50, scene, false);// 地面材质var groundMaterial = new BABYLON.StandardMaterial("ground", scene);// 地面材质贴图groundMaterial.diffuseTexture = new BABYLON.Texture("/textures/ground.jpg", scene);// 横向\纵向重复次数groundMaterial.diffuseTexture.uScale = 6;groundMaterial.diffuseTexture.vScale = 6;// 漫反射颜色(基础色)groundMaterial.diffuseColor = new BABYLON.Color3(1, 1, 1);// 高光颜色groundMaterial.specularColor = new BABYLON.Color3(0, 0, 0);// 自发光颜色(如霓虹灯)groundMaterial.emissiveColor = new BABYLON.Color3(0, 0, 0);// 环境光影响颜色groundMaterial.ambientColor = new BABYLON.Color3(1, 1, 1);// 透明度(0 ~ 1)groundMaterial.alpha = 1;ground.position.y = -2.05;ground.material = groundMaterial;
  • 光泽与粗糙度
  groundMaterial.specularPower = 64; // 高光聚焦程度(值越大,光斑越小)groundMaterial.roughness = 0.3;     // 表面粗糙度(0光滑,1粗糙)

在这里插入图片描述
经过几行代码的处理,一个沙丘形状的地形就展现出来。

2.2 实战:创建金属材质

在这里插入图片描述

  • 目标:模拟抛光金属表面(高反光、锐利高光)。
  • 代码示例
  const metalMat = new BABYLON.StandardMaterial("metalMat", scene);metalMat.diffuseColor = new BABYLON.Color3(0.8, 0.8, 0.8); // 银灰色metalMat.specularColor = new BABYLON.Color3(1, 1, 1);      // 白色高光metalMat.specularPower = 256; // 高光聚焦metalMat.emissiveColor = new BABYLON.Color3(0.1, 0.1, 0.1); // 轻微自发光sphere.material = metalMat;

3. 纹理贴图:从基础到高级

3.1 基础纹理映射

在这里插入图片描述

  • 加载纹理贴图
  const diffuseTexture = new BABYLON.Texture("textures/wood.jpg", // 纹理路径scene);material.diffuseTexture = diffuseTexture; // 应用漫反射贴图
  • 纹理参数调整
  diffuseTexture.uScale = 2; // 横向重复次数diffuseTexture.vScale = 2; // 纵向重复次数diffuseTexture.wrapU = BABYLON.Texture.WRAP_REPEAT; // 横向重复模式diffuseTexture.wrapV = BABYLON.Texture.WRAP_MIRROR; // 纵向镜像重复

3.2 多纹理混合技术

  • 法线贴图(Normal Map):模拟表面凹凸细节。在这里插入图片描述
  const normalTexture = new BABYLON.Texture("textures/brick_normal.jpg", scene);material.bumpTexture = normalTexture;material.bumpTexture.level = 0.5; // 凹凸强度
  • 高光贴图(Specular Map):控制表面反光区域。在这里插入图片描述
  const specularTexture = new BABYLON.Texture("textures/brick_specular.jpg", scene);material.specularTexture = specularTexture;
  • 环境光遮蔽贴图(AO Map):增强阴影细节。在这里插入图片描述
  const aoTexture = new BABYLON.Texture("textures/brick_ao.jpg", scene);material.ambientTexture = aoTexture;

4. 高级材质:PBRMaterial

4.1 PBR 材质基础

在这里插入图片描述

  • PBR 核心原理:基于物理的渲染(金属度、粗糙度、环境反射)。
  • 代码示例
  const pbrMat = new BABYLON.PBRMaterial("pbrMat", scene);pbrMat.albedoTexture = new BABYLON.Texture("textures/metal_albedo.png", scene);pbrMat.metallic = 0.9;      // 金属度(0非金属,1金属)pbrMat.roughness = 0.2;      // 粗糙度(0光滑,1粗糙)pbrMat.environmentTexture = BABYLON.CubeTexture.CreateFromPrefilteredData("textures/env.dds", scene); // 环境反射贴图

4.2 PBR 材质实战:生锈金属

在这里插入图片描述

  • 纹理组合
  pbrMat.albedoTexture = new BABYLON.Texture("textures/rusted_iron_albedo.png", scene);pbrMat.metallicTexture = new BABYLON.Texture("textures/rusted_iron_metallic.png", scene);pbrMat.roughnessTexture = new BABYLON.Texture("textures/rusted_iron_roughness.png", scene);pbrMat.normalTexture = new BABYLON.Texture("textures/rusted_iron_normal.png", scene);pbrMat.ambientTexture = new BABYLON.Texture("textures/rusted_iron_ao.png", scene);

5. 动态材质与自定义着色器

5.1 动态修改材质属性

请添加图片描述

  • 颜色渐变效果
  let time = 0;scene.registerBeforeRender(() => {material.diffuseColor = new BABYLON.Color3(Math.sin(time) * 0.5 + 0.5, // R通道Math.cos(time) * 0.5 + 0.5, // G通道0.5                         // B通道);time += 0.02;});

5.2 自定义 GLSL 着色器

  • 着色器材质(ShaderMaterial)
  const shaderMat = new BABYLON.ShaderMaterial("shaderMat",scene,"customShader", // 着色器名称(需提前定义){attributes: ["position", "uv"],uniforms: ["worldViewProjection", "time"]});shaderMat.setFloat("time", 0);scene.registerBeforeRender(() => {shaderMat.setFloat("time", performance.now() / 1000);});

6. 实战任务

任务 1:创建动态天气墙面

  • 目标:墙面材质随天气变化(干燥→湿润→结冰)。
  • 实现步骤
    1. 干燥状态:使用普通砖墙纹理。
    2. 湿润效果:增加法线贴图强度,提升高光。
    3. 结冰效果:叠加透明冰层纹理,调整粗糙度为0.1。
  let weather = "dry"; // 控制天气状态function updateMaterial() {switch (weather) {case "wet":material.bumpTexture.level = 0.8;material.roughness = 0.3;break;case "ice":material.roughness = 0.1;material.diffuseTexture = new BABYLON.Texture("textures/ice_overlay.png", scene);break;}}

任务 2:可交互的材质编辑器

  • 目标:通过 GUI 控件实时调整材质参数。
  • 代码示例
  const advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI("UI");const panel = new BABYLON.GUI.StackPanel();advancedTexture.addControl(panel);// 粗糙度滑动条const roughnessSlider = new BABYLON.GUI.Slider();roughnessSlider.minimum = 0;roughnessSlider.maximum = 1;roughnessSlider.value = pbrMat.roughness;roughnessSlider.onValueChangedObservable.add((value) => {pbrMat.roughness = value;});panel.addControl(roughnessSlider);

7. 性能优化与常见问题

7.1 纹理优化技巧

  • 纹理压缩:使用 .ktx.basis 格式减少加载时间。
  • Mipmap 配置
  const texture = new BABYLON.Texture("texture.jpg", scene, {generateMipMaps: true, // 启用 MipmapsamplingMode: BABYLON.Texture.TRILINEAR_SAMPLINGMODE // 三线性过滤});

7.2 常见问题解答

  • 问题 1:纹理拉伸或错位
    • 解决方案:调整模型的 UV 映射,或在代码中设置 uScale/vScale
  • 问题 2:透明材质显示异常
    • 解决方案:启用透明度混合并设置渲染顺序:
      material.alpha = 0.5;
      material.backFaceCulling = false; // 禁用背面剔除
      material.needDepthPrePass = true; // 深度预渲染
      
  • 问题 3:PBR 材质过暗
    • 解决方案:添加环境光或 HDR 天空盒:
    scene.environmentTexture = BABYLON.CubeTexture.CreateFromPrefilteredData("textures/environment.dds", scene);

7. 总结与下一章预告

7.1 关键知识点回顾

  • 标准材质与 PBR 材质配置、多纹理混合、动态材质控制。
  • 扩展方向:
    • 程序化纹理生成:通过代码动态生成纹理图案。
    • 后处理链:结合泛光(Bloom)、景深(Depth of Field)提升画面效果。

7.2 下一章预告

  • 《用户交互:鼠标点击、拖拽与射线检测》:实现物体点击事件、拖拽操作与射线碰撞检测。

相关文章:

Babylon.js学习之路《六、材质与纹理:为模型赋予真实的表面效果》

文章目录 1. 引言:材质与纹理的重要性1.1 材质与纹理的核心作用 2. 基础材质:StandardMaterial2.1 材质属性详解2.2 实战:创建金属材质 3. 纹理贴图:从基础到高级3.1 基础纹理映射3.2 多纹理混合技术 4. 高级材质:PBRM…...

飞致云旗下开源项目GitHub Star总数突破150,000个

2025年5月19日,中国领先的开源软件提供商飞致云宣布,其旗下开源项目在代码托管平台GitHub上所获得的Star总数已经超过150,000个。基于在开源领域的长期耕耘和探索,飞致云的开源势能不断增强,获得第一个五万GitHub Star用时89个月&…...

萌新联赛第(三)场

C题 这道题用暴力去写想都不要想,一定超时,于是我们需要优化,下面是思路过程: 如图,本题只需找到x的因数个数和(n-x)的因数个数,这两个相乘,得到的就是对于这个x来说组合的个数,且x…...

cplex12.9 安装教程以及下载

cplex 感觉不是很好找,尤其是教育版,我这里提供一个版本,在下面的图可以看到,不仅可以配置matlab,也可以配置vs,现在拿vs2017来测试一下,具体文件的文件有需要的可以复制下面的链接获取 我用网盘分享了「c…...

Pycharm-jupyternotebook不渲染

解决方案: https://youtrack.jetbrains.com/issue/PY-54244 import plotly.io as pio pio.renderers.default "vscode"...

layui 介绍

layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。其风格简约轻盈,而组件优雅丰盈,从源代码到使用…...

大数据相关操作

大数据相关操作 一、环境配置 1、修改主机名 #修改主机名 hostnamectl set-hostname master2、固定IP地址 # 进入修改 sudo vim /etc/netplan/01-network-manager-all.yaml# 修改配置文件 # Let NetworkManager manage all devices on this system network:version: 2rend…...

谷歌宣布推出 Android 的新安全功能,以防止诈骗和盗窃

在上周二的 Android Show 上,也就是Google I/O 开发者大会之前,谷歌宣布了 Android 的全新安全和隐私功能。这些新功能包括对通话、屏幕共享、消息、设备访问和系统级权限的全新保护。谷歌希望通过这些功能保护用户免遭诈骗,在设备被盗或被攻…...

WSL虚拟机整体迁移教程(如何将WSL从C盘迁移到其他盘)

文章目录 WSL虚拟机迁移教程一、查看当前主机的子系统二、导出 WSL 子系统三、将打包好的文件发送给另一个人四、在另一台机器导入并恢复子系统五、附加命令六、注意事项和导出文件信息6.1 注意事项6.2 导出文件信息使用 wsl --export 命令导出整个 WSL 子系统时,它…...

汽车区域电子电气架构(Zonal E/E)的统一

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界…...

开源一个记账软件,支持docker一键部署

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 开源一个记账软件,支持docker一键部署 项目简介功能特性技术栈快速开始环境要求运行步…...

新能源汽车焊接智能节气阀

在新能源汽车产业迅猛发展的浪潮中,制造工艺的优劣直接关系到车辆的性能、安全与市场竞争力。焊接,作为新能源汽车生产流程里的关键一环,无论是构建车身框架,还是连接电池模组,其质量的好坏都起着决定性作用。而在焊接…...

React 第四十四节Router中 usefetcher的使用详解及注意事项

前言 useFetcher 是 React Router 中一个强大的钩子,用于在不触发页面导航的情况下执行数据加载(GET)或提交(POST)。 一、useFetcher 应用场景: 1、后台数据预加载(如鼠标悬停时加载数据&…...

33、魔法防御术——React 19 安全攻防实战

一、奥术护盾(基础防御) 1. 敏感数据加密术 // cryptoUtils.js - 数据加密工具export const encrypt (data) > {// 实际项目应使用Web Crypto API或crypto-jsreturn btoa(encodeURIComponent(data));};​export const decrypt (data) > {try {…...

NVM 安装与配置指南

简介 Node Version Manager(NVM)是一个常用的 Node.js 版本管理工具,可用于在开发过程中方便地切换不同版本的 Node.js。通过 NVM,用户可以根据项目需求选择不同的 Node.js 版本,而无需手动安装和卸载多个版本的 Node…...

SpringMVC04所有注解按照使用位置划分| 按照使用层级划分(业务层、视图层、控制层)

目录 一、所有注解按照使用位置划分(类、方法、参数) 1. 类级别注解 2. 方法级别注解 3. 参数级别注解 4. 字段/返回值注解 二、按照使用层级划分(业务层、视图层、控制层) 1、控制层(Controller Layer&#x…...

【数据库】-1 mysql 的安装

文章目录 1、mysql数据库1.1 mysql数据库的简要介绍 2、mysql数据库的安装2.1 centos安装2.2 ubuntu安装 1、mysql数据库 1.1 mysql数据库的简要介绍 MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前…...

MySQL与Redis一致性问题分析

一、一致性问题概述 1.1 什么是一致性问题? 在数据库-缓存架构中,当MySQL中的数据(最新值)与Redis缓存中的数据(缓存旧值)出现差异时,由于程序总是优先读取Redis缓存,就会导致应用…...

Xshell传输文件

新建文件 点击新建 完善主机地址 然后输入我们的远端服务器的SSH协议 一般的是这样的ssh -p 44562 rootregion-1.autodl.com 由于Xshell比较特殊我们输入ssh rootregion-1.autodl.com 44562这样的形式 然后输入服务器的密码即可...

怎样用 esProc 为大主子表关联提速

类似订单和明细表这样的主子表关联比较常见,在 SQL 中,这种关联用 JOIN 实现,在两个表都很大的情况下,常常出现计算速度非常慢的现象。 如果预先将主子表都按照主键有序存储,就可以使用归并算法实现关联。这种算法只需…...

打卡day31

文件的规范拆分和写法 知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 作业:尝试针对之前的心脏病项目,准备拆分的项目文件,思考下哪些部分可以未来复用。 导入依赖库 # 忽视警告 import warnings warn…...

编译原理的部分概念

解释程序:边解释边执行:不断读取源程序的语句,解释语句,读取此语句需要的数据,根据执行结果读取下一条语句,继续解释执行,直到返回结果。 编译程序:将源程序完整地转换成机器语言程…...

Java中字符串(String类)的常用方法

以下是Java中字符串(String类)的常用方法分类详解,包含核心方法说明和示例代码: 一、字符串基础信息 方法说明示例输出length()返回字符串长度"Hello".length()5isEmpty()判断字符串是否为空(长度是否为0&a…...

什么是 ERP,中国企业如何科学应用 ERP

中国企业在引入 ERP 系统过程中,常因盲目跟风大型企业选型、忽视自身业务适配性,导致系统功能过剩、实施成本高企、员工接受度低等问题,最终造成项目成功率不足 10%。因此,理性认知 ERP 的价值定位与本土化实施路径,成…...

使用SQLite Expert个人版VACUUM功能修复数据库

使用SQLite Expert个人版VACUUM功能修复数据库 一、SQLite Expert工具简介 SQLite Expert 是一款功能强大的SQLite数据库管理工具,分为免费的个人版(Personal Edition)和收费的专业版(Professional Edition)。其核心功…...

同源策略深度防御指南:CSP 高级应用与企业微信全场景适配(含 report-uri 实战)

一、CSP 核心指令权威解析与企业微信适配 内容安全策略(CSP)通过Content-Security-Policy响应头实现资源加载的细粒度控制,其核心指令与企业微信场景强相关: 1.1 frame-ancestors:iframe 嵌入源控制 权威规范&#…...

【AGI】大模型微调技术-四大微调框架

【AGI】大模型微调技术-四大微调框架 (1)微调基础概念介绍1.1 微调基本概念1.2 全量微调与高效微调1.3 模型微调的优劣势分析1.4 高效微调与LoRA、QLoRA (2)高效微调的应用场景(3)流微调工具介绍3.1 unslot…...

小白编程学习之巧解「消失的数字」

一、引言:一个看似简单的「找不同」问题 今天遇到一道有趣的算法题:给定一个含 n 个整数的数组 nums,其中每个元素都在 [1, n] 范围内,要求找出所有在 [1, n] 中但未出现在数组中的数字。 这让我想起小时候玩的「找错题」游戏 —…...

在 Git 中添加子模块(submodule)的详细步骤

在 Git 中添加子模块&#xff08;submodule&#xff09;的详细步骤如下&#xff1a; 1. 添加子模块 命令格式&#xff1a; git submodule add <仓库URL> [目标路径]仓库URL&#xff1a;子模块的 Git 仓库地址&#xff08;HTTP/SSH 均可&#xff09;。目标路径&#xff…...

瑞萨单片机笔记

1.CS for CC map文件中显示变量地址 Link Option->List->Output Symbol information 2.FDL库函数 pfdl_status_t R_FDL_Write(pfdl_u16 index, __near pfdl_u08* buffer, pfdl_u16 bytecount) pfdl_status_t R_FDL_Read(pfdl_u16 index, __near pfdl_u08* buffer, pfdl_…...

单片机复用功能重映射Remap功能

目录 一、查看“DS5319 stm32f10x中等密度mcu数据手册&#xff08;英文&#xff09;”手册 二、查看“RM0008 STM32F10xxx参考手册&#xff08;中文&#xff09;”手册 三、重映射&#xff08;Remap&#xff09;功能程序编写 自己学习过程中容易遗忘的知识点&#xff0c;记录…...

小白入门FPGA设计,如何快速学习?

很多刚入门的小伙伴&#xff0c;初次听说FPGA&#xff08;现场可编程门阵列&#xff09;&#xff0c;脑子里只有一个字&#xff1a;玄&#xff01; 什么“时序逻辑”“Verilog”“Vivado”&#xff0c;仿佛一夜之间掉进了电子黑魔法的深坑。 但真相是—— FPGA&#xff0c;其实…...

友思特应用 | LCD显示屏等玻璃行业的OCT检测应用

导读 光学相干层析成像(OCT)是一种非侵入式光学成像方法&#xff0c;提供微米尺度的空间分辨率&#xff0c;能够生成内部结构截面图像。自20世纪90年代初发明第一台OCT以来&#xff0c;它在眼科领域得到了广泛应用&#xff0c;并成为临床诊断的黄金标准之一。除了在生物医学领…...

Python的sys模块:系统交互的关键纽带

Python的sys模块&#xff1a;系统交互的关键纽带 对话实录 小白&#xff1a;&#xff08;挠头&#xff09;我知道 Python 能做很多事&#xff0c;可怎么让它和计算机系统‘交流’呢&#xff0c;比如获取系统信息、处理命令行参数&#xff1f; 专家&#xff1a;&#xff08;微…...

若依项目集成sentinel、seata和shardingSphere

集成组件包括MySQL分库分表及读写分离、seata以及Sentinel 若依项目文档连接 代码下载地址 需要结合ruoyi代码配合看&#xff0c;前提是熟悉基本代码结构&#xff0c;熟悉feign调用和基础网关配置等。 采用的版本信息 <java.version>1.8</java.version> <spr…...

张 推进对话式心理治疗:SOULSPEAK的聊天机器人

SOULSPEAK的聊天机器人 利用大语言模型(LLM)来提供低成本的心理治疗服务,旨在解决传统心理咨询在隐私、成本和可及性方面的不足。以下是核心内容的通俗解读: 1. 研究背景:传统心理治疗的困境 问题:全球心理健康问题日益严重(如焦虑、抑郁人数激增),但传统心理咨询受…...

java中的Filter使用详解

Filter&#xff08;过滤器&#xff09;是 Java Web 开发的核心组件之一&#xff0c;用于在请求到达 Servlet 或响应返回客户端之前进行拦截和处理。以下是其核心功能、使用方法和实际场景的详细解析&#xff1a; 一、Filter 的作用与原理 核心作用 Filter 充当请求与响应之间的…...

BERT 作为Transformer的Encoder 为什么采用可学习的位置编码

摘要 BERT 在位置编码上与原始 Transformer 论文中的 sin/cos 公式不同&#xff0c;选择了可学习&#xff08;learned&#xff09;的位置嵌入方案。本文将从 Transformer 原始位置编码选项入手&#xff0c;分析 BERT 选择 learned positional embeddings 的四大核心原因&#x…...

Vue百日学习计划Day43-45天详细计划-Gemini版

Day 43: Composable 函数基础与抽取简单逻辑 (~3 小时) 本日目标: 理解 Composable 函数的概念、优势&#xff0c;并学会如何将简单的、无状态的逻辑抽取为 Composable。所需资源: Vue 3 官方文档 (组合式函数): https://cn.vuejs.org/guide/reusability/composables.html 学…...

Kotlin 协程 (二)

Kotlin 协程提供了丰富的功能&#xff0c;能够高效地处理并发和异步任务。以下是对 Kotlin 协程中常见概念和功能的详细讲解&#xff0c;包括它们的定义、作用、使用场景以及最佳实践。 1. 协程核心概念 1.1 CoroutineScope 定义&#xff1a;CoroutineScope 是协程作用域的抽…...

Linux 下 rsync 工具详解与实用指南

Linux 下 rsync 工具详解与实用指南 一、什么是 rsync&#xff1f; rsync&#xff08;remote sync&#xff09;是 Linux/Unix 系统下常用的数据同步和备份工具。它可以高效地在本地与远程主机之间同步文件和目录&#xff0c;支持增量同步、断点续传、权限保留等功能&#xff…...

2025年医美行业报告60+份汇总解读 | 附 PDF 下载

原文链接&#xff1a;https://tecdat.cn/?p42122 医美行业在消费升级与技术迭代的双重驱动下&#xff0c;已从边缘市场逐步走向主流。数据显示&#xff0c;2024 年中国医美市场规模突破 3000 亿元&#xff0c;年复合增长率达 15%&#xff0c;但行业仍面临正品率不足、区域发展…...

汉得集星獭1.8.0正式发布,高效集成再赋能!

汉得企业级系统集成平台 &#xff08;中文名集星獭&#xff0c;英文名JeeStar&#xff09;1.8.0版本于2025年4月正式发布 。 集星獭是一款一站式多系统集成、多云集成、多端集成、多协议集成、多设备集成、数据集成、页面集成的全域集成解决方案产品。 此次发布主要聚焦于以下…...

一文深度解析:Pump 与 PumpSwap 的协议机制与技术差异

在 Solana 链上&#xff0c;Pump.fun 和其延伸产品 PumpSwap 构成了 meme coin 发行与流通的两大核心场景。从初期的游戏化发行模型&#xff0c;到后续的自动迁移与交易市场&#xff0c;Pump 系列协议正在推动 meme coin 从“爆发性投机”走向“协议化运营”。本文将从底层逻辑…...

数据库实验——备份与恢复

一、目的&#xff08;本次实验所涉及并要求掌握的知识点&#xff09; 1.掌握SQL server的备份与恢复 二、实验内容与设计思想&#xff08;设计思路、主要数据结构、主要代码结构、主要代码段分析&#xff09; 验证性实验 实验1&#xff1a;在资源管理器中建立备份设备实验 …...

抓包分析工具与流量监控软件

目录 一、抓包分析工具&#xff1a;定位问题的“放大镜” 1.1 工作原理简述 1.2 主流工具盘点 1.3 抓包的实战应用 二、流量监控软件&#xff1a;网络全景的“雷达系统” 2.1 功能特征 2.2 常用工具概览 2.3 实战应用场景 五、结语&#xff1a;深入可见&#xff0c;安…...

Go语言实战:使用 excelize 实现多层复杂Excel表头导出教程

Go 实现支持多层复杂表头的 Excel 导出工具 目录 项目介绍依赖说明核心结构设计如何支持多层表头完整使用示例总结与扩展 项目介绍 在实际业务系统中&#xff0c;Excel 文件导出是一项常见功能&#xff0c;尤其是报表类需求中常见的复杂多级表头&#xff0c;常规表格组件往…...

【算法】定长滑动窗口5.20

定长滑动窗口算法&#xff1a; 算法思路 滑动窗口遍历字符串&#xff1a;窗口大小为 k &#xff0c;遍历字符串每个字符&#xff0c;维护窗口内元音字母数量。 ​统计窗口内元音&#xff1a;当字符是元音&#xff08;a/e/i/o/u&#xff09;时&#xff0c;计数器 vowel 加 1。…...

Java操作Elasticsearch 之 [Java High Level REST Clientedit]

<a name"VbjtD"></a> 1. 简述 Elasticsearch 是基于 Lucene 开发的一个分布式全文检索框架&#xff0c;向 Elasticsearch 中存储和从 Elasticsearch 中查询&#xff0c;格式是json。向 Elasticsearch 中存储数据&#xff0c;其实就是向 es 中的 index 下…...

数据集划分与格式转换:从原始数据到模型训练的关键步骤

在计算机视觉项目中&#xff0c;数据集的合理划分和格式转换是实现高效模型训练的基础。本文将详细介绍如何将图片和标注数据按比例切分为训练集和测试集&#xff0c;以及常见的数据格式转换方法&#xff0c;包括 JSON 转 YOLO 格式和 XML 转 TXT 格式。 一、将图片和标注数据…...