J'essaie d'implémenter une scène océanique avec C ++ et DirectX11. Actuellement, j'ai une grille projetée, des ondes de Gerstner et un ombrage de base. Mon problème est que lorsque je vise mon appareil photo horizontalement, afin que je puisse voir l'horizon de l'eau, au loin, la grille projetée devient insuffisante, même à des sommets élevés. Ces captures d'écran illustrent le problème:
Je sais que la cause du problème réside dans le concept de la grille projetée (la grille est détaillée près de la caméra, loin de là), mais il doit y avoir une meilleure pratique pour résoudre ce problème.
Des idées?
Vous pouvez être à la fois réaliste et en temps réel. le secret est de changer de représentation chaque fois que l'information passe sous l'échelle de Shannon-Nyquist (c'est-à-dire la grille): de la géométrie aux cartes normales aux modèles d'ombrage. Ce papier est fait pour vous: http://maverick.inria.fr/Publications/2010/BNH10/index.php (voir aussi les vidéos Yoube)
la source
Certains logiciels comme Maya résolvent ce problème en utilisant un polaire (ou en fait cartésien qui devient polaire à distance) de la même manière que votre grille est centrée sur la position de la caméra. Cette configuration ajoute plus de détails là où elle compte le plus. Ensuite, ils s'appuient sur le traitement normal des shaders à d'autres plages. Il y a de la place pour un cours de perfectionnement. Vous modifiez à froid cette approche un peu et avez toute autre forme qui augmente la densité du maillage vers la caméra. L'avantage est que vous pouvez étirer l'effet jusqu'à l'horizon sans vous soucier de la couture.
L'astuce pour ne pas embrouiller le déplacé dans ce cas est que vous réduisez progressivement le déplacement à mesure que vous vous éloignez. Vous utilisez ensuite simplement la modification normale dans le pixel shader à mesure que vous avancez. Ceci est plus facile à filtrer que d'avoir à filtrer un bord de shiluette précis. De plus, si vous pouvez voir aussi loin, vos vawes sont probablement suffisamment plats de toute façon.
la source
La technique évoquée par Benedikt est expliquée dans la section 2.4.1 de cette thèse.
http://fileadmin.cs.lth.se/graphics/theses/projects/projgrid/projgrid-lq.pdf
Sa mise en œuvre devrait résoudre votre problème.
la source