|
//以下代码是计算顶点vertices[i*(iWidth)+j] 的法线的代码
//为什么计算所用的向量是
D3DXVECTOR3 vec1( -1.0f, 0.0f, deltaHeight1 );
D3DXVECTOR3 vec2( 0.0f, 1.0f, deltaHeight2 );
有什么道理,完全没看懂?
height[j]是高度数据
float deltaHeight1, deltaHeight2;
if(i<iHeight-1)
deltaHeight1 = float(height[j]-height[i+1][j]);
else
deltaHeight1 = float(height[i-1][j]-height[j]);
if(j<iWidth-1)
deltaHeight2 = float(height[j+1]-height[j]);
else
deltaHeight2 = float(height[j]-height[j-1]);
D3DXVECTOR3 vec1( -1.0f, 0.0f, deltaHeight1 );
D3DXVECTOR3 vec2( 0.0f, 1.0f, deltaHeight2 );
D3DXVec3Cross( &vertices[i*(iWidth)+j].normal, &vec1, &vec2 ); |
|