我想通过首先生成一些2D频域系数然后使用ifft生成纹理来生成2D纹理。为了计算法线贴图,我想得到这个2D函数的导数。我只是想知道以下是否正确:
in 1D I would just do a loop for (k = 0; k < N, k++) coefficients[k] *= i * k; where i is sqrt(-1)
in 2D I should do this? for (m=0;m<N;m++) for (n=0;n<N;n++) coefficients[m,n] *= (i*m)*(i*n) -> -m*n;
答案 0 :(得分:0)
对于2D,“导数”是2D梯度向量,其在空间域中的分量是w.r.t.坐标轴(通常表示为x和y)。因此,您将为一个轴执行coefficients[m,n] *= i*m
,为另一个轴执行coefficients[m,n] *= i*n
。您将对这两个中的每一个应用逆2D fft,以获得偏导数d / dx和偏导数d / dy的图像。然后,法线将是标准化为长度1的向量(d / dx,d / dy,-1)。