Bonjour à tous,
Je crée un rendu 3D d'une depthmap et je suis confronté à un problème :
Tous les plans du modèle sont connectés entre eux ou au fond par de longues faces, et je n'arrive pas à enlever ces faces.
Avec un exemple ce sera plus simple (L'exemple n'est pas de moi, je l'ai trouvé sur google image): Exemple où on peux voir que le modèle est relié au fond par de grandes faces. Un autre exemple.
J'utilise triangleList, que je rempli de façon, je crois, très classique :
J'ai donc deux questions :for(int y = 0; y < depthmap_height-1; y++)
{
for(int x = 0; x < depthmap_width-1; x++)
{
CustomVertex.PositionNormalTextured pnt = new CustomVertex.PositionNormalTextured();
pnt.X = (float)x;
pnt.Y = (float)y;
pnt.Z = (float)GetAltFromDepthmap(x,y);
pnt.Tu = (float)((float)x / (float)(width -1));
pnt.Tv = (float)((float)y / (float)(height -1));
}
}
// ensuite ajout du vertex dans le vertex buffer, puis calcul des normales.
-Quelle est la solution pour ne plus voir apparaitre ces côtés?
-Quel est le meilleur moyen d'enlèver une face dans le shader?
Pour l'instant, j'ai réussi avec : output.position =0 , que j'ai placé dans le pixel shader, mais ça ne fonctionne pas dans le vertex shader. Et puis, je sens que ce n'est pas une solution très propre.
PS : J'ai trouvé une piste en cherchant les images d'exemple: supprimer les faces qui ont un angle proche de celui de la direction de la vue, sur cette page, mais je ne sait pas trop comment faire ça dans le shader, ni même en D3D.
Merci d'avance.
Partager