locked
Ayuda con rotacion RRS feed

  • Pregunta

  • Tengo un problema en la rotacion de un modelo 3d y necesito ayuda a ver si alguien me puede echar un cable.

    El modelo es este:

    Me gira bien hacia un lado

    Pero ahora lo que quiero es que si le doy para arriba me vaya hacia arriba en el eje en el que esta ahora no del original.

    Y lo que quiero que me haga es que me rote en el eje X pero de la ultima posicion en la que esta


    Aqui dejo el codigo fuente del programa:

    Codigo fuente


    martes, 30 de abril de 2013 16:23

Respuestas

  • Así debiera de valer... ;)

     

    Quaternion rot = Quaternion.Identity;
           
    protected override void Update(GameTime gameTime)
           
    {
                key
    = Keyboard.GetState();
               
    float secs =(float) gameTime.ElapsedGameTime.TotalSeconds;
               
    float angle = 90 * secs;
               
    if (key.IsKeyDown( Keys.Space )) {
                    posicion
    += Vector3.Forward + obtenerVelocidad( );
               
    }
               
    if (key.IsKeyDown( Keys.Left )) ApplyRotation( Vector3.UnitZ, angle );
               
    if (key.IsKeyDown( Keys.Right )) ApplyRotation( Vector3.UnitZ, -angle );
               
    if (key.IsKeyDown( Keys.Up )) ApplyRotation( Vector3.UnitX, angle );
               
    if (key.IsKeyDown( Keys.Down )) ApplyRotation( Vector3.UnitX, -angle );
               
    base.Update(gameTime);
           
    }
           
    private void ApplyRotation( Vector3 axis, float angle ) {
                rot
    *= Quaternion.CreateFromAxisAngle( axis, MathHelper.ToRadians( angle ));
           
    }

    // En el draw

    effect.World = Matrix.CreateFromQuaternion(rot) *  Matrix.CreateScale(0.1f) * Matrix.CreateTranslation(posicion);




    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com

    jueves, 2 de mayo de 2013 1:09