Score en overlay ??
#1
Posté 10 juillet 2009 - 11:05
après avoir éplucher ce forum, j'ai pas vraiment trouvé de réponse à ma question..
je développe un petit jeu en 3D sous MX2004..
j'avais prévu des images PNG pour afficher les logos 'SCORE' et 'HISCORE' en haut de mon écran de jeu.
j'arrive a les afficher grace à un overlay, mais le format ne correspond plus à celui prévu et la commande .scale n'est pas top (ou alors je l'utilise mal..) pour dimensionner mes images...
si quelqu'un a une autre solution a me proposer....???
autre souci, toujours pour mes scores..
en 2D, j'aurai utiliser un champ remis a jour a chaque 'exitframe' mais en 3D comment faire??
je n'ai pas besoin que cela soit affiché en 3D.. je suis preneur de toute idée..
merci de m'avoir lu
Quatre
#2
Posté 11 juillet 2009 - 03:16
Pour le moment, c'est la méthode que j'emploie et c'est vraiment pratique... Reste que j'ignore l'impact exact que ça a au niveau des performances...
P.S. Je ne veux pas dire de bêtises, puisque donc je n'ai pas encore essayé d'optimiser mon shockwave avec l'overlay, mais il me semble bien que le OverLay est une "Texture comme une autre" ; autrement dit, que son UVmap va se déformer en fonction du ratio de ton _movie ...
Les textures sont censées avoir pour dimension des "carrés" de 2 ; si ton _movie n'est pas carré, tu dois sûrement adapter le UVmapping comme tu le ferais avec une autre texture ?
Modifié par dZastreux, 11 juillet 2009 - 03:21 .
#3
Posté 11 juillet 2009 - 03:48
En passant mon shockwave3D en "direct-to-stage", je reste à env.19% en permanence ( mais sans utiliser d'overlay pour le moment)
Note : J'ai un très gros CPU donc ces résultats seraient certainement encore + significatifs sur une petite machine.
Bref, du coup, même si l'overlay en lui-même n'est pas forcément moins gourmand qu'un Sprite placé devant au moment précis où on "affiche les scores", ça fait quand même une grosse différence globalement le reste du temps...
Le seul hic, effectivement, c'est si on veut afficher des textes dynamiques ou des menus interactifs par-dessus la 3D :
Là, ça va demander nettement plus de travail de créer à la volée une texture avec des scores ou du texte dynamiquement crée en Lingo, et/ou de délimiter des parties de l'overlay sur lesquelles un clic aurait un effet donné...
Ce qui serait vraiment bien, ce serait de pouvoir, via le code, activer ou désactiver à la volée la propriété DTS du Sprite-3D : Ainsi pour un menu ou des scores, on pourrait utiliser d'autres Sprites devant la 3D sans que ça affecte les performances le reste du temps.
...ça resterait peut-être un poil + lourd en CPU au moment même de l'appel au menu/score MAIS à ce moment précis, c'est peut-être un peu moins important et ça permettrait une souplesse beaucoup plus grande.
Puisque ça me concerne aussi, je vais chercher un peu dans cette direction et je te tiens au courant si je trouve quelque-chose
Edit : Apparemment ce serait en effet possible et, je crois dans nos cas respectifs, le meilleur compromis à faire en terme de rapport quantité de travail / performances :
Modifié par dZastreux, 11 juillet 2009 - 03:53 .
#4
Posté 11 juillet 2009 - 04:10
...Je confirme, ça marche d'enfer
Lingo
on beginSprite me...ça n'empêche pas de garder un overlay pour certains éléments ( croix de visée sur un First Person Shooter, ou "simple" carte de labyrinthe, etc... Par exemple )
gSprite3D = Sprite(spriteNum)
gSprite3D.member = member("shockWave3D_BlankWorld")
gWorld3d = gSprite3D.member
me.backToPure3D()
End
On display2D me
sprite("ScoresTxt").text = monScore & " points !"
gWorld3d.directToStage = FALSE
End
On pure3D me
gWorld3d.directToStage = TRUE
End
De plus, pour les éléments n'ayant pas absolument besoin de prendre place directement par-dessus de la 3D elle-même, il reste le moyen d'utiliser des cadres de bordure hors du Sprite-3d.
Reste le cas le plus embêtant :
Celui où les scores apparaissent en permanence par dessus la 3D et non seulement dans un tableau récapitulatif se superposant à la 3D à la seule fin d'une partie...
Dans ce cas très précis, obligé de passer par l'overlay en recalculant avec de l'imaging LINGO le texte à afficher dans la "nouvelle" texture...
Pour ça, par contre, je pense que quelques vieux roublards du forum seront mieux t'aiguiller que moi
Peut-être est-ce possible de "capturer l'image" du _Stage et des Sprites de texte contenant les scores, même s'ils sont "sous la 3D" , avec la fonction copyPixels, puis de changer la propriété ".image" de la texture d'overlay avec celle de l'image "capturée" ?
Modifié par dZastreux, 11 juillet 2009 - 04:13 .
#5
Posté 12 juillet 2009 - 10:22
je te remercie pour toutes tes réponses..
je vais regarder ça des que j'ai un peu de temps
pour mon cas, j'aimerais pouvoir afficher en permanence devant mon acteur 3D , 2 images png fixes et 2 champs variables (l'un mis a jour a chaque 'gototheframe' selon une variable et l'autre mis à jour uniquement si la variable du premier dépasse la valeur de base)
j'ai trouvé ici
http://pagespro-orange.fr/freextras/lingo_fr.html#lauch
un script permettant d'afficher un texte dynamique sur la scène 3D mais je n'ai pas encore essayer.. a suivre..
Quatre
#6
Posté 17 juillet 2009 - 01:13
Salut Quatre1124 ; merci pour ce lien très sympathique : Je n'ai pas encore pu regarder les codes sources en détail, mais je crois qu'avec tout ça, y aura plus besoin de jouer sur le DTS et que tout devrait pouvoir se faire directement et optimalement avec l'overlay
#7
Posté 24 juillet 2009 - 12:03
en fait j'ai trouvé encore plus simple pour mon application...
dans l'inspecteur des propriétés de ma scène 3D, j'ai décoché "1°plan"
j'ai donc pu insérer mes acteurs 2D de manière classique et interagir avec eux...
#8
Posté 24 juillet 2009 - 02:58
J'ai ça nulle part dans le Property Inspector de mon shockwave-3D !
J'utilise Director 11.5 en anglais (version tryout) et tout ce que j'ai dans les paramètres qui me permette de faire ce que tu dis , c'est le DTS (Direct To Stage) mais, donc, avec les impacts de performances décrits plus hauts...
1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)









