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

Unity | HDRP高清渲染管线学习笔记:示例场景解析

目录

一、HDRP入门

1.HDRP设置

 1.1 HDRP配置文件中的全部设置项

        1.1.1 Rendering下的Lit Shader Mode

        1.1.2 Lighting 下的Volumetrics(体积光)和Screen Space Reflection(屏幕空间反射)

2.离线渲染VS实时渲染

3.Volume组件

3.1Sky and Fog Volume 天空&雾效

4.光照贴图烘焙

5.HDRP材质和着色器

5.1 Mesh

5.2 Material

5.3 Shader

5.4 Texture

        5.4.1 Surface Options

        5.4.2 Surface Inputs

二、RenderPipeline相关菜单

1.HDRP Wizard窗口

2.LookDev

3.Rendering Debugger

三、HDRP基于物理的渲染

四、总结


        首先HDRP是面向高端硬件的,它是集成了各种最先进渲染技术的解决方案。因此它的最佳应用场景是PC、主机平台AAA游戏,或者云游戏。(Unity版本为2022.1.2)

一、HDRP入门

        自Unity 2018版本开始,Unity在原先的标准渲染管线(Built-in Render Pipeline)基础上增加了可编程渲染管线(Scriptable Render Pipeline,SRP)

        在SRP发布之前,所有平台都是通过同一个标准渲染管线来做渲染输出。虽然使用非常方便(无须选择适配渲染管线),但是标准渲染管线对于开发者而言就像一个黑盒子,里面的渲染逻辑完全不可知。开发者也无法通过代码去控制整个渲染的流程,无法选择需要渲染的内容。随着SRP的发布,开发者可以通过C#代码直接指定渲染内容和控制渲染流程,也可以为自己的游戏或者应用定制独特的渲染管线。

        为了帮助内容创作者尽快使用上SRP,Unity提供了两个在创建项目时就可以选择的模板:高清渲染管线(High Definition Render Pipeline,HDRP)和通用渲染管线(Universal Render Pipeline,URP)。HDRP目前可用于制作基于PC、Xbox One(或更新)和PlayStation 4(或更新)平台的游戏或者应用,也支持输出高端VR应用;URP则可用于所有平台(包括HDRP支持的所有平台)的游戏和应用开发。HDRP对于高端移动平台的支持目前正在研发之中。

1.HDRP设置

        HDRP的全称是High Definition Render Pipeline(高清渲染管线)。它是基于Scriptable Render Pipeline(简称SRP,中文翻译为“可编程渲染管线”)实现的一个模板。

        在设置渲染管线时我们要用到Project Settings(项目设置)界面,所以先通过菜单Edit→Project Settings… 打开项目设置界面。可以把渲染管线的设置分成以下几种情况。

  • 使用默认的内置渲染管线:如果在项目设置界面中将Graphics的Scriptable Render Pipeline Settings参数设置为None,那么Unity使用的就是内置渲染管线。
  • 使用HDRP:要将渲染管线设置为HDRP,需要给Scriptable Render Pipeline Settings关联一个HDRP配置文件(在Project窗口中)
    可以创建多个拥有不同配置信息的HDRP配置文件,然后在不同的平台上使用它们。比如为PC、Xbox One和PlayStation 4分别创建对应的HDRP配置文件,然后在构建不同平台的应用时,手动关联相应的HDRP配置文件。当然也可以通过脚本来动态判断和设置,所需脚本API为GraphicsSettings.renderPipelineAsset。
  • 使用URP(Universal Render Pipeline,中文翻译为“通用渲染管线”)

 1.1 HDRP配置文件中的全部设置项

        注意:我们之前在Edit→Project Settings中的Graphics的Scriptable Render Pipeline Settings参数设置为HDRenderPipelineAsset。但在Quality中有多个levels,每个level对应的Render Pipeline Asset不同,默认是High Fidelity level,对应的Render Pipeline Asset为HDRP High Fidelity,那么该项目起作用的Render Pipeline Asset为HDRP High Fidelity,而不是HDRenderPipelineAsset。unity对这两个设置的解释如下:

  • Graphics中Scriptable Render Pipeline Settings:This defined the default render pipeline,which Unity uses when there is no override for a given quality level.
  • Quality中Render Pipeline Asset:Specifies the Render Pipeline Asset to use for this quality level.It overrides the value set in the Graphics Setting Window.

        HDRP的设置信息分为以下几个部分:

  • Rendering(渲染)
  • Lighting(光照)
  • Lighting Quality Settings(光照质量设置)
  • Material(材质)
  • Post-processing(后处理)
  • Post-processing Quality Settings(后处理质量设置)
  • XR(XR相关设置)
  • Virtual Texturing(虚拟纹理)

        1.1.1 Rendering下的Lit Shader Mode

        控制Lit Shader使用的渲染模式,其下有Forward Only、Deferred Only和Both三种模式。

  • Forward模式可以提供更多的高级材质,但是相应的性能消耗较大(比如使用的内存通常较大)。
  • 如果选择Both模式,那么HDRP会预先生成针对Forward和Deferred两种模式的Lit Shader variants(Lit着色器变体),这样就可以在运行时(Runtime)中针对不同的相机在这两种模式间切换。当然,如果选择Both,内存的占用将会变大,因为内存中包含了更多的Lit着色器变体。

        1.1.2 Lighting 下的Volumetrics(体积光)和Screen Space Reflection(屏幕空间反射)

        如果在Render Pipeline Asset配置文件中勾选了Volumetrics选项,那么在Sky and Fog Volume的Fog中的Volumetric Fog配置就会生效。如果关闭了Screen Space Reflection选项,即使Sky and Fog Volume添加了Screen Space Reflection这个Volume Override,该界面也会提醒此功能不可用。(由此可见,HDRP配置文件在HDRP项目中所处的中心地位,以及它与单独的Volume组件之间的父子关系)

2.离线渲染VS实时渲染

        所谓DCC,就是Digital Content Creation的缩写,即数字内容创作。DCC的范围包括二维/三维、音频/视频剪辑合成、动态/互动内容创作、图像编辑等。通常传统DCC软件的离线渲染器:画质好、耗时长。渲染一帧画面(也就是一张图片)所需的时间,按照场景的复杂度和所用电脑的运算能力,从几秒到几十小时甚至上百小时不等。

        使用实时渲染引擎:画质没离线渲染强、耗时短。可以在Unity编辑器中以每秒几十帧甚至上百帧的速度渲染画面。

        虽然在实时渲染引擎中获得的画面质量,还无法与离线渲染的画质相提并论,但是两者之间的差距正在迅速缩小。使用实时渲染引擎可以在Unity编辑器中以每秒几十帧甚至上百帧的速度渲染画面。随着Unity工具链的不断发展,Unity本身也开始逐渐具备传统DCC工具的部分功能。

3.Volume组件

        通过HDRP项目模板来创建项目,Unity会为我们自动设置好所有的HDRP高清渲染管线资源,建议保留项目窗口中的HDRPDefaultResources、Presets和Settings三个文件夹,否则需要手动生成HDRP渲染管线相关的配置文件。

        HDRP使用Volume框架将天空的光照、阴影、后处理等设置集中到了一起。在示例场景中有一个Volume:Sky and Fog Volume负责天空、雾效效果。

        Volume组件:Volume框架其实就是一个组件,它和Camera组件本质上是一样的,因为两者都可以被添加到GameObject中,为其添加功能。

        场景中可以有多个Volume组件,例如Sky and Fog Volume和Post Process Volume,当然把这两个Volume合二为一,也就是只需要一个Volume关联一个Profile。不过如果合二为一的话,一方面Volume组件上的列表会变得很长,不利于后期维护。另一方面如果我们使用多个Local(本地)的后处理Volume,那么就无法灵活处理它们了。将具有不同功能的Volume进行合理的区分,将它们关联到不同的Profile,有助于后期维护和功能管理。

3.1Sky and Fog Volume 天空&雾效

        Sky and Fog Volume提供基于HDRI的光照,控制曝光度、雾效等。

● Mode(模式)

        可以将Volume设置为Global(全局)模式或者Local(本地)模式:

  • 如果设置为全局模式,则Volume上的效果默认会影响整个场景。
  • 设置为本地模式,则可以为其指定不同形状的碰撞体,比如Box、Sphere等。

        设置为本地模式时,Volume上的效果只会在相机与Volume上的碰撞体发生碰撞时被触发。例如,如果场景中有多个房间,每个房间的朝向是不一样的,则可以为每个房间设置一个本地模式的Volume,比如朝北房间是偏冷色调,朝南房间因为有阳光照射进来可以设置为偏暖色调。当场景中的相机进入北房间时,相机与此房间中Volume上的碰撞体发生碰撞,从而触发偏冷色调的本地Volume,所以整个画面看上去就是冷色调。进入南房间时则用相同的机制触发偏暖色调的本地Volume,此时整个画面过渡变化为暖色调。

● Profile(配置文件)

        使用Volume框架的一个好处是可以把组件和具体的设置进行分离。Volume组件上的所有设置其实来自于关联的Profile。在开始设置之前,需要先创建一个新的Volume Profile或者关联一个已经存在的Profile。Profile是一个用Unity资源格式保存到本地磁盘上的文件,这也意味着我们可以使用别人已经创建好的Profile,或者将自己的Profile分享给别人使用(要确保大家使用的Unity版本是互相兼容的)。

Visual Environment

        主要用于选择天空盒的格式。可以选择:

  • None(不使用天空盒,不会有来自天空盒的环境光)
  • Gradient Sky(使用渐变色程序化生成的简单天空盒)
  • HDRI Sky(从关联的HDRI高动态图片采样获得天空盒的光照信息)
  • Physically Based Sky(基于物理的程序化生成的天空盒,可以用于模拟日夜变换、大气层厚度等复杂天空效果)。

● Physically Based Sky

        如下图所示,因为选择的Visual Environment类型是Physically Based Sky,所以要为Volume指定一个Physically Based Sky。

 ● Fog

        在这里可以控制场景中雾气的浓度、离地面的高度,也可以设置距离远近。还可以配合使用灯光组件的Volumetrics(体积光)属性创造体积光效果。

● Add Override

        在Volume组件中,我们可以通过该按钮为当前Volume添加以下各个大类的配置信息,并通过Volume组件对这些效果进行调整。

4.光照贴图烘焙

        与传统的离线渲染不同,实时渲染要求以每秒几十帧的速度生成画面,因此我们需要使用很多方法来减少各方面的计算量。要让整个场景看起来真实,需要为其生成全局光照信息(Global Illumination)。但是按照目前的算法和设备的算力,实时生成全局光照信息还不现实。(当然,目前最先进的实时光线追踪(Realtime Raytracing)功能已经可以使用高端显卡实现,比如Nvidia公司的RTX系列显卡)。不过对于大多数设备来说,还是需要使用像光照贴图烘焙(Lightmapping)这样的技术来预计算全局光照信息,将计算好的光照信息保存到光照贴图(Lightmap)上,然后在实时渲染时将它们应用到场景中,来实现全局光照的效果。

5.HDRP材质和着色器

        要渲染某个模型,需要将Mesh、Material、Shader和Texture组合在一起才行:

5.1 Mesh

        Mesh代表的是模型本身,用于表现形状。

5.2 Material

        一个Mesh可以关联多个Material,用于控制模型不同部分的材质表现。比如我们的模型上有塑料的部分,也有金属的部分。只用一种材质来表现这两种完全不同的材料的表面是不可能的,因此需要使用两种材质来表现塑料和金属这两种表面。

5.3 Shader

        每种Material都与一个指定的Shader相关联。Shader是一段代码,包含了用于计算屏幕上每个像素点颜色的具体算法。Shader进行计算的时候会考虑当前场景的光照信息以及在Material上提供的具体配置信息。

        在HDRP中常用的一个Shader是Lit Shader。Lit Shader可以模拟非常多的材质表面,比如金属、玻璃、木材等。

5.4 Texture

        在Surface Inputs参数集合中可以指定各种Map。这些Map所关联的就是Texture(通过Photoshop、Substance Painter等工具生成的Bitmap图片),其用于为模型添加各种细节。

        5.4.1 Surface Options

        Surface Type(表面类型)

        它有两个选项:Opaque(不透明的)和Transparent(透明的)。这是一个基本选项,在设置其他参数之前,你首先要决定你的物体是不是透明的。

        Material Type(材质类型)

        不管选择哪种表面类型,都会显示6种材质类型:Subsurface Scattering(次表面散射)、Standard(标准)、Anisotropy(各向异性)、Iridescence(彩虹色)、Specular Color(高光颜色)和Translucent(半透明)。默认选择的是Standard材质类型。

        可以根据物体表面的特性来选择不同的材质类型。以下列出了部分可应用上述6种材质类型的物体。

材质类型应用
Subsurface Scattering(次表面散射)用于模拟光线与半透明物体交互时产生的现象,俗称SSS。光线进入物体以后,有部分会发生散射并模糊,然后再次返回物体外面(出射角度与入射角度不同)。可用于模拟皮肤、树叶、蜡烛、玉器及瓷器釉面等。
Standard(标准)可用于表现大部分材质,属于PBR材质制作流程中的Metallic Workflow。此工作流把物体分为金属和非金属两类。
Anisotropy(各向异性)各向异性材质适用于模拟拉丝金属表面或者天鹅绒。这类材质表面,从不同的角度看过去,会出现不同的高光现象。
Iridescence(彩虹色)彩虹色材质的特性是,当你的观察角度或者光照角度变化时,物体表面的颜色会发生渐变(渐变色)。这非常适合用于模拟肥皂泡、彩虹色金属表面和昆虫的翅膀等。
Specular Color(高光颜色)可用于表现大部分材质,属于PBR材质制作流程中的Specular Workflow。此工作流类似内置渲染管线中的Standard (Specular setup)。
Translucent(半透明)半透明材质可以和一张Thickness Map配合使用,用于模拟半透明物体。它和次表面散射材质的区别是,出射光线在射出物体之前不会变模糊。

        5.4.2 Surface Inputs

  1. Base Map:用于为模型提供Albedo颜色信息。
  2. Mask Map:通过使用一张将信息储存到RGBA四个通道中的纹理,来一并控制Metallic(金属反光-Red通道)、Ambient Occlusion(环境光遮蔽-Green通道)、Detail Mask(细节遮罩-Blue通道)和Smoothness(光滑度-Alpha通道)。使用一张纹理控制四种属性可以降低内存的占用。
  3. Normal Map:法线贴图用于为模型表面添加更多模型上不存在的细节。

二、RenderPipeline相关菜单

1.HDRP Wizard窗口

        通过Wizard窗口,我们可以快速检查当前项目是否拥有HDRP项目所要求的设置。在此窗口中最主要的是HDRP、HDRP+VR和HDRP+DXR这三个分区。

  • HDRP分区:普通HDRP项目默认使用该快速配置检查列表。如果这里有一项没有通过检查,则界面上会出现Fix按钮,你可以针对每一项单独修复,也可以一键修复所有检查项。
  • HDRP+VR分区:适用于针对HDRP VR项目的配置检查。
  • HDRP+DXR分区:适用于针对HDRP光线追踪项目的配置检查。

2.LookDev

        通过Look Dev窗口,我们可以将模型置于多个HDRI环境下,以便进行快速查看和效果比较。

3.Rendering Debugger

        Debug窗口的作用是,我们通过调整这里不同的参数,可在Game窗口或者Scene窗口实时查看相关的信息。

        举个例子:如果修改Material→Common Material Property为Albedo(反照率贴图),则在Game窗口中可以看到模型上只加载Albedo的效果;如果为Normal(法线贴图),则在Game窗口中可以看到模型上只加载Normal(法线贴图)的效果。

三、HDRP基于物理的渲染

        基于物理的意思是,我们把现实世界中灯光和材质的一些本质信息用计算机图形学表达出来。比如用真实世界中的光照单位来模拟灯光的亮度,模拟真实世界光线的反射和折射从而实现全局光照的效果;用真实世界中物体表面对光的反应对不同材质的属性进行模拟,比如金属材质的反射、玻璃材质的反射和折射、皮肤和树叶的次表面散射、肥皂泡的彩虹色,以及汽车油漆外面包裹的清漆等。

        当然,因为实时渲染要求至少每秒30帧的画面输出,所以我们还无法完整地模拟真实世界的各种效果。但是随着计算机算力的进一步提升,包括CPU、GPU、存储、带宽等的提升,我们会逐步将这些模拟提升到接近真实世界的水平。

四、总结

        一个HDRP场景中除了包含模型外,还需要包含相机、灯光、光照探针、反射探针。然后最重要的是,使用Volume控制整个场景的光照和后处理效果。也需要使用光照贴图烘焙技术来为场景添加全局光照明。

相关文章:

Unity | HDRP高清渲染管线学习笔记:示例场景解析

目录 一、HDRP入门 1.HDRP设置 1.1 HDRP配置文件中的全部设置项 1.1.1 Rendering下的Lit Shader Mode 1.1.2 Lighting 下的Volumetrics(体积光)和Screen Space Reflection(屏幕空间反射) 2.离线渲染VS实时渲染 3.Volume组件 …...

【Netty】Netty 编码器(十三)

文章目录 前言一、MessageToByteEncoder 抽象类二、MessageToMessageEncoder 抽象类总结 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设计(二)Netty Channel 概述(三)Netty ChannelHan…...

Netty和Tomcat的区别、性能对比

文章目录 一、Netty和Tomcat有什么区别?二、为什么Netty受欢迎?三、Netty为什么并发高 ? 一、Netty和Tomcat有什么区别? Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基…...

chatgpt赋能python:Python函数调用局部变量-深入了解

Python函数调用局部变量-深入了解 函数调用局部变量是Python中的一个重要概念,特别是在大型项目中,其中多个函数共享相同变量时。在本文中,我们将深入探讨Python函数调用局部变量,并为您介绍一些实用技巧。 什么是Python函数调用…...

Android 12.0 NavigationBarView 导航栏 左边显示的修改

1.概述 在12.0定制化开发中,要求导航栏左边显示的定制化,这时需要了解导航栏的显示控制方向,然后修改显示方向 在10.0以后关于导航栏显示位置都是在DisplayPolicy.java中处理的所以查询相关的设置方法,然后修改导航栏显示方向2.NavigationBarView 导航栏 左边显示的修改的…...

Mybatis源码细节探究:二级缓存Cache对象是在什么时候创建的?

给自己的每日一句 不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽…...

【数据库】无效数据:软件测试对无效数据的处理

目录 一、无效数据的常见场景 (1)测试阶段 (2)测试方法 二、无效数据的概念 三、无效数据的影响 四、无效数据的识别 五、无效数据的处理方法 (1)拒绝无效数据 ① 拒绝无效数据的概念 ② 拒绝…...

高精度电压源如何设计出来的

高精度电压源是一种用于提供高精度电压的电子设备,通常用于测量和控制系统。高精度电压源的设计是一个复杂的过程,需要考虑多个因素,包括电路设计、元件选型、测量误差、稳定性等。下面将从电路设计和元件选型两个方面,详细介绍高…...

混合属性mix-blend-mode不生效

下面的ABCDE是混合图层,box是他们的父级,一般浏览器支持都没什问题需要注意的是,确保父元素不是透明的, 我使用的时候发现给父元素rgba设置透明度这种方式没啥作用,还得是纯色,没去深究,设置纯色…...

测试计划编写说明

第1章 引言 1.1目的 简述本计划的目的,旨在说明各种测试阶段任务、人员分配和时间安排、工作规范等。 测试计划在策略和方法的高度说明如何计划、组织和管理测试项目。测试计划包含足够的信息使测试人员明白项目需要做什么是如何运作的。另外,清晰的文档结构能使任何一个读…...

Android 12.0Recent列表不显示某个app

1.概述 在12.0 的产品定制化开发中,在点击导航栏最近任务列表时,如果做到不显示某个app 呢 一种做法是在app中直接处理 一种做法是在framework中处理 接下来看这两种处理方法 1, app中处理 为该应用AndroidManifest xml文件中主MainActivity设置属性 android:excludeFromR…...

力扣sql中等篇练习(二十七)

力扣sql中等篇练习(二十七) 1 连续两年有3个及以上订单的产品 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below WITH T as (SELECT t.product_id,t.d,count(order_id) numFROM(SELECT order_id,product_id,…...

Linux:LNMP的架构与环境配置

Linux:LNMP的架构与环境配置 一、安装 Nginx 服务1.1 安装依赖包1.2 创建运行用户1.3 编译安装1.4 优化路径1.5 添加 Nginx 系统服务 二、安装 MySQL 服务2.1安装Mysql环境依赖包2.2 创建运行用户2.3 编译安装2.4 修改mysql 配置文件2.5 更改mysql安装目录和配置文件…...

【Zero to One系列】在WSL linux系统上,使用docker运行Mysql与Nacos,以及如何启动与停止WSL

前期回顾: 【Zero to One系列】window系统安装Linux、docker 1、下载docker-compose 1.下载: curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose 2.授予权限&a…...

WASender - Whatsapp server and bulk sender

WASender 是一个 whatsapp 营销平台,它使用 Laravel 和 Node Js 构建。WhatsApp 是世界上最受欢迎的消息应用程序之一,拥有超过 20 亿活跃用户。这使其成为企业接触潜在客户并与现有客户群互动的有吸引力的平台。WASender 客户可以创建多个设备来向他的目…...

回溯递归的剪枝模版

题目传送门 主要看灵神的二分模版,如何使用递归实现在 O ( m k ) O(mk) O(mk)时间内,实现对于二分中每个条件的判断。 一般套路: dfs函数返回值为布尔类型 循环中使用一个dfs,如果其返回true,那么直接这个dfs返回tru…...

2023-5-30第三十天

effort力气,精力,努力 affect影响,改变,感动 effect结果,效果,影响 worker ampersand &号 asterrisk *号 deal difficulty lose magic proprientary专卖的,所有权 property vow…...

我国中央商务区(CBD)的空间重构及发展模式

中央商务区(Central Business District,简称为CBD),原始意义为“商业会聚之地”是指一个国家或城市商务活动的主要集中的区域,是汇聚商务服务、金融服务、科技服务、咨询服务、会展服务、文化服务等服务业的集聚区域&a…...

Shell脚本的基本例子

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 大数据系列文章目录 目录 定义变量,输出变量输盘输入,执行Lunix命令变量禁止修改变量删除获取传递的变量字符串拼接&…...

C++设计模式介绍与分类

目录 一、设计模式定义 二、设计模式的优点 三、设计模式缺点 四、设计模式中的抽象思维 五、抽象的方法 六、设计模式应用场景 七、设计模式分类 附加知识 (1)C面向对象三种访问修饰符 (2)父类析构函数必须为虚函数 &…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...