Mode d'emploi et manuel de référence

Up Next

4.1  Effacement des objets cachés

ePiX écrit le fichier de sortie suivant l'ordre dans lequel les objets apparaissent dans le source. L'ordre est significatif car PostScript construit les figures par couches : les objets dessinés par-dessus les objets tracés précédemment. On peut utiliser les polygones ombrés pour obtenir un effacement des objets cachés d'une surprenante efficacité dans les surfaces à mailles. Cette section décrit les structures de données définies dans les fichiers sources surface.*.

L'idée fondamentale est de créer une classe de polygones ombrés qui connaissent leur distance approximative à la caméra. Pour des raisons de simplicité des calculs, une « facette» d'une surface maillée est traitée comme un quadrilatère, placé à la moyenne arithmétique de ses sommets. La frontière d'une facette est crée à partir d'une application et un domaine en traçant un rectangle à maille fine dans le sens direct.

Pour dessiner les surfaces paramétrées, les facettes sont stoquées dans un vecteur C++, classées par ordre décroissant de distance à la caméra et écrite dans le fichier de sortie. Si le remplissage est activé, la densité de gris d'une facette dépend du cosinus de l'angle que fait son vecteur normal avec le vecteur joignant la caméra à l'élément.

Cet algorithme simple fonctionne étonnamment bien lorsque des éléments du maillage se coupent suivant une arrête complète. Pour incorporer des éléments semblables à des droites (p. ex. les axes de coordonnées, les graphes maillés) à des surfaces ombrées, la meilleure technique est souvent de ranger manuellement les éléments d'une scène de haut niveau, en fragmentant les surfaces ombrées (en retaillant le domaine ou en cadrant, par exemple) si nécessaire. Le fichier d'exemple saddle.xp illustre les techniques utilisables.

En bidouillant le code on peut décorer les surfaces ombrées. Par exemple, la fonction facet::draw du fichier surface.cc peut être facilement modifiée pour tracer des éléments de droite, des tangentes ou des vecteurs normaux avec la facette elle-même. Le fichier d'exemple extras/decorate.xp contient quelques idées. (Les décorations sont activées par des drapeaux du compilateur, consultez le fichier lui-même pour des informations concernant la compilation.)


Up Next