下载 App

地形交界处过渡不够自然丝滑

05/087 浏览综合
我:能否让交界处像沙滩与海浪一样,你中有我我中有你是不是就是类似于你说的噪声梯形,也就是边界更不规则自然
嗒:
渐变参数已调整为 v4 平衡值:
版本 depth alpha 效果
v1 0.45 0.85 (实心) 绿色条带明显
v2 0.30 0.70→0 条带仍可见
v3 0.15 0.35→0 过渡完全消失
v4 0.25 0.55→0 平衡点
v4 取 v2 和 v3 的中间值 — depth 从 0.15 调回 0.25(提供足够的过渡覆盖区域),alpha 从 0.35 调回 0.55(让渐变在边缘处有可辨识的过渡效果,但因为是渐变淡出到全透明,不会形成生硬的条带边界)。
请预览测试,重点关注 zoom 0.3~0.7 区间的地形交界处:过渡是否可见、是否有绿色条带。
。本次 v5 做了三项改进:
1. 噪声梯形替代矩形渐变(lodLevel=2,zoom < 0.7)
矩形 → 5 顶点梯形,沿边缘 3 点噪声采样调制深度(±45%)
边界参差不齐,模拟有机过渡而非几何条带
NVG 调用量几乎不变(nvgRect 内部也是 4 个顶点)
2. 恢复角落渐变(lodLevel=2)
之前完全跳过角落 → 现在用径向渐变圆(nvgRadialGradient)
补全 4 方向交叉点的过渡缺失
每角仅 ~5 NVG 调用
3. lodLevel=1 边缘段数 6→8
中等缩放 (zoom 0.7~1.0) 的噪声多边形更平滑
请预览测试 zoom 0.3~0.7 区间,看地形交界处是否更自然丝滑。
P4 v6 已就绪,等待测试:
v6 采用 5 点噪声梯形方案(zoom 0.3~0.7 区间):
深度: 0.32 × tileSize,噪声浮动 ±50%
透明度: 0.60→0 线性渐变
形状: 7 顶点不规则多边形(5 个噪声采样点在 0%/25%/50%/75%/100% 位置)
角落: 跳过(节省性能,边缘梯形已覆盖过渡区域)
相比 v5,移除了角落径向渐变(回收 ~5ms),并将节省的预算投入更多噪声采样点(3→5),使边界更不规则自然。请预览测试效果。
v7 的核心变化:
"海浪侵蚀沙滩"效果:
9 个噪声采样点(每 1/8 tileSize)→ 11 顶点多边形,边界曲线更细腻
深度 0.40×ts(v6 的 0.32→0.40),过渡带更宽,渗透更深
噪声变幅 ±65%(v6 的 ±50%→±65%),深度范围 0.14~0.66×ts —— 有的地方只浅浅一层,有的延伸到瓦片 2/3 处,形成"你中有我、我中有你"
起始透明度 0.50(v6 的 0.60→0.50),配合更宽渐变带,避免条带感
额外 4 个 nvgLineTo 调用开销极低(仅追加顶点到路径缓冲区),预计性能影响 <1ms。请预览测试效果。
从截图看得很清楚:
zoom 0.73(lodLevel=1,噪声多边形):过渡自然,红箭头指向的边界看起来有机
zoom 0.66(lodLevel=2,噪声梯形):红箭头指向的边界看起来生硬、几何感强
根本原因不是参数问题,而是 渲染方法 不同:lodLevel=1 用的是多段噪声多边形(每段独立深度+透明度),lodLevel=2 用的是单一线性渐变填充的梯形。无论怎么调噪声梯形参数,都无法达到噪声多边形的自然感。
解决方案:将 lodLevel=2→1 的阈值从 0.7 降到 0.5,让 zoom 0.5~0.7 也使用 lodLevel=1 的噪声多边形渲染。
Bot Avatar
先做个性能估算,验证可行性:
zoom 瓦片数 当前方案 改后方案 预估耗时
0.73 2070 lodLevel=1 不变 15.0ms (实测)
0.66 2500 lodLevel=2 → lodLevel=1 ~18ms
0.55 ~3000 lodLevel=2 → lodLevel=1 ~22ms
0.50 ~3500 lodLevel=2 → lodLevel=1 ~25ms
0.45 ~4500 lodLevel=2 不变 ~23ms (梯形)
0.31 8316 lodLevel=2 不变 ~23ms (梯形)
zoom 0.5~0.7 切到 lodLevel=1 后,预估 Overlays 不超过 25ms,可以接受。
构建成功。改动很简单 — 只改了一个数字:
MapCanvas.lua:1817:zoom < 0.7 → zoom < 0.5
新的 LOD 分级:
zoom 范围 lodLevel 渲染方式 视觉效果
< 0.3 skip 完全跳过 瓦片太小,不可见
0.3~0.5 2 噪声梯形 瓦片很小,渐变足够
0.5~1.0 1 噪声多边形 自然有机 (同原0.73效果)
>= 1.0 0 全质量 最高品质
核心逻辑:zoom 0.5~0.7 原来用的是"单一渐变填充梯形"(看起来生硬),现在切换为"多段噪声多边形"(和 zoom 0.73 完全相同的渲染方法),所以视觉效果应该一致。性能方面,zoom 0.5 时瓦片约 3500 个,按 zoom 0.73 的 15ms/2070 瓦片线性推算约 25ms,在可接受范围内。请预览测试。
生成正面、背面、侧面,可以走动的角色形象截图
生成正面、背面、侧面,可以走动的角色形象
当前 NPC 角色编辑器的数据结构 编辑器使用 32×32 像素画布,数据结构大致是: 3 个朝向:正面、背面、侧面 2 个动画状态:静止(idle)、行走(walk) 每个状态可以有多帧,支持帧率控制 每帧本质上是一个 32×32 的颜色数组 要解决的 3 个问题 步骤 问题 方案 1. 图片→编辑器 128×128 PNG 导入为 32×32 像素数据 加载图片后逐像素采样(每4×4取1像素)
1 赞
9 回复
穿透层修复
经验一:CSS transform 穿透层修复模式 问题本质 当容器使用 CSS transform: translateX/Y/scale 平移/缩放子树时,即使父容器有 overflow = "hidden",引擎的命中检测可能不裁剪越界区域。如果 transform 后的子树有更高的 zIndex,它会在视觉范围外拦截其他兄弟节点的指针事件。 受影响的场景 地图编辑器(右键平移/滚轮缩放后)
官方
4 赞
地图编辑器仿真 tick 重建抑制
UI 重建频率 = 事件分发的可靠性上限。 只要有一帧 SetRoot 销毁了正在处理 pointer 事件的控件,跨重建边界的 Down/Up 对就会被吞。高频仿真 tick 必须在 UI 边界按页面过滤。 关键代码(scripts/main.lua HandleUpdate) 四步走:先原地处理人员 → 聚合所有仿真 changed → 地图页强制压制 → 只放行显式/登录态变化。 -- ma
官方
4 赞
【日常更新】支持2人、3人、4人对战截图
【日常更新】支持2人、3人、4人对战
优化了排行榜显示玩家昵称
3 赞
右键拖拽平移
一、问题本质 不是平移公式写错,而是 UrhoX UI 库指针事件派发的两个不对称陷阱叠加: 陷阱 现象 根因文件 OnPointerMove 不向父冒泡 右键按下 isPanning_=true,但 move 事件永远到不了 mapView urhox-libs/UI/Core/Widget.lua(OnPointerDown/Up 有 parent 冒泡,OnPointerMove 没有) H
官方
4 赞
修复"地图编辑器刷新数据丢失"
问题诊断过程 用户报告:编辑器建好房间 → 保存 → 刷新页面 → 进编辑器 → 数据全没了。 关键线索:用户发现"校园日"模式刷新后能看到房间,但一进编辑器就没了。 这直接指向了编辑器页面自身的初始化逻辑,而非持久化链路。 根因 地图编辑模式.lua 的 EnsureBlankEditorLayout() 设计意图是"首次打开编辑器提供空白画布",用模块级布尔 editorLayoutClear
官方
4 赞
以鼠标为锚点缩放
核心数学原理 缩放前后,鼠标指向的那个世界坐标点必须保持在同一屏幕位置。 已知:旧缩放 oldZoom、新缩放 newZoom、鼠标锚点屏幕坐标 (ax, ay)、当前偏移 (panX, panY) 步骤1:算出旧缩放下鼠标指向的世界坐标 wx = (ax - panX) / oldZoom wy = (ay - panY) / oldZoom 步骤2:新缩放后反解新偏移,让 wx/wy
官方
1 赞
精灵平滑移动、墙碰撞体积
一、 渲染层用连续坐标(scripts/页面/校园地图.lua,三处统一): -- NPC 定位(第408-410行) local contLeft = (character.x or 0) * 5 - 18 - charLeft local contTop = (character.y or 0) * 5 - 36 - charTop -- 主角定位(第504-506行) local con
官方
1 赞
图片加载三层优化设计
目标场景:地图编辑器"物品/墙体/地面/房间/人员"调色板弹窗的图片首帧显示 文档目的:沉淀"图片为什么慢、怎么治、发布后玩家体验如何、未来加资源时 preload_groups 怎么取舍"的完整结论,避免重复踩坑。 一句话结论 WASM 下图片"慢"不是单一问题,而是下载 / 解码 / 上传 GPU 三件事全堆在"玩家点弹窗那一刻"做导致的。优化的本质是把这三件事提前到启动期做(让玩家点的时候图
官方
1 赞
地图编辑器地面交互与视觉优化
一、问题链 用户截图反馈了三个递进的问题: 问题 1:点击地面类型(如食堂地砖),弹窗不关闭,挡住画布无法操作 ↓ 修复 v0.10.94 问题 2:地面贴图太大,一块地砖比小人还宽,比例失调 ↓ 修复 v0.10.96(改配置值) 问题 3:改了配置值后刷新仍然太大——旧存档的 tileSize=256 优先级高于新 config ↓ 修复 v0.10.97(反转渲染优先级) 二、关键代码
官方
4 赞