在 DX11 中缩放广告牌矩阵

Scale a billboard matrix in DX11

我使用以下代码构建了一个广告牌矩阵:

    XMFLOAT4X4 translationMatrix = XMFLOAT4X4();
    translationMatrix._11 = right.x;    translationMatrix._21 = up.x;   translationMatrix._31 = look.x; translationMatrix._41 = worldposition.x;
    translationMatrix._12 = right.y;    translationMatrix._22 = up.y;   translationMatrix._32 = look.y; translationMatrix._42 = worldposition.y;
    translationMatrix._13 = right.z;    translationMatrix._23 = up.z;   translationMatrix._33 = look.z; translationMatrix._43 = worldposition.z;
    translationMatrix._14 = 0;          translationMatrix._24 = 0;   translationMatrix._34 = 0;    translationMatrix._44 = 1;

这可以正常工作,但是我希望广告牌是可缩放的,我该如何实现这一点,因为矩阵完全是向量,因此本身不具有可缩放性?

尝试使用 XMMatrixScaleFromVector() 进行缩放会导致广告牌在相机接近广告牌时开始移动。

非常感谢任何帮助。

如果我对你所做的事情的理解是正确的,那么 rightuplook 只是表示世界 - space 的基本向量广告牌的局部坐标系。在这种情况下,只需缩放 rightup 向量(假设它们对应于 xy 广告牌的轴)满足您内心的渴望,仅此而已……