Tag: perlin noise

“Blocky”Perlin噪音

我最近一直在尝试在C中实现Perlin Noise生成器(基于Ken Perlin的网站 ,使用SDL库作为屏幕输出),但输出显示插值块之间的边缘不连续或平滑 – 插值块真的表现为块。 我尝试了四种插值,所有“平滑”插值看起来都差不多; 只有余弦看起来(非常)略微更好,直线性看起来比较可怕。 (以下是余弦和线性) 具有讽刺意味的是,如果制作一个分形噪声和(我的最终目的),线性会以“块状”的方式吹走平滑插值,实际上看起来几乎没问题。 我很确定我的代码中缺少某些东西或做错了,但我似乎无法找到它。 什么(或什么条件)可能导致这些块伪影的任何建议? 供参考,我目前的代码如下: #include #include #include void normalize3(float *vec3){ float distX=0,distY=0,distZ=0; distX=vec3[0]; distX*=distX; distY=vec3[1]; distY*=distY; distZ=vec3[2]; distZ*=distZ; float dist=sqrtf(distX+distY+distZ); vec3[0]/=dist; vec3[1]/=dist; vec3[2]/=dist; } float sinterpolate(float scale){ //return scale*scale*(3.0-2*scale); //Classic 3*t^2-2*t^3 /*float t=scale*scale; float u=t*t; return (6.0*u*scale-15.0*u+10.0*t*scale);*/ //Improved 6*t^5-15*t^4+10*t^3 return (0.5-cosf(scale*M_PI)/2.0); //Straight cosine interpolation } float […]