Wie einen "Bevel-Effekt" programmieren?



  • ich denk mal das schwierigste wird es sein, die Randbereiche zu bestimmen. Das mit dem Licht ist imho recht einfach.
    Wenn du das mit den Randbereichen mal gelöst hast, poste mal hier, mich würd das interessieren 🙂
    Ich hätte da nämlich auch Lösungsvorschläge 😃

    Edit: Ach ja, wenn du den Beleuchtungseffekt so haben willst, wie beim Link den du gepostet hast, musst du sowieso eine Phong-ähnliche Technik anwenden, damit die Beleuchtung weich und fließend ist.



  • randa schrieb:

    ich denk mal das schwierigste wird es sein, die Randbereiche zu bestimmen. Das mit dem Licht ist imho recht einfach.
    Wenn du das mit den Randbereichen mal gelöst hast, poste mal hier, mich würd das interessieren 🙂
    Ich hätte da nämlich auch Lösungsvorschläge 😃

    Edit: Ach ja, wenn du den Beleuchtungseffekt so haben willst, wie beim Link den du gepostet hast, musst du sowieso eine Phong-ähnliche Technik anwenden, damit die Beleuchtung weich und fließend ist.

    da meinen shapes eine transparente Farbe zugrunde liegt ist vieleicht gar nicht notwendig die "Kanten" herauszufinden. Werd mich heute Abend mal dahinter klemmen, aber frühstens morgen wieder posten. Thx



  • Newton1976 schrieb:

    durito schrieb:

    Uebrigens, da faellt mir ein, hab mal n'Bumpmap-Generator geschrieben. Hab Dein Bild mal durchrattern lassen und diese normalmap rausbekommen:

    http://home.zhwin.ch/~bcd/bump.JPG

    Das waer doch schon mal was..

    hi,

    danke für die "geBumbmappte" Grafik, irgendsowas in der Richtung wirds wohl werden.

    Mittels OpenGL zu implementieren hatte ich nicht vor, es wäre einfach zu aufwendig, aus der Shape ein 3D Objekt generieren, die Kanten "Fasen" oder "Abflachen" und dann den Lichteinfall berechnen und daraus wieder eine Bitmap generieren.

    Das ganze wird jegendlich dazu dienen Hintergründe für beliebige Windowsfenster zu generieren, quasi Rahmen und Kanten durch den Beveleffekt zu berechnen, wobei diese Formen allerdings beliebig sein können.
    Falls du Photoshop hast kannst du dir das ja mal angucken,
    die Funktion gibts im Layer-Fenster und heißt "Abgeflachte Kanten und..."
    Was denen im Photoshop möglich ist sollte man doch auch programmieren können.

    Nene, ich will nicht sagen, Du sollst n'3D-Objekt erzeugen. Aber mit Hilfe einer 3D-Karte kannst Du einfacher die resultierende Farbe bei der Kante berechnen. Du musst nur ne Map haben, welche beinhaltet welches Pixel Deiner Grafik welche Normale hat (die normalmap), und anschliessend anhand des Licht-Vektors und der Normale die resultierende Farbe berechnen (das tut die GraKa für Dich).
    Naja, das ganze ist natürlich für dynamische Szenen gedacht, wo sich die Lichtquelle bewegt. Photoshop macht das bestimmt nicht so.



  • Schritt 1: such dir alle pixel raus,die den rand bilden und berechne ihre normalen.

    Schritt 2: teste jeden anderen pixel des objekts, ob er sich in einem bestimmten radius x(die breite deiner erhöhung) um einen randpixel befindet,für ihn berechnest du wieder die normale die sich aus dem richtungsvector zum nächsten randpixel und der normale des randpixels ergeben sollte.

    Schritt 3: normale lichtberechnung der randpixel,man hat ja jetzt die normalvectoren

    Schritt 4: fluchen weils so arsch langsam ist^^



  • Sorry, nur spätestens nach dem 2. Link hatte es ja wohl jeder gesehen.

    Ich denke mal folgendes: Du musst einfach nur die Normalen im Randstreifen senkrecht zum Verlauf des Bildes schwenken, je nachdem wie schräg der Rand sein soll. Dann Normale x Lichteinfall, und darauf Kosinusgesetz (lamberts law?).

    Bye, TGGC \-/



  • Ich hab mal gegoogelt und nen Link zu ner bevel.c Datei gefunden, der Leider down war. Aber die Beschreibung war folgende:

    This is a math based bevel algorithm. It's very useful in 3D graphics as well as in 2D. Unlike the smooth effects that you usually see, this will often require meshing and tessalating.

    Ich weiß nicht inwiefern das nützlich ist. Tesselation ist doch irgendwie das aufteilen eines Polygons in verschiedene Faces oder?

    Ansonsten kann man sich ja auch den Source von TheGimp oder so runterladen und gucken, wie die es gemacht haben. 🙂



  • Erst mal danke für an alle für die vielen Antworten,
    daraus wird sich sicherlich etwas bewerstelligen lassen.

    thanks all

    Newton1976



  • noebef schrieb:

    Ich hab mal gegoogelt und nen Link zu ner bevel.c Datei gefunden, der Leider down war. Aber die Beschreibung war folgende:

    This is a math based bevel algorithm. It's very useful in 3D graphics as well as in 2D. Unlike the smooth effects that you usually see, this will often require meshing and tessalating.

    Ich weiß nicht inwiefern das nützlich ist. Tesselation ist doch irgendwie das aufteilen eines Polygons in verschiedene Faces oder?

    Ansonsten kann man sich ja auch den Source von TheGimp oder so runterladen und gucken, wie die es gemacht haben. 🙂

    Danke, TheGimp werd ich mir auf alle fälle mal anschauen


Anmelden zum Antworten