Конференция "Игры" » поворот модели
 
  • Дима (28.05.09 13:13) [0]
    Если поворачивать модель функцией glRotate() ,
    то поварачивается вокруг точки 0,0,0
    а как сделать чтоб поварачивалась вокруг своей оси?????
  • @!!ex © (28.05.09 13:29) [1]
    Во первых поворачивает не вокруг точки, а таки вокруг оси. Ось задается тремя последними параметрами.

    Но вы то явно не то имели ввиду, что сказали.... Поэтому сначала делайте Translate, потом Rotate и тогда будет вращаться вокруг нужной вам точки.
  • Дима (28.05.09 17:29) [2]
    Я делал Translate, потом Rotate .
    Но вращается всегда вокруг  начала координат.
    Чем дальше от него тем больше радиус.
  • @!!ex © (28.05.09 17:49) [3]
    > [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;

  • Дима (28.05.09 18:07) [4]
    У меня наверное не получается потому что сначала делаю
    инверт мыши
     glRotate(Tilt, 1, 0, 0); //по y
     glRotate(Heading, 0, 1, 0); //по х

    а потом поварачиваю модель
    glRotatef(Heading, 0, 1, 0);
  • Дима (28.05.09 18:24) [5]
    Может есть какие нибуть "скобки"
    чтоб отделить инверт мыши от поворота модели????
  • @!!ex © (28.05.09 18:44) [6]
    > [4] Дима   (28.05.09 18:07)
    > У меня наверное не получается потому что сначала делаю
    > инверт мыши
    > glRotate(Tilt, 1, 0, 0); //по y
    > glRotate(Heading, 0, 1, 0); //по х
    >
    > а потом поварачиваю модель
    > glRotatef(Heading, 0, 1, 0);

    А где здесь Translate?
  • @!!ex © (28.05.09 18:45) [7]
    Как ни странно я тоже камеру устанавливаю.

    glTranslate(-CameraPosition.x,-CameraPosition.y,-CameraPosition.z);
    glRotate(YAngle,1,0,0);
    glRotate(XAngle,0,0,1);

  • Дима (28.05.09 22:07) [8]
    Да значит у меня неправильно сделано.
 
Конференция "Игры" » поворот модели
Есть новые Нет новых   [134430   +3][b:0][p:0.001]