Показать сообщение отдельно
Старый 01.06.2014, 16:46   #1
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
View и Projection матрица

//Projection матрица
var tan=Math.tan(angle),

A=-(zMax+zMin)/(zMax-zMin),
B=(-2*zMax*zMin)/(zMax-zMin);

return [
.5/tan, 0 ,   0, 0,
 0, .5*a/tan,  0, 0,
0, 0,         A, -1,
0, 0,         B, 0
];

...

//View матрица
//this.at.v - вектор, показывающий куда смотрит камера
//this.eye - вектор, показывающий местоположение камеры
//this.up - вектор (0,1,0)
var zaxis = new Vec3(this.at.v.x-this.eye.v.x,this.at.v.y-this.eye.v.y,this.at.v.z-this.eye.v.z).normal();
var xaxis = this.up.cross(zaxis).normal();
var yaxis = zaxis.cross(xaxis);

return [
xaxis.v.x,yaxis.v.x,zaxis.v.x,0,
xaxis.v.y,yaxis.v.y,zaxis.v.y,0,
xaxis.v.z,yaxis.v.z,zaxis.v.z,0,
-xaxis.dot(this.eye),-yaxis.dot(this.eye),-zaxis.dot(this.eye),1
];
ЧЯДНТ? В шейдере умножаю перпективу на вид на модель.
Использовать библиотеки не хочу, целью является получить опыт в математике.
(Offline)
 
Ответить с цитированием