bash
复制代码
┌─────────────────────────────────────────────────────────────┐
│ 训练数据准备阶段 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 原始 Mesh (OBJ/PLY/GLB) │
└───────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ Watertight Mesh (水密网格) │
└───────────────────────────────────────┘
│
┌───────────┴───────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ surface.npz │ │ sdf.npz │
│ │ │ │
│ • random_surface │ │ • vol_points │
│ • sharp_surface │ │ • vol_label │
│ (坐标+法向量) │ │ • random_near_* │
│ │ │ • sharp_near_* │
└──────────────────┘ └──────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 训练时数据加载 │
└─────────────────────────────────────────────────────────────┘
│
┌───────────┴───────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ Surface Loader │ │ SDF Loader │
│ │ │ │
│ • 采样到pc_size │ │ • 加载查询点 │
│ • 组合成tensor │ │ • 加载SDF标签 │
└──────────────────┘ └──────────────────┘
│
▼
┌───────────────────────────────────────┐
│ Input: surface [B, N, 6] │
│ • B: batch size │
│ • N: num_points (pc_size + │
│ pc_sharpedge_size) │
│ • 6: [x,y,z, nx,ny,nz] │
└───────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 编码器 (Encoder) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 1. 分离坐标和法向量 │
│ pc [B,N,3], feats [B,N,3] │
└──────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 2. FPS采样查询点 │
│ Q [B, M', 3] │
└───────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 3. Fourier位置编码 │
│ X_p [B,N,d], X_q [B,M',d] │
└───────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 4. Cross-Attention + Self-Attention │
│ H_s [B, M', d] │
└───────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 5. 预测潜在分布 + 采样 │
│ Z_s [B, M', d0] │
└───────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 解码器 (Decoder) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 1. 投影到transformer维度 │
│ [B, M', d] │
└───────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 2. Transformer自注意力层 │
│ refined_latents [B, M', d] │
└───────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 3. 生成3D查询网格 │
│ Q_g [H×W×D, 3] │
└──────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 4. Cross-Attention解码 │
│ F_g [H×W×D, d] │
└───────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 5. SDF预测 │
│ F_sdf [B, H, W, D, 1] │
└───────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 损失计算 (Loss) │
└─────────────────────────────────────────────────────────────┘
│
┌───────────┴───────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ 重建损失 │ │ KL散度损失 │
│ (MSE) │ │ (KL Divergence) │
│ │ │ │
│ 预测SDF vs │ │ 后验 vs 先验 │
│ 真实SDF │ │ 分布 │
└──────────────────┘ └──────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 总损失: L_r = MSE + γ·L_KL │
└───────────────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 反向传播 + 参数更新 │
└───────────────────────────────────────┘