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

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

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): 2030
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
Hors Sujet !! Ma petite vidéo d'avril 0 38 26/05 09:49:13
xorturion 
Questions & Réponses Rendu trop mat 1 235 21/05 17:03:43
meltingman 
Questions & Réponses Trait étra,ge sur un maillage. 3 352 04/05 12:47:42
klmp 
Questions & Réponses mauvaise selection 3 244 27/04 14:06:59
moonboots 
[WIP] et travaux terminés Zombie vs. PLague Doctor/ Mascottes pour l'atlas d'anatomie 4 1873 22/04 21:26:58
lucky 
Graphisme alternatif Logiciel faïence salle de bain 0 203 17/04 18:30:03
flagg 
Questions & Réponses Imprimante 3d format GCODE 4 487 15/04 07:43:02
CBY 
Mes premières images sous Blender (débutants) circuit électronique 2 289 11/04 23:17:35
yawdpwal 
[WIP] et travaux terminés [terminé] Court métrage ICE - Short film - 2 546 03/04 13:21:30
meltingman 
Questions & Réponses probleme avec le smooth quand j importe obect avec armature 1 317 03/04 13:18:26
meltingman 
Moteur de jeu GameBlender et alternatives Remake Zillion sur blender...2.76!!!    [1][2][3] 23 6112 27/03 17:53:37
Redstar 
Questions & Réponses Curseur souris disparaît en plein écran 2 1042 22/03 13:59:54
meltingman 
Questions & Réponses [résolu] Probleme de rendu qui ne correspond pas a la scene 2 408 17/03 11:48:03
moonboots 
Questions & Réponses [non résolu] animation d'un toiurniquet, Comment faire? 4 609 13/03 18:55:07
yawdpwal 
Questions & Réponses miniatures 3 896 12/03 03:49:02
meltingman 
Questions & Réponses Importer plusieurs objets avec un alignement 0 359 11/03 14:11:06
Warels 
Python & Plugins Ouverture de fichier pov dans Blender 1 350 07/03 18:45:18
KaHuZak 
Mes premières images sous Blender (débutants) wip- personnage semi lowpoly pour anim/jeux 1 353 06/03 21:03:35
meltingman 
[WIP] et travaux terminés Merci a tous pour votre aide 2 460 06/03 20:57:49
meltingman 
Questions & Réponses Plusieurs mesh mélangés, les séparés proprement un par un 6 5916 01/03 11:42:43
Warels 

Qui est en ligne
56 utilisateur(s) en ligne (dont 38 sur Forums)

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


plus...
Nouveaux membres
MathiasFul 18/8/2022
VicenteZcl 18/8/2022
OlivaL1007 18/8/2022
Adrian8943 18/8/2022
NorbertoGe 18/8/2022
VeronaKais 18/8/2022
BettieSile 18/8/2022
DarylTier 18/8/2022
BretParkhi 18/8/2022
LeoTrotter 18/8/2022
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Jui 30
Anniv des Jedi :-D
Jui 8
BUG de Lyon
Jui 23
Anniv du BlenderClan !
plus 223 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