Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Control 3D

Iniciado por pichoneto, 26 de Mayo de 2011, 12:04:39 PM

« anterior - próximo »

pichoneto

Buenas!

Estoy investigando el mundo de XNA y me he metido directamente al 3D. Soy capaz de cargar un modelo (un tanque) perfectamente, y lo voy rotando sin problemas. Hasta que soy yo el que lo quiere girar y no el método upsate de manera automática. Cuando cargo una imagen para hacer el típico joystick, el renderizado se me estropa, y se me cargan las orugas que deberían estar "detras" como si estuvieran delante, y cosas así.

Cómo puedo arreglar esto? O no debería cargar una imagen y debo pintarlo directamente? Esty programando para Windows phone

Un saludo!

WaaghMan

Parece un tema de estados de renderizado, que se ha desactivado el ZBuffer al pintar el rectángulo... si pones un poco de código mejor.
Milkstone Studios - Autores de Avatar Ninja!, Little Racers, MotorHEAT y Wool en Xbox Live Indie Games

pichoneto

Buenas!

Tienes razón, con código siempre mejor, pero como era tan poquito... : )

En el resto de código no hago nada más, en el método LoadContent cargo el modelo y la imagen y casi nada más


protected override void Draw(GameTime gameTime)       
        {           
            GraphicsDevice.Clear(Color.CornflowerBlue);

            spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
            spriteBatch.Draw(bullseye, new Vector2(50, 50), Color.White);
            spriteBatch.End();

            // Copy any parent transforms.           
            Matrix[] transforms = new Matrix[tank.Bones.Count];           
            tank.CopyAbsoluteBoneTransformsTo(transforms);           
            // Draw the model. A model can have multiple meshes, so loop.           
            foreach (ModelMesh mesh in tank.Meshes)           
            {               
                // This is where the mesh orientation is set, as well as our camera and projection.               
                foreach (BasicEffect effect in mesh.Effects)               
                {                     
                    effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateTranslation(tankPosition);
                    effect.View = Matrix.CreateRotationY(cameraRotationY) * Matrix.CreateRotationZ(cameraRotationZ) * Matrix.CreateLookAt(cameraPosition, Vector3.Zero, Vector3.Up);                   
                    effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), aspectRatio, 1.0f, 10000.0f);
                }               
                // Draw the mesh, using the effects set above.               
                mesh.Draw();           
            }
            base.Draw(gameTime);       
        }


Muchas gracias!

blau

Habilita el Z Buffer anstes de pintar el tanque...

GraphicsDevice.DepthStencilState = DepthStencilState.Default;

pichoneto







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.