我正在实施Marching Cubes Algorithm。假设我有类似于那幅画的 3D图像。当我使用 MC 算法时,我得到了这样的结果:effect
Everywhere where angle is ~ 90 度 MC 算法也近似于该元素(它来自插值函数,但我特别感兴趣的是禁用角度为 ~ 90 度的任何地方的近似)。
所以代替那个,我想要这样的东西(但只在角度~90的地方,我期望正常近似的其他地方(来自MC算法的经典)。
电流插值功能
我使用了有符号距离函数(SDF)。
Vector3 interpolate(Vector3 v1, Vector3 v2, float sdf1, float sdf2)
{
float offset;
float d = sdf2-sdf1;
if(fabs(delta) < 1e-5)
{
offset = 0.5;
}else
{
offset = (1e-5 - sdf1)/delta
}
return Vector3(v1+offset*(v2-v1));
}
可能的解决方案
解决方案之一是为立方体(体素)设置较小的尺寸。但由于性能,我不能这样做。所以我认为关键是插值函数。