在我的图形项目中,我使用XMMATRIX来表示实体的变换。现在我需要缩放我的矩阵的翻译部分。我怎么能用XMMATRIX做到这一点? XMMatrixScale函数让我只修改X,y或z行,但不修改T。
总的来说,我认为使用XMMATRIX作为转换矩阵并不是很舒服。我有什么选择?我想有能力轻松旋转,缩放,转换等等。很多这个我有XMMATRIX,但我还需要其他东西来操作翻译部分吗?
答案 0 :(得分:0)
您可以连接操作以获得具有缩放和平移的矩阵。如果将4x4矩阵与比例系数一起使用,并将其应用于具有平移行的单位矩阵,您会注意到翻译部分也将被缩放。您只需连接矩阵(即DirectX IIRC的Vector * Scale * Translation。)
在“普通”数学中,你将得到一个比例矩阵S,一个平移矩阵T和一个向量V,你得到的vecor V'= S * T * V;首先翻译V,然后缩放整个场景(也就是说,如果您将1个单位向右翻译,并按2缩放,则总翻译将为2)。在DirectX中,由于列/行主矩阵存储,顺序是不同的IIRC。
小数字示例:我们取V =(1,0,0),T =平移(1,0,0),S =(2,2,2)。 T * V - > (2,0,0),这由S =(4,0,0)
缩放