La primitive "faces" prend une liste de triangles (position, couleur, et la normale pour chaque vertex).
Ceci est utile pour l'écriture de routines en Python pour importer des modèles 3D faits avec d'autres
outils de modélisation 3D. Vous aurez toujours besoin de faire beaucoup de calculs de normales
et autres, mais vous n'aurez pas besoin de faire du codage en C
pour importer des fichiers de modèles arbitraires.
Les faces sont une primitive de tableau (comme la courbe, l'objet convexe, etc), ainsi vous
devez utiliser une structure pour le déplacer. Cela se compose d'un ensemble de triangles à une seule face
avec des sommets, couleurs et normales spécifiés par l'utilisateur. Les attributs pos,
color, et normal
ressemblent à ceci:
pos = [ t0v0, t0v1, t0v2, t1v0, t1v1, t1v2, t2v0, t2v1,
t2v2, ... ]
où t0v0 est la position du sommet 0 du triangle 0, t0v1 est celle du sommet 1 du
triangle 1, etc.
Chaque face est une surface à un seul côté. Le côté qui est éclairé est déterminé
par l'ordre d'enroulement de la face. Quand vous regardez la face,
celle-ci est éclairée si l'ordre des sommets dans la liste pos
va dans le sens contraire des aiguilles d'une montre. Si vous soulez que le triangle soit visible des deux côtés,
vous devez créer un autre triangle avec un ordre d'enroulement opposé.
Si vous ne spécifiez pas de normales au niveau des sommets, la face est éclairée seulement par
la lumière "ambiante". Pour que l'éclairage principal affecte l'apparence, vous
devez spécifier des normales à la surface au niveau des sommets. Dans le cas le plus simple,
une normale à un sommet est perpendiculaire à la face et les faces contigües
se joignent par une arête vive. Un bord doux peut être produit en moyennant les normales
à deux faces à leur sommet commun. La luminosité d'une face est proportionnelle au cosinus de
l'angle entre la normale et la lumière.
Si vous spécifiez des couleurs différentes aux sommets d'une face triangulaire,
VPython interpole à partir de la face, dans ce cas, la face ne sera pas unicolore.
Il y a une interpolation similaire pour les normales s'il y a
différentes normales aux sommets, dans ce cas, la face n'est pas d'une seule luminosité.
L'objet faces ont été conçus pour faciliter l'écriture d'importateurs de modèles, ou l'écriture de nouvelles primitives Python,
et non pour être manipulées par des programmes classiques
Cet objet est considérablement d'un plus bas niveau que n'importe quel autre objet de Visual (quoiqu'il
n'est pas nécessairement plus rapide, au moins en ce moment). Il est assez facile d'implémenter
des lissages ou de facetter des ombres, des colorations par sommet, des lumières de deux ou d'un côté, etc
mais tous ces calculs doivent être faits par le programmeur (lors de la définition de
pos, color,
normal).
Pour des exemples d'utilisation des faces, se référer aux programmes de démonstration sur les faces.