Posts by Maggot

    Die Faszination des IQ-Tests macht offenbar auch nicht vor dem Informatik Forum halt. Wobei die diversen Apps bei Facebook natürlich viel glorreicher sind ;).


    Da würde ich doch gleich zur Mensa http://mensa.at raten. Hier kann man dann die überragende Intelligenz durch einen Jahresbeitrag bestätigt wissen.



    lg

    Mah, jetzt hab ich Jahre gebraucht um das Tuwis++ liebzugewinnen und dann wird es mir mit aller Macht entrissen :wein:


    Ich kann mir nicht helfen aber irgendwie stört mich das "bling". Wollte man es da etwa dem Apfel gleichmachen?

    Ich hab das CA-42 Kabel von einem Laden gegenüber vom Freihaus. Das war eine ziemliche Arbeit das Kabel vom Harz/Plastik zu befreien um das PCB freizulegen. Zudem ist es nicht ein klassisches CA-42 und ich hab mehr durch Raten die Pins verlötet. Deshalb bin ich dann auch auf die Selbstbau-Variante umgestiegen. Hab ich alles bei Conrad bekommen. Irgendwo im Internet habe ich dann später noch eine Anleitung gefunden wie meine Version des CA-42 richtig zu verkabeln ist. Der Standard meiner Konstruktionen ist so mies das ich dir das auch nicht zumuten kann. Ich hab teilweise auf das Löten gepfiffen und einfach nur Kabel verdreht. ^^


    Selbst wenn die Platte im Eimer ist kommst du ins Interface. Solange das PCB funktioniert und Strom bekommt wirst du dich da "einloggen" können.
    Erm Media Markt ... ?


    Wenn du definitiv einen Spin-up hörst und nicht nur das Klicken der Leseköpfe kann es durchaus der BSY Error sein. Klar wird die Platte nicht erkannt weil sie in einer Endlosschleife hängen bleibt.

    Ich habe bei meiner Seagate auch gedacht, dass es sich um den BSY Error handelt. War aber nicht so. Nachdem ich mit etwas Motivation unter Anderem ein Nokia Ca-42 zerlegt habe und letztendlich mit selbstgebautem Adaptor erfolgreich mich mit der Firmware der Platte verbunden habe hat sich herausgestellt, dass der Spinmotor als ganzes wahrscheinlich im Eimer ist. Man kann recht gut hören wie die Leseköpfe hin und her suchen und "clicken" aber durch die fehlende Rotation natürlich nix finden. Es gibt recht viele gute Anleitungenwie man sich so einen Adapter baut und die Befehle um den Motor manuell hochzufahren sind auch eher trivial.
    Ich hoffe das hilft etwas


    Edit:


    Ich fand das Herumbasteln an der Firmware nicht so tragisch. Natürlich kann man was kaputtmachen aber nach etwa 15 Versuchen mit verschiedenen Techniken hab ich unter Anderem auch mal die Platte in den Tiefkühler (natürlich eingepackt und ohne pcb) weil da angeblich dei Bauteile sich so weit einziehen können, dass die Platte doch noch hochspinnt. Hat alles nichts genutzt. Ich hab auch mal falsche Befehle in der Firmware gegeben (nach etlichen "vorsichtigen" Versuchen). Die Platte konnte man dann trotzdem noch ansprechen usw. Wenn man nicht bereit ist teures Geld für eine professionelle Datenrettung auszugeben kann man eh getrost rumpfuschen. Im Idealfall funktioniert sie nachher wieder (ich würde dann trotzdem die Daten sichern und die Platte dann ausrangieren) oder eben nicht und dann sind die Daten nunmal weg. Ich habe mir noch vorgenommen aus einer Funktionierenden Platte das PCB zu transplantieren aber dafür fehlt mir ein baugleiches Modell und natürlich die Motivation und Zeit ;).

    ... Würde jedem weiteren absolventen raten auch ein bisschen in die zukunft zu sehen. Vor allem was das konzept betrifft. Sonst hat man am ende nicht viel mehr als viele investierte stunden. ...



    Ich bin mir da nicht so sicher ob es sich hier auszahlt ein Framework zu erstellen. Vieles mussten wir mehrmals komplett neu programmieren da das Verständnis für OpenGL am Anfang einfach gefehlt hat. Jetzt sitzen wir auf einer Engine die zwar theoretisch ausbaufähig ist und auch super Möglichkeiten bietet komplette Level direkt aus Modellierprogrammen zu importieren aber viele Elemente interagieren so obskur miteinander dass man da nach kurzer Zeit schon den Überblick verliert. Natürlich dokumentiert man durch den Zeitdruck auch dementsprechend sinnvoll ;) Eigentlich würde mir ein kleines, gut dokumentiertes Programm wahrscheinlich mehr helfen da ich dann dort funktionierende Elemente einfach für andere Projekte verwenden könnte.


    Für alle die noch interessiert sind beziehungsweise für kommende Übungsteilnehmer:
    Mein Kollege hat leider zu spät diese nette Website entdeckt die uns sicherlich ein paar schlaflose Nächte erspart hätte


    http://www.spieleprogrammierung.net/


    vielleicht hilft sie ja irgendwem

    So ich starte mal so ne kleine Umfrage ^^. Wie hat euch die Übung gefallen? Wars zu schwer? Zu wenig Zeit? Etz...


    Um mal etwas auf die Übung einzugehen:
    Der Themenbereich ist ja extrem spannend und dass einem die Möglichkeit gegeben wird sich in dem Projekt etwas zu verwirklichen und sich kreativ auszuleben ist wirklich toll. Aber was viele hier meines Erachtens vergessen ist a) der enorme Aufwand wird kaum honoriert und b) die Unterstützung seitens der LVA - Leitung ist gut und vor allem schnell, aber bei weitem nicht ausreichend. Hier nochmals einen Dank an alle Tutoren, die auch zu den unmöglichsten Zeiten hilfreich im Forum zur Seite gestanden sind. Dennoch haben wir einen Großteil unseres Wissens über diverse Websites erlangt und mussten die furchtbaren technischen Manuale irgendwie entziffern.
    Klar kann man jetzt argumentieren, dass es Teil des Studiums ist sich Wissen aus verschiedenen Quellen selbst anzueignen. Ich finde aber, dass etwas mehr Hilfestellungen kein Fehler wären, insbesondere wenn man den Umfang der LU betrachtet.
    Abgesehen davon fand ich es aber toll so viele Freiheiten bei der Entwicklung unseres Computerspiels gehabt zu haben. Natürlich ist es deutlich schwerer bei so einem großen Bereich überall Hilfestellungen anzubieten und die Vorträge haben auch einige der Kernpunkte gut abgedeckt.
    Als Fazit kann ich eigentlich nur sagen: Tolle Übung aber es wäre angebracht etwas mehr Stunden dafür zu vergeben.



    Ich möchte auch nochmal einen großen Applaus an alle richten, die mit uns dieses Semester die CG2LU absolviert haben. Eure Spiele waren echt fantastisch und die vielen schlaflosen Nächte haben sich definitiv ausgezahlt ;).

    Uns ist es ähnlich ergangen wie intruder. Gameplay ist so gut wie nichtexistent ;-)


    Ich finde das Kosten/Nutzen Verhältnis der LU echt furchtbar. Es macht zwar wahnsinnig Spaß und ist interessant aber für den Zeitaufwand nur 4 SWS zu bekommen ist schon echt heftig. Wir haben auch ausser der CG2LU so gut wie nichts dieses Semester gemacht und waren eigentlich permanent am Arbeiten

    Wir haben unser Projekt mit Eclipse/MinGW programmiert. Die Exe sollte nun mit korrektem Mipmapping (hoffentlich) auch am Abgaberechner laufen. Sollen wir da irgendwelche Dinge beachten? Wir haben auf der Rapunzel MinGW in c:\ kopiert und eine User-PATH Variable gesetzt aber Eclipse verweilt noch bei uns auf einer externen Festplatte.Wir können das natürlich gerne auch auf die Rapunzel kopieren. Als wir letztens eine frühe Alpha dort getestet haben hat alles schön kompiliert und funktioniert. Zu den external Libs: Collada braucht eine Reihe davon um richtig zu kompilieren. Die Exe ist dann aber mit der collada.dll zufrieden. Sollen wir die auch alle mitliefern?

    Hi,


    nachdem ich etliche Stunden mit "the DOM" verbracht habe um den Spaß unter CDT/MinGW zu kompilieren (hat übrigens nur nach kompletter Neukompilierung aller Dependencies und nur mit der dll und nicht der statischen Library geklappt falls es jemanden interessiert) würde ich gerne auch ein paar Codebeispiele zu OpenCollada sehen.
    Irgendwie traue ich dem Frieden nicht und da ich kaum Zeit mit der eigentlichen Verwendung von Collada DOM verbracht habe wären ein paar Open Collada Beispiele schon ganz geschickt. Im Internet ist da ja leider nicht wirklich etwas brauchbares zu finden und aus den Beispielprojekten wie etwa dem .dae zu Ogre werde ich auch nicht wirklich schlau ;).


    Falls sich der Aufwand nicht lohnt bleiben wir natürlich bei DOM da das zumindest rudimentär funktioniert und auch halbwegs brauchbare Tutorials online existieren.


    Lg,


    Maggot


    ... 6- bis 8-monatige Weltreise zu machen....


    Hi,


    also ich kann so etwas nur empfehlen. War eine der besten Entscheidungen meines Lebens. Ob es gut aussieht im CV?
    Um ehrlich zu sein, falls das jemals zum Problem werden sollte will ich die Anstellung sowieso nicht. Abgesehen davon ist ja anscheinend das "Sabbatical" im Moment am kommen und wird sicherlich eher als positives Element im Lebenslauf aufgefasst.


    Aber Vorsicht, Reisen kann süchtig machen ;)

    Hallo,


    Ich bin für das Abgabegespräch nochmal den Code durchgegangen und habe einfach mal eine Zusammenfassung für das 4. Beispiel gemacht da hier in den Posts zu den Abgabegesprächen oft wiedersprüchliche Aussagen gemacht wurden. Ich kann natürlich für nichts garantieren ;)


    Beispiel 4


    BuildEdgeList() (FillScan)


    Es werden die clipped Vertices durchiteriert (entgegen dem Uhrzeiger) und aus jeweils zwei Vertices eine Edge erstellt. Es müssen die clipped Vertices sein da sonst Kanten ausserhalb des Bildschirms existieren können. Die Kanten werden so erstellt, dass der Vertex mit dem niedrigeren y-Wert immer zuerst ist. Haben beide Vertices den gleichen y-Wert werden sie ignoriert (horizontale Linie). Wurde das Problem nach Hearn & Baker gelöst überprüft man mit dem yNext zusätzlich ob die nächste Kante steigt oder fällt ( < oder > ). In diesen Fällen muss yUpper -1 bei dem oberen Vertex verwendet werden (die Kante wird um 1 verkleinert. Das Verhindert, dass beim Scannen beide Kanten im Punkt yUpper gleichzeitig in der Activelist sind(konkret, der Endpunkt der einen Kante und der Anfangspunkt der anderen Kante). Bei Kanten die \/ oder /\ ausfallen ist das egal ( Hearn & Baker 3. Aufl p 197). Probleme treten daher auf, dass wir mit einer odd-even Rule füllen (ab erster Kante wird gefüllt bis zur nächsten Kante, dann von der 3. bis zur 4. usw). Man kann sich leicht davon überzeugen, dass die Problemfälle zu fehlerhaften Füllergebnissen führen.
    Hat man eine Lösung ähnlich der Musterlösung werden einfach alle oberen Vertices mit yUpper-1 in die Edgelist aufgenommen. Das führt natürlich bei einer oberen Spitze /\ zu einem kleinen Fehler der aber durch etwas mehr Performance in Kauf genommen wird.
    Es werden diese Kanten dann in die Edgelist eingefügt, und zwar an der die Position des niedrigeren y-Wertes der Kante, als edgelist[lower[Y]]. Zusätzlich muss man noch den xIntersect an dieser Stelle und den dxPerScan (also wie weit man x inkrementieren muss wenn man einen Schritt bei der y-Achse macht) angeben.
    Die Edgelist hat die Höhe des Canvas (es geht theoretisch auch anders aber darauf will ich jetzt nicht eingehen) und muss mit leeren Edgelists für alle Felder des Arrays initalisiert werden.
    Nach BuildEdgeList() sollte nun jede Kante in dem edgelist[] Array stehen und zwar genau an der Position wo der "tiefere" Vertex seine y-Koordinate hat. Werden mehrere Kanten an einer Stelle eingefügt so werden sie zusätzlich nach ihren x Koordinaten an jenem Vertex sortiert (alles zusammen ist ein Bucket Sort) .


    DrawClipped() (FillScan)


    Erst wird mit buildEdgeList() alle Kanten richtig in die Edgelist eingefügt. Dann wird über alle y Koordinaten (also von 0 bis canvas.Height) iteriert und dabei BuildActiveList(scan) und FillScan(scan,canvas)aufgerufen. Zusätzlich wird nach dem durchlaufen der Scanline activelist.update() und activelist.resort() aufgerufen. Durch update wird der xIntersect aller aktiven Kanten um dxPerIntersect erhöht (und später auch zIntersect und cIntersect) und zudem Kanten entfernt deren yUpper position erreicht wurde (fertig gezeichnet). Rresort sortiert die Kanten da beim Kreuzen zweier Kanten die Reihenfolge vertauscht wird.


    BuildActiveList(scan) (FillScan)


    Es werden nun alle y-Positionen des Canvas einzeln mit der Scanline durchlaufen. Wurde nichts in die edgelist[scan] eingefügt wird einfach in die nächste Zeile gesprungen. Existieren nun Edges in dieser Zeile werden sie in die Activelist eingefügt. (wieder in der richtigen Reihenfolge der x Koordinaten). Die ActiveList enthält somit alle Kanten die momentan gekreuzt werden.


    FillScan(scan,canvas)


    Es wird die erste Kante aus der ActiveList geholt und von ihrem xIntersect bis zum xIntersect der nächsten Kante mit der Farbe des Polygons gefüllt. Dann wird die übernächste Kante und ihr Nachfolger geladen und ebenso verfahren bis es keine Kanten mehr gibt.


    Backface Culling:


    Backface culling wird in CG1Object ausgeführt und zwar in der funktion draw(). Da die Objekte nur VertexNormals besitzen muss man ein FaceNormal durch berechnen zweier Kanten und dem Ermitteln des Kreuzprodukts erstellen. Generell würde man nun das Dot Product des View Vectors mit dem Normalvector nehmen und überprüfen ob der wert > 0 (bzw >=) 0 ist. Ist dies der fall zeigt die Normale und somit die Oberfläche von uns weg und muss nicht gezeichnet werden da man sie nicht sieht (es gibt hier ganz klar Probleme zum Beispiel bei "Löchern" in einem Objekt wo man die Hinterseite sehr wohl sieht oder bei 2D Objekten). In unserem Fall kann man aber auch einfach die z Komponente des Normalvektors analysieren da unser View vector fixiert ist und in die negative z richtung schaut. Zeigt der Normalvektor in die negative z Richtung oder auf 0 zeigt die Normale weg von uns oder ist im rechten Winkel und muss nicht gezeichnet werden.

    Kann ich nur zu gut verstehen das mit der Motivation...


    Was mir sonst noch zu dem Problem einfällt aber wahrscheinlich nicht des Rätsels Lösung sein wird:
    Untersuchst du ob der Punkt überhaupt geclippt werden muss? Bei mir gabs bei clipPoint probleme (array out of bounds) wenn ich versucht habe einen Punkt der nicht interpoliert werden muss (also wo sich x und y position nicht ändern) zu interpolieren.


    Ich könnte mir vorstellen, dass hier Punkte zusätzlich interpoliert werden obwohl sie eh drinnen sind und somit haut es dann die Farbwerte zusammen.


    mfg

    Hmm Ich hatte anfangs ein ähnliches Problem weil ich meine Interpolation etwas "vereinfacht" habe. Da sind die Fehler jedoch nur an der unteren Bildschirmkante aufgetaucht.


    Hier mal mein Code für eine Achse, vielleicht hilfts ja
    ( ist von http://informatik-forum.at/showpost.php?p=98949 ) abgeleitet


    aus meiner persönlichen erfahrung kann ich sagen dass ca 90% aller VOs für die fische sind. besser ist man fast immer dran wenn man das skript/buch/folien im alleingang lernt und sich die zeit die man auf der uni verbringen würde spart.


    Da muss ich dir (leider) völlig Recht geben. Diese Zeit braucht man dann auch für die oft unverhältnismäßig schweren Übungen.


    Mir kommt es leider so vor als würde die TU ihren Status als technische Universität durch unnötig verkomplizierte und erschwerte Vorlesungen unterstreichen, als auf Qualität bei den Vortragenden zu setzen. Meine fast schon astronomische Studiendauer führe ich zum Teil auf diese Tatsachen zurück und bin mir sicher, dass es anderen ebenso ergeht.
    Das dann Unmut unter den Studenten herrscht ist da nicht schwer nachzuvollziehen.


    Um noch etwas konstruktives zum Thread hinzuzufügen:
    Ich fand mir hat damals das Skriptum zu "Objektorientierte Programmierung" deutlich beim Verständnis von Java geholfen. Es kann zumindest nicht schaden!

    edit: Durch dein Abschwächen von k_d wird der "plastische Eindruck" verringert denke ich mir (da im Verhältnis das k_a viel stärker wird).... oder sehen deine Screens so aus, wie die Beispielbilder auf der HP?


    Lg
    Spite


    Das stimmt natürlich, besonders bei großem k_a, aber meine Überlegung war, dass ein schon stark beleuchtetes Objekt durch hinzufügen eines "Scheinwerfers" jetzt nicht noch proportional heller wird.
    Ich finde meine Lösung optisch ganz nett und "Probleme" gibt es nur wenn k_a nahe bei 1 und k_d nahe bei 0 ist, was aber unter der obigen Annahme finde ich durchaus zutreffen sollte.


    Kann ich diese Lösung verwenden wenn ich mit dem Argument bei der Abgabe diskutiere?


    lg

    Files

    • cg1a.jpg

      (65.09 kB, downloaded 92 times, last: )
    • cg1b.jpg

      (60.99 kB, downloaded 91 times, last: )

    Hallo,


    ich habe *(1-k_a) bei der Berechnung von k_d hinzugefügt um so im Bereich von 0.0 - 1.0 zu bleiben ( ich verwende nur floats).
    Mit steigender Lichtinsität des Umgebungslichts wird dann halt der diffuse Anteil immer kleiner bis bei k_a = 1 das Umgebungslicht dominiert.


    Kann bzw darf das so gelöst werden?


    mfg

    Klingt gut :D Und wieso laufen die dann nicht grundsätzlich auf niedrigerer Spannung, wenn's offensichtlich eh nur positive Sideeffects hat? ;x Oder hab ich was übersehen?


    Weil die Wafers nicht 100% homogene Chips erzeugen und es teurer ist unterschiedliche Modelle separat zu produzieren. Die Streuung in der Qualität wird natürlich mit einem gewissen Sicherheitspuffer ausgestattet damit dann nicht peinliche Ausfälle der Chips auftreten.
    Deshalb kann man ja auch bei AMD manche x2 bzw x3 auf Quad cores freischalten.
    Prinzipiell wird der produzierte Chip dort ebenfalls einer art "torture test" unterzogen. Je nachdem was der einzelne Chip dann erreicht wird er entweder für den Serverbereich (es gibt natürlich auch reine Serverchips die andere Funktionalitäten besitzen) klassifiziert oder dann eben für den Desktopbereich. Daher unterscheiden sich manchmal durchaus die billigeren Modelle nur durch den vom Hersteller vorgegebenen Multiplikator und Spannungsbereich von den High-end Versionen.
    Um den Prozessormarkt optimal abzudecken werden da durchaus funktionierende Quad Cores (zumindest bei AMD) einfach verstümmelt oder eben mit deutlich reduzierten Taktraten und Multiplikatoren gefahren. Es ist somit nicht verwunderlich wenn der gekaufte Prozessor noch deutliche Leistungsreserven hat (nicht umsonst kann man teilweise über 50% übertakten) oder eben mit geringerer Spannung problemlos funktioniert.


    Okay.. aber da dürft's bei den gängigen Prozessoren doch eh irgendwelche Kennzahlen geben, oder?
    Oder hängt das dann vom Gesamtsetup ab?


    Hängt primär von deinem Prozessor und dessen Stepping/Serie ab


    Beim q6600 gibts zb u.a das B3 und das G0 Stepping und dann noch gewisse andere Identifikatoren die den Batch anzeigen (zb bei mir SLACR)
    Manche lassen sich besser Übertakten als andere. Das Internet gibt da oft Aufschluss.


    pax: Bei AMD oder Intel i Serie würde ich mit prime95 RAM ebenso testen da der Memorycontroller ja auch auf dem Die liegt!


    lg,