Появился еще вопрос:
Как мне сделать сдиг тела а потом поворот в локальных координатах?
Делаю вот так:
RotateEntity(matWorldRY,mx);
MoveEntity(matWorldPos,UP1,0,UP2);
D3DXMatrixMultiply(&matWorld,&matWorldPos,&matWorldRY);
SetTransform(WORLD,matWorld);
pMesh->DrawSubset(0);
когда позиция = 0 то тело крутится как бы вокруг своей оси, а когда передвигаеться дальше тополучаеться что тело это child каой-то оси, т.е оно движеться не вокруг своей оси а вокруг другой как ребёнок вокруг парента? Что надо написать чтобы тело крутилось вокруг себя?
Функция поворота такая:
void RotateEntity(D3DXMATRIX& m,double angle)
{
m._11 = cos(angle); m._12 = 0; m._13 = -sin(angle); m._14 = 0;
m._21 = 0; m._22 = 1; m._23 = 0; m._24 = 0;
m._31 = sin(angle); m._32 = 0; m._33 = cos(angle); m._34 = 0;
m._41 = 0; m._42 = 0; m._43 = 0; m._44 = 1;
}
а передвижения:
void MoveEntity(D3DXMATRIX& m,float dx,float dy,float dz)
{
m._11 = 1; m._12 = 0; m._13 = 0; m._14 = 0;
m._21 = 0; m._22 = 1; m._23 = 0; m._24 = 0;
m._31 = 0; m._32 = 0; m._33 = 1; m._34 = 0;
m._41 += dx; m._42 += dy; m._43 +=-dz; m._44 = 1;
}