Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

11

27.03.2016, 22:18

Okay, Viewport3D ist dann eine Möglichkeit. Ich werde mich dazu noch etwas einlesen.

Kennst sich jemand mit Texture Sharing Librarys aus, ist das eine gute Idee? Dann könnte ich z.b. Openframeworks verwenden, was mehr Möglichkeiten bietet als Viewport3D. Ich weiß allerdings nicht, ob das deutlich langsamer wäre?

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

12

28.03.2016, 03:00

Texture Sharing Librarys
Ich würde mal behaupten, wenn du deine Textur in XAML als Resource definierst und dann in dein Mesh einbindest, erzielst du einen ähnlichen Effekt. Was möchtest du denn genau darstellen? Sind das verschiedene Texturen und sollen die bewegt werden? Welche Auflösung und was ist der Zweck des Programms? Vielleicht kann ich dir dann besser bei einer Entscheidung helfen. ;)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

13

28.03.2016, 18:38

Das Program soll eine Weiterentwicklung meines bisherigen Programms zur Bildverzerrung werden. Ich hatte dazu schon mal einen Thread erstellt: Bild Entzerrung / Verzerrung.

Mit der Funktionsweise bin ich zufrieden, allerdings sind die Bild Effekte wenn sie auf der CPU berechnet werden ziemlich langsam. Für die nächste Version will ich also eine Lösung mit kürzeren Berechnungszeiten finden.
Zusätzlich will ich noch eine Funktion hinzufügen, um die Verzerrten Bilder in einer 3D Umgebung verschieben und mit anderen Bildern kombinieren zu können, dafür würden sich die meisten Game Engines und vermutlich auch Viewport3D besser eignen, als wenn ich versuche einen eigenen Algorithmus zum Zeichnen von Bildern in der 3D Umgebung zu erstellen :rolleyes:

Mein Konzept wäre also folgendes:
1. Der Nutzer kann ein Bild in das Program laden und es Verzerren / Entzerren
2. Das Bild kann in einer 3D Umgebung geladen werden
3. Weitere Bilder können so bearbeitet und hinzugefügt werden.

Umsetzen würde ich die Verzerrung dann wieder mit dem Algorithmus aus dem ersten Posting, dann evtl. mit einer Compute Shader implementierung, oder sowas. Und zur 3D darstellung der bearbeiten Textur die Standard Grafik Funktionen der verwendeten Library.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »MitgliedXYZ« (28.03.2016, 18:44)


CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

14

01.04.2016, 00:40

Dafür würde ich dir Viewport3D vorschlagen! Du kannst auch das Entzerren damit machen - halt nur im zweidimensionalen. Zerteile einfach das Bild in ein Gitter in kleine Untertexturen, wie du es da schon vorgeschlagen hast und erzeuge für jede kleine Textur zwei Dreiecke im Viewport. Dann kannst du die Ecken mit C# verschieben und die Grafikkarte sorgt dafür, dass die Textur mitverzogen wird.

Bist du mit dem Entzerren fertig, renderst du das Ganze in eine neue Textur und speicherst es ab. (Das ganze geht natürlich auch mit nem Shader - unsichtbar für den User!

Wenn du nun das in einem Raum anordnen möchtest, dann kannst du die selbe Methode wählen: Poygone für deine Texturen erzeugen, das Bild drauflegen und dann irgendwo in den virtuellen Raum zeichnen.

Lustig wirds halt mit ner GUI, die irgendwie verstehen muss, wo der User die Teile hinhaben möchte... Aber anfasser zum verschieben zu Programmieren ist auch nicht so schwer - ist bestimmt auch cool in Kombination mit dem Entzerren.
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

15

01.04.2016, 19:01

Dann werde ich Viewport3D einmal ausprobieren.

Zum Entzerren werde ich dann aber doch den Algorithmus aus dem anderen Thread brauchen, wenn ich das Bild nur in einzelne Teile aufteile und diese dann die Polygone verschiebe, entstehen doch solche Bilder: Screenshot.

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

16

02.04.2016, 00:34

Die Bilder entstehen, wenn du die Außenkanten der Randrechtecke nicht am Rand lässt sondern verschiebst... Naja ich will dir nicht in deinen Algorithmus fuschen! :D
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

17

02.04.2016, 09:50

Wie meinst du das?

Also bei dem Bild hatte ich die linke obere Ecke in die Mitte oben verschoben. Da das Viereck durch zwei Dreiecke gezeichnet wird, wurde nur eins verzerrt und das andere blieb unverändert, was nicht den passenden Effekt erzielt, da es gleichmäßig entzerrt werden soll.
Deswegen waren auch Polygonne keine gute Alternative, da es selbst bei Bildern die in viele Quadrate zerlegt werden, nicht das selbe Ergebnis wie der andere Algorithmus hat.

Zum positionieren der Bilder in einer 3D Landschaft kann ich Viewport3D aber vermutlich trotzdem gebrauchen.

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

18

02.04.2016, 16:03

In dem Bild willst du ja ein Viereck verformen und kein Dreieck. Ersteres tust du aber, weil durch das Verschieben der oberen linken Ecke wird nur ein Dreieck verzerrt. Du müsstest das Viereck anders (um 90° gedreht) in zwei Dreiecke zerteilen, sodass wenn du die obere linke Ecke verziehst, dass dann beide Dreiecke verzogen werden.

Ansonsten würde ich nicht zwei, sondern zweihundert Dreiecke nehmen und die dann alle verformen, so bekommst du dann eine "richtige" Viereckverformung hin, der es dann auch egal ist, wierum es in Dreiecke eingeteilt ist.

Gerade habe ich mir mal den anderen verlinkten Thread durchgelesen, wo du gefragt hast wie man Bilder verzerrt. Die Methode, die da am Ende beschrieben wurde ist genau das, was ich beschreibe: Bild in ganz viele Dreiecke zerteilen und dann die Ecken gemäß der Verzerrung verschieben. Du kannst auch im Viewport ganz viele Dreiecke (mit Textur) zeichnen lassen und dann über C# die Positionen festlegen. Das Zeichnen passiert bei WPF auch mit der Grafikkarte - wenn du genau schaust, hast du auch Matrizen usw. zum scheren, verschieben und anderweitig verformen - genau wie bei OGL oder DX.
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Werbeanzeige