Re: jeu de voiture (sérieux)

Posté par bugsbunny le 9/6/2012 15:07:50
Bon je vous demande votre aide une nouvelle fois.
L'idée serais de créer un nouvel objet, avec tout ses fils, en respectant la position des fils par rapport au père.
Ou quelque chose donnant un résultat proche.

Bon ma première idée c'est que on s'en fout de chercher les fils, mais on me fourni dans un fichier de config les nom des objets fils. Donc ensuite, il faut juste charger la scène contenant les objets (ils sont dans des fichiers à par), puis il faut localiser chaque fils pars rapport au père, et après quand on crée un fils, on applique la localisation en fonction de la position du nouveau père, et on recrée le lien de parenté.
Ça c'est la théorie, en pratique ça risque d'être un peu plus dur à mettre en place.

edit:
J'ai réussi à copier la position relative, et je bosse à la copie de la rotation relative, mais j'obtiens des résultat étranges, pour deux empty identiques ayant le même parent, et la même orientation, je trouve deux orientation différentes.

reedit:
Quelques minutes plus tard et après avoir ajouté la création du parentage (je sais pas si ça a changé quelques chose), deux roues on au final une orientation différente

edit 3:
Après avoir modifié l'orientation comme je le désirais, il s'avère que maintenant l'orientation est bonne.
Il me reste plus que les dimension.

edit 20juin:
Je vais mettre les dates dans mes édit à partir de maintenant, ça permettra de suivre plus facilement l'évolution. Je vais aussi faire un peu de mise en page.
J'ai découvert que en fait quand crée une instance d'un objet tout ses fils sont instancié en même temps (je ne sais absolument pas pourquoi je ne m'en suis pas rendu compte plus tôt).
Donc finalement j'ai tout qui est bon, ou presque, mais le morceau qui est pas bon je m'en occuperais plus tard car il est lié à autre chose.
Je m'attaque donc au chargement de la map. La première difficulté technique est de réussir à avec un script dans le jeu d'ajouté des sensor et contrôleur à un autre objet.

edit 25juin:
Bon ben je suis très fort, j'arrive à faire faire une erreur de segmentation à Blender avec un bout de script dans le jeu. Bon ben plus qu'a chercher quel bout le fait planté. (l'erreur de segmentation se fait après être sorti du jeu).

Analyse faite, c'est la réception d'un message qui fait planté Blender à sa sortie.

Solution alternative trouvé, utilisation de propriété sur l'objet auquel je voulais envoyer un message.

J'avance bien, là je suis en train d'essayer de mettre en place une simulation du véhicule, mais sans doute pas celle qui vas être retenu au final, puisqu'elle est galère à maintenir, et qu'elle possède plusieurs soucis.
Par contre là du coup je sais pas pourquoi je me reretrouve avec les roues n'ayant pas la bonne orientation.

Haha, je m'était planté sur l'orientation d'un objet j'avais pas appliqué la bonne orientation

edit 26juin:
Bon j'ai résolu quelques problèmes, mais là j'ai un chti problème quand même, en gros les roues tournes un peu pas dans les bon sens (sur le coté), et entraîne ainsi la voiture.

edit 05juillet:
Le problème des roues est réglé, j'ai même géré de possibles éléments de décorations sur les roues (tout éléments qui doivent bouger et tourner avec les roues sauf sur l'axe X, par exemple les freins).
Les touches du clavier sont géré au niveau les plus haut, du coup, on aura exactement le même fonctionnement pour un humain que pour une IA.
Et là j'essaye de trouver le moyen de mettre (uniquement en python) un actuator camera. Mais j'arrive pas à comprendre comment géré le machin. L'idée étant que je vais pas toujours avoir le même nombre de caméra, suivant le nombre de joueur humain. Donc je vais devoir créer des caméra à la volé et les faire suivre chacune les bonnes voitures.

edit 07juillet:
Bon ben finalement j'utilise un actuator que j'ai mis sur la caméra et qui est contrôlé par mon empty, on verra ce que ça donnera quand on aura plusieurs caméras.
Mais je pense que au final on vas scripter la caméra, pour avoir des mouvements de caméra plus adapté et qu'on l'on puisse toujours voir la voiture (je pense faire un jeté de rayon), mais j'en parlerais d'abord avec moaaa.
Du coup j'ai fini pour le moment, je vais devoir attendre la prochaine visioconf.

edit 01août:
Je gère la position et la rotation des "décorations" (par exemple les frein, et tout élément qui doivent bouger et tourner comme les roues sauf sur l'axe y) des roues manuellement, après avoir déplacer et tourné la roue lié. Mais je ne sais pourquoi à grande vitesse (50km/h et plus) ça se "désynchronise" et je me retrouve avec les "décorations" qui sont plus exactement au bon endroit, et donc traverse les roues.
Pour résoudre le problème j'ai pensé à faire des contraintes. Mais si on les fais dans Blender les "décorations" restes sur place, pour une raison logique (demandez pour l'explication). Du coup je suis presque sûr que si je crée les contraintes en python ça résoudra le problème. Mais là je croit que la doc est pas franchement claire.
Quelqu'un saurais comment créer une contrainte de copie de localisation et de copie de rotation sur les axes x et z?

edit 01août:
Bon je viens de faire un test sur les contraintes, et ça n'a pas l'air mieux; dès qu'on commence à être un peu trop rapide y a un décalage.
Donc je vais voir si un parentage, en forcent à chaque tick la rotation sur l'axe y à 0, fonctionne et si oui si c'est mieux.

edit 01août:
Troisième édit de la journée, c'est que ça carbure sous cette caboche .
Alors la solution ben c'est exactement ce que j'ai dit juste au-dessus, je parent, puis force la rotation sur l'axe x en fait à 0. Du coup si on a un décalage, c'est sur la rotation ce qui est bien moins gênant, puisque les déco sont pas forcément très visible.

Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=3&topic_id=23339&post_id=430498