Connexion
Menu Principal
Recherche
Menu secondaire
Image Aléatoire
Publicité
|
|
Simulateur d'entrepôt, script et BGE : - urgentissime - comment modifier dynamiquement une action ? |
|
OverdOzed 
Inscrit: 27/07/2005 12:25
De ce petit pays neutre avec des montagnes et du chocolat
Post(s): 4021
|
Salut la compagnie, Je gamberge depuis plusieurs semaines autour d'un projet très différent de mes essais habituels. Raison pour laquelle je me lance aujourd'hui en ouvrant un topic rien que pour ça. En deux mot, il s'agira de lire des ordres et des coordonnées dans un fichier texte, de piloter une "fourche" grâce à un script, de prendre et déposer des objets (cubes) avec cette "fourche", de voir fonctionner ça en temps réel, et si possible de changer par exemple les paramètres d'accélération/freinage des mouvements de la fourche, etc. Il s'agit de simuler (très basiquement pour le début) un système existant, dans le but éventuel de tester des nouvelles stratégies ou simplement de montrer le système à des clients potentiels. Visuellement, il s'agit d'un "truc" comme ça, mais automatisé. http://www.transporama.be/images/newsletter/afbeeldingen/groot/77b40a6b0f2571edb580903ce8234714.jpghttp://www.transporama.be/images/newsletter/afbeeldingen/groot/15770cdb1f0f92489fa971a2d43234ee.jpgCe projet comprend deux difficultés majeures pour moi, donc deux défis intéressants aussi. 1) Je ne connais presque rien en Python, mais je "connais" la programmation d'une façon générale 2) je ne connais presque rien en BGE, mais... vous oui  Avant de pondre du code, je me pose quelques questions en vrac : - Faudra-t-il créé des F-Curves pour pouvoir déplacer la "fourche" (ou y a-t-il une autre méthode dans le BGE) ? - Si oui, tout changement de vitesse nécessitera de déplacer toutes les Keys ? - Faut-il utiliser la "Physique" pour prendre et déposer les marchandises (cubes) ou faut-il prévoir des contraintes Location et Child ? Comme je l'ai dit, le système existe, la syntaxe du fichier contenant les ordres et les coordonnées est donc fixe et imposée. La fourche peut prendre au maximum deux cubes (en réalité des caisses en plastique). Chaque emplacement peut également contenir deux cubes, et les emplacements se situent de part et d'autre de la fourche. Il y a des dizaines d'emplacement en longueur et en hauteur (je n'ai pas les chiffres exacts en tête, mais peu importe). Les "stratégies" dont je parle plus haut, sont les algorithmes qui déterminent les emplacements des cubes, et par conséquent qui écrivent les ordres et les coordonnées dans le fichier texte que je devrai lire. [edit] Encore une fois, ce fichier existe, les stratégies, aussi, je n'ai pas à faire cette partie-là, mais à l'utiliser. [/edit] A ce stade, tout commentaire, question, suggestion, conseil seront bienvenus, parce que c'est tout nouveau pour moi, et que j'ai de la peine à structurer ma base de départ pour ce projet. Merci d'avance, je vous rend l'antenne.
Contribution le : 18/08/2011 11:47
|
_________________
Sans difficulté il n'est point de progrès !
|
|
Re: Simuilateur d'entrepôt : WIP, Python, BGE et quoi d'autre ? |
|
Fou Furieux du Clan 
Inscrit: 16/06/2010 18:25
Post(s): 177
|
Je n'est pas bien compris, on ecris les ordres dans un fichier texte que la fourche executeras? Sinon il n'y a pas besoin de fcurve mais python est obligatoire.
Contribution le : 18/08/2011 13:07
|
|
|
Re: Simulateur d'entrepôt : WIP, Python, BGE et quoi d'autre ? |
|
OverdOzed 
Inscrit: 27/07/2005 12:25
De ce petit pays neutre avec des montagnes et du chocolat
Post(s): 4021
|
Citation : pierro8 a écrit: Je n'est pas bien compris, on ecris les ordres dans un fichier texte que la fourche executeras?
C'est ça, mais ce fichier texte existe et sera ma source d'informations. En gros ce sont des codes qui sont interprétés par la "fourche", et qui disent : - Tu vas à l'emplacement X=10,Y=5,Z=2 - Tu charges la caisse en position 1 - Tu vas à l'emplacement X=20,Y=12,Z=4 - Tu charges la caisse en position 2 - Tu vas à l'emplacement X=1,Y=5,Z=1 - Tu décharges la caisse sur la position 1 - Tu vas à l'emplacement X=1,Y=6,Z=1 - Tu décharges la caisse sur la position 2 - Tu attend 20 secondes - Etc. Je n'ai pas encore étudié tous les ordres possibles, ni leur syntaxe, donc c'est juste une explication de principe. Citation : pierro8 a écrit: Sinon il n'y a pas besoin de fcurve mais python est obligatoire.
J'espère bien. Mais sans les F-Curves, ça marche comment tout ça alors ?
Contribution le : 19/08/2011 11:20
|
_________________
Sans difficulté il n'est point de progrès !
|
|
Re: Simulateur d'entrepôt : WIP, Python, BGE et quoi d'autre ? |
|
OverdOzed 
Inscrit: 27/07/2005 12:25
De ce petit pays neutre avec des montagnes et du chocolat
Post(s): 4021
|
 Je remonte ceci pour essayer d'avoir quand-même quelques conseils avant d'attaquer le truc. D'autant que, comme je l'ai dit, je ne sais pas trop par quel bout l'attaquer, ce fameux truc.
Contribution le : 20/08/2011 19:58
|
_________________
Sans difficulté il n'est point de progrès !
|
|
Re: Simulateur d'entrepôt : WIP, Python, BGE et quoi d'autre ? |
|
OverdOzed 
Inscrit: 27/07/2005 12:25
De ce petit pays neutre avec des montagnes et du chocolat
Post(s): 4021
|
I'm a poor lansome blendboy... Bon, sérieux. J'ai une mini avancée : Je peux lire un fichier texte qui contient deux lignes : 1 2 3 4 5 6 Et créer deux cubes aux coordonées [1, 2, 3] et [4, 5, 6] Wouahh, me direz-vous si vous n'êtes pas programmeur. Si vous l'êtes, arrêtez de rire deux secondes, svp. Jusqu'ici j'ai appris : - Comment écrire la syntaxe d'une boucle 'for' - Comment lire un fichier - Comment déclarer des variables pour stocker les valeurs lues dans le fichier - Comment convertir les caractères lus en floats pour les transmettre à une fonction Ce que je n'ai pas réussi à faire : - Trouver la syntaxe pour le chemin relatif de mon fichier (il est dans le même répertoire que le fichier .blend) Ce que j'aimerais faire ensuite : Lire des coordonées et déplacer les cubes dans le Game Engine (parait-il sans les F-Curves, mais je ne sais toujours pas comment). J'aimerais obtenir un mouvement avec accélération et freinage, exactement comme le fait une F-Curve par défaut. Merci de votre soutien, ... éventuel  Avis aux modos : faudrait-il déplacer dans le forum du BGE ?
Contribution le : 23/08/2011 16:52
|
_________________
Sans difficulté il n'est point de progrès !
|
|
Re: Simuilateur d'entrepôt : WIP, Python, BGE et quoi d'autre ? |
|
OverdOzed 
Inscrit: 12/11/2009 19:15
De quelque part entre la chaise et l'ordi
Post(s): 799
|
Je te préviens tout de suite , je ne sais pas programmer (je rentre dans un IUT infos dans quelques jours, je saurais alors dans quelques temps  ) Si tu sait faire apparaître un cube selon les coordonnées de ton fichiers texte tu na qu'a mettre un track to a ta fourche pour quelle aille sur ton cube une fois que la fourche est a la même position que ton cube tu le supprime. Exemple qui veut sûrement rien dire mais c'est dans l'esprit la: if var.destination==var.fourche puis tu supprime ton cube else delete cube. Ensuite tu lis ta seconde ligne de commande (4 5 6) et tu y ajoute ton cube majestueux ou tous les noob dans mon genre font waaaouuuhhh si quelqu'un en fait apparaître un  la fourche ira alors sur le cube qui vient d'être rajouter ensuite tu re récupère la position de la fourche et tu les compare (4 5 6 = 4 5 6) et pis si avec de la chance ta compris et que avec encore plus de chance ca t'aide et ben c'est que c'est moi qui ait eut de la chance en débitant ce qu'il me passait par la tête.  Bon blend mcBlyver et bonne déprime
Contribution le : 23/08/2011 19:29
|
|
|
Simulateur d'entrepôt, script et BGE : comment faire bouger un objet ? |
|
OverdOzed 
Inscrit: 27/07/2005 12:25
De ce petit pays neutre avec des montagnes et du chocolat
Post(s): 4021
|
Merci de ton aide jimmydu54, mais ta proposition ne résoud pas la question du temps. Comment je gère l'accélaration, et le freinage de la fourche dans ton histoire ? (variation de la vitesse en fonction du temps). Et puis une fois que la fourche sera vers le cube, je ne devrai pas le supprimer, mais le soulever, le déplacer et le reposer. (Mais je n'en suis pas encore là)
Les essais que j'ai fais hier, ne représentent pas forcément avec exactitude ce que j'ai besoin d'obtenir, ce sont plutôt des tests de principe. C'est à dire des petits morceaux du problème qui doivent me permettre d'avancer étape par étape.
Pour illustrer celà, on pourrait dire que j'apprend d'abord à construire un mur de briques, mais peut-être qu'au final je me contenterai d'un mur en bois. Dans les deux cas, il faut penser aux fondations, avant de construire vers le haut.
Pour rappel : Avis aux modos : faudrait-il déplacer dans le forum du BGE ?
[edit] Mon but actuel est le suivant : faire un script qui me permet de déplacer un cube dans le BGE. Les coordonnées de départ et d'arrivée ainsi que la durée doivent être définines dans le script. Toute aide est bienvenue, parce que là, je nage total.
Contribution le : 24/08/2011 09:31
|
_________________
Sans difficulté il n'est point de progrès !
|
|
Re: Simulateur d'entrepôt, script et BGE : comment faire bouger un objet ? |
|
OverdOzed 
Inscrit: 27/07/2005 12:25
De ce petit pays neutre avec des montagnes et du chocolat
Post(s): 4021
|
Je continue mon parcours solitaire en espérant qu'un jour quelqu'un m'apperçoive au milieu de mon océan de questions.
Mon essai du jour (sans python) : - Un cube 'Base' représentant la base roulante de la fouche, déplacement gauche/droite. - Un cube 'Ascenseur' enfant de 'Base' pour les déplacements haut/bas
Afin d'avoir des mouvement naturels (commandes au clavier) j'utilise pour 'Base' un Actuator Motion avec une Force de 5. La même chose sur 'Ascenseur' n'a aucun effet, je suis obligé d'utiliser le paramètre Loc de l'Actuator Motion. Les deux cubes sont en Physic Type Dynamic, et la seule différence notable entre les deux est que 'Base' n'a pas de Parent.
Est-ce normal ? Dans mon script Python, est-ce avec un Actuator Motion qu'il faut que je déplace mes objets ? Ou faut-il plutôt agir directement sur la position LocX, ou DeltaX par exemple ?
Contribution le : 25/08/2011 12:27
|
_________________
Sans difficulté il n'est point de progrès !
|
|
Re: Simulateur d'entrepôt, script et BGE : comment faire bouger un objet ? |
|
OverdOzed 
Inscrit: 18/03/2007 16:25
De + De = Quat?
Post(s): 416
|
Salut! A priori, tu pourrais agir directement sur la position sans que ça te pose de problème de physique, puisque ce n'est pas un jeu que tu développes. Pour ton souci d'accélération\décélération, une solution relativement simple consisterait à utiliser une fonction sinuosidale ou parabolique (genre de type y=1-(x-1)^2). En gros, ça consisterait à faire un calcul de ce genre : vitesse fourche = vitesse max * f(x) où x est l'avancement de ta fourche par rapport au trajet à parcourir, x = distance parcourue/distance à parcourir et f(x) par exemple définie comme ça : f(x) = 1-(2x-1)^2 Et donc au final tu auras ta vitesse qui variera en suivant une parabole  Je m'excuse si je dis n'importe quoi, d'abord parce que je n'ai pas beaucoup réfléchi à ce problème, vu qu'avec flash et unity on a une library itween qui s'occupe automatiquement de ce genre de cas, ensuite parce que j'espère qu'en disant n'importe quoi ça va rameuter les vrais programmeurs qui pourront t'aider, et enfin parce que j'espère que ça t'encouragera d'avoir du retour. Edit: de façon simple, tu pourrais coder un truc du genre (là ça vaut pour un seul axe bien sûr):
if( locX < positionArrivee ):
avancement = (locX - positionDepart)/(positionDepart - positionArrivee)
locX = locX + (1 - (2 * avancement - 1)^2)/4
Enfin, c'est juste un exemple pas testé, et certainement faux niveaux syntaxe... ça serait plus simple que tu saches déjà comment faire déplacer un objet avant de te préoccuper de faire des accélérations...
Contribution le : 25/08/2011 14:50
|
|
|
Re: Simulateur d'entrepôt, script et BGE : comment faire bouger un objet ? |
|
OverdOzed 
Inscrit: 27/07/2005 12:25
De ce petit pays neutre avec des montagnes et du chocolat
Post(s): 4021
|
Ourah, je ne suis plus seul. Effectivement c'est encourageant.
Didiou, faudra que je me remette un peu les équations dans la tête, ça va m'être utile.
Ce n'est effectivement pas un jeu que je développe, mais certaines fonctionalités du BGE me seront certainement bien utiles pour ne pas ré-inventer quinze fois la roue, ceci à condition de connaître le BGE bien sûr, et c'est pas gagné. Par exemple pour prendre et déposer des objets, avec les détections de collision, ça pourrait à priori se faire tout seul.
J'ai encore essayé un script qui ajoute simplement 1 à DeltaX, et ça marche dans la vue 3D mais pas dans le BGE. Il manque un rafraichissement ou quelque chose dans le genre. J'ai simplement relié un Sensor Keyboard 'S' à un Controller Python, avec le nom de mon script. Quand je lance le BGE et que j'appuie sur S, il ne se passe rien, mais lorsque je quitte le BGE mon cube avance de 1 BU.
Allez les pros, siouplais, un ch'tit coup de main (ou de pied ?)
[edit] Oracle, je viens d'essayer ton edit dans un autre soft et j'obtiens une boucle infinie. Et en plus l'objet que j'utilise ne bouge pas d'un poil. Mais je n'ai pas essayé de comprendre, j'ai juste copié, alors j'ai peut-être raté quelque chose.
[edit2] Ca y est j'ai compris en faisant du Debug, au départ LocX = PositionDepart, donc avancement = 0, donc tout reste à 0
[edit3] Même en utilisant LocX > PositionDepart, rien ne bouge.
Contribution le : 25/08/2011 15:17
|
_________________
Sans difficulté il n'est point de progrès !
|
|
Sujets récemment répondus |
|
|
|
Qui est en ligne
95 utilisateur(s) en ligne (dont 58 sur Forums) Membre(s): 0 Invité(s): 95 plus... Nouveaux membres
Dernier Ajout
Evènements à venir
|