在高斯泼溅作者代码的这一行中,它谈到了“圆锥曲线不透明度”。该代码引用了“Surface Splatting”论文中关于圆锥曲线不透明度的想法。然而,当我在 Surface Splatting 中搜索“圆锥曲线”一词时,我什么也没找到。我理解“圆锥形”(圆锥体)和“不透明度”(可以通过多少光),但是将这两个词放在一起,我不明白“圆锥形不透明度”是什么。请问有人愿意帮我理解吗? 这是我试图理解的代码块:
// Resample using conic matrix (cf. "Surface
// Splatting" by Zwicker et al., 2001)
float2 xy = collected_xy[j];
float2 d = { xy.x - pixf.x, xy.y - pixf.y };
float4 con_o = collected_conic_opacity[j];
float power = -0.5f * (con_o.x * d.x * d.x + con_o.z * d.y * d.y) - con_o.y * d.x * d.y;
if (power > 0.0f)
continue;```
conic_opacity
包含协方差矩阵的逆矩阵和相应高斯密度的值。此外,由于对称性,该变量中并非存储整个 2x2 矩阵,而是仅存储 3 个值。因此
conic_opacity = [S_11, S_12, S_22, alpha_gaussian]
您可以通过进一步查看它的使用方式来验证这一点:
float4 con_o = collected_conic_opacity[j];
float power = -0.5f * (con_o.x * d.x * d.x + con_o.z * d.y * d.y) - con_o.y * d.x * d.y;
float alpha = min(0.99f, con_o.w * exp(power));
alpha
与原始高斯泼溅纸中方程 2,3 中使用的 alpha 完全相同