Coder Social home page Coder Social logo

Comments (7)

upsj avatar upsj commented on July 23, 2024

Ich bin mir da nicht so ganz sicher. Mit fallen dazu zwei Argumente ein:

Einerseits würde niemand, der bei klarem Verstand ist, eine Lösung fordern, die für jedes Fragment die gleiche redundante Berechnung ausführt (inverse), andererseits ist die Matrix eine 3x3-Matrix, was eine lineare, keine affine Transformation bedeutet.

Sollte man vielleicht einen Hinweis dazu packen, dass die Aufgabe nicht eindeutig gestellt ist.

from kit-musterloesungen.

crepererum avatar crepererum commented on July 23, 2024

Einerseits würde niemand, der bei klarem Verstand ist, eine Lösung fordern, die für jedes Fragment die gleiche redundante Berechnung ausführt (inverse),

Da bin ich voll und ganz mit dir. Implementierungstechnisch wäre das der totaler Unsinn. Hilft aber nix, denn vlt. wird die Transformation im Vertex-Shader dynamisch berechnet, womit du die Inverse dynamisch berechnen müsstest. Dazu kommt, dass scheinbar (habe nichts gegenteiliges gefunden) Matrizen auch interpoliert werden können, siehe https://www.opengl.org/wiki/Type_Qualifier_%28GLSL%29#Interpolation_qualifiers

andererseits ist die Matrix eine 3x3-Matrix, was eine lineare, keine affine Transformation bedeutet.

Foliensatz 3, Folie 57. Eine reine Skallierung, die unterschiedliche Werte für die beiden Achsen aufweißt, zerstört dir bereits die Normalen mit der falschen/simplen Implementierung völlig. Die 3x3 Matrix bedeutet hier lediglich, dass wir keine Translation vornehmen (und einige, eher theoretische Transformationen nicht durchführen können). Da eine Normale eine Richtung ist (w=0), reicht eine 3x3 Matrix allerdings für die "nicht-nur-theoretische" (s.u.) Transformationen auch aus.

Anmerkungen zu seltsamen Transformationen: Theoretisch könntest du eine Matrix bauen, die dir den w Wert auf dem x Wert addiert, womit eine "Richtung" dann doch wieder eine Position wird. Ich sehe aber keinen Grund, warum jemand so etwas machen sollte.

from kit-musterloesungen.

vincent23 avatar vincent23 commented on July 23, 2024

Der Code-Kommentar auf dem Aufgabenblatt sagt eindeutig, dass die Matrix zur Transformationen von Positionen und nicht (wie hier verwendet) von Normalen dient.

Woraus liest du das? Aus dem "Koordinaten"? Der Kommentar sagt auch, dass die Normal Map "Normalen in Objektkoordinaten" enthält. Ich würde auch eher sagen, dass es nicht so ganz eindeutig ist.

from kit-musterloesungen.

crepererum avatar crepererum commented on July 23, 2024

@vincent23 OK, guter Einwand. 👍

from kit-musterloesungen.

StephanGocht avatar StephanGocht commented on July 23, 2024

Die Inverse von matO2W ist doch gerade matW2O, sie muss also nicht berechnet werden. Aber es ist wirklich nicht ganz klar ob das transformationsmatrixen für normalen oder vektoren sind.

from kit-musterloesungen.

matthiasplappert avatar matthiasplappert commented on July 23, 2024

In beiden Fällen sollte die Normale nach der Transformation noch normalisiert werden, oder?

from kit-musterloesungen.

crepererum avatar crepererum commented on July 23, 2024

@matthiasplappert jup.

from kit-musterloesungen.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.