2010 – Halo Remover

1.11.2011 – Version 1.4, Build 96

Da war noch ein Updateproblem wenn man das Bild läd. Die Funktionalität war davon nicht betroffen, es sah aber unschön aus. Gefixt in Version 1.4

Halo Remover 1.04, 1.08 Mb — Download

27.10.2011 – Version 1.3, Build 95

Problem gelöst. Da gab es eine Inkompatibilität mit einer der Extensions. Sie war nicht mehr aktuell. Mit einer aktuellen Version dieser Extension funktioniert es wieder. Alles was ich dafür tun musste war die Version 1.2 als 1.3 abzuspeichern. Die Version 1.1 wird aber nun online bleiben. Mann weiss ja nie …

26.10.2011 – Reupload Version 1.1, Build 93

Ein Jahr ist vergangen, und niemand ist es aufgefallen dass das Tool für die transparenten Bilder inzwischen nicht mehr funktioniert. Nicht mal mir, ich verwende es nur für solide Texturen. Sehr lustig. Dabei ist das die eigentliche Funktion des Programms. So richtig Mist ist dass sich inzwischen einiges an der Extension getan hat mit der ich das Tool gebaut habe. Ich kann es gerade nicht zum Funktionieren bewegen. Das bedeutet ich kann meinen Haloremover derzeit nicht fixen. Ich muss erst rausfinden was da querschiesst. Und dann müsste ich mich auch noch wieder in den alten Code reinwühlen.

Wie dem auch sei, ich habe Version 1.1 reaktiviert. Das tut ja bis auf das Fix für 1.2 tadellos. Bei 1.1 muss man halt nach dem Batchmode das Tool neustarten.

Halo Remover 1.01, 1.08 Mb — Download

23.11.2010 – Halo Remover Version 1.02, Build 94

Dieses kleine Update bringt ein Bugfix. Ich hatte vergessen dafür zu sorgen dass man den Vorgang im Batchmode wiederholen kann. Hiermit geschehen. Nun kann man auch im Batchmode mit den Settings spielen, auf Start drücken, und der Vorgang wird erneut durchgeführt.

Ein Quirk ist noch übrig. Bei 24 Bit Bildern und Batch Process wird das erste Bild beim zweiten Durchgang doppelt bearbeitet. Ich bin dran, bin mir aber nicht sicher ob ich den Fehler behoben bekomme. Zur Not bitte in dem Fall das erste Bild manuell bearbeiten.

12.7.2010 – Halo Remover Version 1.01, Build 93

Erste öffentliche Version von Halo Remover hochgeladen.


Wenn ihr schon mal mit Texturen in einem Spiel gearbeitet habt werdet ihr das Halo Problem vielleicht kennen. Eine Grastextur verliert plötzlich je weiter sie weg ist immer mehr ihre Farbe. Oder ihr dreht euer 3D Modell, und am UV Saum lugt plötzlich die Farbe hervor mit der ihr auf der Textur zwischen die einzelnen UV Patches den Leerraum aufgefüllt habt. Oder ihr arbeitet in 2D mit gerenderten Sprites. Und am Rand bekommt ihr einen schönen Haloeffekt in der Farbe die ihr in eurem Renderprogramm als Hintergrundfarbe genommen habt. Das alles hat immer die gleiche Ursache: Die Hintergrundfarbe im verborgenen Bereich entspricht eben nicht der Farbe im sichtbaren Bereich. Und wenn diese Farbe dann in den sichtbaren Bereich reinblutet haben wir unseren Halo.

Das ist bei einer selbst erstellten Grashalmtextur noch leicht zu beheben, nämlich einfach beim abrendern die Hintergrundfarbe auch auf das Grün zu stellen die der Grashalm hat. Oder ihr habt die Möglichkeit Premultiplied Alpha zu verwenden, was den Halo Effekt auch aussschaltet. Aber nicht jede Render- oder Spieleengine hat dieses Feature.

Halo remover ist ein Tool das genau dieses Problem bei einem traditionellen Alphachannel beheben soll. Es erweitert den Rand mit genau der Farbe des jeweiligen Pixels. Auf Wunsch bis das Bild komplett aufgefüllt ist. Hatte das Bild vorher einen Alphakanal bleibt auch nach dem Abspeichern der vorherige Alphakanal erhalten. Auf den ersten Blick seht ihr nach dem abspeichern also kaum einen Unterschied zum Original. Sichtbar wird der Unterschied erst wenn ihr diese Textur dann zum Beispiel in einer Game Engine wie Unity verwendet.

Für all diejenigen die nichts mit dem Begriff Haloeffekt anfangen können, hier mal eine bessere Erläuterung mit Bildern:

Macht euch eine Grastextur. Und rendert sie mit Antialias auf weissem Hintergrund raus. Natürlich mit Alphachannel. Wir wollen mit dieser Textur eine kleine Wiese basteln und sie abrendern

.

Nun basteln wir uns mit dieser Textur unsere Wiese und rendern sie. Ich habe sie hier mal auf einem schwarzen Boden gerendert. Dann sieht man den Haloeffekt besser:

Sieht aus wie Schneefall. Die umgebende eigentlich unsichtbare Hintergrundfarbe blutet in den sichtbaren Bereich. Von unserer grünen Grasfarbe ist nicht viel über. Das ist der Haloeffekt.

Nun behandeln wir die Textur mal mit dem Halo Remover. Sie sieht äusserlich immer noch gleich aus:

Das damit gerenderte Ergebnis allerdings nicht:

Was ist passiert? Wir erinnern uns, dieser Halo Effekt kommt daher dass die Pixel aus dem unsichtbaren Bereich des Bildes in den sichtbaren Bereich reinbluten. Ich habe nun mit Halo Remover einfach die Farbe im durch den Alphachannel verborgenen Bereich durch die Farben ersetzt die auch im sichtbaren Bereich zu finden ist. Nun bluten eben nicht mehr weisse Pixel in den sichtbaren Bereich, sondern Pixel in der Farbe wie sie auch im sichtbaren Teil vorkommen. Und somit bleibt der Gesamt-Farbeindruck erhalten, und der Halo Effekt ausgeschaltet 🙂

Wenn ich den Alphachannel von dieser behandelten Textur entferne sähe das Ganze dann zum Beispiel so aus. Das ist das was Halo Remover macht, den sichtbaren Bereich in den unsichtbaren Bereich erweitern. Links unbehandelt, rechts behandelt.