Bonjour, j'ai écrit un bout de code présentant le module vpython avec une interface graphique basée sur l'utilisation du module tkinter.

Ce programme permet d'inserer des formes géométriques dans un espace 3D à partir de leurs coordonnées et des vecteurs définissants leur position. On peut également charger/sauvegarder la scène, déplacer la caméra...

Concernant le programme, j'ai essayé de le rendre simple et lisible pour d'une part présenter une facette du module vpython, et d'autre part, le rendre utilisable comme un tutorial ou exemple pour tkinter et vpython.

Il faut noter que vpython présente de nombreuses autres caractéristiques. Sans être exaustif, on peut citer :

  • des formes non présentées (types courbes, etc...)

  • la possibilité de gérer les sources de lumière

  • la possibilité de fusionner des objects

  • la possibilité de gérer les évènement clavier et souris

  • la possibilité d'insérer des boutons de controle

  • la possibilité bien entendue d'animer les objects


pyTkVpython.py
Je met le code à votre disposition en pièce jointe car sinon mon message présente un trop grand nombre de caractères . Si vous êtes prenneur et que vous désirez améliorer la source, je serait heureux d'y participer

Le code suivant est un exemple de scène simpliste qui peut faire office d'example :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from visual import *
def forLoadScene():
	scene=display(title='Ma presentation de vpython',exit=0,background=(0.0, 0.0, 0.0))
	scene.forward=(-0.203470081976,-0.5,-0.395400885138)
	scene.range=(634.4,634.4,634.4)
	scene.center=(218.0,-137.0,-54.832849378)
	scene.fov=1.0471975512
	obj1=cylinder(pos=(0.0,0.0,0.0),radius=25.0,color=(0.759999990463,0.0,1.0),axis=(98.0,-5.0,0.0))
	obj2=sphere(pos=(-40.0,-3.0,0.0),radius=50.0,color=(0.800000011921,0.0,1.0))
	obj3=box(pos=(200.0,0.0,0.0),size=(250.0,50.0,180.0),color=(0.500000238419,1.0,1.0))
	obj4=cylinder(pos=(300.0,0.0,55.0),radius=30.0,color=(0.500000238419,1.0,1.0),axis=(200.0,-30.0,30.0))
	obj5=cylinder(pos=(300.0,0.0,-55.0),radius=30.0,color=(0.500000238419,1.0,1.0),axis=(200.0,-30.0,-30.0))
	obj6=cylinder(pos=(500.0,-30.0,80.0),radius=20.0,color=(0.850000023842,0.0,1.0),axis=(-30.0,-200.0,30.0))
	obj7=cylinder(pos=(500.0,-30.0,-80.0),radius=20.0,color=(0.850000023842,0.0,1.0),axis=(-30.0,-200.0,-30.0))
	obj8=cylinder(pos=(120.0,0.0,80.0),radius=25.0,color=(0.500000238419,1.0,1.0),axis=(-60.0,-30.0,120.0))
	obj9=cylinder(pos=(120.0,0.0,-80.0),radius=25.0,color=(0.500000238419,1.0,1.0),axis=(60.0,-30.0,-120.0))
	obj10=cylinder(pos=(50.0,-25.0,200.0),radius=20.0,color=(0.850000023842,0.0,1.0),axis=(-110.0,-30.0,30.0))
	obj11=cylinder(pos=(190.0,-25.0,-200.0),radius=20.0,color=(0.850000023842,0.0,1.0),axis=(110.0,-30.0,-30.0))
	obj12=cone(pos=(0.0,30.0,90.0),radius=5.0,color=(0.800000011921,0.800000011921,0.800000011921),axis=(-5.0,0.0,0.0))
	obj13=box(pos=(150.0,-230.0,0.0),size=(2000.0,10.0,2000.0),color=(0.0,0.800000011921,0.0))
	return scene
Remarque : Si je me trompe de section, dites moi si ce code à sa place autrepart svp


(La version exécutable est disponible : --Le web vu par Guigui--)