UE4真实天气与日夜循环系统:从参数驱动到多系统联动的实现
1. 项目概述从“有”到“真”的沉浸感跨越在UE4Unreal Engine 4里做个白天黑夜切换或者下点雨、飘点雪对于很多开发者来说可能已经不是什么难事。市面上有现成的插件蓝图里拖拽几个节点也能实现基础效果。但不知道你有没有遇到过这样的尴尬白天切换到黑夜太阳“啪”一下就没了天空颜色像幻灯片一样生硬地跳转或者下雨时雨滴和地面的湿润效果各干各的雨停了地还是湿漉漉的毫无自然消退的过程。这种割裂感正是沉浸感体验的“杀手”。我们今天要聊的就是如何超越这些基础功能在UE4中实现一套真实、动态且无缝衔接的天气与日夜循环系统。这不仅仅是几个参数的动画而是一套牵一发而动全身的、基于物理的、多系统联动的综合解决方案。这个项目的核心目标是让虚拟世界的环境变化像现实世界一样流畅自然。日夜交替时天光、环境光、间接光照、阴影乃至大气散射都平滑过渡天气变化时从晴天到多云再到下雨下雪整个世界的视觉、听觉甚至交互反馈比如地面摩擦力都随之产生连贯的变化。这背后涉及到对UE4引擎光照系统、材质系统、后期处理以及蓝图逻辑的深度理解和协同控制。对于从事开放世界、模拟驾驶、生存冒险或者任何对氛围要求极高的项目来说掌握这套技术意味着你能为玩家构建一个真正“呼吸着”的虚拟世界显著提升项目的品质和代入感。2. 核心系统架构与设计思路要实现无缝过渡关键在于摒弃“状态切换”的思维转向“参数驱动”和“系统联动”的架构。我们不能简单地把“白天”和“黑夜”定义为两个状态然后在这两个状态之间做线性插值Lerp。那样做出来的过渡非常“假”因为现实世界的光影变化是非线性的且影响因子众多。2.1 以“时间轴”为核心的驱动机制整个系统的核心驱动力是一个归一化的时间变量通常我们称之为“时间进度”TimeOfDay它的范围是[0.0, 1.0]对应虚拟世界中的一整天24小时。这个变量是系统唯一的“总指挥”。为什么是归一化变量使用0到1的范围而非具体的小时数极大地提高了系统的灵活性和可读性。我们可以轻松地通过一个标量来控制时间流逝的速度比如TimeOfDay每秒增加0.0001对应现实时间约3小时游戏内一天也方便在材质和蓝图中进行数学运算。例如0.25代表清晨6点0.5代表正午12点0.75代表傍晚6点0.0/1.0代表午夜12点。驱动什么这个TimeOfDay变量将直接驱动几个核心参数太阳高度角与方位角通过简单的三角函数将TimeOfDay映射为太阳在天空中的位置。这是所有光照变化的根源。天空光照强度与颜色天空的颜色SkyLight Color和强度Intensity需要根据太阳高度和大气状态天气动态变化。黄昏和黎明的“黄金时刻”与“蓝色时刻”就是通过精细调整这些参数实现的。指数级高度雾参数大气密度、散射等参数随时间和天气变化直接影响远距离物体的视觉和“空气感”。2.2 天气系统的分层设计天气不应是一个简单的枚举Enum而是一个由多个强度因子Intensity Factor描述的混合状态。例如我们可以定义云密度Cloud Density0.0万里无云到 1.0乌云密布。降水强度Precipitation Intensity0.0无降水到 1.0暴雨/暴雪。降水类型Precipitation Type一个0到1的值0代表雨1代表雪中间值可以表示雨夹雪。风速与风向Wind Speed/Direction影响粒子、植被和某些特效。这些强度因子可以独立或关联地变化。系统设计的关键在于任何时刻的视觉表现都是这些强度因子共同作用的结果而不是从一个预设的“晴天”材质球切换到“雨天”材质球。这为无缝过渡打下了基础。2.3 系统间的通信与联动孤立的光照或天气系统无法产生真实感。必须建立它们之间的通信时间 - 天气可以设计规则比如在虚拟世界的凌晨时段更容易起雾在午后更容易形成积雨云。这通过蓝图或C中的概率和条件判断来实现。天气 - 光照乌云密布高云密度会显著降低直射光Directional Light的强度并改变天空光的颜色偏冷、偏灰。这需要在计算最终光照参数时乘以一个由天气强度因子推导出的衰减系数。天气 - 后期处理雨雪天气可能需要增加镜头上的雨滴/雪花特效通过渲染目标实现、调整全局的对比度和饱和度甚至加入轻微的镜头运动模糊来模拟风雨中的晃动感。天气 - 地表与音频这是沉浸感的关键。降水强度因子应驱动地表材质的湿润度Wetness参数让地面、岩石、植被看起来逐渐被打湿并在雨停后缓慢干燥。同时音频系统应根据降水强度和类型动态混合不同的环境音效。3. 核心模块实现细节与实操要点3.1 动态天空与光照的数学实现太阳的位置计算是基石。在UE4中我们通常使用一个Directional Light模拟太阳。其旋转Rotation决定了光照方向。实操步骤在蓝图中创建一个“TimeOfDay”变量0-1范围。计算太阳高度角Elevation和方位角Azimuth。一个常见的简化模型是太阳高度角 sin(TimeOfDay * PI * 2) * 最大高度角。这样正午TimeOfDay0.5时高度角最大午夜时为负值太阳在地平线下。太阳方位角 TimeOfDay * 360.0。这样太阳会从东90度经南180度到西270度运动。将这些角度转换为UE4世界空间中的旋转向量并设置给Directional Light的Rotation。关键技巧直接使用sin函数的变化太规则。可以引入一个基于时间的、缓慢变化的噪声函数如Perlin Noise来轻微扰动太阳高度模拟现实中因季节和纬度造成的日照时长变化让每一天的日照都有细微不同。天空光照SkyLight的动态控制SkyLight不能是静态的。我们需要根据太阳高度角和天气因子实时更新其立方体贴图Cubemap或使用动态捕获Real Time Capture。更高效的方法是用一系列曲线Curve Assets来定义天空光强度和颜色随时间/太阳高度的变化关系。创建两个曲线资产SkyLightIntensity_Curve和SkyLightColor_Curve实际上颜色是RGB三个通道可能需要三条曲线或一个颜色曲线。在蓝图中以太阳高度角或TimeOfDay为输入从曲线采样得到当前的强度和目标颜色。引入天气衰减最终强度 采样强度 * (1.0 - 云密度 * 0.7)。这样云越厚天光越暗。使用Timeline或插值节点Interp To平滑地更新SkyLight的参数避免突变。注意开启SkyLight的“Real Time Capture”性能开销较大在移动端或开放大世界中需谨慎。对于静态天空盒可以准备多张不同时间段的HDR天空贴图并根据时间混合这是性能与效果的一个折中方案。3.2 基于物理的天气材质与后期处理云层实现体积云Volumetric Cloud是当前最真实的选择UE4.26但它对性能要求高。对于更通用的方案可以使用动态的平面云层Planar Cloud或粒子云。材质驱动创建一个云材质其不透明度、颜色、移动速度由“云密度”、“时间”、“风速风向”等全局参数通过Scalar/Vector Parameter Collection传递控制。多层混合使用至少两层云高空卷云、中低空积云分别用不同的缩放、移动速度和密度混合出有层次感的天空。天气变化时通过调整这些层的密度参数来实现云量的增减。降水效果雨雪不仅是粒子特效更需要与场景交互。粒子系统制作雨和雪的粒子系统。粒子的生成率、速度、大小应与“降水强度”参数联动。风向和风力也应影响粒子的运动轨迹。屏幕空间特效在后期处理材质Post Process Material中添加雨滴打在镜头上的效果。其强度同样由降水强度驱动并且可以加入基于摄像机移动的偏移增强动态感。地表湿润效果这是实现“无缝”和“真实”的重中之重。我们需要修改场景中主要地表材质的Master Material。添加一个“湿润度Wetness”参数范围0-1。在材质中当湿润度0时混合进一层高光反射Specular、降低粗糙度Roughness并可能轻微加深基础颜色Albedo模拟水渍。在蓝图中根据“降水强度”和“降水类型”雨干燥快雪融化慢来动态控制这个湿润度参数。关键逻辑下雨时湿润度向1.0平滑增加雨停后启动一个计时器让湿润度缓慢地向0.0衰减。这个衰减过程就是“干燥”的视觉体现是过渡自然的核心。3.3 蓝图逻辑与参数管理所有上述参数TimeOfDay 云密度 降水强度等需要一个集中的“大脑”来管理。建议创建一个名为BP_WeatherManager的蓝图Actor放在持久化关卡中。BP_WeatherManager的核心功能时间系统维护TimeOfDay变量每帧根据设定的时间流速进行更新。提供接口供外部如UI、任务系统获取或设置时间。天气状态机虽然我们强调参数化但一个简单的状态机有助于管理宏观天气变化。例如状态可以是晴朗、多云、雨天、暴雨、雪天。每个状态定义了一组目标参数目标云密度0.8 目标降水强度0.6等。状态之间的转换不是瞬时的而是通过插值平滑过渡到目标参数。全局参数集合Parameter Collection这是UE4中在材质和蓝图间传递全局变量的高效方式。BP_WeatherManager应负责更新一个Parameter Collection中的各个标量和向量参数如TimeOfDay,CloudDensity,RainIntensity等。所有动态材质云、地表、水体都从这个集合中读取参数确保全局统一。环境音频管理根据当前天气参数动态设置Audio Volume的RTPC实时参数控制或交叉淡入淡出不同的环境音效循环层如风声、雨声、雷声。实现平滑过渡的关键代码蓝图思路对于每一个需要平滑变化的参数如目标云密度不要直接设置而是使用Interp To或Timeline。每帧执行 当前云密度 FInterp To(当前云密度 目标云密度 DeltaTime, 过渡速度); 设置参数集合中的 CloudDensity 当前云密度;这样无论目标值如何突变实际值都会平滑地跟随过去形成了视觉上的无缝过渡。4. 性能优化与平台适配策略一个复杂的环境系统很容易成为性能瓶颈。在追求效果的同时必须考虑优化。4.1 渲染开销分析与控制动态阴影Directional Light的动态阴影Cascaded Shadow Maps是性能大户。在白天阴影质量需要较高在夜晚或极端天气大雾、暴雨下玩家对远处阴影的感知下降。可以设计一套根据时间、天气和玩家视距动态调整阴影距离Shadow Distance和CSM级数Cascade Count的方案在必要时降低质量以提升帧率。体积雾与大气渲染指数级高度雾Exponential Height Fog和体积雾Volumetric Fog非常消耗资源。在低端平台上可以考虑在天气管理器中当降水强度高或云密度大时适当降低雾的散射强度和距离或者完全关闭体积雾用后期处理的雾效代替。粒子系统LOD为雨雪粒子系统设置详细的LODLevel of Detail。当粒子远离摄像机或降水强度本身较低时使用粒子数更少、材质更简化的LOD版本。4.2 材质指令数优化动态材质尤其是那些包含大量天气相关参数和复杂计算的材质如那个湿润的地表材质其指令数Instruction Count可能很高。参数化与开关使用静态开关Static Switch而不是动态参数来控制某些功能。例如如果某个地图区域永远不会下雪就可以静态关闭材质中与雪相关的所有计算节点。这需要在材质编辑时就规划好。简化混合地表湿润效果未必需要完整的物理渲染PBR混合。可以尝试用更廉价的“lerp混合法线贴图”或“简单光泽度叠加”来近似表现在移动端尤其有效。使用材质函数将通用的计算如根据TimeOfDay计算太阳方向封装成材质函数便于复用和管理有时编译器能更好地优化封装后的逻辑。4.3 逻辑更新频率优化BP_WeatherManager不需要每帧更新所有内容。时间更新时间流逝可以放在Tick中但频率可以降低如每0.1秒更新一次因为人对时间变化的感知不是毫秒级的。天气参数插值插值计算本身需要每帧进行以保证平滑但决定“目标天气状态”的逻辑比如判断是否要下雨可以以更低的频率运行例如每5-10秒检查一次天气概率。远距离更新对于只影响远观效果的参数如全局大气色调其更新频率可以进一步降低。5. 常见问题排查与实战调试技巧即使按照上述架构搭建在实际开发中还是会遇到各种“诡异”的问题。下面是一些我踩过的坑和解决方法。5.1 光照过渡出现闪烁或断层问题描述在日夜过渡期间尤其是黄昏阴影边缘或天空颜色出现明显的跳跃、闪烁或颜色断层。排查思路检查插值函数确保所有基于时间的插值都使用了稳定的增量时间DeltaTime并且插值速度Interp Speed设置合理。速度太快会导致跳跃太慢则过渡迟钝。检查曲线资源用于驱动天空光颜色/强度的曲线其关键帧之间必须使用平滑的自动切线Auto避免使用线性Linear或阶跃Constant模式否则采样值会突变。检查TonemapperUE4的后期处理Tonemapper色调映射器对高动态范围HDR到低动态范围LDR的转换非常敏感。在极端的光照值如正午强光到深夜过渡时Tonemapper的参数如Film Slope, Toe, Shoulder如果设置不当会在中间亮度区域产生压缩失真。尝试微调这些参数或为不同时间区间设置不同的Tonemapper预设并进行平滑混合。阴影距离过渡如果动态调整了阴影距离确保阴影的淡入淡出区域Shadow Fade设置得足够宽并且过渡是平滑的否则会看到阴影突然出现或消失的硬边。5.2 天气粒子与场景交互不真实问题描述雨滴穿透屋顶雪花落在火上不融化降水粒子看起来“浮”在场景之上。解决方案碰撞与遮挡为雨雪粒子系统启用碰撞Collision并设置正确的碰撞通道如WorldStatic。更高级的做法是在粒子生成时通过场景深度Scene Depth查询进行屏幕空间碰撞检测让粒子在碰到建筑物时提前消失或溅射。数据驱动交互这不是纯视觉问题。可以在场景关键物体如火把、温暖的机器上添加一个自定义组件或接口。当天气管理器检测到降水时它向一定范围内的这些物体发送事件。火把组件接收到“下雪”事件后可以播放一个粒子融化特效并局部调整降水粒子的生成。深度融合在粒子材质中使用“Depth Fade”节点来平滑粒子与场景几何体交叉的边缘避免生硬的穿插感。5.3 性能在特定天气下骤降问题描述晴天运行流畅一到雨天或起雾时帧率FPS就大幅下降。性能画像Profiling立即使用UE4内置的性能分析工具如stat unit,stat gpu,stat scenerendering进行诊断。如果Game线程耗时高可能是BP_WeatherManager或相关蓝图的逻辑过于复杂或者粒子发射器数量爆炸。优化蓝图合并粒子系统。如果Draw线程或GPU耗时高问题很可能在渲染端。检查Draw Call使用stat rhi查看Draw Call数量。复杂的天气材质可能导致材质变体增多阻碍合批Batching。考虑使用更少的材质实例或者通过参数控制而非完全不同的材质。检查着色器复杂度在视图模式View Mode下选择“着色器复杂度”Shader Complexity。如果雨天时整个屏幕通红表示高复杂度说明你的地表湿润材质或雨滴后期材质太“重”了。必须回到材质编辑器进行简化。检查粒子开销使用stat particle。确保粒子数量在可控范围内特别是那些不可见的Culled粒子要及时销毁。5.4 网络同步问题针对多人游戏问题描述在多人游戏中不同客户端看到的天气或时间不同步。核心原则天气和时间必须是服务器权威的。只在服务器上运行BP_WeatherManager的逻辑计算。服务器定期或当变化超过某个阈值时将关键的同步参数TimeOfDay 当前天气状态枚举 主要强度因子通过RPC远程过程调用或复制变量Replicated Variables广播给所有客户端。客户端接收到数据后在本地的BP_WeatherManager副本上进行平滑插值以实现视觉效果。客户端不能自主决定天气变化。对于粒子、音效等纯表现层的内容由客户端根据同步来的权威参数自行生成无需网络同步每一个粒子。实现真实天气与日夜循环的无缝过渡是一个将技术逻辑与艺术感觉相结合的过程。它没有唯一的“标准答案”更多是权衡与调优。我的经验是先从最简单的驱动一个太阳旋转开始然后逐步加入天空光、云层、降水每一步都确保过渡平滑最后再处理复杂的交互和优化。多观察现实世界的光影和天气变化用手机拍下不同时间、不同天气的照片和视频作为参考你会发现很多参数的变化并非线性而是充满了微妙的细节。把这些细节通过参数化的系统模拟出来就是让你的虚拟世界“活”起来的关键。

相关新闻

macOS下OpenClaw AI框架部署与飞书集成指南

macOS下OpenClaw AI框架部署与飞书集成指南

1. 项目概述:OpenClaw在macOS环境下的完整部署方案OpenClaw作为一款新兴的AI开发框架,其本地化部署能力正成为技术团队关注焦点。本次我们将聚焦macOS平台,从基础环境配置到飞书办公集成,构建完整的生产力解决方案。不同于简单的安…

2026/9/25 22:50:16 阅读更多 →
UABEA实战:无需重打包,直接编辑AssetBundle资源

UABEA实战:无需重打包,直接编辑AssetBundle资源

1. 项目概述:为什么我们需要修改AssetBundle? 在Unity开发这条路上,无论你是独立开发者还是团队中的一员,迟早会遇到一个绕不开的坎:AssetBundle。这东西说白了,就是Unity用来把游戏资源(模型、…

2026/10/7 0:21:22 阅读更多 →
如何解决智能体频繁幻觉、编造资料和工具参数乱填?

如何解决智能体频繁幻觉、编造资料和工具参数乱填?

“不要胡说”不是一个可执行的智能体治理方案。如果希望减少幻觉和工具参数错误,需要把自然语言任务拆成几个可验证的阶段:用户输入↓ 任务和字段拆解↓ 证据与字段校验↓ 工具参数预检↓ 人工确认↓ 工具执行今天在 Haoee 上搭建了一个“采购申请提交前…

2026/10/14 22:45:08 阅读更多 →

最新新闻

空间域图像增强实战指南:灰度变换与直方图处理核心原理与调参技巧

空间域图像增强实战指南:灰度变换与直方图处理核心原理与调参技巧

拿到《数字图像处理》第三章“空间域图像增强(灰度变换和直方图处理)”这个标题,很多人的第一反应是翻课本对着公式背,但真正拿到一张模糊、偏暗、对比度极低的图,往往又不知道怎么下手。我当年在某个图像处理Demo项目…

2026/10/15 12:21:56 阅读更多 →
Spring AI实战:构建智能IDE插件的架构与优化

Spring AI实战:构建智能IDE插件的架构与优化

1. 项目背景与核心价值最近在团队内部做代码评审时,发现一个很有意思的现象:即使是经验丰富的Java开发者,在编写某些特定场景的代码时(比如复杂的Stream操作或者Spring事务嵌套),也常常需要反复查阅文档或搜…

2026/10/15 12:21:56 阅读更多 →
解决报错CC Switch local proxy failed while handling Codex endpoint /responses:把 endpoint 改到 TaoToken 的排查

解决报错CC Switch local proxy failed while handling Codex endpoint /responses:把 endpoint 改到 TaoToken 的排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 12:21:56 阅读更多 →
Python 通过 python-snap7 读写西门子 S7-300/400 PLC 实战指南

Python 通过 python-snap7 读写西门子 S7-300/400 PLC 实战指南

简介:这份资源面向需要用 Python 与西门子 S7-300、S7-400 系列 PLC 通信的工程师与学习者,通过 TCP/IP 直连方式实现数据读写,省去依赖专用组态软件的麻烦。压缩包共 12 个文件,约 910KB,包含 3 个 py 脚本与 2 个 py…

2026/10/15 12:21:56 阅读更多 →
【AI大模型】生产环境吞吐优化方案

【AI大模型】生产环境吞吐优化方案

【AI大模型】生产环境吞吐优化方案 生产环境部署大模型时,吞吐往往比单请求延迟更影响成本和体验。吞吐上不去,要么算力闲置、要么队列堆积。本文围绕一个核心问题展开:在显存和算力给定的条件下,如何最大化单位时间完成的请求数与生成 token 数。先讲清瓶颈在哪,再按调度…

2026/10/15 12:21:56 阅读更多 →
MCP与A2A:构建可工程化落地的多Agent系统

MCP与A2A:构建可工程化落地的多Agent系统

1. 这不是概念炒作,是工程落地的分水岭“多 Agent、MCP、A2A——最该补的一堂课”,这标题乍看像培训广告,实则戳中了当前智能系统开发里最真实、最普遍、也最容易被忽视的断层。我带过七支不同行业的AI工程团队,从金融风控后台到工…

2026/10/15 12:20:55 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →