Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Algoritmos  Girar um modelo em seu proprio eixo
Anterior Anterior
 
Próximo Próximo
Nova Entrada 20/7/2008 20:50
  Marcos Agostta
2 tópicos
Sem Ranking


Re: Girar um modelo em seu proprio eixo 
Modificado Por Marcos Agostta  em 20/7/2008 17:56:15)
Se for em 2D é facil, 3D já não sei

Declare
        Vector2 origem, posImg;
        //origem humm.., imagine que a imagem fosse uma foto, a origem seria como um alfinete que a prende
        //posImg posição x e y da imagem
        float rotação; //rotacão atual da imagem
        Texture2D imagem; //imagem que vai girar

 protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
            imagem = Content.Load<Texture2D>(@"Helice");
            posImg = new Vector2(300,200);
            //defina a origem  no centro para que rode como um volante
            origem.X = imagem.Width / 2;
            origem.Y = imagem.Height / 2;
        }

 protected override void Draw(GameTime gameTime)
        {
            rotação += 0.05f;
            graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
            spriteBatch.Begin();
            spriteBatch.Draw(imagem, posImg, null, Color.White, rotação, origem, 1.0f, SpriteEffects.None, 0f);
            spriteBatch.End();

            base.Draw(gameTime);
        }
 
Nova Entrada 20/7/2008 23:37
  lucianoJose
125 tópicos
Iniciante


Re: Girar um modelo em seu proprio eixo 
 jkleber escreveu
Então, para ser sincero eu só coloquei multiplicando no  matrix.CreateLookAt porque foi o unico que chegou no resultado mais satisfatório, mas você poderia me dizer qual o local correto onde eu deveria colocar??, só consigo fazer aquela rotação que eu te falei, eu roda como se estivesse em orbita de alguma coisa, não gira em seu próprio eixo.

Quanto a colocar a posição do modelo, eu coloquei porque fica mais facil pra eu me organizar o que estou fazendo.

e obrigado pela dica do createrotation


essa matrix gameWorldRotation, tu pode colocar atribuir ela à matrix World do Effect, assim: effect.World = gameWorldRotation;

Tipo, tem como tu procurar algum video ou jogo e mostrar pra gente aqui como vc quer de fato essa sua rotação? Dai seria bem mais fácil da gente, pelo menos pra mim, te mostrar algum código que de fato rode esse tipo de rotação que tu quer...

De qualquer forma, baixa este exemplozinho(Download GoingBeyond1_Tutorial_Sample.zip). Dá uma olhada no código e vê se a navezinha tá girando como tu quer...

O exemplo sugerido acima, pode ser encontrado aqui.

MCP, MCTS. Administrador do SharpGames. Game Developer(C++) at Manifesto Game Studio Meu Blog: lucianojosefj.spaces.live.com
 
Nova Entrada 21/7/2008 13:32
  jkleber
8 tópicos
Sem Ranking


Re: Girar um modelo em seu proprio eixo 
Talvez eu ja esteja sendo chato, mas é que ta dificil, nada da certo...

O exemplo da nave é exatamente o que eu quero, eu fiz exatamente como esta e ainda não deu:

          effect.EnableDefaultLighting();
          // posiciona o modelo no "mundo"
          effect.World = transforma[mesh.ParentBone.Index] * Matrix.CreateRotationY(rotacao) * Matrix.CreateTranslation(posicaoMundo);
          // posiciona o modelo em relação a camera
          effect.View = Matrix.CreateLookAt(posicaoCamera, Vector3.Zero, Vector3.Up);
          // cria a perspectiva do modelo
          effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(escala),
                aspectRatio, 1.0f, 10000.0f);


No Matrix.CreateRotation eu ja usei X , Y e Z, eu coloquei Vector3.zero, fiz tudo praticamente e o modelo não roda em seu eixo,... ele fica fazendo circulos, não sei o que possa estar acontecendo, é muito estranho
 
Anterior Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Algoritmos  Girar um modelo em seu proprio eixo
AdSense

Amazon

Logos do XBox 360, XNA e Games For Windows
Copyright 2008 por SharpgamesPolítica de Privacidade  |  Termos de Uso