Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#define _camara
#include <d3d11.h>
#include <D3DX11.h>
#include <D3DX10math.h>
class Camara {
public:
D3DXVECTOR3 posCam;
//////////
// Nueva variable para camara tercera persona
D3DXVECTOR3 posCam3P;
D3DXVECTOR3 hdveo;
D3DXVECTOR3 hdvoy;
D3DXVECTOR3 refUp;
D3DXVECTOR3 refRight;
D3DXVECTOR3 refFront;
D3DXMATRIX vista;
D3DXMATRIX proyeccion;
int ancho;
int alto;
//////////
// Nueva variable para camara tercera persona
bool persona;
// Matriz de rotacion
D3DXMATRIX rotacion;
D3DXVECTOR3 posCamPast, posCamPast3P;
float pos[2];
//a donde ve
hdveo = target;
refUp = up;
ancho = Ancho;
alto = Alto;
D3DXVec3Normalize(&refUp, &refUp);
}
//////////
// Nueva variable para camara tercera persona tipoVista tipo bool
//////////
// nueva matriz de vista
D3DXMATRIX tVista;
D3DXMATRIX vistaPrev = vista;
D3DXMatrixTranslation(&vista, 0, 0, 0);
//D3DXMatrixMultiply(&vista, &vista, &tVista);
D3DXVECTOR4 tempo;
D3DXQUATERNION quatern; //quaternion temporal para la camara
D3DXMATRIX giraUp, giraRight; //matrices temporales para los giros
//////////
// aplicamos la matriz de rotacion
//////////
rotacion = giraRight;
//////////
// ajustamos la matriz de vista con lo obtenido
//////////
posCam += refFront * vel / 10.0;
//3ra Persona
posCam3P += refFront * vel / 10.0; // calculo para que s emuieva la
camra a cierta velocidad
//persona = tipoVista;
if (tipoVista) //cuando el tipo de camara es tercera persona
{
hdveo = posCam3P + refFront;
D3DXMatrixLookAtLH(&vista, &posCam3P, &hdveo, &refUp);
}
else // cuando el tipo de camara es primera persona
{
hdveo = posCam + refFront;
D3DXMatrixLookAtLH(&vista, &posCam, &hdveo, &refUp); // modifica
el vector de la camara
}
D3DXMatrixTranspose(&vista, &vista);
return vista;
}
float* getPos()
{
pos[0] = posCam.x;
pos[1] = posCam.z;
return pos;
}
};
#endif