Anonymní profil Duke – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Duke – Programujte.comAnonymní profil Duke – Programujte.com

 

Příspěvky odeslané z IP adresy 62.201.20.–

Duke
.NET › vykreslování 3D modelu v C#
30. 7. 2012   #160833

#1 Duke
pomož si a bude ti pomoženo

místo 

RenderTarget2D rnd = new RenderTarget2D(graf.GraphicsDevice, 800, 600);

má být 

RenderTarget2D rnd = new RenderTarget2D(graf.GraphicsDevice, 800, 600, false, SurfaceFormat.Color, DepthFormat.Depth24);
Duke
.NET › vykreslování 3D modelu v C#
29. 7. 2012   #160770

Ahoj, nedávno jsem potřeboval do c# nahrát model(.x/.fbx), programově ho natočit a následně převést do 2D textury, což se mi částečně povedlo

jde o to, že když vykresluju normálně přímo na monitor, tak výsledek je toto
http://www.2i.cz/1d2dd0fa29

ale pokud změním render target a uloženou texturu vykreslím později, tak výsledek je toto

http://www.2i.cz/0c3cc1eb38

různě po fórech jsem našel několi postupů, co s tím, ale žádný nezabral.. tak nevím, jestli tam nemrším něco jinýho

kdyby jste se mohli kouknout na zdroják a říct, co vás znepokojuje, byl bych vám vděčný

public void Draw(SpriteBatch sprite)
        {
            //veci z for
           renderTarget.GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
           renderTarget.GraphicsDevice.BlendState = BlendState.Opaque;
           renderTarget.GraphicsDevice.DepthStencilState = DepthStencilState.Default;

           graphics.SetRenderTarget(renderTarget);
           

            graphics.Clear(Color.CornflowerBlue);

            // Copy any parent transforms.
            Matrix[] transforms = new Matrix[myModel.Bones.Count];
            myModel.CopyAbsoluteBoneTransformsTo(transforms);
            

            // Draw the model. A model can have multiple meshes, so loop.
            foreach (ModelMesh mesh in myModel.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.CreateRotationY(modelRotation)
                        * Matrix.CreateTranslation(modelPosition);
                    effect.View = 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();
             
            }





            graphics.SetRenderTarget(null);
            shadowMap = (Texture2D)renderTarget;

           

            sprite.Begin();
            sprite.Draw(shadowMap,new Rectangle(0,0,CMenu.rozlW,CMenu.rozlH),Color.White);
            sprite.End();

            

        }

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý