feat(render): 地面物品小图标自适应渲染与动态闪光粒子特效 (Ground Item Rendering & Glint Sparkle) #389

Closed
opened 2026-09-23 01:57:23 +00:00 by troytt · 0 comments
Owner

问题背景与视觉现状

目前场景渲染管线(src/scene/act-scene.ts)中已具备地面、阴影、墙壁、屋顶、环境对象、玩家与怪物的渲染,但未接入地面物品的绘制层。当物品掉落在地面上时没有任何贴图视觉呈现,也缺少暗黑 2 原版标志性的宝石与宝物动态闪烁光芒(Glint/Sparkle),无法给玩家带来正向的拾取诱惑与视觉反馈。


原版 Diablo II v1.13c 核心机制规范(Ground Truth)

1. 地面物品图元渲染与等距透视投影 (Isometric Depth Sorting)

  • 图元对齐与缩放:
    • 掉落在地面的物品以小图标形式居中贴齐网格(尺寸根据物品网格 1x1, 1x2, 2x3, 2x4 比例自适应)。
    • 金币堆根据数量展示原版不同金币规格贴图(小堆金币 invgld、中堆金币 invgldm、大堆金币 invgldh / flpgld)。
  • 等距画家算法层级:
    • 地面物品实体加入 entities 深度排序队列(深度值为 cell.x + cell.y),严格绘制在地面(Floors)与阴影(Shadows)之后,但在后方墙体遮挡之前,保证站在物品前方的角色或怪物自然遮挡物品。

2. 动态微芒/星芒闪烁特效 (Glint / Sparkle Animation)

  • 周期与随机性:
    • 原版暗黑 2 中,地面上的宝石、稀有/暗金装备具有周期性的白色反光与星芒。
    • 每隔 1.5 ~ 2.5 秒,在物品表面或对角边缘生成一次十字星芒(4-point star)或渐显高光点,持续 12 ~ 18 帧,利用正弦缓动实现平滑明暗渐变。
  • 高阶品质光晕支持:
    • 套装、暗金、符文物品支持叠加淡淡的品质颜色微光。

改造与验收标准

  1. 地面上的所有装备、符文、药水及金币均有清晰图标展示,底边居中对齐世界网格。
  2. 物品在等距视口中与场景建筑、怪物、玩家的遮挡顺序严格符合画家算法,无图层错位。
  3. 地面物品拥有真实灵动的周期性星芒闪烁(Sparkle/Glint)动画。
  4. 自动化构建与单测(npm run typecheck, npm test)100% 通过。
## 问题背景与视觉现状 目前场景渲染管线(`src/scene/act-scene.ts`)中已具备地面、阴影、墙壁、屋顶、环境对象、玩家与怪物的渲染,但未接入地面物品的绘制层。当物品掉落在地面上时没有任何贴图视觉呈现,也缺少暗黑 2 原版标志性的宝石与宝物动态闪烁光芒(Glint/Sparkle),无法给玩家带来正向的拾取诱惑与视觉反馈。 --- ## 原版 Diablo II v1.13c 核心机制规范(Ground Truth) ### 1. 地面物品图元渲染与等距透视投影 (Isometric Depth Sorting) - **图元对齐与缩放**: - 掉落在地面的物品以小图标形式居中贴齐网格(尺寸根据物品网格 1x1, 1x2, 2x3, 2x4 比例自适应)。 - 金币堆根据数量展示原版不同金币规格贴图(小堆金币 `invgld`、中堆金币 `invgldm`、大堆金币 `invgldh` / `flpgld`)。 - **等距画家算法层级**: - 地面物品实体加入 `entities` 深度排序队列(深度值为 `cell.x + cell.y`),严格绘制在地面(Floors)与阴影(Shadows)之后,但在后方墙体遮挡之前,保证站在物品前方的角色或怪物自然遮挡物品。 ### 2. 动态微芒/星芒闪烁特效 (Glint / Sparkle Animation) - **周期与随机性**: - 原版暗黑 2 中,地面上的宝石、稀有/暗金装备具有周期性的白色反光与星芒。 - 每隔 1.5 ~ 2.5 秒,在物品表面或对角边缘生成一次十字星芒(4-point star)或渐显高光点,持续 12 ~ 18 帧,利用正弦缓动实现平滑明暗渐变。 - **高阶品质光晕支持**: - 套装、暗金、符文物品支持叠加淡淡的品质颜色微光。 --- ## 改造与验收标准 1. 地面上的所有装备、符文、药水及金币均有清晰图标展示,底边居中对齐世界网格。 2. 物品在等距视口中与场景建筑、怪物、玩家的遮挡顺序严格符合画家算法,无图层错位。 3. 地面物品拥有真实灵动的周期性星芒闪烁(Sparkle/Glint)动画。 4. 自动化构建与单测(npm run typecheck, npm test)100% 通过。
troytt added this to the 复刻捡起/丢弃物品 milestone 2026-09-23 01:57:23 +00:00
Sign in to join this conversation.
No Label
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#389
No description provided.