z-Bufferalgo



  • hallo

    ich habe ein würfel erstellt den ich in der ebene 3Dimensional darstellen kann.
    ich kann ihn auch um alle achsen drehen. jetzt ist es aber so das auch die verdeckten kannten noch sichtbar sind. Mit hilfe des z-Bufferalgo ist es möglich nur die sichtbaren linien zu zeichnen. aber ich komme da irgendwie nicht weiter.
    also ich habe einen array mit lauter punkten (matrix[4][36]) die punkte bilden dreiecke und die dreiecke bilden den würfel.

    jetzt sehe ich noch nicht ganz wie ich mit hilfe des z wertes bestimmen kann ob eine linie verdeckt ist oder nicht.



  • Es wird langsam lästig. Ich komme wieder wenn es eine Registrierungspficht gibt.

    [ Dieser Beitrag wurde am 10.01.2003 um 00:27 Uhr von Nils Holgerson editiert. ]



  • Also ich will nur die Sichtbaren Kanten zeichnen. (Bis jetzt ist es eben so das man noch alle kanten des Würfels sieht).

    mir ist noch nicht ganz klar wie ich die einzelnen Z werte bekomme ( die zwischen den einzelnen eckpunkten).

    (mit dem Breseham vielleicht) 😕



  • Es wird langsam lästig. Ich komme wieder wenn es eine Registrierungspficht gibt.

    [ Dieser Beitrag wurde am 10.01.2003 um 00:27 Uhr von Nils Holgerson editiert. ]



  • ich muss ja für jedes pixel den z-wert berechnen aber wie mache ich das?



  • Es wird langsam lästig. Ich komme wieder wenn es eine Registrierungspficht gibt.

    [ Dieser Beitrag wurde am 10.01.2003 um 00:28 Uhr von Nils Holgerson editiert. ]



  • @fiGGn
    ok das könnte gehen aber was ich immer noch nicht sehe ist wie ich die einzelnen pixel der Fläche durchlaufen soll

    [ Dieser Beitrag wurde am 08.01.2003 um 12:27 Uhr von stef editiert. ]



  • Es wird langsam lästig. Ich komme wieder wenn es eine Registrierungspficht gibt.

    [ Dieser Beitrag wurde am 10.01.2003 um 00:28 Uhr von Nils Holgerson editiert. ]



  • ist ja auch nur ein würfel der aus einzelnen dreiecken zusammen gesetzt ist.

    edit: http://olli.informatik.uni-oldenburg.de/Grafiti3/grafiti/flow8/page8.html
    dass habe ich mir auch angeschaut. und eben da berechnet er jeden z-Wert

    [ Dieser Beitrag wurde am 08.01.2003 um 12:21 Uhr von stef editiert. ]



  • ab in das Grafik Forum damit

    (und nicht auf die Trolle reagieren, dafür gibt es Lösch Funktionen ;))



  • Es wird langsam lästig. Ich komme wieder wenn es eine Registrierungspficht gibt.

    [ Dieser Beitrag wurde am 10.01.2003 um 00:29 Uhr von Nils Holgerson editiert. ]



  • [ Dieser Beitrag wurde am 08.01.2003 um 13:22 Uhr von stef editiert. ]



  • hallo

    ich komme wieder mal nicht weiter.
    wie ich z berechnene kann ist mir einigermassen klar. aber wo ich noch nicht ganz durchblicke ist bei den Bereichen der Objekte. und zwar um die z-Koordinaten jedes Pixel zu berechnen gehe ich von der Formel Ax+By+Cz+D =0 (eine Fläche ist ja durch 3 punkte definiert)

    aber wie weiss jetzt das einzelne Pixel ob es noch zum Objekt gehört oder ob es schon ausserhalb liegt. ist ja entscheiden für das setzen der Farbe des Pixel.

    hoffe ist einigermassen verständlich wo mein problem liegt. oder vielleicht verstehe ich das ganze ja falsch



  • Dein Würfel besteht doch aus Dreiecken oder ?
    Berechne den verdammten Normalverktor mit oben beschriebener Formel.
    Ergebnis < 0 = nicht zeichnen
    Ergebnis > 0 = zeichnen



  • Original erstellt von Cpp_Junky:
    Berechne den verdammten Normalverktor mit oben beschriebener Formel.

    Genau, mach das jetzt verdammt nochmal!



  • Es wird langsam lästig. Ich komme wieder wenn es eine Registrierungspficht gibt.

    [ Dieser Beitrag wurde am 10.01.2003 um 00:28 Uhr von Nils Holgerson editiert. ]



  • Ich glaube er will einfach wissen wie man die Werte ausrechnet, die in den z-Buffer kommen. Dass man das bei einem Würfel noch nicht braucht ist klar, man kanns ja aber trotzdem mal einbauen für später.

    Man hat ein Polygon auf den Bildschirm projeziert und füllt nun das Dreieck mit Farbe aus. Gleichzeitig muss man aber ja für jeden Pixel den Abstand zum Projektionspunkt im 3D Raum berechnen, was wohl nicht ganz leicht ist weil es ja schon Pixel sind und keine 3D-Daten mehr.

    Ich weiß nicht wie das geht, ich könnte mir aber vorstellen dass man die 3 Eckpunkte in den z-Buffer tut und dann interpoliert, genau wie bei den Farben.

    😕


Anmelden zum Antworten