Zweite Aufgabe im viertem Semester “Computer Graphics” war ein Deformations Effekt in C# als Plugin für Paint.NET zu entwickeln. Kristin und Ich merkten, dass die vorherigen drei Semester Mathe nicht ganz unsinnig waren.
Da Paint.NET als Filter eine DLL verlangt muss man in Visual C# Express unter den “Projekt Einstellungen” unter “Programm” den Output Type auf “Class Library” stellen.
Doch wie programmiert man einen Deformations Effekt? Wir bekamen von unserem Professor eine Rahmenapplikation, die sich schon soweit in Paint.NET als Effekt aufrufen lies. Ein einfacher Rahmen lässt sich überall im Netz herunterladen. (siehe Links)
Wir entwickelten eine Liste mit Punkten. Diese Punkte wurden im gleichen Abstand voneinander gesetzt. Die Punkte behandelten wir wie Ortsvektoren. Man muss sich nun vorstellen, dass diese Punkte in gleichem Abstand auf dem Bild kleben.
Im Plugin sollte es nun möglich sein diese Ortsvektoren beliebig zu verschieben. Man programmiert das Raster und lässt die Ortsvektoren aus unserer Liste der Ortsvektoren im Dialog anzeigen. Wenn man nun mit gedrückter Maustaste einen Ortsvektor im Dialog verschiebt, müssen sich alle Punkte des Bildes anhand der Ortsvektoren neu ausrichten.
Dementsprechend müssen auch alle Punkte in einem definierten festen Radius ebenfalls verschoben werden. Wir betrachten das ganze mal als Beispiel von der Sicht eines Punktes aus.
Links im Bild sehen wir einen roten Punkt. Das ist der Punkt eines Bildes mit der Farbe rot. Der sind wir. Der Ortsvektor (1,1) hat sich um 0,2 in x-Richtung und 0,5 in y-Richtung verschoben. Das heißt für den Punkt da er in dem Radius des Ortsvektors liegt. “Ja Ich muss mich auch mit verschieben”. Jedoch nicht um den selben Faktor!
Dazu definieren wir den Abstand zwischen zwei Ortsvektoren als 100%.
d = sqrt( (0,0)² + (1,1)² ) = 1.
1 ist also ein Abstand von 100%. Wir berechnen nun den Abstand zwischen unserem roten Punkt und dem Ortsvektor. Das Ergebnis (0,8405) subtrahieren wir von 1. Bleibt 0,1505. Dieser Wert wird mal (0.2, 0.5) genommen und daraus folgt die neue Position des roten Punktes.
Vielleicht etwas schwer zu verstehen, aber diese Berechnung ist das Grundprinzip der Deformierung. Ihr könnt hier den Sourcecode und die compilierte DLL herunterladen.
Download
Installation des Effektes
- DLL herunterladen
- In das Effectsverzeichnis von Paint.NET kopieren
Bsp.: C:\Programme\Paint.NET\Effects
Sourcecode
- Runterladen
- ZIP-Datei entpacken und die Projectdatei “DeformationEffect_DLL.sln” mit dem Visual Studio C# Express öffnen.
Weitere Links
http://www.thejaeck.net/2008/10/07/paintnet-deformation-effect/trackback/



0 Kommentare vorhanden
Kommentar schreiben!