/ / Definire le coordinate luminose: opengl, grafica, luce

Definire le coordinate luminose: opengl, grafica, luce

Ho preso un esame di Computer Graphics un paio di giorni fa che aveva una domanda di credito extra come la seguente:

Una luce può essere definita in due modi. Può essere definito in coordinate del mondo, ad es. un lampione, o nel visore (coordinate dell'occhio), ad esempio un faro portato da un minatore. In entrambi i casi, il punto di vista può cambiare liberamente. Descrivi come la luce dovrebbe essere trasformata in modo diverso in questi due casi.

Dal momento che non riuscirò a vedere i risultati di questo fino a dopo la pausa di primavera, ho pensato di chiedere qui.

Sembra che le analogie utilizzate sianofuorviante - potresti non definire una fonte di luce che si trova nell'occhio dello spettatore nelle coordinate del mondo come meglio puoi nelle coordinate dell'occhio? Ho fatto delle ricerche su come OpenGL maneggia la luce, e sembra come se usasse sempre le coordinate dell'occhio: la matrice ModelView verrebbe applicata a qualsiasi luce nelle coordinate del mondo.

In tal caso la risposta potrebbe essere solo tuavrebbe dovuto trasformare la luce definita in coordinate del mondo in coordinate dell'occhio usando qualcosa come la matrice ModelView, mentre la luce definita nelle coordinate dell'occhio avrebbe solo bisogno di essere trasformata dalla matrice di proiezione.

Poi di nuovo potrei essere totalmente sotto pensiero (o sopra pensando questo).

Un altro pensiero che ho è che determina qualecome si rendono le ombre, ma questo ha più a che fare con la posizione della luce e il suo tipo (punto, direzionale, emissione, ecc.) di quante coordinate è rappresentata in.

Qualche idea?

risposte:

3 per risposta № 1

Nel caso della luce stradale, le coordinate del mondo rimarranno costanti quando si muove il punto di vista.

Nel caso del faro anteriore, le coordinate dell'occhio rimarranno costanti quando si muove il punto di vista.


5 per risposta № 2

La posizione della luce viene trasformata dalla matrice modelview che era attiva al momento la luce è stata definita.

Se la matrice modelview era identica in quel punto, otterrete la luce nelle coordinate dell'occhio.

Se la matrice modelview fosse l'inverso della tua camera matrix, otterrai la luce nello spazio mondiale.