lecteur-3d-cinematique/hemomixer/hemomixer.py

116 lines
6.0 KiB
Python

import bge # Bibliothèque Blender Game Engine (BGE)
import cine # Bibliothèque du player 3d d'analyse de cinématique
###############################################################################
# hemomixer.py
# @title: Player 3D cinématique du système de clampage de l'hémomixer
# @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 l'hémomixer (système de clampage)
#
# 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=['Bloc clampeur', 'Disque', 'Moteur', 'Palonnier', 'Ressort', 'Reducteur', 'Sabot',
'Support clampeur','Support moteur','Tige clampeur', 'Goujon','Guide palonnier','Axe 1', 'Axe 2','Circlips 1', 'Circlips 2', 'Circlips 3',
'Maillon axe 1', 'Maillon axe 2','Maillon droite', 'Maillon gauche','Vis 1', 'Vis 2', 'Vis 3', 'Vis 4', 'Vis 5',
'Ecrou 1', 'Ecrou 2', 'Ecrou 3', 'Ecrou 4', 'Ecrou 5', 'Ecrou 6','Rondelle 1', 'Rondelle 2', 'Rondelle 3', 'Rondelle 4','Bague 1','Bague 2', 'Axe reducteur']
objects_anim=['Disque', 'Ressort', 'Palonnier', 'Axe reducteur', 'Maillon gauche', 'Maillon axe 1']
objects_anim_init=['Axe 2']
objects_dict={'Bloc clampeur' : [1, '1 : Bloc clampeur', 'VioletF', []],
'Disque' : [2, '2 : Disque', 'TurquoiseF', []],
'Moteur' : [3, '3 : Moteur', 'Couleur7', []],
'Palonnier' : [4, '4 : Palonnier', 'VertF', []],
'Ressort' : [5, '5 : Ressort', 'Couleur6', []],
'Reducteur' : [6, '6 : Réducteur', 'MagentaF', []],
'Sabot' : [7, '7 : Sabot', 'Couleur5', []],
'Support clampeur' : [8, '8 : Support clampeur', 'Couleur1', []],
'Support moteur' : [9, '9 : Support moteur', 'Couleur2', []],
'Tige clampeur': [10, '10 : Tige clampeur', 'Couleur4', []],
'Goujon': [11, '11 : Goujon', 'GrisF', []],
'Guide palonnier': [12, '12 : Guide palonnier', 'Gris', []],
'Axe 1': [13, '13 : Axe 1', 'GrisF', []],
'Axe 2': [14, '14 : Axe 2', 'GrisF', []],
'Circlips 1' : [15, '15 : Circlips 1', 'Gris', []],
'Circlips 2': [16, '16 : Circlips 2', 'Gris', []],
'Circlips 3': [17, '17 : Circlips 3', 'Gris', []],
'Maillon axe 1' : [18, '18 : Maillon axe 1', 'GrisF', []],
'Maillon axe 2': [19, '19 : Maillon axe 2', 'GrisF', []],
'Maillon droite' : [20, '20 : Maillon droite', 'RougeF', []],
'Maillon gauche' : [21, '21 : Maillon gauche', 'Couleur3', []],
'Vis 1' : [22, '22 : Vis 1', 'Gris', []],
'Vis 2' : [23, '23 : Vis 2', 'Gris', []],
'Vis 3' : [24, '24 : Vis 3', 'Gris', []],
'Vis 4' : [25, '25 : Vis 4', 'Gris', []],
'Vis 5' : [26, '26 : Vis 5', 'Gris', []],
'Ecrou 1' : [27, '27 : Ecrou 1', 'Gris', []],
'Ecrou 2' : [28, '28 : Ecrou 2', 'Gris', []],
'Ecrou 3' : [29, '29 : Ecrou 3', 'Gris', []],
'Ecrou 4' : [30, '30 : Ecrou 4', 'Gris', []],
'Ecrou 5' : [31, '31 : Ecrou 5', 'Gris', []],
'Ecrou 6' : [32, '32 : Ecrou 6', 'Gris', []],
'Rondelle 1' : [33, '33 : Rondelle 1', 'GrisC', []],
'Rondelle 2' : [34, '34 : Rondelle 2', 'GrisC', []],
'Rondelle 3' : [35, '35 : Rondelle 3', 'GrisC', []],
'Rondelle 4' : [36, '36 : Rondelle 4', 'GrisC', []],
'Bague 1' : [37, '37 : Bague 1', 'GrisC', []],
'Bague 2' : [38, '38 : Bague 2', 'GrisC', []],
'Axe reducteur' : [39, '39 : Axe réducteur', 'GrisF', []]}
# 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],
'MagentaF' : [0.212,0.003, 0.089, 1],
'VertF' : [0.041,0.127, 0.014, 1],
'VioletF' : [0.080,0.046, 0.307, 1],
'RougeF' : [0.175,0.010, 0.012, 1],
'Gris' : [0.258,0.275, 0.319, 1],
'GrisF' : [0.087,0.093, 0.107, 1],
'GrisC' : [0.501,0.534, 0.621, 1],
'Blanc' : [0.8, 0.8, 0.8, 1]}
# Initialisation
def init(cont):
scene.objects['Mecanism']['objects'] = objects
scene.objects['Mecanism']['objects_anim'] = objects_anim
scene.objects['Mecanism']['objects_anim_init'] = objects_anim_init
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