lecteur-3d-cinematique/pince_schrader/schrader.py

89 lines
4.4 KiB
Python

import bge # Bibliothèque Blender Game Engine (BGE)
import cine # Bibliothèque du player 3d d'analyse de cinématique
###############################################################################
# schrader.py
# @title: Player 3D cinématique de la pince schrader
# @project: Blender-EduTech
# @lang: fr
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
# @copyright: Copyright (C) 2020-2022 Philippe Roy
# @license: GNU GPL
#
# Commandes déclenchées par UPBGE pour le modèle de la pince schrader
#
# Ce player 3D est un environnement léger et spécifique pour la colorisation des solides d'un mécanisme en mouvement.
# Il sert principalement pour l'apprentissage de la détection des classes d'équivalence d'un mécanisme afin de pouvoir faire sa modélisation cinématique.
#
###############################################################################
# Récupérer la scène 3D
scene = bge.logic.getCurrentScene()
###############################################################################
# Mécanisme
###############################################################################
objects=['Corps', 'Piston', 'Doigt sup', 'Doigt inf', 'Biellette sup', 'Biellette inf', 'Bouchon','Axe piston', 'Axe doigt sup', 'Axe doigt inf',
'Axe biellette sup', 'Axe biellette inf', 'Joint piston', 'Joint bouchon', 'Circlips 1', 'Circlips 2', 'Circlips 3', 'Circlips 4', 'Circlips 5']
objects_anim=['Axe biellette inf', 'Axe biellette sup', 'Axe piston', 'Biellette inf', 'Biellette sup', 'Doigt inf', 'Doigt sup', 'Joint piston', 'Piston']
objects_dict={'Corps' : [1, '1 : Corps', 'Couleur1', []],
'Piston' : [2, '2 : Piston', 'Vert', []],
'Doigt sup' : [3, '3 : Doigt sup.', 'Couleur7', []],
'Doigt inf' : [4, '4 : Doigt inf.', 'Couleur7', []],
'Biellette sup' : [5, '5 : Biellette sup.', 'Couleur5', []],
'Biellette inf' : [6, '6 : Biellette inf.', 'Couleur5', []],
'Bouchon' : [7, '7 : Bouchon', 'TurquoiseF', []],
'Axe piston' : [8, '8 : Axe piston', 'VertF', []],
'Axe doigt sup' : [9, '9 : Axe doigt sup.', 'VioletF', []],
'Axe doigt inf': [10, '10 : Axe doigt inf.', 'VioletF', []],
'Axe biellette sup': [11, '11 : Axe biellette sup.', 'MagentaF', []],
'Axe biellette inf': [12, '12 : Axe biellette inf.', 'MagentaF', []],
'Joint piston': [13, '13 : Joint piston', 'Couleur6', []],
'Joint bouchon': [14, '14 : Joint bouchon', 'Couleur2', []],
'Circlips 1' : [15, '15 : Circlips 1', 'Gris', []],
'Circlips 2': [16, '16 : Circlips 2', 'Gris', []],
'Circlips 3': [17, '17 : Circlips 3', 'Gris', []],
'Circlips 4' : [18, '18 : Circlips 4', 'Gris', []],
'Circlips 5': [19, '19 : Circlips 5', 'Gris', []]}
# Couleurs
colors=[['Couleur1', [0.202, 0.114, 0.512, 1]],
['Couleur2', [0.051, 0.270, 0.279, 1]],
['Couleur3', [0.799, 0.031, 0.038, 1]],
['Couleur4', [0.799, 0.130, 0.063, 1]],
['Couleur5', [0.8, 0.619, 0.021, 1]],
['Couleur6', [0.246, 0.687, 0.078, 1]],
['Couleur7', [0.800, 0.005, 0.315, 1]],
['Couleur8', [0.75,0.75, 0.75, 0]]]
colors_dict={'Couleur1' : [0.202, 0.114, 0.512, 1],
'Couleur2' : [0.051, 0.270, 0.279, 1],
'Couleur3' : [0.799, 0.031, 0.038, 1],
'Couleur4' : [0.799, 0.130, 0.063, 1],
'Couleur5' : [0.8, 0.619, 0.021, 1],
'Couleur6' : [0.246, 0.687, 0.078, 1],
'Couleur7' : [0.800, 0.005, 0.315, 1],
'Couleur8' : [0.75,0.75, 0.75, 0],
'TurquoiseF' : [0.019,0.107, 0.105, 1],
'Vert' : [0.130,0.799, 0.036, 1],
'VertF' : [0.041,0.127, 0.014, 1],
'MagentaF' : [0.153,0.002, 0.091, 1],
'Gris' : [0.258,0.275, 0.319, 1],
'VioletF' : [0.100,0.058, 0.254, 1]}
# Initialisation
def init(cont):
scene.objects['Mecanism']['objects'] = objects
scene.objects['Mecanism']['objects_anim'] = objects_anim
scene.objects['Mecanism']['objects_dict'] = objects_dict
scene.objects['Mecanism']['colors'] = colors
scene.objects['Mecanism']['colors_dict'] = colors_dict
cine.manip_init() # Manipulation du modèle 3D
cine.objects_init() # Mécanisme
cine.cmd_init() # Commandes
cine.anim_init() # Animation