« 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): 1574
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): 1574
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): 1574

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): 1574
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): 1574

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): 1574
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
Python & Plugins Comment renommer "Key" ? (le chef des shapekeys)    [1][2] 15 348 Hier 22:08:47
Rimpotche 
Questions & Réponses Problème avec le nodes Color Ramp 4 129 Hier 14:51:59
Elliott42 
Python & Plugins [résolu] obtenir un résultat fixe suite au déplacement souris 1 69 Hier 14:28:07
Bibi09 
[WIP] et travaux terminés [WIP] Alpaga in love 3 75 Hier 12:55:12
moonboots 
Moteurs de rendu rendu Povray sous Blender 2.6 + trace de log 7 12066 Hier 00:25:30
MauriceRaybaud 
Questions & Réponses [non résolu] Personnage et CAT5 - VRCHAT 0 49 27/05 22:31:10
Muffet 
Questions & Réponses Conseils pour modéliser un corps 4 140 27/05 17:48:43
moonboots 
[WIP] et travaux terminés Les fonds de mes rendus 3 105 27/05 00:42:18
Bibi09 
Questions & Réponses Comment dupliquer une face autour d'un axe? 1 61 26/05 19:05:12
moonboots 
Questions & Réponses Comment faire une boucle infinie (animation) 9 143 26/05 13:00:46
3dlone 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[7] 64 6109 26/05 01:54:45
Bibi09 
Moteur de jeu GameBlender et alternatives [WIP] Jeu "Iron Man Collapsing"    [1][2][3] 27 8788 26/05 01:39:39
Bibi09 
Questions & Réponses [non résolu] Problème d'importation de svg 4 175 25/05 22:07:43
Joknox 
Questions & Réponses Disparition des Mesh.. 2 78 25/05 19:09:09
Loan20 
Questions & Réponses Animation NLA probleme origine 8 158 25/05 16:45:50
prometheusx 
Questions & Réponses alleger le poid de mon modele 5 105 25/05 16:39:51
Rimpotche 
Questions & Réponses Ajouter un raccourcis a un addon. 0 54 25/05 13:35:40
pierre-y 
Python & Plugins Pouvoir choisir l'outil actif avec python 1 89 25/05 13:20:16
pierre-y 
Questions & Réponses Exporter en FBX sur un ordi Japonais 1 143 25/05 13:01:33
tsurubaso 
Mes premières images sous Blender (débutants) Kame-House    [1][2] 15 585 25/05 08:17:56
Huildecoude 

Qui est en ligne
52 utilisateur(s) en ligne (dont 41 sur Forums)

Membre(s): 0
Invité(s): 52


plus...
Nouveaux membres
ArnettePay 29/5/2020
MichellePh 29/5/2020
BarryArrin 29/5/2020
UJXIsaac44 29/5/2020
ChanteLoga 29/5/2020
KimberleyR 29/5/2020
KarryHallo 29/5/2020
ErmaL4802 29/5/2020
KBVJonatha 29/5/2020
CoyMcNab44 29/5/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Jui 30
Anniv des Jedi :-D
Jui 11
BUG de Lyon
Jui 23
Anniv du BlenderClan !
plus 270 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2020 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445