Bonjour à toutes et à tous !
Je m'aperçois que c'est souvent moi qui pose des problèmes idiots, qui ne concernent pas grand-monde... Désolé.
Voilà je voudrais déformer l'affichage d'une scène Shockwave 3D. Je m'explique : je voudrais qu'elle apparaisse soit écrasée en hauteur, soit en largeur. Et je n'y arrive pas !!
Si je modifie le rect du sprite, l'angle de vue augmente (en hauteur ou en largeur) mais les objets conservent leurs proportions.
Si je passe par le drawrect du stage, ou d'une MIAW, même chose.
Or je dispose d'un écran LG qui permet d'afficher la stéréoscopie en entrelacé, à la condition évidemment que les deux images (l'une pour l'oeil gauche, l'autre pour l'oeil droit) soient écrasées en hauteur (la stéréoscopie est alors appelée "over-under"), soit écrasées en largeur (side-by-side). L'écran reconstitue une image en alternant les lignes ou les colonnes.
Ca fonctionne très bien en vidéo... Mais bien sûr, je voudrais bien faire des essais de 3D temps réel...
Merci d'avance, et amitiés directoresques, je continue envers et contre tous à utiliser ce merveilleux outil. Petite parenthèse : qui a un media server qui diffuse aussi bien du Power Point sur plusieurs écrans synchronisés que des applications de vote interactif ou d'affichage de monde 3D, ou encore des vidéos bénéficiant de sous-titres dynamiques ? Qui a un système qui permet d'afficher des power point sur un ordi, de récupérer le clic et le numéro de slide de cette présentation et de réinjecter des infos dans un flux vidéo capté par un autre ordinateur ? Si vous voyez des softs qui permettent de cosntruire ce type d'outil, dites-le moi... Pour ma part je n'ai que Director. Quelle pitié que cette merveille ne soit pas mise à jour.
Nos formations à venir :
modification échelle affichage
Débuté par gegedade, oct. 03 2011 04:53
#1
Posté 03 octobre 2011 - 04:53
#2
Posté 04 octobre 2011 - 08:13
Salut !
Alors, je vois deux solutions : une simple et une rapide
La simple : tu récupères l'image de ton acteur 3D et tu la colles déformée directement sur le stage avec un copypixels... mais ça risque de beaucoup ralentir... comme ça fait un moment que j'ai pas touché à director, et que je ne me souviens plus s'il se sont enfin décidés à rendre cette manip rapide dans director 11, ça risque de bouffer pas mal de ressources. Tout dépend de la puissance de ta machine.
Ou alors tu peux faire la même chose avec un renderToTexture, je crois que ça a été ajouté dans la dernière mise à jour. Dans ce cas, tu aura juste à afficher tes deux textures en overlay et à les déformer.
La rapide : tu vas avoir besoin de 2 groups auxquels tu vas parenter l'ensemble de ta scène
leurs noms : Groupe_Stretch et Goupe_ParentScene
Il faut parenter TOUS les éléments de ta scène à Goupe_ParentScene (qui lui ne bougera pas, il reste à la position 0,0,0)
Puis tu parentes Groupe_Stretch à ta camera, il servira à faire la déformation de l'image en faisant varier son scale sur X ou Y.
L'idée consiste à parenter Goupe_ParentScene à Groupe_Stretch en mode "worldcoordinates" afin de ne pas faire bouger Goupe_ParentScene, et de conserver le transform de la camera sur Groupe_Stretch, il ne reste plus alors qu'à faire varier le scale de Groupe_Stretch pour contrôler ta déformation.
à chaque fois que tu dois modifier la position ou la rotation de ta caméra tu fais ceci :
1) remise à 1 du scale de Groupe_Stretch sur tous ses axes
2) déparentage de Goupe_ParentScene, remise à zero de sa rotation/position et 1 pour le scale sur tous ses axes
3) modifications de la position/rotation de la camera
4) parentage de Goupe_ParentScene à Groupe_Stretch en mode "worldcoordinate" ou "Global", je sais plus le terme employé dans director, faut chercher dans la doc (pfiouuu, j'me fais vieux)
5) tu remodifies le scale de Groupe_Stretch pour retrouver ta déformation, il faudra donc noter la valeur dans un coin
il y a peut être des étapes en trop ou qui peuvent être simplifiées, faut voir comment ça se comporte une fois codé
L'intérêt c'est que la déformation sera instantanée... Le souci c'est que ça fonctionnera très bien avec une caméra... mais avec deux je suis pas sûr, car je crois qu'on a pas de contrôle sur quand le rendu est fait par la caméra, du coup ça risque d'être tendu d'intercaler cette manip entre le rendu des deux caméras dans une même scène.
Bon courage
Alors, je vois deux solutions : une simple et une rapide
La simple : tu récupères l'image de ton acteur 3D et tu la colles déformée directement sur le stage avec un copypixels... mais ça risque de beaucoup ralentir... comme ça fait un moment que j'ai pas touché à director, et que je ne me souviens plus s'il se sont enfin décidés à rendre cette manip rapide dans director 11, ça risque de bouffer pas mal de ressources. Tout dépend de la puissance de ta machine.
Ou alors tu peux faire la même chose avec un renderToTexture, je crois que ça a été ajouté dans la dernière mise à jour. Dans ce cas, tu aura juste à afficher tes deux textures en overlay et à les déformer.
La rapide : tu vas avoir besoin de 2 groups auxquels tu vas parenter l'ensemble de ta scène
leurs noms : Groupe_Stretch et Goupe_ParentScene
Il faut parenter TOUS les éléments de ta scène à Goupe_ParentScene (qui lui ne bougera pas, il reste à la position 0,0,0)
Puis tu parentes Groupe_Stretch à ta camera, il servira à faire la déformation de l'image en faisant varier son scale sur X ou Y.
L'idée consiste à parenter Goupe_ParentScene à Groupe_Stretch en mode "worldcoordinates" afin de ne pas faire bouger Goupe_ParentScene, et de conserver le transform de la camera sur Groupe_Stretch, il ne reste plus alors qu'à faire varier le scale de Groupe_Stretch pour contrôler ta déformation.
à chaque fois que tu dois modifier la position ou la rotation de ta caméra tu fais ceci :
1) remise à 1 du scale de Groupe_Stretch sur tous ses axes
2) déparentage de Goupe_ParentScene, remise à zero de sa rotation/position et 1 pour le scale sur tous ses axes
3) modifications de la position/rotation de la camera
4) parentage de Goupe_ParentScene à Groupe_Stretch en mode "worldcoordinate" ou "Global", je sais plus le terme employé dans director, faut chercher dans la doc (pfiouuu, j'me fais vieux)
5) tu remodifies le scale de Groupe_Stretch pour retrouver ta déformation, il faudra donc noter la valeur dans un coin
il y a peut être des étapes en trop ou qui peuvent être simplifiées, faut voir comment ça se comporte une fois codé
L'intérêt c'est que la déformation sera instantanée... Le souci c'est que ça fonctionnera très bien avec une caméra... mais avec deux je suis pas sûr, car je crois qu'on a pas de contrôle sur quand le rendu est fait par la caméra, du coup ça risque d'être tendu d'intercaler cette manip entre le rendu des deux caméras dans une même scène.
Bon courage
#3
Posté 04 octobre 2011 - 09:29
Merci Alexx !
Je vais tester ; effectivement j'avais pensé à la solution simple (avec "member(x).image"), mais tu as raison : c'est limite en ressource., surtout que je dois afficher en 1920 x 1080... Je vai squand meêm tester puisque ça te paraît jouable et je tiens la communauté au courant.
Pas bien compris la solution renderToTexture, je vais demander à un collègue qui connaît mieux que moi les solution "texturielles".
Si la solution simple est trop lente (ce que donc je crains) je testerai l'autre, avec le problème des deux caméras... Que je ne peux éluder. Mais on y arrivera !
En tous cas merci beaucoup, je reviens ici après mes essais !
Amitiés directoresques - et n'oubliez pas la fin de mon message, les gars et les filles : Si quelqu'un me montre comment faire dans Unity ou Flash ou Ventuz ce que je fais dans Director en termes de media server ou de correspondances ppt - vidéo entre machines, ça m'intéresse... Si c'est difficile, alors secouons tous le cocotier d'Adobe pour que Director revive !
Je vais tester ; effectivement j'avais pensé à la solution simple (avec "member(x).image"), mais tu as raison : c'est limite en ressource., surtout que je dois afficher en 1920 x 1080... Je vai squand meêm tester puisque ça te paraît jouable et je tiens la communauté au courant.
Pas bien compris la solution renderToTexture, je vais demander à un collègue qui connaît mieux que moi les solution "texturielles".
Si la solution simple est trop lente (ce que donc je crains) je testerai l'autre, avec le problème des deux caméras... Que je ne peux éluder. Mais on y arrivera !
En tous cas merci beaucoup, je reviens ici après mes essais !
Amitiés directoresques - et n'oubliez pas la fin de mon message, les gars et les filles : Si quelqu'un me montre comment faire dans Unity ou Flash ou Ventuz ce que je fais dans Director en termes de media server ou de correspondances ppt - vidéo entre machines, ça m'intéresse... Si c'est difficile, alors secouons tous le cocotier d'Adobe pour que Director revive !
#4
Posté 04 octobre 2011 - 04:50
Bon, alors, après une journée de recherches, et au cas où ça pourrait profiter à quelqu'un.
Première étape : lorsque je me contente de jouer ma scène sur 1 seul sprite mais avec deux camera.rect qui offrent donc deux vues caméra, une scène de 3840 x 1080 dont la propriété "visible" est à FALSE, je joue à... 25 frames/s. Pas mal, n'est-ce pas ? J'ai un HP xw8600 avec 3 Go de RAM et un processeur à 3.6.
Lorsque j'ouvre cette movie en MIAW, et que dans une autre movie je récupère l'image de la MIAW, que j'applique à deux acteurs de 1920 x 1080 (copypixels) dont je déforme les sprites de manière à ce qu'ils occupent la moitié de ma scène (soit en hauteur, soit en largeur), je joue à... 20 frames/s. Malheureusement, l'image est saccadée sur les bords, car le déplacement est important. Bon, mais à la rigueur, je me dis qu'en chassant les FPS, on devrait arriver à quelque chose de pas mal.
Mais alors... Intense déception... Quand je veux jouer celui qui se débrouille bien avec la 3D et que je veux faire un rendertotexture de chaque caméra... La cata. Le simple fait d'activer le code :
tell window(win3Dst)
sprite(1).renderToTexture(sprite(1).camera(2), myRT)
sprite(1).renderToTexture(sprite(1).camera(3), myRT2)
end tell
(en enlevant évidemment les commandes précédentes d'image et de copypixels, bien sûr)
me fait passer à... 10 frames/s !!
Maintenant, si je recopie l'image de ces textures dans mes acteurs, je descends à 7 frames/s. Je n'ai pas poursuivi mes recherches de ce côté (je pensais chercher à appliquer les textures sur overlay, ou sur des modèles que j'afficherais dans ma movie, etc.) car le simple renderToTexture paraît donc trop gourmand. A mon avis, inutile de chercher de ce côté-là.
Je verrai demain (peut-être) du côté de l'autre solution proposée par Alexx, avec les parents.
Ah, aussi : sur mon écran LG, le relief fonctionne très bien avec les solutions testées. Dommage que le FPS ne soit pas au rendez-vous, ça serait un bonheur !
Bonne soirée à toutes et tous, amitiés directoresques !
Première étape : lorsque je me contente de jouer ma scène sur 1 seul sprite mais avec deux camera.rect qui offrent donc deux vues caméra, une scène de 3840 x 1080 dont la propriété "visible" est à FALSE, je joue à... 25 frames/s. Pas mal, n'est-ce pas ? J'ai un HP xw8600 avec 3 Go de RAM et un processeur à 3.6.
Lorsque j'ouvre cette movie en MIAW, et que dans une autre movie je récupère l'image de la MIAW, que j'applique à deux acteurs de 1920 x 1080 (copypixels) dont je déforme les sprites de manière à ce qu'ils occupent la moitié de ma scène (soit en hauteur, soit en largeur), je joue à... 20 frames/s. Malheureusement, l'image est saccadée sur les bords, car le déplacement est important. Bon, mais à la rigueur, je me dis qu'en chassant les FPS, on devrait arriver à quelque chose de pas mal.
Mais alors... Intense déception... Quand je veux jouer celui qui se débrouille bien avec la 3D et que je veux faire un rendertotexture de chaque caméra... La cata. Le simple fait d'activer le code :
tell window(win3Dst)
sprite(1).renderToTexture(sprite(1).camera(2), myRT)
sprite(1).renderToTexture(sprite(1).camera(3), myRT2)
end tell
(en enlevant évidemment les commandes précédentes d'image et de copypixels, bien sûr)
me fait passer à... 10 frames/s !!
Maintenant, si je recopie l'image de ces textures dans mes acteurs, je descends à 7 frames/s. Je n'ai pas poursuivi mes recherches de ce côté (je pensais chercher à appliquer les textures sur overlay, ou sur des modèles que j'afficherais dans ma movie, etc.) car le simple renderToTexture paraît donc trop gourmand. A mon avis, inutile de chercher de ce côté-là.
Je verrai demain (peut-être) du côté de l'autre solution proposée par Alexx, avec les parents.
Ah, aussi : sur mon écran LG, le relief fonctionne très bien avec les solutions testées. Dommage que le FPS ne soit pas au rendez-vous, ça serait un bonheur !
Bonne soirée à toutes et tous, amitiés directoresques !
1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)









