от glRotate() + glTranslate() към gluLookAt()

Имам 3 трансформации в следния ред и със следните променливи:

glTranslate(dirX, dirY, dirZ);
glRotate(angleX, 1, 0, 0);
glRotate(angleY, 0, 1, 0);

С тях мога да трансформирам своя ModelView в 3D, постигайки няколко ефекта (преместване на обект в пространството, завъртане на обект около центъра му, увеличаване и намаляване на мащаба от произхода).

Със същите променливи и използвайки gluLookAt(), искам да постигна последните 2 (завъртане около центъра на обекта, мащабиране от началото)


person Artie    schedule 08.05.2013    source източник


Отговори (1)


target = object_position
pos.x = zoom * sin(phi) * cos(theta);
pos.y = zoom * cos(phi);
pos.z = zoom * sin(phi) * sin(theta);

pos += target;

gluLookAt(pos, target, vec3(0, 1, 0)); // up vector is fixed...

Кодът по-горе създава „камера“, която гледа към центъра на обекта и може да се върти наоколо (използвайки сферични координати).

http://mathworld.wolfram.com/SphericalCoordinates.html

person fen    schedule 08.05.2013