-
Если поворачивать модель функцией glRotate() , то поварачивается вокруг точки 0,0,0 а как сделать чтоб поварачивалась вокруг своей оси?????
-
Во первых поворачивает не вокруг точки, а таки вокруг оси. Ось задается тремя последними параметрами.
Но вы то явно не то имели ввиду, что сказали.... Поэтому сначала делайте Translate, потом Rotate и тогда будет вращаться вокруг нужной вам точки.
-
Я делал Translate, потом Rotate . Но вращается всегда вокруг начала координат. Чем дальше от него тем больше радиус.
-
> [2] Дима (28.05.09 17:29) > Я делал Translate, потом Rotate .
Я тоже делал и у меня все работает. Выдержка из одного проекта: procedure TSceneObject.Draw(Time: integer; TrackPosition:integer; Transparent:boolean; const Frustum:TFrustum);
var
Anim,Lighting:single;
Pos,Rot:TVector4f;
begin
glPushMatrix();
if GetVisible(Time) then begin
Pos:=GetPosition(Time,TrackPosition);
Rot:=GetRotation(Time);
Anim:=GetAnimation(Time);
Lighting:=GetLighting(Time);
glTranslatef(Pos.x,Pos.y,Pos.z);
glRotatef(Rot.x, 1, 0, 0);
glRotatef(Rot.y, 0, 1, 0);
glRotatef(Rot.z, 0, 0, 1);
glColor3f(Lighting,Lighting,Lighting);
if Transparent then
GetModel(Time).DrawFrame(Pos,Anim,DRAW_TRANSPARENT,Frustum,DifficultObject)
else
GetModel(Time).DrawFrame(Pos,Anim,DRAW_SOLID,Frustum,DifficultObject);
glColor3f(1,1,1);
end;
glPopMatrix();
end;
-
У меня наверное не получается потому что сначала делаю инверт мыши glRotate(Tilt, 1, 0, 0); //по y glRotate(Heading, 0, 1, 0); //по х
а потом поварачиваю модель glRotatef(Heading, 0, 1, 0);
-
Может есть какие нибуть "скобки" чтоб отделить инверт мыши от поворота модели????
-
> [4] Дима (28.05.09 18:07) > У меня наверное не получается потому что сначала делаю > инверт мыши > glRotate(Tilt, 1, 0, 0); //по y > glRotate(Heading, 0, 1, 0); //по х > > а потом поварачиваю модель > glRotatef(Heading, 0, 1, 0);
А где здесь Translate?
-
Как ни странно я тоже камеру устанавливаю. glTranslate(-CameraPosition.x,-CameraPosition.y,-CameraPosition.z);
glRotate(YAngle,1,0,0);
glRotate(XAngle,0,0,1);
-
Да значит у меня неправильно сделано.
|