Seite 1 von 1

XNA Game

Verfasst: 25.05.2009, 13:49
von roker002
hab versucht nach der Anleitung ein Medol zu laden, aber ich krieg das nicht zum laufen. Irgendwie ist mein Model ein Nullpointer
hier dat arktikel
http://www.xnamag.de/article.php?aid=24

Code: Alles auswählen


        MyModel model1;
        
        Model myModel;
        Matrix worldMatrix;
        Matrix viewMatrix;
        Matrix projectionMatrix; 


        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            myModel = Content.Load<Model>("modelAsset.x");    //Hier NULL POINTER
            worldMatrix = Matrix.CreateRotationY(4.0f) * Matrix.CreateTranslation(new Vector3(1.0f, 1.0f, 1.0f));
            viewMatrix = Matrix.CreateLookAt(new Vector3(1.0f, 10.0f, 0.0f), new Vector3(1.0f, 1.0f, 1.0f), Vector3.Up);
            projectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), 800.0f / 600.0f, 1.0f, 100.0f); 
        }

Re: XNA Game

Verfasst: 25.05.2009, 14:19
von Richard Schubert
Du musst die Modeldatei in dein Projekt einbinden und einstellen, dass es vom Content Processor bearbeitet wird. Dadurch wird eine neue Datei modelAsset.xnb erstellt. Diese kannst du dann mittels Content.Load<Model>("modelAsset"); laden. Auch darauf achten, dass die Dateiendung beim Laden weggelassen werden muss.

Re: XNA Game

Verfasst: 25.05.2009, 16:13
von roker002
ja jetzt sehe ich den Content Ordner in meine Projektmappe.

Code: Alles auswählen

worldMatrix = Matrix.CreateRotationY(4.0f) * Matrix.CreateTranslation(new Vector3(1.0f, 1.0f, 1.0f)); 
dieser abschnitt sorft doch dafür dass meine Welt rotiert. Hmm sehe aber keine Rotation.

Re: XNA Game

Verfasst: 25.05.2009, 16:40
von Richard Schubert
Den Code musst du dann natürlich auch im Update bzw Draw Bereich ausführen und die konstante Rotation durch eine veränderliche ersetzen. Zum beispiel so ähnlich:

Code: Alles auswählen

worldMatrix = Matrix.CreateRotationY(gameTime.GameTime.TotalSeconds) * Matrix.CreateTranslation(new Vector3(1.0f, 1.0f, 1.0f));

Re: XNA Game

Verfasst: 25.05.2009, 20:47
von roker002

Code: Alles auswählen

worldMatrix = Matrix.CreateRotationX(anglex) * Matrix.CreateRotationY(angley) * Matrix.CreateRotationZ(anglez) * Matrix.CreateTranslation(new Vector3(worldx, worldy, worldz));
jop hab jetzt einen objekt zum rotieren gebracht! Verstehe aber trotzdem nicht ganz wie

Code: Alles auswählen

viewMatrix = Matrix.CreateLookAt(new Vector3(camposx, camposy, camposz), new Vector3(targetposx, targetposy, targetposz), Vector3.Left);
das hier funktioniert. wenn ich campos verändere entferne ich mich vom objekt weg. Ich dachte es währe die Kameraposition relativ zu dem Objekt oder?

verstehe auch nicht so ganz in der

Code: Alles auswählen

CreatePerspectiveFieldOfView(
         float fieldOfView,
         float aspectRatio,
....
was die ersten beide argumente machen.

Re: XNA Game

Verfasst: 25.05.2009, 21:23
von SPech
Der LookAt Vektor erstellt dir eine Matrix die von einem Standpunkt zu einem anderen die Camera positioniert. Wenn du die Cam bewegst dann ändert sich natürlich der Abstand.

Re: XNA Game

Verfasst: 26.05.2009, 01:12
von roker002
wie kann ich den die camera um den objekt festhalten? hab heute eigentlich zum ersten mal mit XNA angefangen :P

Re: XNA Game

Verfasst: 26.05.2009, 08:11
von Richard Schubert
Die Kamera hat genau wie dein Objekt eine Position im Raum. Wenn du die Distanz zwischen beiden konstant halten willst, dann ist ist eine Position von der anderen abhängig. Zum Beispiel könntest du die Objektposition verwenden und dort einen Offset addieren, der die Distanz zum Objekt beschreiben soll. Die resultierende Position verwendest du dann als Kameraposition.