Skip to content

feat(render3d): 正面投影烘焙,修复三渲二贴图的正面细节 #265

Description

@johnnyzhang-eng

现象

三渲二产出的 2D 序列帧里,角色的脸与正面细节明显糊,比母版差一个量级。换渲染材质、加光照、提贴图分辨率都救不回来——信息在图生 3D 那一步就丢了。

根因(已量化)

图生 3D 的自动 UV 展开把网格切成上千个碎片铺进图集:

实测
贴图尺寸 4096×4096
UV 有效覆盖率 50.3%(一半 texel 浪费在碎片间隙,等效降成 ~2900²)
头部占模型表面 4.7%
头部分到的贴图面积 4.8%
母版上脸的高度 ~168px
模型上脸的 texel 边长 ~26px 量级

母版是 1024×1536 的成品美术图,重建之后脸只剩几十个 texel。这是有损重采样,不是渲染问题。

方案:正面投影烘焙

拿母版当纹理源,从正面正交相机把它投影回模型 UV,覆盖所有面向相机的三角形。

为什么是这个形式而不是"贴一张脸图上去":

  1. 母版与模型天然对齐 —— 模型就是从这张母版重建的,正面轮廓吻合,不需要人脸配准
  2. 修的不只是脸 —— 胸甲、腰带、裙褶、靴子花纹,整个正面都会回到母版级
  3. 纯本地、零 API 成本,可以反复迭代
  4. 一次修好,所有朝向所有动作都受益 —— 改的是模型贴图,不是某一帧的像素

已知局限:只修得了正面。侧面与背面仍是重建的猜测。对横版 2D 这是可接受的取舍(正面与侧面是主视角),但要写进文档,别让人以为整个模型都提升了。

实现要点

  • 投影方向必须与生成母版时的相机一致;模型朝向按包围盒判,不能假设(实测两个 provider 的臂展轴不同:一个沿 X、一个沿 Z,同一相机角度一个看到正面一个看到侧面)
  • 背面朝向的三角形要剔除,否则母版会被投到背面去
  • 边界要羽化,否则正面/侧面接缝处会有硬边
  • 烘焙后的贴图另存,不覆盖原始产物——原始的是付过费的,不可重生成

验收

  • 同一模型、同一 cel 材质、同一机位,烘焙前后的正面渲染图对照,脸部可辨识度肉眼可见提升
  • 侧面与背面不劣化(投影不该溢出到不该覆盖的三角形)
  • 零 API 调用

Refs #192

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions