XNA Game

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
roker002
Beiträge: 23
Registriert: 29.03.2009, 23:49

XNA Game

Beitrag 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); 
        }
Benutzeravatar
Richard Schubert
Moderator
Beiträge: 106
Registriert: 27.02.2009, 08:44
Wohnort: Hohen Neuendorf (b. Berlin)
Kontaktdaten:

Re: XNA Game

Beitrag 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.
Produktivität über Performance - XNA Creators Club
roker002
Beiträge: 23
Registriert: 29.03.2009, 23:49

Re: XNA Game

Beitrag 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.
Benutzeravatar
Richard Schubert
Moderator
Beiträge: 106
Registriert: 27.02.2009, 08:44
Wohnort: Hohen Neuendorf (b. Berlin)
Kontaktdaten:

Re: XNA Game

Beitrag 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));
Produktivität über Performance - XNA Creators Club
roker002
Beiträge: 23
Registriert: 29.03.2009, 23:49

Re: XNA Game

Beitrag 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.
Benutzeravatar
SPech
Moderator
Beiträge: 63
Registriert: 07.03.2002, 17:12
Echter Name: Sebastian Pech
Kontaktdaten:

Re: XNA Game

Beitrag 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.
SPech.de - Meine Projekte: AirTaxi, Adberion, WOW Reborn
roker002
Beiträge: 23
Registriert: 29.03.2009, 23:49

Re: XNA Game

Beitrag von roker002 »

wie kann ich den die camera um den objekt festhalten? hab heute eigentlich zum ersten mal mit XNA angefangen :P
Benutzeravatar
Richard Schubert
Moderator
Beiträge: 106
Registriert: 27.02.2009, 08:44
Wohnort: Hohen Neuendorf (b. Berlin)
Kontaktdaten:

Re: XNA Game

Beitrag 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.
Produktivität über Performance - XNA Creators Club
Antworten