Je me demandais juste comment créer un miroir dans un jeu 3D? Ma suggestion est / était de tracer des rayons, de frapper l'objet "miroir" puis de dessiner une image d'une seconde came sur l'objet "miroir" qui est situé au "point" miroir de la caméra d'origine en utilisant le côté frappé de l'objet miroir comme plan miroir.
Il faudrait utiliser le rayon unique provenant du centre de la caméra d'origine pour déterminer le point où se situe le centre de la vision sur le plan du miroir.
graphics-programming
daemonfire300
la source
la source
Réponses:
Si vous utilisez OpenGL, la section 9 de la FAQ OpenGL: Transformations explique exactement comment procéder. Et non, cela n'implique pas le lancer de rayons, car c'est naturellement une façon très inefficace (mais de haute qualité) d'y parvenir.
9.170 Comment rendre un miroir?
Voici essentiellement ce que dit la FAQ, et l' exemple de code le montre:
De toute évidence, il y a beaucoup de place pour l'optimisation. Lors du rendu de la scène réfléchie, vous devez probablement autant d'élimination que possible, car les miroirs sont généralement de petite taille et l'élimination par défaut hors écran ne se déclenchera pas pour la géométrie qui est à l'écran mais pas vue à travers le miroir. Vous pouvez également restituer juste une version simplifiée de la scène à travers le miroir. Pour les effets et pour empêcher l'utilisateur de remarquer la qualité réduite, vous pouvez appliquer un shader (par exemple flou, ou peut-être clair / délavé) lorsque vous effectuez votre rendu en miroir.
J'imagine que si vous utilisez DirectX, la procédure serait sensiblement la même.
la source