Comments (7)
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.
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.
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.
@vincent23 OK, guter Einwand. 👍
from kit-musterloesungen.
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.
In beiden Fällen sollte die Normale nach der Transformation noch normalisiert werden, oder?
from kit-musterloesungen.
@matthiasplappert jup.
from kit-musterloesungen.
Related Issues (20)
- CG/2013-Nachklausur Aufgabe 5a Mailboxing HOT 2
- CG/2016-Hauptklausur Aufgabe 6 a) Punkt 7
- Nachklausur2016 Aufgabe6
- CG/2012-Hauptklausur Aufgabe 1b
- CG/2016-Nachklausur, Aufgabe 3 d) HOT 1
- CG/2016-Hauptklausur, Aufgabe 6 a)
- CG/2013-Nachklausur Aufgabe 9a HOT 1
- CG/2013-Nachklausur Aufgabe 7c HOT 1
- CG/2014-Nachklausur Aufgabe 8 HOT 3
- CG/2014-Nachklausur Aufgabe 10 HOT 2
- CG/2011-Hauptklausur Aufgabe 3c
- CG/2013-Nachklausur Aufgabe 6b
- CG/2013-Nachklausur Aufgabe 8 1. Punkt
- CG/2015-Hauptklausur Aufgabe 6 falsch
- CG/2011-Nachklausur Aufgabe 1d)
- CG/2015-Nachklausur Aufgabe 4b (Tippfehler) HOT 1
- CG/2015-Nachklausur Aufgabe 4c HOT 2
- CG/2015-Hauptklausur Aufgabe 5 c (4) HOT 3
- cg/Hauptklausur 2012, Aufgabe 8 HOT 1
- CG/2013-Nachklausur Aufgabe 1 - Schattenstrahlen
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kit-musterloesungen.