3D Mesh selbst rendern



  • Ich hab ein trianguliertes Mesh und wuerde gerne einen z-buffer algorithmus integrieren um fuer einen Vertex herrauszufinden, ob er vom aktuellen viewport sichtbar ist, oder eben nicht. Das ganze will ich jedoch ohne OpenGL etc. machen. Am besten waere ANSI C.. Kennt jemand dazu evtl. eine Quelle wo man Code findet, oder Codeteile? Denke das haben ja schon viele andere gemacht :). Vorallem die Rasterisierung von Dreiecken waere fuer mich interresant, da es daran grad etwas hakt. Danke!



  • Fast Affine Texture Mapping
    Das Fixpunkt-Geraffel kann man sich heutzutage schenken und einfach float nehmen.
    Dein gewuenschter Z-Buffer interpoliert dann anstatt zwei Texturkoordinaten (u,v) nur eine "z"-Koordinate (eigentlich 1/z wegen Linearitaet nach perspektivischer Transformation).



  • Wenn du pro Cameraposition immer nur einen Vertex testen willst dann macht es IMO nicht unbedingt Sinn gleich einen ganzen Z-Buffer vollzumalen. In dem Fall könntest du einfach nen Ray-Cast machen -- für einen einzelnen Vertex sollte das viel schneller gehen.

    Wenn du mehrere Vertices testen willst ist das natürlich was anderes.



  • Danke fuer die Antworten. Link schaue ich mir gleich an. Mit einem Ray-Trace, das habe ich schonmal irgendwo gelesen. Aber was bedeutet das?


  • Mod

    wenn es nicht superschnell sein muss, sondern einfach nur funzen, kann man die quake methode zum rasterisieren nehmen.
    einfach das dreieck in 4 neue dreiecke teilen, rekursiv (indem man die seiten halbiert, also (V1+V2)/2), wenn das dreieck auf dem bildschirm nur noch einen pixel gross ist (kann man z.b. ueber ein crossproduct/vektorprodukt rausfinden), setzt man einen punkt (mit z-compare). das ist sehr trivial zu implementieren fuer und performt auch nicht sonderlich schlecht.



  • Ich habe jetzt eine einfache Scanline Rasterisierung implementiert. Ging jetzt am schnellsten und perfomant genug ist es auch!


Anmelden zum Antworten