Eines schönen Nachmittag's (GDI+ 3D-Engine)

    • Beta

    Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-checker.

      Eines schönen Nachmittag's (GDI+ 3D-Engine)

      Name des Programms:
      Einen Namen hat es nicht wirklich, aber nennen wir es doch einfach: "GDI+ 3D-Engine"

      Beschreibung:
      Zufälligerweise war mir heute zu nichts zu Mute, folglich hatte ich Langeweile, welche so enorm groß war, dass ich auf eine enorm schlaue *Ironie aus* Idee kam. Und so kam ich dazu eine 3D-Engine zu basteln, die einzig und allein auf GDI+ basiert. Was das für einen Sinn macht weiß ich nicht. Interessant ist es aber trotzdem! :thumbsup:


      Steuerung:

      Über Rechtsklick auf die Arbeitsfläche lässt sich ein Kontextmenü öffnen, mit welchem man bisher ein Objekt einfügen kann (War zu faul die "Pyramide" komplett zu machen) und auch wieder löschen kann. Selektieren kann man noch nicht --> es wird immer automatisch das letzte Objekt selektiert.

      Über die Pfeiltasten lässt sich der Betrachtungswinkel ändern. Im Statusstrip kann man dessen Bewegungsgeschwindigkeit ändern. Unter anderem wird dort die Position des aktuellen Objektes angezeigt und der Fortschritt des Renderns der aktuellen, lass es mich "Szene" nennen.

      Mit dem Mausrad kann man sich auf der Z-Achse bewegen. Drückt man auf der Tastatur X dann kann man selbiges auf der X-Achse und mit Y auf der Y-Achse vollbringen. Zum Deaktivieren muss nochmal X oder Y gedrückt werden.



      Screenshot(s):
      img4.fotos-hochladen.net/uploads/enginebildbofg462tml.png

      Verwendete Programmiersprache und IDE:
      VB .NET (VB 2010 Express)

      Systemanforderungen:
      .NET Framework 2.0


      Download:
      workupload.com/file/aZvfpMz (36KB)

      Sollte der erste Download nicht funktionieren:

      workupload.com/file/JEcZp5N (36KB)




      Lizenz/Weitergabe:
      Freeware






      MfG Tibha

      *Bild zu groß zum Einbetten!*

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Marcus Gräfe“ ()

      Direkt beim Start:
      Informationen über das Aufrufen von JIT-Debuggen
      anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

      ************** Ausnahmetext **************
      System.InvalidOperationException: Diese API ist nicht verfügbar, wenn die gleichzeitige GC aktiviert ist.
      bei System.GC.CancelFullGCNotification()
      bei WindowsApplication1.mainForm.PictureBox1_Paint(Object sender, PaintEventArgs e)
      bei System.Windows.Forms.Control.OnPaint(PaintEventArgs e)
      bei System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)
      bei System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
      bei System.Windows.Forms.Control.WmPaint(Message& m)
      bei System.Windows.Forms.Control.WndProc(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


      GDI+ zeichnet ein rotes kreuz.

      Skybird schrieb:

      Das sind ja Ubisoftmethoden hier !

      vb-checker schrieb:

      Direkt beim Start:
      Informationen über das Aufrufen von JIT-Debuggen
      anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

      ************** Ausnahmetext **************
      System.InvalidOperationException: Diese API ist nicht verfügbar, wenn die gleichzeitige GC aktiviert ist.
      bei System.GC.CancelFullGCNotification()
      bei WindowsApplication1.mainForm.PictureBox1_Paint(Object sender, PaintEventArgs e)
      bei System.Windows.Forms.Control.OnPaint(PaintEventArgs e)
      bei System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)
      bei System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
      bei System.Windows.Forms.Control.WmPaint(Message& m)
      bei System.Windows.Forms.Control.WndProc(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)




      GDI+ zeichnet ein rotes kreuz.



      Sollte behoben sein?
      Mir sind zwei Dinge aufgefallen.
      Wenn man die Ansicht rotiert (Links-Rechts-Tasten), dann passiert es an einem Punkt, dass die Ansicht einen Sprung um 90 Grad macht und dann weiterrotiert (ich schätze mal, wenn der Winkel über 0 geht.
      Und wenn ich das Programm beende, dann läuft der Prozess weiter. Hast Du einen Thread laufen, bei dem die IsBackground-Property auf False ist?

      Ansonsten ziemlich gut geworden. Erinnert mich an Gam.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Danke für dein Feedback.

      Deine Vermutung ist absolut korrekt. Problem bei der Sache ist jedoch das eine Weltumdrehung nicht 360° Grad entsprechen, jedenfalls nicht der Wert der dabei verändert wird. Da das Ganze nur ein Nachmittagsprojekt war, bin ich nicht dazu gekommen um solche Feinheiten auszubügeln - wird aber mit Sicherheit bald gemacht.

      Warum der Prozess weiterläuft kann ich dir allerdings nicht sagen. Bei mir beendet sich das Ganze vollkommen - auch der Prozess. Werde nochmal drüberschauen.



      MfG Tibha
      Nö, warum auch. Den soll man doch nur benutzen, wenn der erste nicht funktioniert. Das tat er aber.
      Nun geht es.
      Spoiler anzeigen
      Ein Programmierer und seine Frau:
      Sie: “Schatz, wir haben kein Brot mehr, könntest du bitte zum Supermarkt gehen und 1 holen? Und wenn sie Eier haben, bring 6 Stück mit.”
      Er: “Klar Schatz, mach ich!”
      Nach kurzer Zeit kommt er wieder zurück und hat 6 Brote dabei.
      Sie: “Warum nur hast du 6 Brote gekauft?!?”
      Er: “Sie hatten Eier.”

      Skybird schrieb:

      Das sind ja Ubisoftmethoden hier !