Godot 4插件SmartShape2D:2D地形智能绘制与纹理化工作流

news2026/5/2 22:33:21
1. 项目概述SmartShape2D一个改变2D地形绘制方式的Godot插件如果你在Godot引擎里做过2D游戏尤其是那些需要大量手绘地形、平台、水体或者复杂背景的项目一定对多边形绘制和纹理填充的繁琐深有体会。传统的Polygon2D节点虽然基础但调整形状、适配纹理、处理接缝这些工作往往需要你在编辑器里反复拉扯顶点再到材质面板里调整UV整个过程既耗时又容易出错很难做出那种自然、无缝衔接的视觉效果。SmartShape2D这个插件就是为了彻底解决这个问题而生的。它不是一个简单的工具增强而是一套完整的2D多边形智能绘制与纹理化工作流。简单来说它让你能像在矢量绘图软件里绘制贝塞尔曲线一样在Godot编辑器里直接“画”出带有完美纹理的多边形。你只需要放置几个控制点定义好形状然后为它指定一个材质资源插件就会自动处理纹理的拉伸、平铺、拐角适配等所有令人头疼的细节。无论是创建蜿蜒的河流、崎岖的山脉、茂密的树冠还是设计科幻风格的平台和能量护盾SmartShape2D都能将你的工作效率提升好几个数量级。这个插件的核心用户就是所有使用Godot 4进行2D游戏开发的独立开发者、美术和技术美术。无论你是想快速搭建关卡原型还是为你的像素风或手绘风游戏制作精致的环境美术SmartShape2D都能提供强大的支持。它特别擅长处理需要重复纹理如草地、泥土、岩石的连续表面其工作原理与TileMap/TileSet有异曲同工之妙但提供了远高于瓦片的灵活性和表现力。2. 核心设计思路从静态多边形到动态“智能形状”要理解SmartShape2D的价值我们得先看看在没有它的时候标准的流程是怎样的。通常你需要先用Polygon2D节点勾勒出形状然后手动创建一个ShaderMaterial编写或套用复杂的片段着色器Fragment Shader来根据UV坐标处理纹理的平铺和拉伸。如果形状复杂或者需要动态变化你还需要写脚本去实时更新多边形的顶点数组和UV数组。这个过程不仅对程序员不友好对美术更是噩梦因为任何视觉上的调整都需要代码和编辑器来回切换。SmartShape2D的设计哲学是将“形状”与“纹理化”这两个步骤深度绑定并自动化。它的核心是一个名为SmartShape2D的自定义节点这个节点继承自Node2D但内部封装了一个动态的多边形网格ArrayMesh以及一整套控制逻辑。其设计思路可以拆解为以下几个关键点2.1 基于控制点的参数化建模与Polygon2D直接操作最终顶点不同SmartShape2D引入了一个“控制点”Control Points的概念。你可以把这些控制点理解为贝塞尔曲线的锚点。通过移动这些控制点插件会在内部自动计算并生成平滑的曲线或多边形边界。这意味着你调整的是形状的“大轮廓”而不是一个个琐碎的网格顶点这使得形状的编辑变得非常直观和高效。更重要的是每个控制点都可以独立设置属性比如点的类型尖角或平滑、纹理坐标的偏移等。这种参数化的方式为后续的自动化纹理适配打下了基础。2.2 材质资源的抽象与复用SmartShape2D没有沿用Godot原生的ShaderMaterial直接暴露给用户而是创建了一套自己的资源类型主要是SS2D_Material_Edge。这个资源是一个数据容器它定义了用于渲染形状边缘的纹理、平铺模式、法线贴图等信息。你可以像创建TileSet一样预先制作好一系列SS2D_Material_Edge资源比如“泥土边缘”、“草地过渡”、“水面波纹”。在编辑SmartShape2D节点时你可以为整个形状或者某一段特定的边缘在两个控制点之间分配这些材质资源。插件会根据边缘的长度和方向自动计算如何将纹理平铺上去确保接缝处完美融合。这种资源化的管理方式极大地促进了美术资产的复用和项目管理。2.3 实时网格生成与UV计算这是插件的“智能”所在。当你移动控制点、改变材质或调整任何参数时SmartShape2D会在后台实时触发一个网格生成流程。这个过程包括轮廓生成根据控制点及其属性是否平滑、张力值生成最终的闭合或多边形轮廓线。三角剖分将轮廓内部区域分割成三角形网格以便GPU渲染。UV映射这是最复杂的部分。插件会根据你分配给边缘的SS2D_Material_Edge资源为每个顶点计算纹理坐标UV。它会考虑纹理的缩放、沿边缘的重复次数、拐角处的特殊处理比如是斜接、圆角还是斜角确保纹理沿着形状的走向正确、连续地显示没有拉伸或断裂。所有这些计算对用户都是透明的。你看到的就是一个可以随意拖拽控制点纹理实时跟随变化的“智能形状”。2.4 编辑器集成与可视化编辑作为Godot插件优秀的编辑器体验至关重要。SmartShape2D提供了完整的自定义编辑器工具栏集成在Godot的2D编辑视口上方。你可以通过按钮或快捷键快速添加/删除控制点、切换点类型、设置材质、调整宽度等。所有的操作都是可视化的属性面板也针对插件功能做了优化提供了大量实时预览的选项。这种深度编辑器集成使得整个创作过程从“编码-测试”循环变成了纯粹的“所见即所得”的美术创作这才是它提升生产效率的根本。3. 从零开始安装、配置与第一个智能形状了解了核心思路我们立刻动手在Godot 4.3环境中部署并使用SmartShape2D。我将以创建一个简单的平台地块为例带你走通全流程。3.1 插件安装的两种方式方式一通过Asset Library安装推荐给新手这是最简便的方法。打开Godot编辑器点击顶部菜单栏的“项目” (Project)-“项目设置” (Project Settings)。在左侧列表中找到并点击“插件” (Plugins)。点击右上角的“浏览” (Browse)按钮这会打开内置的Asset Library。在搜索框中输入“SmartShape2D”并搜索。找到插件后点击右侧的“下载” (Download)按钮。下载完成后该条目会变成“安装” (Install)点击它。安装成功后回到插件管理页面在“已安装”列表中找到SmartShape2D点击其右侧的“启用” (Enable)复选框。Godot可能会提示你重启编辑器确认即可。注意Asset Library的版本有时会稍滞后于GitHub上的最新版本。如果你需要最新的功能或修复或者遇到安装问题请使用手动安装方式。方式二手动安装适用于追求最新版或网络环境特殊的用户访问SmartShape2D的GitHub仓库https://github.com/SirRamEsq/SmartShape2D。点击绿色的“Code”按钮选择“Download ZIP”将整个仓库下载到本地。解压下载的ZIP文件。你会看到一个名为SmartShape2D-master或类似的文件夹。打开你的Godot项目文件夹。在其下找到或创建addons/目录。将解压后文件夹中的addons/rmsmartshape整个目录复制到你项目的addons/目录下。最终路径应该是你的项目/addons/rmsmartshape/。重新启动Godot编辑器如果正在运行。按照上述方式一中的步骤1-2打开插件管理页面你现在应该在列表中找到SmartShape2D将其启用。实操心得我通常推荐手动安装尤其是开始一个新项目时。这样可以确保插件版本与项目绑定避免未来Godot或Asset Library更新导致的不兼容问题。记得将addons/rmsmartshape文件夹纳入你的版本控制系统如Git。3.2 创建你的第一个SmartShape2D节点安装并启用插件后你会发现节点创建面板中多了一个新的类别。在2D场景中点击“添加子节点”按钮或按CtrlA。在搜索框中输入“smart”你应该能看到“SmartShape2D”节点。选中并点击“创建”将其添加到场景中。刚创建时它看起来就是一个普通的Node2D带有一个十字形的图标。别急我们需要进入“编辑模式”。3.3 认识编辑器工具栏选中场景中的SmartShape2D节点Godot编辑器2D视口的上方会出现一行新的工具栏按钮。这是插件功能的控制中心。主要按钮包括编辑铅笔图标这是最关键的模式。点击后节点进入编辑状态你可以看到默认生成的四个控制点构成的矩形轮廓。此时你可以选择、移动这些控制点。添加点图标在编辑模式下将鼠标移动到轮廓线上线条会高亮点击即可在鼠标位置插入一个新的控制点。删除点-图标在编辑模式下选中一个控制点点会变成橙色点击此按钮或按Delete键删除它。闭合形状环形箭头图标如果形状是开放的一条线点击此按钮可以连接首尾点使其闭合。点类型切换通常是一组按钮用于将选中的控制点在“角点”Sharp和“平滑点”Smooth之间切换。角点产生硬边平滑点会产生贝塞尔曲线般的过渡。宽度Width调整整个形状的描边宽度或填充区域的偏移量。材质Material为整个形状或选中的边缘指定材质资源。3.4 快速制作一个平台地块让我们用默认设置快速体验一下。确保SmartShape2D节点被选中并点击工具栏的“编辑”按钮。你会看到矩形的四个角有四个控制点。尝试拖动其中一个点改变矩形的形状。注意纹理目前是默认的检查器图案会实时跟随形状变化而拉伸——这已经比原生的Polygon2D智能了但拉伸效果并不理想。在编辑模式下将鼠标移动到矩形的一条边上直到该边高亮然后单击。你会看到在这条边的中点位置插入了一个新的控制点。将这个新点向上或向下拖动创建一个凹凸不平的平台边缘。点击工具栏上的“点类型切换”按钮或按快捷键S将这个新点从“角点”切换到“平滑点”。观察轮廓线的变化它从一条折线变成了平滑的曲线。随意拖动其他点塑造一个你喜欢的、不规则平台形状。至此你已经完成了形状的创建。但要让它的纹理看起来像真实的草地或泥土平台我们还需要关键的下一步应用智能材质。4. 核心资源解析SS2D_Material_Edge与纹理创作SmartShape2D的强大一半在于其编辑能力另一半则在于其材质系统。SS2D_Material_Edge是驱动一切视觉表现的核心资源。4.1 创建与配置SS2D_Material_Edge在Godot的文件系统面板中右键点击你想保存的目录选择“新建资源...” (New Resource)。在搜索框输入“ss2d”找到“SS2D_Material_Edge”点击“创建”。给新资源起个名字比如grass_edge.tres。现在在检查器面板中你会看到该资源的属性Texture纹理拖入一张用于边缘的纹理图片。这是最重要的属性。为了达到最佳效果这张图应该是一张水平方向可无缝平铺seamless tileable的长条状纹理。例如一个泥土横截面、一条草地边缘带。Fit Texture适配纹理决定纹理如何适配边缘长度。None不进行适配简单拉伸。不推荐。Stretch拉伸纹理以填满整个边缘。适用于边缘长度变化不大或纹理本身是抽象图案的情况。Repeat最常用。沿着边缘重复平铺纹理。插件会自动计算需要重复多少次来填满边缘并调整纹理缩放以保证完整重复。这是制作连续地形效果的关键。Repeat Mirrored重复平铺但每次重复进行镜像翻转可以避免明显的重复图案感。Normal法线贴图可选项。拖入对应的法线贴图可以为形状增加光照下的凹凸细节让2D场景更有立体感。Width宽度定义此材质渲染的视觉“宽度”或“厚度”。可以与节点本身的宽度属性结合使用。Color颜色为纹理叠加一个色调。实操心得纹理制作指南制作高质量的SS2D_Material_Edge纹理是一门小手艺。我的经验是尺寸纹理高度可以是32、64、128像素等取决于你的游戏风格。宽度则最好是高度的2-4倍形成一个明显的长条。无缝平铺确保纹理在水平方向左右边缘的颜色和图案能完美衔接。在Aseprite或Photoshop中可以使用“偏移”滤镜配合图章工具来制作无缝纹理。内容纹理的上半部分通常是表面如草叶、泥土颗粒下半部分是侧面或过渡部分如草根、泥土剖面。这样当多个形状上下堆叠时能自然形成层次感。Alpha通道善用透明通道。例如草地的边缘纹理顶部可以是半透明的草叶这样叠加在其他纹理上时会更加自然。4.2 为形状应用材质创建好材质资源后回到场景中你的SmartShape2D节点。确保节点处于编辑模式。在检查器面板中找到“Material”属性。你可以直接将刚才创建的grass_edge.tres拖拽到这里。这会将此材质应用到整个形状的所有边缘。观察2D视口你的形状现在应该被指定的纹理所覆盖。如果之前设置了Fit Texture为Repeat你会看到纹理沿着形状轮廓完美地重复平铺。更精细的控制为单条边缘指定材质有时你需要一个形状的不同边拥有不同材质。比如平台顶部是草地侧面是泥土。在编辑模式下单击选中一条边缘连接两个控制点的线段选中后会高亮。在检查器面板中你会看到针对这条选中边缘的独立属性区域其中也有“Material”选项。在这里单独指定一个材质比如dirt_edge.tres。现在这条边就拥有了与其他边不同的纹理。通过组合整体材质和局部边缘材质你可以创造出非常复杂且自然的地形效果。4.3 使用内置形状与预设除了自由绘制SmartShape2D还提供了一些预设形状方便快速创建常用图形。在SmartShape2D节点的检查器面板找到“Shape”资源属性。点击下拉菜单或“新建”你可以选择SS2D_Shape_Closed_Polygon闭合多边形我们一直在用的或SS2D_Shape_Open_Polygon开放多边形用于绘制路径、河流等。更重要的是你可以点击“新建”旁边的“快速加载”图标插件内置了一些预设如矩形Rectangle、椭圆Ellipse、星形Star。选择后节点会自动生成对应的控制点布局。这些预设是很好的起点你可以在此基础上进行细化编辑。5. 高级技巧与实战工作流掌握了基础操作后我们来深入一些能极大提升质量和效率的高级技巧和完整工作流。5.1 利用“宽度”属性创造层次感SmartShape2D节点和SS2D_Material_Edge资源都有一个Width属性。它们共同作用可以创造出有“厚度”的形状比如平台、墙壁。节点Width控制整个形状的“偏移”或“膨胀”。正值使形状向外扩展负值向内收缩。你可以用它来快速生成一个形状的“外边框”或“内边框”。材质Width控制该材质渲染的视觉厚度。可以小于节点Width这样一条边上就可以并排渲染多种材质需通过脚本或更高级的设置实现。实战案例创建带有泥土基座的草地平台创建一个闭合多边形形状如一个平台。为其整体应用一个grass_edge材质Fit Texture: Repeat。复制这个SmartShape2D节点。在副本节点的检查器中将其Width设置为一个负值如-5。你会发现它缩小了一圈。为这个副本节点整体应用一个dirt_edge材质。将副本节点作为原节点的子节点或在场景树中置于原节点之下。调整位置使其略低于原节点。 现在你得到了一个顶部是草地、侧面露出泥土层的平台立体感立刻显现。5.2 法线贴图与2D光照结合Godot 4的2D渲染支持法线贴图这让2D场景也能有逼真的光影效果。在制作SS2D_Material_Edge纹理时同时制作一张对应的法线贴图。可以使用专门的工具如Godot内置的NormalMap生成器、在线工具或Photoshop插件从颜色纹理生成。将法线贴图赋值给SS2D_Material_Edge资源的Normal属性。在你的2D场景中添加一个PointLight2D或DirectionalLight2D节点。确保你的SmartShape2D节点及其父节点的CanvasItem属性中“Light Mask”与灯光的**“Item Cull Mask”** 有重叠的位通常保持默认值1即可。移动灯光你会看到SmartShape2D的表面产生了逼真的光影凹凸变化极大地增强了场景的深度感。5.3 通过脚本动态控制形状SmartShape2D的节点属性完全可以通过GDScript进行控制这为程序化生成地形、动态变化的平台如升降梯、变形障碍打开了大门。核心属性与方法points: 一个PackedVector2Array存储所有控制点的位置局部坐标。point_properties: 一个数组存储每个控制点的属性如是否是平滑点。update(): 修改点数据后调用此方法强制重绘形状。示例用脚本生成一个波浪形平台extends SmartShape2D func _ready(): # 清空现有点 points PackedVector2Array() point_properties [] var num_points 20 var width 400.0 var height 200.0 var amplitude 30.0 # 波浪幅度 for i in range(num_points): var x (i / float(num_points - 1)) * width # 使用正弦函数计算y值形成波浪 var y height sin(i * 0.5) * amplitude points.append(Vector2(x, y)) # 将所有点设置为平滑点形成曲线 point_properties.append({point_type: 1}) # 1 通常代表平滑点 # 确保形状闭合首尾相连 # SmartShape2D通常自动处理闭合但明确设置更稳妥 # 这里我们创建的是开放波浪线如果需要闭合平台需调整算法 # 应用一个材质假设已在编辑器中配置好 # material preload(res://materials/platform_edge.tres) # 强制更新形状 update()这段代码在_ready()函数中创建了一个由20个点组成的波浪线。你可以将其附加到一个SmartShape2D节点上运行。通过修改amplitude、频率等参数或结合_process(delta)函数让波浪动起来可以轻松创建动态水面或移动的空中路径。5.4 与TileMap的混合使用工作流SmartShape2D并非要取代TileMap而是与之互补。一个高效的工作流是TileMap打底用TileMap快速铺设大面积的、规则的地面、墙面背景。SmartShape2D塑形在TileMap之上使用SmartShape2D节点来创建那些不规则的部分斜坡、圆形平台、孤岛、河流、云朵、装饰性植被轮廓等。层级管理将TileMap和SmartShape2D节点放置在不同的CanvasLayer上或通过YSort节点和z_index属性来正确管理它们的渲染顺序确保前景、背景关系正确。这种结合方式既能享受TileMap的批量编辑和性能优势又能获得SmartShape2D在自由塑形和纹理适配上的灵活性。6. 常见问题、性能优化与排查技巧即使工具强大在实际项目中也会遇到各种问题。以下是我在长期使用中积累的一些常见问题解决方案和优化建议。6.1 常见问题速查表问题现象可能原因解决方案插件工具栏不显示1. 插件未启用。2. 未选中SmartShape2D节点。3. Godot编辑器缓存问题。1. 去“项目设置-插件”中确认已启用。2. 在场景中点击一个SmartShape2D节点。3. 关闭Godot并删除项目根目录下的.godot/文件夹这会清空缓存首次启动会慢些然后重启。纹理拉伸严重不重复SS2D_Material_Edge资源中的Fit Texture属性未设置为Repeat或Repeat Mirrored。检查并修改材质资源的Fit Texture属性为Repeat。形状边缘有接缝或裂缝1. 控制点过于密集或位置重叠。2. 纹理本身在平铺处有接缝。3. 拐角处材质处理不当。1. 简化形状移除不必要的点确保点不重叠。2. 使用专业的无缝纹理制作工具修复纹理。3. 尝试调整控制点为“平滑点”或在材质设置中检查拐角类型。法线贴图不起作用1. 场景中没有2D光源。2. 节点或光源的Light Mask未匹配。3. 法线贴图纹理导入设置错误。1. 添加PointLight2D等光源节点。2. 检查SmartShape2D和光源节点的light_mask和item_cull_mask属性默认均为1。3. 在文件系统选中法线贴图在导入面板中确保“检测3D”关闭“作为法线贴图”开启。编辑时非常卡顿1. 形状过于复杂控制点太多。2. 使用了高分辨率纹理。3. 场景中此类节点过多。1.这是最主要原因。用尽可能少的控制点表达形状。利用“平滑点”代替密集的“角点”。2. 为游戏使用的纹理设置合理的最大尺寸如1024x1024。3. 对于静态背景编辑完成后可以考虑将其烘焙为静态纹理或MeshInstance2D以减少实时计算。脚本修改points后不更新修改数组后未调用update()方法。在脚本中修改完points或point_properties后务必调用self.update()。6.2 性能优化要点SmartShape2D在运行时需要实时计算网格和UV对于复杂形状这会带来一定的CPU开销。以下优化策略至关重要简化是金时刻牢记“用最少的点表达最多的细节”。一个由20个平滑点构成的曲线其视觉效果可能比50个角点构成的折线更好且性能开销小得多。在编辑时定期审视是否可以删除一些不影响整体轮廓的点。纹理图集Atlas避免为每一个SS2D_Material_Edge使用单独的、小尺寸的纹理文件。应该将多个边缘纹理合并到一张大图纹理图集中然后在材质资源中通过调整纹理区域Region属性来引用图集中的特定部分。这能显著减少GPU的状态切换和Draw Call。静态与动态分离对于关卡中永远不会移动、变形的部分如背景山峦、静态平台在编辑定型后可以考虑将其烘焙。一种方法是利用Godot的“导出”功能或者编写脚本将SmartShape2D的最终网格数据提取出来创建一个普通的MeshInstance2D节点来替换它。MeshInstance2D的渲染开销远低于需要实时计算网格的SmartShape2D。细节层级LOD对于远距离显示的形状可以创建简化版本。例如在相机远离时通过脚本将形状的控制点数量减少采样并切换到一个更简单的材质。这需要一些额外的编码工作但对于大型开放世界2D游戏是值得的。合理使用碰撞如果需要为SmartShape2D形状添加物理碰撞不要直接使用高精度的多边形碰撞体。应该使用CollisionPolygon2D并手动勾勒一个比视觉形状更简化的轮廓或者使用多个CollisionShape2D如矩形、胶囊体来近似。高精度多边形碰撞体的性能消耗很高。6.3 版本兼容性与故障排查Godot版本务必使用与插件兼容的Godot版本。当前主线版本针对Godot 4.3开发。如果你使用的是Godot 4.0-4.2可能会遇到一些API不兼容的问题请查阅GitHub仓库的发行说明或Issues页面。文档滞后如项目README所述部分在线文档可能过时。最可靠的文档是引擎内的集成文档。在脚本编辑器中将鼠标悬停在SmartShape2D相关的属性或方法上通常会显示最新的工具提示。如果看不到尝试重新保存CtrlS相关的GDScript文件这能触发Godot的文档更新。遇到Bug如果确信遇到了插件Bug在到GitHub提交Issue前请准备好一个能复现问题的最简项目.zip。你的Godot完整版本号如4.3.stable.official。你使用的SmartShape2D版本号在插件目录的plugin.cfg文件中查看。清晰的步骤描述和截图/录屏。这能极大帮助开发者定位问题。最后社区的智慧是无穷的。除了官方文档和Issues页面插件的Discord服务器链接通常在项目主页是一个绝佳的交流场所。在那里你可以看到其他开发者惊艳的作品获取即时的帮助甚至向开发者直接反馈建议。任何工具深入其社区往往能学到说明书里没有的“真功夫”。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…