Tuesday, November 18, 2008

Update en thesismeeting 5

Het loggen heb ik eerst met de standaard java logging klasses geprobeerd. Het implementeren zelf was geen probleem, maar bij het testen viel het wel tegen. De performantie was 10 keer slechter en voor een simpele xml met enkel een paar eigenschappen per pixel die gerenderd werd kreeg ik al een log van 107 MB. Het formatten naar xml kost toch wel wat tijd en in de file die Java Logging opbouwt zit veel redundante informatie.

Dan ben ik gaan experimenteren met log4j, een lang bestaand logging framework voor Java. Het is ontworpen met snelheid als hoofddoel en biedt ook meer mogelijkheden dan Java Logging. De formatters werken sneller, en log4j kan asynchroon loggen. De performantie is ongeveer 2 keer slechter met een asynchrone logger en een eenvoudig xml formaat.

Xml kan ook heel sterk gecomprimeerd worden in een zip-bestand.

Tegen volgende week zou ik graag een bestaande ray-tracer voorzien hebben van logging functionaliteit.

Friday, November 14, 2008

Thesismeeting 4

Peter vond mijn use-cases nogal ambitieus en vond ze niet echt haalbaar. Vooral het AST-gedeelte was uitgebreider dan nodig voor deze thesis. Daarom ben ik overgestapt naar een pseudotaal als representatie voor het algoritme. Deze kan uiteraard simpel voorgesteld worden met eigen klassen.

Tegen de volgende meeting ga ik proberen mijn raytracer van CG1 te voorzien van logging functionaliteit. De bedoeling is uit te testen hoe dit kan zonder de performantie teveel te beïnvloeden en zonder monstergrote log-files te creëren.

Thursday, November 13, 2008

Update

Sinds de presentatie heb ik de volgende dingen gedaan:

Beter gezocht naar gelijkaardige software.
Een deel van de gevonden projecten zijn Brown Exploratories, Graphics Teaching Tool, Torsten Ullrichs applets, AlgoViz, Mukundans applets en CG educational Materials Source. In de projecten die ik gevonden heb is er nergens iets te vinden dat nog maar lijkt op het interactief visualiseren van raytrace-algoritmes. Deze projecten zijn daarentegen wel een goede bron van inspiratie en literatuur wat didactische software betreft. Ik heb nog niet genoeg papers kunnen lezen om te oordelen of ik zulke literatuur ook echt kan gebruiken voor deze thesis.

Use cases opgesteld
.
Ik heb in grote lijnen uitgewerkt wat het programma allemaal zou moeten kunnen a.d.h.v. use cases. Deze komen in grote lijnen neer op de volgende drie:
  • Free mode: Een bepaalde scene inladen, een algoritme en bijhorende parameters kiezen, renderen en uiteindelijk het algoritme doorlopen op debugwijze. (De gecreëerde renderlog kan opgeslagen worden om later tijd uit te sparen.)
  • Record mode: Idem free mode, maar het doorlopen van het algoritme wordt bijgehouden. Er kan ook bij elke stap commentaar (of opdrachtjes) geschreven worden. Dit geheel (scene, algoritme, parameters, render-log, debug-stappen, commentaar) kan dan opgeslagen worden als scenario.
  • Play mode: Het afspelen van een scenario zoals opgenomen in Record-mode.
In alle modes is het mogelijk interessante statistieken op te vragen.

Gebrainstormd over mogelijke problemen om rekening met te houden tijdens het ontwerp
.
Dit werd een behoorlijke lijst met nuttige ideëen om rekening met te houden.

Begonnen aan een klassediagram en zoeken naar libraries.

Ik heb het ontwerp dan in verschillende problemen gesplitst. Eerst ben ik op zoek gegaan naar een library die mij kan helpen de algoritmes voor te stellen. Abstract syntax trees leken daar wel interessant voor. Die stellen code (in eenders welke taal) voor als een boom van syntax elementen. De betere libraries die AST's kunnen opbouwen, implementeren ook het Visitor pattern. Dat laat mij toe om visitors te maken voor de textuele voorstelling in de gui en voor de visualisatie van bepaalde elementen in de AST.
Andere grote deelproblemen zijn het renderen (loggen van een raytrace-algoritme), het terug inlezen van die log en het voorstellen van algoritmestappen.

Wednesday, November 12, 2008

Grote update

Door tijdsdruk lijkt het soms nuttiger om eerst veel te verwezelijken en dan pas te bloggen. Dat is uiteraard niet de juiste manier, aangezien iets dat niet op de blog staat ook nooit gebeurd lijkt... Daarom hier een update van het geleverde werk tot aan de presentaties op 5-11-2008.

Eind september - begin oktober:
  • Nadenken over thesisopdracht. 'Didactische software' concretiseren:
    Ik heb mijn thesisopdracht als volgt geïnterpreteerd. Ik ga een applicatie ontwikkelen die de raytrace-algoritmes van het vak CG1 kan visualiseren. Een deel van de applicatie gaat het algoritme voorstellen en een ander deel de visualisatie ervan (zie illustratie).
  • Implementatiemogelijkheden onderzoeken:
    C++ was snel geschrapt, onwille van verschillende redenen. Het programma zou moeten draaien op meerdere platformen. Ik heb geen ervaring met C++ en aangezien ik die deze vakantie niet kon opdoen, weegt de leerkost niet op tegen eventuele voordelen van C++.
    Java maakt het mogelijk om applicaties via Java Web Start te delen en up-to-date te houden. Voor deze applicatie is ook geen superefficiëntie vereist en is het beter om keurig OO te programmeren om verder onderhoud of uitbereidingen makkelijker te maken.
    JOGL is een java binding voor OpenGL die op laag niveau een directe binding tussen Java en OpenGL mogelijk maakt. Ik heb geprobeerd hiermee te experimenteren en ettelijke voorbeelden uit het OpenGL Redbook in JOGL werkend te krijgen. Dit heeft echter in ettelijke uren in beslag genomen door een probleem met native libraries op mijn mac. Uiteindelijk is JOGL afgevoerd, voor dit project is er geen nood aan een directe toegang tot de rendering pipeline of mogelijkheid tot OpenGL opmisisaties.
    Java3D
    is een abstracte scene-graph representatie bovenop de low-level JOGL bibliotheek. Java3D is op vele platformen beschikbaar, en laat toe op een abstracte manier te programmeren en de optimisaties aan Java3D over te laten. (Deze optimisaties zijn trouwens geregeld ook platformgebonden, een extra rede om geen directe binding te gebruiken.) Voor Java3D heb ik dan de tutorial, een boek en enkele nuttige sites doorlopen.
Midden oktober:
  • Een raytrace-scene bouwen in Java3D. Dit met de nodige snufjes(materialen, shading, raytracing, Billboards, navigatie) om Java3D te leren kennen. Een heel nuttige oefening zo bleek.
    De klassen die ik hier gemaakt hebben zouden ook in de uiteindelijke applicatie bruikbaar moeten zijn.
Eind oktober:
Ziek en deadlines andere projecten.

Begin november:
  • Voorbereiden presentatie
  • Presentatie (5-11-2008)
Een volgende update mag deze week verwacht worden.

Tuesday, July 29, 2008

Meeting - thesis kickoff

Op deze meeting heb ik alle info over de thesis gekregen.

Deze vakantie wordt reeds het volgende van mij verwacht:
  • Nadenken over het onderwerp -> doelstellingen vormen
  • boeken lezen, algoritmes leren
  • C++ en OpenGL leren (tutorials doorlopen, eigen viewer maken)
Dit zal gebeuren in de drie laatste weken van september, aangezien ik een redelijk zware tweede zit heb die tot 9 september duurt.

Vanaf dan zal ik deze blog dus terug aanvullen.

Welkom

Welkom op mijn thesisblog, hier ga ik steeds beknopt de vooruitgang en de planning van mijn thesisproject rapporteren.

Mijn thesisopdracht is het ontwikkelen van didactische software voor computer graphics cursussen. Mijn promotor is Prof. Dr. ir. Philip Dutré en mijn begeleider is Toon Lenaerts.