Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Mai 27, 2024 10:41

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Trennen von Zeichnung und Kamera
BeitragVerfasst: Do Apr 25, 2013 06:57 
Offline
DGL Member

Registriert: Do Mär 21, 2013 14:57
Beiträge: 51
Programmiersprache: C#,C++
Morgen Leute,

ja heute bin ich fleißig, was Fragen an euch angeht. Aber leider finde ich im Netz nichts dazu:

In meinem Programm zeichne ich zwei Körper und lass diese sich bewegen. Diese Bewegung möchte ich über einen Start -
und Stopp - Button in meiner Oberfläche anhalten oder weiterlaufen lassen können. Im Moment habe ich das recht primitiv
implementiert indem ich eine Bool - Variable über die Buttons setze und meine Funktionen die die Bewegung bewerkstelligen
einer If - Abfrage unterstelle, was in etwa so aussieht:

Code:
  1.  
  2. // **********************************************************
  3.             // Start movement.
  4.             // **********************************************************
  5.             if(this.play == true)
  6.             this.Moving.openMovementBlock();
  7.  
  8.             // *************************************************
  9.             // Draw the fidge body.
  10.             // *************************************************
  11.             this.Moving.drawWoundTube();
  12.             this.Body.drawBody();
  13.  
  14.             // **********************************************************
  15.             // End movement.
  16.             // **********************************************************
  17.             if (this.play == true)
  18.             this.Moving.closeMovementBlock();
  19.  
  20.             // **********************************************************
  21.             // Draw trajectory.
  22.             // **********************************************************
  23.             this.Moving.drawTrajectory();
  24.  
  25.             // *************************************************
  26.             // Add light.
  27.             // *************************************************
  28.             this.Scene.addAmbientLight(this.Body.LightOn);
  29.  
  30.             // Display the 3D scene.
  31.             this.glControl1.SwapBuffers();
  32.  


Nun habe ich das Problem, dass sobald ich den Stop - Button drücke ich die Kamera (implementiert in Kugelkoordinaten), zwar bewegen kann
dies aber erst nach Betätigung des Start - Buttons sichtbar wird. Füge ich jedoch meiner Kamera - Funktion die Funktion glControl.Invalidate()
hinzu, um die Szene neu zu zeichnen verschieben sich meine beiden Körper komischerweise, was dazu führt, dass deren Bewegungsbahnen nicht
mehr korrekt abgefahren werden. Zumindest optisch.


Hier meine Kamera - Funktion:

Code:
  1.  
  2. public void setCamPos(Point mouse_current, Point mouse_previous, ref GLControl glControl1)
  3.         {
  4.             Point mouseCurrent = mouse_current;
  5.             Point mousePrevious = mouse_previous;
  6.  
  7.             this.computeCamPos(mouseCurrent, mousePrevious);
  8.  
  9.             // Switch do model matrix.
  10.             GL.MatrixMode(MatrixMode.Modelview);
  11.  
  12.             GL.LoadIdentity();
  13.  
  14.             // Compute new modelview matrix.
  15.             Matrix4d modelview = Matrix4d.LookAt(Vector3d.Zero + this.forward * 0.1, Vector3d.Zero, Vector3d.UnitY);
  16.  
  17.             // Set new modelview matrix.
  18.             GL.LoadMatrix(ref modelview);
  19.  
  20.             this.setUpViewPort(ref glControl1);
  21.         }
  22.  





PS: Ich programmiere in C# mit Hilfe der OpenTK Library.

_________________
_______________________________________
Lets move over mountains and through valleys:
GL.Map2(,,,,,,,,,)
GL.MapGrid2(,,,,,,,,,)
GL.EvalMesh2(,,,,,,,,,)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Trennen von Zeichnung und Kamera
BeitragVerfasst: Do Apr 25, 2013 17:03 
Offline
DGL Member
Benutzeravatar

Registriert: So Sep 26, 2010 12:54
Beiträge: 238
Wohnort: wieder in Berlin
Programmiersprache: Englisch
Ich habe nur Deinen Code kurz gesehen und dazu folgende Anmerkungen (muss wohl am fortgeschrittenen Augenkrebs liegen):

- "this." kannst Du tilgen
- underscores in identifiern sind - ungünstig,
- innerhalb von Methoden identifier in camelCase, innerhalb einer Klasse mit führendem Unterstrich a la _camelCase (ab protected PascalCase :))
- Properties, Class/Enum/Struct Methoden- Namen in PascalCase
- mit tab kann man ganz prima Sinnabschnitte einrücken und mit { } umschließen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Trennen von Zeichnung und Kamera
BeitragVerfasst: Fr Apr 26, 2013 06:44 
Offline
DGL Member

Registriert: Do Mär 21, 2013 14:57
Beiträge: 51
Programmiersprache: C#,C++
Okay, danke für die Tipps. Das beantwortet aber leider nicht meine Frage.

_________________
_______________________________________
Lets move over mountains and through valleys:
GL.Map2(,,,,,,,,,)
GL.MapGrid2(,,,,,,,,,)
GL.EvalMesh2(,,,,,,,,,)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Trennen von Zeichnung und Kamera
BeitragVerfasst: Fr Apr 26, 2013 07:10 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
hey,

ich kenn ja deine programmiersprache nun garnicht aber das beschriebene verhalten hatte ich ähnlich auch schon erzielt weil ich schlicht vergessen habe mit swapbuffers die szene auch darzustellen. also bist du sicher das du im "nicht-moving-fall" auch wirklich zeichnest?
zeig doch mal den code der ausgeführt wird wenn du mit dem "stop-button" das automoving unterbindest.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Trennen von Zeichnung und Kamera
BeitragVerfasst: Di Apr 30, 2013 13:45 
Offline
DGL Member

Registriert: Do Mär 21, 2013 14:57
Beiträge: 51
Programmiersprache: C#,C++
Ja, SwapBuffers() wird nach Betätigung des "Stop" - Buttons ausgeführt.

Habs im Moment noch recht primitiv implementiert, weil ich damit noch herumspiele:

Code:
  1.  
  2.             // **********************************************************
  3.             // Start movement.
  4.             // **********************************************************
  5.             if (this.play == true)
  6.                 this.Moving.openMovementBlock();
  7.  
  8.             // *************************************************
  9.             // Draw the wound tube.
  10.             // *************************************************
  11.             this.Moving.drawWoundTube();
  12.  
  13.             // *************************************************
  14.             // Draw the fidge body.
  15.             // *************************************************
  16.             this.Body.drawBody();
  17.            
  18.             // **********************************************************
  19.             // End movement.
  20.             // **********************************************************
  21.             if (this.play == true)
  22.                 this.Moving.closeMovementBlock();
  23.  
  24.             // *************************************************
  25.             // Draw trajectory.
  26.             // *************************************************
  27.             this.Moving.drawTrajectory();
  28.  
  29.             // Display the 3D scene.
  30.             this.glControl1.SwapBuffers();
  31.  

_________________
_______________________________________
Lets move over mountains and through valleys:
GL.Map2(,,,,,,,,,)
GL.MapGrid2(,,,,,,,,,)
GL.EvalMesh2(,,,,,,,,,)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Trennen von Zeichnung und Kamera
BeitragVerfasst: Mo Mai 06, 2013 14:36 
Offline
DGL Member

Registriert: Do Mär 21, 2013 14:57
Beiträge: 51
Programmiersprache: C#,C++
Habadere!

Auch hier wurde das Problem gelöst. Trotzdem vielen Dank!

_________________
_______________________________________
Lets move over mountains and through valleys:
GL.Map2(,,,,,,,,,)
GL.MapGrid2(,,,,,,,,,)
GL.EvalMesh2(,,,,,,,,,)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]