在 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()
进行缩放会导致广告牌在相机接近广告牌时开始移动。
非常感谢任何帮助。
如果我对你所做的事情的理解是正确的,那么 right
、up
和 look
只是表示世界 - space 的基本向量广告牌的局部坐标系。在这种情况下,只需缩放 right
和 up
向量(假设它们对应于 x 和 y 广告牌的轴)满足您内心的渴望,仅此而已……
我使用以下代码构建了一个广告牌矩阵:
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()
进行缩放会导致广告牌在相机接近广告牌时开始移动。
非常感谢任何帮助。
如果我对你所做的事情的理解是正确的,那么 right
、up
和 look
只是表示世界 - space 的基本向量广告牌的局部坐标系。在这种情况下,只需缩放 right
和 up
向量(假设它们对应于 x 和 y 广告牌的轴)满足您内心的渴望,仅此而已……