关于@morispaa提出的解决方案为什么有效的直觉。1和2,即使它们表示不同的转换,输出系数可能在类似的空间中。更具体地说,我认为Z是“几乎”单一的,这可能导致QR分解返回一个与Z足够接近的基?从某种程度上说,现在从返回的矩阵与旧版本不同,因为它阻止了转换后的系数的处理正常工作。% Inverse:我们的变量是:% y = Direct transformation of x
% Z = Matrix with sampled
但是我希望某些形状有独立的矩阵和变换,即形状从它们特定的矩阵中得到变换,也从场景的变换中得到变换。这意味着我需要组合两个矩阵的转换,并将其用于该形状。var m = Matrix()m.preConcat(m2)
然后将矩阵m的变换应用到形状上,从而接收来自两个矩阵的组合变换。当场景的转换发生变化时,这是很好的。三角形内的圆圈与屏幕的中部相匹配,因此一旦图像的中心与屏幕的中心相匹配,它就会在该点上旋转
我得到了灯光的位置,并通过相同的矩阵变换它,通过它我变换着色器中的每个顶点,因此它应该与场景中的顶点对齐(使用D3DXVec3Transform)。但事实并非如此:变换后的位置几乎根本不代表视图空间的位置。它的x,y坐标超出了图表,它们通常超出(-1,1)范围。变换的位置在一定程度上与摄影机方向有关,但灯光移动太快,y轴反转。下面是我在每一帧中执行的相关渲染代码:
D3DXMATRIX matView; // the view transform mat