Hilfe bei Übungsbeispiel



  • Hallo brauche dringend Hilfe bei einer Übung. Die Aufgabenstellung ist wie folgt:

    Implementieren sie eine kreisförmige Lupe, die einen Ausschnitt des Hintergrundes vergrößert. Verwenden sie eine Textur als Hintergrund ihrer Szene.

    Machen sie die Lupe verschiebbar. Bei gedrückter linker Maustaste wird die Lupe an die Mausposition verschoben.

    Die Lupe soll durch einen kreisrunden Rand umgeben sein.

    Machen sie den Grad der Vergrößerung der Lupe variabel. Bei gerückter rechter Maustaste soll die Vergrößerung durch eine Vorwärtsbewegung der Maus inkrementiert, bei einer Rückwertsbewegung dekrementiert werden. Achten sie darauf, dass die minimale Vergrößerung der Originalgröße des Hintergrunds entspricht.

    Machen sie die Größe der Lupe variabel. Bei gedrückter mittlerer Maustaste soll die Größe der Lupe durch eine Vorwärtsbewegung der Maus inkrementiert, bei einer Rückwertsbewegung dekrementiert werden.

    Implementieren sie eine zweite Lupe. Die Auswahl der Lupe geschieht durch Picking, erst wenn mit der Maus auf die Lupe geklickt wurde, wird diese entweder verschoben (linke Maustatse), deren Vergrößerung geändert (rechte Maustaste), oder die Größe der Lupe gesteuert mittlere Maustaste). Überschneidungen der Lupen sind dabei nicht zu beachten.

    Wer sich auskennt bitte schreiben, ich maile euch dann meinen Code und bitte um HILFE

    Ps: Mache es auch selber aber komme einfach nicht mehr weiter



  • Hallo,

    Ich denke, dass man das mithilfe eines Stencil-Buffers realisieren kann. Man müsste die Szene zweimal mit aktiviertem Stencil-Test rendern.
    Bei dem einem Mal rendert man die Szene normal, allerdings werden die Pixel nur gezeichnet, wenn der Stencil-Buffer an der entsprechenden Stelle eine 0 enthält. Jetzt passt man die Projektionsmatrix so an, dass das Bild vergrößert wird und zeichnet die Szene noch einmal. Jetzt dürfen allerdings nur die Pixel gezeichnet werden, wenn der Stencil-Buffer an der entsprechenden Stelle eine 1 enthält. Der Stencil-Buffer müsste vor dem Zeichnen mit einem Muster gefüllt werden. (0 für die Stellen, an denen der normale Hintergrund ist und 1 an der Stelle, wo die Lupe ist.)

    Wenn die Lupe verschoben wird, muss man die Kameramatrix und das Muster im Stencil-Buffer verändern.

    Ich hoffe, Ich konnte dir einige Ansätze liefern.

    Kannst mir auch gerne den Code zuschicken, kann ich mir dann mal ansehen.
    (Kenne mich allerdings nur mit DirectX aus.)

    MfG, Jochen


Anmelden zum Antworten