IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Description of Objects in VPython

Contrôler Une ou Plusieurs Fenêtres d'Affichage Visual

Au début, il y a déjà une fenêtre d'affichage nommée scene. Les objets fenêtre d'affichage ne créent pas de fenêtre à l'écran, à moins qu'ils soient utilisés. Si vous créez votre propre objet fenêtre d'affichage tôt dans votre programme, vous n'aurez pas à vous soucier de l'objet scene. Si vous commencez simplement en créant des objets tels que la sphère, ils iront dans l'objet scene.

display() Crée une scène avec des attributs spécifiés, cette scène devient la scène sélectionnée et est retournée par la fonction. Par exemple, les lignes suivantes créent une autre fenêtre d'affichage Visual 600 par 200, avec dans la barre de titre 'Graph of position', centrée en (5,0,0) et avec un arrière plan de couleur cyan remplissant la fenêtre.

scene2 = display(title='Graph of position',

     width=600, height=200,

     center=(5,0,0), background=(0,1,1))

Options d'usage universel

select() Sélectionne la scène spécifiée, ainsi les objets seront dessinés dans cette scène par défaut; par exemple scene.select()

La fonction display._selected() retourne une référence sur la scène dans laquelle les objets sont actuellement créés (laquelle vaudra None si aucune scène n'a encore été créée).

foreground Définit la couleur utilisée par défaut lors de la création de nouveaux objets tels que la sphère; par défaut c'est le blanc. Exemple: scene.foreground = (1,0,0)

background Définit la couleur utilisée pour remplir la fenêtre d'affichage; par défaut c'est le noir.

stereo Option stéréoscopique; scene.stereo = ''redcyan'' permet de générer une vue pour l'oeil gauche et une vue pour l'oeil droit, à regarder avec des lunettes rouge et cyan, avec des verres rouges pour l'oeil gauche ( il y a aussi les options 'redblue' et 'yellowblue'; on notera que les objets qui n'étaient pas blancs initialement seront quelque peu moins lumineux.)

L'option scene.stereo = 'crosseyed' produit des images côte-à-côte qui, si elles sont suffisemment petites, peuvent être vues en 3D en louchant mais en faisant la mise au point sur l'écran (cela requiert un peu d'entraînement). L'option scene.stereo = 'passive' produit des images côte-à-côte qui, si elles sont suffisemment petites, peuvent être vues en 3D en regardant "face à un mur", c'est-à-dire en regardant au loin mais en faisant la mise au point sur l'écran (cela aussi nécessite un peu d'entraînement).

scene.stereo = 'active' permettra d'alterner des images pour l'oeil gauche et pour l'oeil droit, à regarder avec des lunettes stéréoscopiques, si le système graphique supporte les pages stereo quadruples. Si l'équipement stereo n'est pas disponible régler l'option n'a pas d'effet et scene.stereo aura la valeur 'nostereo'. Le réglage scene.stereo = 'passive' donnera une vue d'une largeur de deux fenêtres pour l'affichage utilisant deux projecteurs polarisés (pour être regardée avec de simples lunettes passives polarisées pour voir le relief). ( les pages stereo quadruple 'actives' sont disponibles seulement sur des systèmes graphiques spécialisés qui ont le matériel nécessaire et un connecteur pour les lunettes stereoscopiques, comme les PCs munis de cartes graphiques nVidia Quadro. Cela génère l'illusion de profondeur en rendant chaque image deux fois depuis des angles légèrement différents correspondant aux yeux gauche et droit. Les lunettes stereoscopique sont synchronisées avec les images en alternance de sorte que chaque oeil ne voit que l'image qui lui est destinée, et notre cerveau fait le reste. Cela s'appelle 'page video quadruple' parce qu'il y a un tampon OpenGL par oeil, et chaque tampon est dédoublé pour une mise à jour plus fluide. L'option stereo 'Passive' nécessite une carte video qui peut piloter deux moniteurs ou deux projecteurs.)

stereodepth Par défaut, le devant de la scène est localisé à la position de l'écran physique, ce qui réduit la contrainte pour l'oeil. Définir scene.stereodepth = 1 déplace le centre de la scène à la position de l'écran physique, avec la moitié avant de la scène semblant sortir nettement en dehors de l'écran. scene.stereodepth = 2 déplace la scène complètement au devant de l'écran physique, pour un effet stéréoscopique dramatique au maximum.

ambient Quantité de lumière non-directionnelle ("ambiante"). Par défaut vaut 0.2. Voir alors l'attribut suivant lights.

lights Liste de vecteurs représentant les directions de l'origine vers les lumières. La norme du vecteur est l'intensité. Par exemple, scene.lights = [vector(1,0,0)] avec scene.ambient = 0 illuminera la scène par le côté droit, avec aucune lumière ambiante sur la gauche. Par défaut, il y a deux lumières dans la liste: (0.17, 0.35, 0.70), de norme 0.8, et (-0.26, -0.07, -0.13), de norme 0.3. Les attributs lights et ambient doivent être employés avec attention, parce que si l'intensité lumineuse dépasse 1 n'importe où dans la scène, les résultats sont imprévisibles.

cursor.visible En définissant scene.cursor.visible = 0, le curseur de la souris deviendra insivible. Ceci est souvent approprié lorsqu'on fait glisser un objet avec la souris. On fait réapparaître le curseur avec scene.cursor.visible = 1.

objects Une liste de tous les objets visibles de la scène; les objets invisibles ne sont pas listés. Par exemple, ces instructions rendent toutes les boîtes de la scène rouges:

    for obj in scene2.objects:
    if obj.__class__ == box # on peut dire box ou 'box'
        obj.color = color.red

Pour obtenir la position de la caméra, regardez Interactions souris.

 

Contrôler la fenêtre

x, y Position de la fenêtre à l'écran (pixel en haut à gauche); scene.y = 200 positionne la fenêtre standard 200 pixels en dessous du haut de l'écran.

width, height Largeur et hauteur de la zone d'affichage en pixels: scene.height = 200

title Texte dans la barre de titre de la fenêtre: scene.title = 'Planetary Orbit'

visible Assure que la scène est visible; scene2.visible = 1 rend la scène nommée scene2 visible. Cette fonction est automatiquement appelée lorsque de nouvelles primitives sont ajoutées à la scène, ou si la souris est référencée. Définir visible à 0 cache la scène.

fullscreen Option de plein écran; scene2.fullscreen = 1 fait passer la scène appelée scene2 en plein écran. Dans ce cas il n'y a pas de croix de fermeture visible; pressez Escape pour quitter.
Il y a un bogue en ce moment dans l'option fullscreen sur Linux/Unix/Mac OSX. L'entrée clavier, touche escape incluse, n'est pas reconnue. Si vous utilisez l'option fullscreen sur ces sytèmes, soyez sûr d'avoir programmé une entrée souris pour quitter le programme.

exit Si scene2.exit = 0, le programme ne quitte pas lorsque la croix de fermeture de la fenêtre scene2 est cliquée. Par défaut, sceneb.exit = 1, dans ce cas cliquer sur la croix de fermeture quittera le programme.

 

Contrôler la vue

center Position à partir de laquelle la caméra regarde continuellement, même lorsque l'utilisateur tourne la position de la caméra. Si vous changez scene.center, la caméra bouge pour continuer de regarder dans les mêmes directions "limites" à partir du nouveau centre, à moins que vous changiez aussi scene.forward (voir le prochain attribut). Par défaut (0,0,0).

autocenter scene.center est continuellement mis à jour pour être le centre de la plus petite boîte contenant la scène et alignée sur l'axe. Cela signifie que si votre programme déplace la scène entière, le centre de cette scène continuera d'être centré dans la fenêtre.

forward Vecteur pointant dans la même direction que le regard de la caméra (c'est-à-dire, de la position courante de la caméra donnée par scene.mouse.camera vers scene.center). Les contrôles de rotation de l'utilisateur, lorsqu'ils sont actifs, changeront ce vecteur continuellement. Quand forward est modifié, la position de la caméra change pour continuer de regarder depuis center. Par défaut (0,0,-1).

fov Champ de visualisation de la caméra en radians. Ceci est défini comme le maximum des champs horizontaux et verticaux de la vue. Vous pouvez le penser comme la taille angulaire d'un objet de taille range, ou comme la taille angulaire du plus long axe de la fenêtre vue par l'utilisateur. Par défaut pi/3.0 radians (60 degrés).

range L'étendue de la région d'intérêt depuis center le long de chaque axe. Cet attribut vaut toujours 1.0/scale, si bien que vous utiliserez soit range soit scale en fonction de ce qui donnera le plus de sens à votre programme. Par défaut (10,10,10) ou défini par autoscale.

scale Un facteur d'échelle qui dimensionne la région d'intérêt dans la sphère avec un rayon unitaire. Ceci vaut toujours 1.0/range, si bien que vous utiliserez soit range soit scale en fonction de ce qui donnera le plus de sens à votre programme. Par défaut (0.1,0.1,0.1) ou défini par autoscale.

uniform = 0 Chaque axe a des unités et des échelles différentes

        autoscale dimensionnera les axes indépendamment

        les axes x et y seront dimensionnés suivant l'allongement de la fenêtre

uniform = 1 Chaque axe a les mêmes échelles (scene.uniform = 1 est la valeur par défaut)

        autoscale dimensionne les axes ensemble

        l'allongement de la fenêtre ne sera pas affecté par le redimensionnement

up Un vecteur représentant le haut de l'espace-monde. Ce vecteur est le long de la ligne verticale de l'écran (pensez à la caméra ayant un "plomb à plomb" qui garde le haut de l'écran orienté vers up). La caméra tourne aussi autour de cet axe quand l'utilisateur tourne "horizontalement". Par défaut l'axe y est le vecteur up.

Il y a une interaction entre up et forward, la direction que la caméra pointe. Par défaut, la caméra pointe dans la direction -z (0,0,-1). Dans ce cas, vous pouvez faire que l'axe x ou y (ou n'importe quelle direction comprises entre ces deux axes) soit le vecteur up, mais vous ne pouvez pas faire que l'axe z soit le vecteur up, parce que c'est l'axe autour duquel la caméra tourne lorsque vous définissez l'attribut up. Si vous voulez que l'axe z pointe dans la direction up, définissez d'abord forward à quelque chose d'autre que l'axe -z, par exemple (1,0,0).

autoscale = 0 Pas de redimensionnement automatique (définissez range ou scale explicitement)

    autoscale = 1 Redimensionnement automatique (scene.autoscale = 1 par défaut)

    Il est souvent utile de permettre à Visual de faire un affichage initial avec une échelle automatique, puis de couper le redimensionnement automatique pour empêcher plus tard les modifications automatiques.

userzoom = 0 L'utilisateur ne peut pas zoomer ou dézoomer dans la scène

    userzoom = 1 L'utilisateur peut zoomer (par défaut)

userspin = 0 L'utilisateur ne peut pas tourner la scène

    userspin = 1 L'utilisateur peut la tourner (par défaut)

 



Copyright © 2006 Guillaume et Yoann Duriaud. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.