Laden...

Forenbeiträge von nagelfrank Ingesamt 3 Beiträge

19.02.2014 - 19:43 Uhr

Hallo Christian,
danke für die Hinweise,
im Moment brauche ich nur eine Kamera.
Mir war es est mal wichtig das es funktiniert. Bin noch ein sehr blutiger Anfänger.
(mache auch Grundlagentraining über die Konsole Variablenübergabe usw. ):
Du beschreibst genau die Problatik die ich als Anfänger habe. In den verschieden
Tutorials über VertexPositionColor, stehen nämlich die drei Matrixen an 3 verschieden
Stellen, mal im LoadContent, mal bei Initialze, mal direkt im public Game. Hat mit Sicherheit alle 3 Möglichkeiten ihre Vor- und Nachteile. Soll erstmals ne Zwischenlösung sein, bis ich gemau Bescheid weiß. Als nächstes werde ich mein Dreieck in eine eigene Klasse schreiben, dann ein Tetrahedron usw, und zum Schluß soll z. B. das jeweilige Objekt über enum das zu zeichnendes Dreieck ausgewählt werden. Rein zum lernen.

Gruß Frank

18.02.2014 - 21:07 Uhr

Problem selber gelöst!
Eigene Klasse für die PerspectiveCamera


public class PerspectiveCamera
        {
            public static Matrix worldMatrix = Matrix.CreateTranslation(0.0f, 0.0f, 0.0f);
            public static Matrix viewMatrix = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 3.0f), new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 0.0f));
            public static Matrix projectionMatrix = Matrix.CreatePerspectiveFieldOfView( MathHelper.ToRadians(45.0f), 800.0f / 480.0f, 0.01f, 100.0f);
        }

In der Gameklasse folgendes definiert:


protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.Black);
            DrawBasicEffect();
            GraphicsDevice.SetVertexBuffer(vertexBuffer);
            
            foreach (EffectPass pass in basicEffect.CurrentTechnique.Passes)
            {
                pass.Apply();
                GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 1);
                // TODO: Add your drawing code here
            }
            base.Draw(gameTime);

Auf die Variablen der Class PerspectiveCamera zugreifen über PerspectiveCamera.


        }
        protected void DrawBasicEffect()
        {
            basicEffect.World = PerspectiveCamera.worldMatrix;
            basicEffect.View = PerspectiveCamera.viewMatrix;
            basicEffect.Projection = PerspectiveCamera.projectionMatrix;
            basicEffect.VertexColorEnabled = true;
        }

12.02.2014 - 19:57 Uhr

Überarbeitete Version
Hallo Leute,

Erstmal danke für die schnelle Antwort, Kritik nehme ich gerne an.
Benutze XNA Game 4.0
Benutze das Beispiel "Das erstes Dreieck"

Meine Aufgabenstellung: Diese 3 Zeilen die ursprünglich in der Game Klasse standen
in eine eigen Klasse zu schreibne.


Matrix world = Matrix.CreateTranslation(0, 0, 0);
Matrix view = Matrix.CreateLookAt(new Vector3(0,0,3),new Vector3(0,0,0),new Vector3(0,1,0));
Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), 800f / 480f, 0.01f, 100f);

Das Thema Namespace habe ich angepackt:
Folgende Lösung gefunden


using AliasToMyClass = PerspectiveCamera.MyPerspectiveCamera;

Somit sieht meine Camera Klasse so aus


namespace PerspectiveCamera
{
    
    public class MyPerspectiveCamera
    {
        private Matrix world;
        private Matrix view;
        private Matrix projection;

        public MyPerspectiveCamera(Matrix world, Matrix view, Matrix projection)
        {
            // TODO: Complete member initialization
            this.world = world;
            this.view = view;
            this.projection = projection;

            
            world = Matrix.CreateTranslation(0, 0, 0);
            view = Matrix.CreateLookAt(new Vector3(0, 0, 3), new Vector3(0, 0, 0), new Vector3(0, 1, 0));
            projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), 800f / 480f, 0.01f, 100f);
            
        }

Folgen Aufruf in der Game Klasse


MyPerspectiveCamera myPerespectiecCamera = new MyPerspectiveCamera(world,view,projection)

Beim Debuggen ist folgendes Aufgedacht:
Einzelschritt: Nichtbenutzercode "Microsoft.Xna.Framework.Vector3.Vector3" wird übersprungen. Zumindestens weiß ich jetzt das was fehlt. Ich vermute mal das,
das was ich wollte so nicht geht, das ich alles auf einmal übergegen kann.

Da liegt schon noch ein Grundlagenproblem vor!
Vielleicht hat noch jemand einen Tip für mich.