Posts by R2D2

    Öh.. schreib vielleicht lieber direkt an die LVA-Leitung (Werner Purgathofer, Michael Wimmer) - soweit ich das mitbekommen habe, werden die AGs von den Studienassistenten und wissenschaftlichen Mitarbeitern durchgeführt, nicht von den Tutoren (kann natürlich sein dass ich mich irre - allerdings denke ich dass Entscheidungen zu solchen Sonderfällen ohnehin nur von der LVA-Leitung getroffen werden können).


    Das ist korrekt. Die Abgabegespräche in ECG machen nur Professoren und Assistenten.
    Ihr könnt Fragen zur Bewertung aber auch hier im Forum stellen, meist wissen wir Tutoren auch eine Antwort. In diesem speziellen Fall ist es sicher am besten sich an Prof. Wimmer zu wenden.

    ich habe es jetzt :D bin mit triangleRasterize fertig, bin jetzt bei der DDA - interpolating von depth, was muss man hier von alten DDA algorithmus noch behalten?


    Überlegen wir uns das kurz.
    Was brauchst du denn alles von deinem alten DDA-Algortihmus noch, damit er funktioniert?
    Oder anders ausgedrückt, gibt es etwas, dass du gar nicht mehr brauchst?
    Gibt es vielleicht etwas, dass du hinzufügen oder anpassen solltest?


    Lesen wir uns dazu nochmal die Angabe durch:


    4.1
    Since the pixel coordinate values have changed, you need to adapt the DDARasterizer to get proper images again. A simple 4-bit right shift at the beginning of DDARasterizer.drawLine() should do the trick. This discards the extra precision.


    4.3
    Now you have to interpolate the depth in DDARasterizer.drawLine() and TriangleRasterizer.rasterizeTriangle() and call framebuffer.setPixel() with this additional depth information.

    Ja, ich verwende swap(), aber nur einmal am ende jedes clipPlane() aufrufes - _help muss nicht jedes mal danach geleert werden, oder etwa doch?


    Zum clipping-algorithmus: Ich weiß nicht ob ich da evtl zu kompliziert gedacht habe - ich decke insgesamt 6 Fälle ab (out->in, in->in ganz am anfang werden beide vertices übernommen, in->in überall sonst wird der zweite vertex übernommen, in->out ganz am anfang wird der erste vertex und der schnittpunkt übernommen, in->out sonst wird nur der schnittpunkt übernommen, out->out).


    hmm.. schwer zu sagen ohne den code zu sehen wo genau sich hier der fehler eingeschlichen hat. bekommst du fehler wenn du deinen clipped star irgendwie transformierst (zu einer seite rausschiebst oder so)?
    testest du auch die linie von deinem letzten zu deinem ersten punkt? was passiert bei out-> in wenn danach in -> out kommt? wird in beiden fällen nur der schnittpunkt übernommen? dann fehlt dir der eine punkt der in ist.
    am besten du nimmst dir ein blatt papier und zeichnest dir 4 clippingplanes (der 2d-fall reicht zum durchdenken). dann zeichne ein dreieck wo der erst vertex out ist, der zweite in und der dritte wieder out (bzw mach dir mehrere verschiedene fälle) und geh deinen algorithmus anhand deiner zeichnung genau durch und schreib dir in jedem schritt genau auf welcher vertex ins arry geschrieben wird.

    never mind, problem solved.


    Ein (Verständnis)frage: wieso gibt es null Werte in vertices[] überhaupt??


    siehe post #18 -20 in diesem thread


    Bildschirmfoto 2014-11-04 um 18.17.31.pngBildschirmfoto 2014-11-04 um 18.18.30.pngBildschirmfoto 2014-11-04 um 18.19.02.pngBildschirmfoto 2014-11-04 um 18.19.26.png
    Ich bin gerade auf Fehlersuche und hab ganz interessante Outputs zu bieten:D Jemand eine Idee wo ich zuerst anfangen soll zu schauen? Der Torus sieht ja schonmal ganz ok aus..:rolleyes:


    stehen deine geclippten vertices auch der nächsten clipping plane zum clippen zur verfügung, oder bekommt die nur die anfänglichen vertices des polygons und nicht schon die geclippten (verwendest du swap() )?
    sonst überprüfe ob dein clipping-algorithmus auch die richtige anzahl an vertices ins array stopft (keiner doppelt, keiner vergessen) und das auch in der richtigen reihenfolge.

    Kurze Frage zu den Clipping Planes:
    Die Planes werden ja als Vec4 erstellt mit der Distanz an der letzten Position, die wird aber beim Konstruktor automatisch negativ gesetzt (ich nehme an damit man das Skalarprodukt bei plane.inside(Vertex v) schön benutzen kann?), das muss ich dann aber bei der Deklaration der Planes wieder berücksichtigen, oder?


    das kommt daher, dass die ebenengleichung x*nx + y*ny + z*nz - d = 0 in hesse normalform (nx,ny,nz,-d) gespeichert wird. dem konstruktor sollst du einfach die distanz zum ursprung übergeben.



    Und, gibt es evtl eine Möglichkeit nur den Task 3.1 zu testen? bzw. nehme ich an, dass die Farbverläufe beim clipped_star.dae auch ohne Clipping angezeigt werden müssten, wenn man halt die Gesamtgröße runter skaliert? sprich wenns dann schwarz ist, dann passt was nicht ... :D


    hast du schon versucht test-szenen zu öffnen die nicht geclippt sind? zb star.dae?

    wenn es echt nur abweichungen um einzelne pixel gibt, würd ich generell einfach mal abgeben und dann den rendertest im abgabesystem anschauen. wenns dort übereinstimmt, dann passts.

    Bei der Korrektur der Tests wurden immer auch Punkte für richtige Rechenwege vergeben. Also Rechenfehler bringen zwar Punkteabzüge, weil das Ergebnis dann ja nicht stimmt, aber führen in der Regel nicht gleich dazu, dass man null Punkte auf ein Beispiel bekommt.


    Irgendwelche Ideen? :) (mittlerweile bereits mit Task 2 fertig, Transformationen funktionieren alle einwandfrei und Testfälle gehen fehlerfrei...)


    wie sieht der stern bei dir aus? am stern sieht man finde ich am besten welche linien nicht funktionieren.
    kann es sein, dass deine schleife immer entlang der x-achse weiter zählt? bei linien >45° müssen da nämlich mitunter mehr als 1 pixel pro x-wert gezeichnet werden.


    Außerdem würd ich mal den Debugger anwerfen (wie in der Vorbesprechung demonstriert) und ansehen welche Werte dein dy bei den Linien hat, die Fehler aufweisen. ;)

    Bei uns gibt es keine Ausgabe im Abgabesystem, wir erhalten eine Mail mit dem Kompilierversuch, ich meine mich zu erinnern, dass jemand hier im Forum schrieb, dass es keine Überprüfung mit der Musterlösung dabei gibt (wie bei den PP-Übungen beim Hochladen). Was ich darunter verstehe ist: Es wird als "successfull" bezeichnet, solange es ohne Fehler kompiliert wurde, wenn allerdings der Algo einen Fehler hat, so fällt das nicht auf, solange keine Linie out of bounds geht. Kann mich aber auch irren...


    Wenn du dich ins Abgabesystem einloggst und dann links im Menü auf "Render test" gehst, kannst du deine am server erzeugten Ergebnisbilder mit denen der Musterlösung vergleichen. Wenn die Bilder an dieser Stelle übereinstimmen, darfst du davon ausgehen, dass deine Lösung korrekt ist.



    Dachte ich mir auch bereits und nur zum Testen hatte ich das auch schon probiert, interessanterweise stimmte dann aber die Ausgabe überhaupt nicht mehr, obwohl es bei PP nie Probleme damit gab :D


    Wenn es dein Code ist und du ihn einwandfrei erklären kannst und weißt warum er aussieht wie er aussieht, wäre ja prinzipiell nichts dagegen zu sagen. Die Sache ist aber die, wenn du den DDA einmal richtig implementiert hast, müsstest du das ja auch nochmal machen können (sind ja nur ein paar zeilen). Kannst du das nicht, heißt das eigentlich auch, dass du dich mit deinem eigenen Code aus PP nicht mehr 100% auskennst (sonst könntest du das gleiche ja nochmal implementieren ohne copy & paste) und das kann dann zu Problemen beim Abgabegespräch führen. Insofern würde ich dir empfehlen den DDA nicht aus PP zu übernhemen, sondern lieber noch mal neu zu implementieren, sei es nur um ihn dir für das Abgabegespräch wieder in Erinnerung zu rufen.

    Richtig. Es gibt für jeden Task TODOs. Für Task 1 sind alle "TODO 1" zu implementieren, für Task 2 alle "TODO 2" usw.

    Hallo!


    Ich würde gerne meine Punkte (für Tests und Übung aus SoSe14) ansehen, leider ist im Abgabesystem die Anmeldung gesperrt: "Authentisierung fehlgeschlagen: Diese Lehrveranstaltung ist abgeschlossen. Login nicht mehr möglich!" und im TUWEL sind die Punkte leider auch nicht. Das finde ich sehr doof :( Hätt ich eigentlich einen neuen Thread starten sollen? Oder soll ich euch gar ein Mail schreiben?


    Danke & GLG


    schick uns am besten ein mail mit deinem namen und matrikelnummer an evc[at]cg.tuwien.ac.at

    eigentlich wurden schon alle ergebnisse eingetragen. wenn dein ergebnis nicht online ist sende eine email mit namen und matrikelnummer an evc[at]cg.tuwien.ac.at

    Wir sind uns dieser Problematik mit repmat in den verschiedenen Matlab-Versionen durchaus bewusst und eigentlich ist unserer Policy, dass jeder Tutor die entsprechende Zeile kurz umändert um auch mit einer alten Matlab-Version testen zu können oder gleich mit der neuen Version testen. Für repmat dürfen dir also keine Punkte abgezogen werden.
    Sende bitte eine email mit deinem Namen und Matrikelnummer an evc[at]cg.tuwien.ac.at damit wir uns ansehen können wofür dir Punkte abgezogen wurden.

    Naja, wie funktioniert denn eine Gaußpyramide?
    Da steckt "pyramide" im Namen, also kann man mal davon ausgehen, dass die nach oben hin kleiner wird.
    Die Frage ist wie viel Pixel aus Ebene 1 werden zu einem Pixel in Ebene 2?
    Ich bin sicher du findest die Antwort darauf in den Folien, Skriptum oder zur Not auch auf Wikipedia. :-)

    Die Anmeldung zur zweiten Runde der Abgabegespräche ist ab nun offen. Die Abgabegespräche finden zu folgenden Terminen statt:


    [table='width: 500, class: outer_border, align: left']

    [tr]


    [td]

    Termin

    [/td]


    [td]

    Anmeldefrist

    [/td]


    [/tr]


    [tr]


    [td]

    Freitag 13.06.2014

    [/td]


    [td]

    (Mi) 11.06.2014, 23:59

    [/td]


    [/tr]


    [tr]


    [td]

    Montag 16.06.2014

    [/td]


    [td]

    (Sa) 14.06.2014, 23:59

    [/td]


    [/tr]


    [tr]


    [td]

    Deinstag 17.06.2014

    [/td]


    [td]

    (So) 15.06.2014, 23:59

    [/td]


    [/tr]


    [/table]


    Es wurden bereits alle verfügbaren Termine freigeschalten!


    Wichtiger Hinweis: bei Verhinderung zum angemeldeten Termin ist die LVA-Leitung unbedingt vor dem Termin per Mail an evc[at]cg.tuwien.ac.at - mit Begründung - in Kenntnis zu setzen. Im Falle eines unentschuldigt verpassten Termins oder genereller Nichtanmeldung zum Abgabegespräch wird es keine Möglichkeit mehr geben, das Abgabegespräch nachzuholen.



    Wie läuft das Abgabegespräch ab?


    Beim Abgabegespräch werdet ihr gemeinsam mit einem Tutor die Beispiele durchgehen, die ihr abgegeben habt.
    Ist ein Beispiel richtig gelöst, eröffnet euch das die Möglichkeit alle Punkte für dieses Beispiel zu bekommen.


    Der Tutor wird euch Fragen zu eurem Code und auch Fragen zum Verständis stellen.


    Um auf ein richtig gelöstes Beispiel auch wirklich alle Punkte zu bekommen, müsst ihr:


    • wissen worum es in dem Beispiel gegangen ist.
    • glaubhaft machen, dass ihr das Beispiel selbst gelöst habt.
    • euren eigenen Code einwandfrei erklären können, bzw die Funktionsweise der angewendeten Funktionen erklären können.
    • auch Fragen zur Theorie hinter dem Beispiel bzw den angewendeten Techniken beantworten können. (auch dafür gibt es Punkte!)


    Das Abgabegespräch hat Prüfungscharakter.

    Heute ist die letzte Chance falls jemand vergessen hat sich anzumelden. Von 13:30 bis 16:30 laufen heut noch Abgabegespräche und wer früh genug da ist kann noch einen der letzten freien Termine ergattern. Montag gibt es KEINE freien Termine mehr.
    Wer nicht zum Abgabegespräch erscheint bekommt 0 Punkte auf die Beispiele der ersten Runde!

    Hi, sag mal woher hast du die Formel, nicht aus den Folien oder? Selbst hergeleitet?


    man kann sich das wirklich gut selbst überlegen. am besten anhand der abbildung in der angabe.
    als erstes will ich ja, dass blacklevel auf 0 abgebildet wird, also einfach meinen ganzen wertebereich um blacklevel 'nach links' verschieben. dann geht mein wertebereich schon mal von null weg. super.
    jetzt will ich aber dass der wertebereich von 0 bis 1 geht und nicht von 0 bis irgendwas. wie mach ich das? na ganz einfach, ich dividier einfach alles durch den max-wert meines verschobenen wertebereichs. (weil dann is mein max auf 1 und alles andere zwischen 0 und 1).


    soweit verständlich? :)