« 1 (2) 3 »


Re: Questions techniques sur le bge.
Fou Furieux du Clan
Inscrit:
21/05/2014 10:29
Post(s): 261
@Redstar: Les armatures sont déjà animées que si elles sont visibles.

Si tu veut simuler ce comportement (le 'frustum culling') il faut que tu utilise les fonctions dans KX_Camera:

sphereInsideFrustum
boxInsideFrustum
pointInsideFrustum

Contribution le : 19/06/2016 10:32
Créer un fichier PDF de la contribution Imprimer


Re: Questions techniques sur le bge.
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1897
Sauf que les actions sont exécutés dans un script python qui est renouvelé à chaque fois (car le personnage ne fais pas que rester passif, il est censé réagir).

Dans ce cas pourquoi le process "animation" ne diminue pas quand je détourne la vue d'un personnage ?

Contribution le : 19/06/2016 11:38
Créer un fichier PDF de la contribution Imprimer


Re: Questions techniques sur le bge.
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
Salut,

(Je me demande si ce n'est pas déjà le cas par défaut, que les animations ne sont jouées que si visibles, mais je ne suis pas sûr... panzergame, si tu passes par ici...)

Les méthodes getScreenPosition et getScreenVect sont plus ou moins l'inverse l'une de l'autre: getScreenPosition prend un vecteur "réel" 3D en argument et rend un vecteur 2D de l'écran*. Bref elle projette le vecteur dans l'espace caméra (alternativement un objet peut être donné en argument, dans ce cas-là c'est sa position qui est utilisée); getScreenVect prend un vecteur 2D de l'écran en argument et rend un vecteur 3D de la scène.

Elles ne sont pas exactement l'inverse l'une de l'autre, toutefois, puisque getScreenVect rend seulement un vecteur de direction** (pas de position) et en particulier non lié à la position de la caméra.

Admettons que la caméra soit à la position A et l'objet/le point à la position B (vue dans la caméra aux coordonnées écran (x, y)), alors:

1) getScreenPosition prend OB et rend (x, y)
2) getScreenVect prend (x, y) et rend normalize(OB - OA)


Quant à getScreenRay, elle fonctionne avec une "incertitude" en plus, c'est-à-dire qu'elle cherche l'objet situé, vu de la caméra, "sous" la position (x, y). C'est un peu comme un rayCast, mais en utilisant les coordonnées caméra en entrée. Typiquement on utilise cela pour récupérer un objet sous un clic souris dans le viewport (façon Mouse Over).

Les paramètres dist et property permette d'affiner la recherche en spécifiant respectivement une distance limite à la caméra de l'objet (plutôt que l'infini) et une Game Property que l'objet doit contenir pour être détecté.

Dans ton cas - et en imaginant que cette fonctionnalité ne soit pas présente par défaut dans le BGE, ce dont je ne suis pas sûr - il faut plus ou moins:

1) boucler sur tous les objets susceptibles d'avoir une animation

2) prendre leurs coordonnées écran avec getScreenPosition et s'assurer que les deux dimensions sont chacune dans l'intervalle [0.0, 1.0]

3) en tirer des conséquences sur l'animation ou non.

Je vois les problèmes suivants:

- ça risque d'être lourd, tant le bouclage que la gestion des anims en conséquence
- une partie des objets risque de "déborder" sur l'écran même si leur centre défini est à l'extérieur -> utiliser la Bounding Box??
- comme déjà dit, pas sûr que ce ne soit pas déjà implémenté en dur.


Tu peux également regarder du côté de l'Occlusion Culling, ça peut peut-être aider.


* les vecteurs 2D d'écran sont définis de façon à avoir le point (0.0, 0.0) en haut à gauche et (1.0, 1.0) en bas à droite - donc le centre du viewport à (0.5, 0.5).


** c'est normal, la fonction ne sait pas à quelle distance on doit regarder, donc par défaut le vecteur est normalisé - longueur 1.0; on peut aussi voir ça comme une conséquence du manque d'informations: on donne deux arguments scalaires en entrée - donc deux degrés de liberté - or on ressort un 3-vecteur, donc trois scalaires; par conservation de l'information, il manque un degré de liberté et les trois scalaires ne sont donc pas indépendants.


EDIT: Quand on parle du loup... Salut panzer'!

EDIT 2: oui, j'ai vraiment mis plus d'une heure à rédiger cette réponse...

Contribution le : 19/06/2016 11:39
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Questions techniques sur le bge.
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1897
Ok, je vais regarder et tester quelque chose.

Je suis maintenant sur blender 2.75 et j'ai remarqué le systême LOD "Hysteresis" dans la scène et dans un objet.

Je ne comprends pas bien son effet. C'est le fameux LOD qui permet de faire un "open world" (ce qui m'étonnerai mais pourquoi pas) ?


Édit: J'ai un autre point que je ne comprends pas:

Une connaissance, qui as Windows 10, a voulu tester mon jeu. Comme j'avais compilé le lanceur (le bge stand alone) sur blender 2.70, c'était normal que ça ne fonctionnait pas.

J'ai donc compilé le lanceur avec blender 2.77 et le jeu à fonctionné normalement chez lui.

Á ce niveau là, j'avais eu récemment connaissance d'un problème de "pulse mode True" sur 2.77 (et 2.76 au passage) et j'en avais constaté les conséquences chez moi. Or, la personne à qui j'ai refilé le lanceur version 2.77, m'avais affirmé qu'il n'y avais aucun problème !

Donc je me dit, ok, tant mieux ! Donc j'ai essayé blender 2.75, j'ai constaté qu'il y avais les même fichiers et dll que 2.77 et j'en ai conclu que ça passera sur Windows 10 aussi pour la prochaine compilation de mon jeu.

Hier, j'ai un utilisateur d'un forum musical qui à voulu testé le jeu et j'ai du recompiler le lanceur en 2.75, naturellement.

Et voilà maintenant que le jeu se lance mais il plante juste au moment ou il dois changer de blend (gl.startgame(blend)) !

Remarque: J'ai pas fais de modification sur le blend où se trouve cette ligne.

Je fais ça, -->>

Et je réessaye avec un lanceur en version 2.70 (j'avais fais un backup) et ça fonctionne sans broncher !!!

'Comprends pas ! 'Comprends pas !

Il DOIS y avoir une explication logique et rationnel !!!

Remarque: Matpi et Panzergame, vous pouvez essayer en téléchargeant le lanceur et mon jeu en cliquant sur ma signature.


edit: Avec la contribution de theo29270 et d'un utilisateur d'un autre forum, j'ai pus trouver une version stable pour Windows 10 et les versions antérieurs.

Contribution le : 20/06/2016 12:48
Créer un fichier PDF de la contribution Imprimer


Re: Questions techniques sur le bge.
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1897

Contribution le : 24/06/2016 17:16
Créer un fichier PDF de la contribution Imprimer


Re: Questions techniques sur le bge.
Fou Furieux du Clan
Inscrit:
28/08/2012 11:13
Post(s): 254
Citation :
Je suis maintenant sur blender 2.75 et j'ai remarqué le systême LOD "Hysteresis" dans la scène et dans un objet. Je ne comprends pas bien son effet.



Si tu mets "Hysteresis" a 10% et 100 en distance ça veut dire que si tu t'approche a moins de 100 de l'objet il faudra que tu recule jusqu’à 110 de distance pour que le lod se désactive. (ou s'approcher a - de 90 et reculé jusqu'a 100 pour reprendre son état , je sais plus ) .
Ça évite que si on se trouve a 99.999 de l'objet que ça change de mesh des qu'on bouge un manometre .


édit :
Au sujet des animation.
Dans mon jeux j'ai fait un système de liste. Toute les nouvelles animations (d'armature) sont ajouté dans une liste.
Pour chaque animations il y a une variable qui la lit virtuellement pour savoir a quel frame en est l'animation mème si elle n'est pas encore joué.
Quand le perso passe devant la camera (avec les frustum comme Panzergame a dit) je joue les animation dans l'ordre en la démarrant a la frame ou elle devrait être grace a la variable.
Si une animation a été joué quand le perso n’était pas visible (mort par exemple), je joue seulement la dernière frame de l'animation pour pas le voir mourir seulement quand je le vois.
C'est encore en teste mais pour l’instant ça fonctionne bien. Avant se système, mes persos marchaient couché car je les ai bien vu mourir mais ils étaient pas devant la camera quand ils ressuscitaient !
J’espère que ce que j'ai baragouiné a été compréhensible

Contribution le : 24/06/2016 18:08
Créer un fichier PDF de la contribution Imprimer


Re: Questions techniques sur le bge.
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1897
Voilà ce que j'ai fais (cas 1).



J'ai malheureusement pas tout compris par rapport aux explications de chacun.

Pour commencer, les fonctions donnée par panzergame me sont étrange quand je lis l'api python.

...

box = []
box.append([-1.0, -1.0, -1.0])
box.append([-1.0, -1.0,  1.0])
box.append([-1.0,  1.0, -1.0])
box.append([-1.0,  1.0,  1.0])
box.append([ 1.0, -1.0, -1.0])
box.append([ 1.0, -1.0,  1.0])
box.append([ 1.0,  1.0, -1.0])
box.append([ 1.0,  1.0,  1.0])

if (cam.boxInsideFrustum(box) != cam.OUTSIDE):
...


J'ai du mal à visualiser le fait d'ajouter des valeurs de cette façon. Pourrait-on illustrer cela par le Cas 1 ?

En rapport aux explications de matpi, est-il possible de pousser le vice et faire comme le cas 2 (avec un cube virtuel)?

tonycheuh, je suis pas sûr d'avoir compris ton message, je ne comprends pas l'intérêt de mettre toutes tes actions dans une liste...

Mon but en fait est de faire comme ceci:

script joueur

mon cube est "dessiné" par python comme détecteur

si un objet avec la propriété "pnj" est dans mon cube virtuel:
    changer sa variable "anim" en "true".

#####
Script pnj

si la prop "anim" est vraie:
   si vie < 0:
   animation(mourir, 0, 100, playmode)

sinon:
   si vie < 0:
     animation(mourir, 100, 100, playmode)

Contribution le : 26/06/2016 15:04
Créer un fichier PDF de la contribution Imprimer


Re: Questions techniques sur le bge.
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1897

Contribution le : 27/06/2016 17:29
Créer un fichier PDF de la contribution Imprimer


Re: Questions techniques sur le bge.
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1897
Bonjour,

J’aimerai savoir ce que signifie cette erreur:

Warning: removing controller with non-zero m_registerCount: -1

Contribution le : 02/07/2016 13:32
Créer un fichier PDF de la contribution Imprimer


Re: Questions techniques sur le bge.
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
Salut,

Citation :

Redstar a écrit:
Pour commencer, les fonctions donnée par panzergame me sont étrange quand je lis l'api python.

...

box = []
box.append([-1.0, -1.0, -1.0])
box.append([-1.0, -1.0,  1.0])
box.append([-1.0,  1.0, -1.0])
box.append([-1.0,  1.0,  1.0])
box.append([ 1.0, -1.0, -1.0])
box.append([ 1.0, -1.0,  1.0])
box.append([ 1.0,  1.0, -1.0])
box.append([ 1.0,  1.0,  1.0])

if (cam.boxInsideFrustum(box) != cam.OUTSIDE):
...


J'ai du mal à visualiser le fait d'ajouter des valeurs de cette façon. Pourrait-on illustrer cela par le Cas 1 ?


Oui, mais avec la liste "box" représentant ton carré vert (typiquement la bounding box du personnage) et le "cube" rouge étant le view frustum (https://en.wikipedia.org/wiki/Viewing_frustum). Ta partie rouge n'est avec cette méthode ainsi pas un objet que tu définis, mais découle directement des paramètres de la caméra.

Si tu veux définir manuellement et le cube vert, et le "cube" rouge pour détecter des intersections, il faut le faire à la main.

L'exemple donné consiste simplement à définir la liste "box", à y insérer des valeurs pour chaque sommet (avec append, mais on pourrait tout insérer en une fois) puis à tester cette boîte.

Citation :

Redstar a écrit:
En rapport aux explications de matpi, est-il possible de pousser le vice et faire comme le cas 2 (avec un cube virtuel)?


Peut-être qu'utiliser le type d'objet Occluder pour les "obstacles" peut fonctionner. Via Python, par contre, je ne sais pas s'il y a une méthode "propre" ou semi-automatisée pour le faire, ou s'il faut tout coder par toi-même. A quoi ressemble actuellement ton code de détermination de la prop "anim"?

Citation :

Redstar a écrit:
Bonjour,

J’aimerai savoir ce que signifie cette erreur:

Warning: removing controller with non-zero m_registerCount: -1



Ça a l'air lié à libload d'objets contenant des senseurs physiques (Touch/Collision). Est-ce un cas présent dans ton jeu?

Contribution le : 05/07/2016 19:01
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
« 1 (2) 3 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
The Blender Clan 'tchat Blender 2.8x : Actus, tests, feedback..    [1][2][3]...[10] 97 53695 Aujourd'hui 09:47:10
Bibi09 
The Blender Clan 'tchat le topic de l'impression 3D    [1][2][3]...[125] 1248 394169 Aujourd'hui 09:01:12
Redstar 
Questions & Réponses Placer un objet par rapport à un autre objet 6 115 Aujourd'hui 07:29:04
Rimpotche 
Moteur de jeu GameBlender et alternatives [WIP] Godot Engine - Projet Arsenal    [1][2][3] 23 2458 Hier 17:18:28
Redstar 
Questions & Réponses [non résolu] Addon Mb-Lab 3 100 Hier 14:05:26
Guiu 
Questions & Réponses Raccourcis clavier qui ne marchent plus v 2.93.4 2 177 Hier 12:11:05
GFC 
Questions & Réponses Récupérer la couleur en sortie de shader    [1][2] 12 368 Hier 10:51:49
Horemheb 
Questions & Réponses Sapling tree gen, comment le récupérer 0 51 02/12 20:30:18
Lylo 
Questions & Réponses [résolu] X-Ray uniquement en mode Solid 3 169 02/12 20:05:12
Horemheb 
The Blender Clan 'tchat Folle souris 3 112 02/12 12:43:22
Rimpotche 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[25] 241 25549 01/12 21:56:30
moonboots 
Questions & Réponses [résolu] Ngons 6 162 01/12 19:00:13
Rimpotche 
Questions & Réponses [WIP] animatique vers projet réél : comment concilier les fichiers ? 4 145718 30/11 21:38:43
doudoulolita 
Questions & Réponses debutant- engrenage en pointe    [1][2] 10 427 30/11 19:19:47
CBY 
Questions & Réponses [résolu] Fusion 360 - recherche d'un connaisseur 1 209 30/11 16:31:30
Redstar 
Questions & Réponses Solution rendu saccade    [1][2] 17 491 30/11 08:08:02
CBY 
The Blender Clan 'tchat ANNONCE IMPORTANTE : LE BLENDER CLAN REOUVRE !! Etat des lieux sur le présent et le futur :)    [1][2][3] 22 92868 30/11 07:53:41
smogBlender 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 125 11894 29/11 16:33:17
blend74 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS Unity - Version alpha disponible + discord    [1][2][3]...[68] 673 152625 29/11 00:26:07
Hook 
Questions & Réponses [résolu] Découper un objet selon un autre 4 226 28/11 18:51:31
mamain83 

Qui est en ligne
154 utilisateur(s) en ligne (dont 82 sur Forums)

Membre(s): 3
Invité(s): 151


RamonaSamp, StaciaCrea, GwendolynT, plus...
Nouveaux membres
ConcettaN6 4/12/2021
RedaOlivas 4/12/2021
ValerieWei 4/12/2021
JenniSumpt 4/12/2021
SharronHol 4/12/2021
Nancee35M 4/12/2021
ArronBarro 4/12/2021
Camilla40Y 4/12/2021
ShellieAnd 4/12/2021
AngelaVale 4/12/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 8
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 246 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445