Pourquoi les coordonnées homogènes sont-elles utilisées en infographie?

Réponses:

12

Ils simplifient et unifient les mathématiques utilisées dans les graphiques:

  • Ils vous permettent de représenter des traductions avec des matrices.

  • Ils vous permettent de représenter la division par la profondeur dans des projections en perspective.

Le premier est lié à la géométrie affine. Le second est lié à la géométrie projective.

lhf
la source
Quel genre d'exemples recherchez-vous? Les matrices de traduction et tout ce qui concerne les projections en perspective devraient être assez faciles à rechercher?
Bart
@Bart, Analogie nécessaire.
2
Je suis désolé @anonymous, mais cela ne me dit vraiment rien. Vous devrez utiliser plus de mots pour expliquer exactement ce que vous recherchez.
Bart
Je pense que cette réponse n'est pas aussi appréciée car elle est trop technique pour nous débutants. Peut-être qu'un exemple simple avec une formulation simple illustrerait mieux les principes
Nathan
5

C'est dans le nom: les coordonnées homogènes sont bien ... homogènes. Être homogène signifie une représentation uniforme de la rotation, de la translation, de la mise à l'échelle et d'autres transformations.

Une représentation uniforme permet des optimisations. Le matériel graphique 3D peut être spécialisé pour effectuer des multiplications matricielles sur des matrices 4x4. Il peut même être spécialisé de reconnaître et d'économiser sur les multiplications par 0 ou 1, car celles-ci sont souvent utilisées.

Ne pas utiliser de coordonnées homogènes peut rendre difficile l'utilisation maximale de matériel fortement optimisé. Quel que soit le programme qui reconnaît que des instructions optimisées du matériel peuvent être utilisées (généralement un compilateur mais les choses sont parfois plus compliquées) pour des coordonnées homogènes, il sera difficile d’optimiser pour d’autres représentations. Il choisira des instructions moins optimisées et n'utilisera donc pas le potentiel du matériel.

Comme il y avait des appels à des exemples: la PS4 de Sony peut effectuer des multiplications matricielles massives. Il est si bon qu'il a été vendu pendant un certain temps, car des grappes d'entre eux ont été utilisées à la place de super-ordinateurs plus chers. Sony a par la suite exigé que son matériel ne soit pas utilisé à des fins militaires. Oui, les super-ordinateurs sont des équipements militaires.

Il est devenu assez courant pour les chercheurs d'utiliser des cartes graphiques pour calculer leurs multiplications matricielles même si aucun graphique n'est impliqué. Tout simplement parce que leur amplitude est meilleure que les processeurs à usage général. À titre de comparaison, les processeurs multicœurs modernes ont de l'ordre de 16 pipelines (x0,5 ou x2 n'a pas beaucoup d'importance) tandis que les GPU ont de l'ordre de 1024 pipelines.

Ce ne sont pas tant les cœurs que les pipelines qui permettent un traitement parallèle réel. Les noyaux fonctionnent sur les threads. Les threads doivent être programmés explicitement. Les pipelines fonctionnent au niveau de l'instruction. La puce peut plus ou moins paralléliser des instructions par elle-même.

Pas de réponse
la source
"La PS4 de Sony peut effectuer des multiplications matricielles massives." Vous voulez dire le processeur Cell de la PS3, non? La PS4 possède un processeur x86 plutôt ordinaire.
Wumpf
Bien que ce soit une bonne réponse, je ne pense pas que cela réponde à la question OP et suggère que des cordons homogènes sont utilisés parce que le matériel est optimisé pour cela, des cordons plutôt homogènes sont plus utiles et le matériel a finalement été développé autour de cela. Un autre argument pour vec4s est qu'ils sont alignés sur 128 bits, ce qui rend plus efficace la lecture sur des bus à mémoire large (GPU)
PaulHK
4

complément:

(x,y,z,0)=x,y,z0x,y,z

Concernant la transformation de perspective, il permet même d'interpoler correctement sans distorsion de perspective (contrairement aux premiers matériels graphiques sur PC).

Fabrice NEYRET
la source
2

En tant que goût personnel, je me suis toujours abstenu (lorsque cela était possible) d'utiliser des coordonnées homogènes et j'ai préféré la formulation cartésienne simple.

La raison principale est le fait que les coordonnées homogènes utilisent 4 entrées triviales dans les matrices de transformation (0, 0, 0, 1), impliquant un stockage et un calcul inutiles (également le surcoût des routines de calcul matricielles à usage général qui sont "par défaut" utilisées dans ce cas).

L'inconvénient est que vous avez besoin de plus de soin lors de l'écriture des équations et que vous perdez le support de la théorie des matrices, mais jusqu'à présent, j'ai survécu.

Yves Daoust
la source
1
En principe, des types de données peuvent être implémentés qui ne stockent pas réellement ces entrées même s'ils agissent comme ils le font.
1
@Hurkyl Évidemment. Cela est rarement fait, car des boîtes à outils matricielles à usage général sont disponibles.
Yves Daoust
@YvesDaoust Pourriez-vous fournir un exemple plain Cartesian formulationou un lien vers une ressource qui décrit son utilisation dans les graphiques 3D?
Dan
@Dan: utilisez y = Ax + b où A est une matrice 3x3 et ba un vecteur 3x1, au lieu de y '= Ax' où y ', x' sont des vecteurs augmentés et A une matrice 4x4.
Yves Daoust
@YvesDaoust Vous transmettez donc une matrice 3x3 et un vecteur 3x1 à vos shaders au lieu d'une matrice 4x4? Où calculez-vous et stockez-vous w?
Dan
2

[xy]
[uv]=[cos(θ)sin(θ)sin(θ)cos(θ)][xy]
[uv]=[k100k2][xy]
[uv]=[xy]+[st]

Soit R et S des matrices de rotation et d'échelle et T un vecteur de translation. En infographie, vous devrez peut-être effectuer une série de traductions jusqu'à un certain point. Vous pourriez imaginer à quel point cela pourrait devenir délicat.

p=SR(Sp+T)+T

Redimensionner, traduire, puis faire pivoter et redimensionner, puis traduire à nouveau:

M=TSRTS
p=Mp

p=[xy1]
R=[cos(θ)sin(θ)0sin(θ)cos(θ)0001]
S=[k1000k20001]
T=[10t101t2001]

p=[xyw]
Q=[1000010000100010]
Mandrin
la source
1

Les calculs en coordonnées affines nécessitent souvent des divisions, qui sont coûteuses par rapport aux ajouts ou aux multiplications. Il n'est généralement pas nécessaire de diviser lors de l'utilisation de coordonnées projectives.

L'utilisation de coordonnées projectives (et plus généralement de la géométrie projective) a également tendance à éliminer les cas particuliers, ce qui rend tout plus simple et plus uniforme.


la source
"Les calculs en coordonnées affines nécessitent souvent des divisions": je ne vois pas pourquoi. En fait, vous calculez exactement les mêmes expressions.
Yves Daoust
@Yves: Je réponds au sujet plus général "utilisation en infographie", pas à la question spécifique "Transformations de matrice de calcul".
@Hurkyl: moi aussi. Lors du rendu d'une scène, vous calculez exactement les mêmes expressions, avec le même nombre de divisions (la différence se situe en termes fictifs avec un facteur 0).
Yves Daoust
@Yves: Hrm. J'ai l'habitude de faire des calculs où la reconversion en affine peut être différée dans une certaine mesure; Je vais céder à votre expertise si vous dites que cela ne revient pas souvent.
-1
  • formules plus simples
  • Moins de cas spéciaux
  • Unification et
  • Dualité
Shamsul Huda
la source
2
La réponse n'est pas très claire. Vous devez élaborer sur chaque point.
Rotem