Aller au contenu


texture sur objet 3D


  • Vous ne pouvez pas répondre à ce sujet
9 réponses à ce sujet

#1 gegedade

    Ceinture Marron

  • Members
  • 125 messages

Posté 18 novembre 2011 - 04:19

Bonjour amis directoriens (il en reste combien ? Quatre ? Tant pis ce sont les meilleurs !)

Grosse déception hier. J'avais rêvé d'ajouter une fonction de mapping vidéo au "serveur media" que nous avons créé dans Director, qui nous permet depuis plusieurs années d'afficher sur un ou plusieurs écrans répartis sur un ou plusieurs ordinateurs tous types de media (des .dir - vote électronique, 3D temps réel, des PPT grâce au bel Xtra Active Companion Set, des images, des vidéos, etc., etc.).
Donc j'ai créé un acteur Shockwave 3D, j'y ai mis un objet écran, j'ai affiché ça dans une movie 1024 x 576,
- j'ai créé un acteur avec une vidéo (j'ai essayé .flv),
- j'ai créé une texture high quality et rgb8880 à partir de l'acteur vidéo(texture_video=member(1).newTexture("video",#fromCastMember,member("gabarit_synchro")),
- j'ai assigné l'acteur à la texture (member(1).model("Plan001").shader.texture = texture_video),

ensuite, à chaque frame, je dis "texture_video.image=member("gabarit_synchro").image"

Bon, ben avec ma vidéo (qui effectivement est en 1920 x 1080, mais j'ai envie de qualité, et je peux prouver que même en affichant en 1024 x 576, une vidéo HD donne un meilleur résultat qu'une vidéo SD) est bien loin de défiler à 25 images par seconde... Bouh.

Quelqu'un a-t-il une idée pour éviter le "texture_video.image=member("gabarit_synchro").image" qui prend beaucoup de temps (57 millièmes sur ma big machine, alors qu'il faudrait passer à 40 millièmes fixés pour tourner à 25 images/secondes) ?

Comment agissent les softs qui font du mapping 3D temps réel pour la vidéo (ce qui est très iontéressant car on peut effectuer des tas de modifications sur ladite vidéo) ?

Bon, je n'ai pas trop d'espoir, je pense qu'en la matière on est en limite de Director, mais je tente quand même...

Amitiés directoresques
Gegedade

#2 gegedade

    Ceinture Marron

  • Members
  • 125 messages

Posté 18 novembre 2011 - 05:18

... et j'ai essayé avec une vidéo .flv en 1024 x 576, c'est encore pire !! 70 millièmes de seconde ! Bouhouhouhouh.

#3 glurp

    Modérateur

  • Moderateur
  • 1 249 messages

Posté 19 novembre 2011 - 09:26

Salut gegedade,

Ce qui prend du temps, c'est probablement le "member("gabarit_synchro").image"

Essaie déjà de stocker la référence à l'acteur dans une variable globale ou de propriété, ainsi Director ne devra déjà plus chercher le fichier à chaque fois.

Ensuite, dans le temps member("").image n'existait pas pour les vidéos et on trichait en plaçant la vidéo sur le stage et en effectuant un copypixels d'une partie du stage (qui sait, cette vieille méthode a peut-être encore de beaux restes question vitesse d'exécution).
Mais je n'ai jamais testé d'incrustation de plus de 160*120 avec cette méthode...

Reste que le buffer image de Director n'est pas idéal pour animer plus de 800*600 pixels simultanément (après, tout dépend de la puissance de l'ordinateur)

#4 gegedade

    Ceinture Marron

  • Members
  • 125 messages

Posté 19 novembre 2011 - 11:00

Merci Glurp,

Je vais tester la mise en variable. Je ne pense pas, hélas, que ça me fasse gagner 30 millièmes de seconde...

J'ai moi aussi utilisé jadis le copypixels d'une vidéo hors stage, qui fonctionnait bien ; la possibilité de mapper directement une vidéo sur un modèle est apparue avec D 11.5, je pensais que c'était une évolution et que ça allait plus vite... Je vais retester à tout hasard le copypixels mais j'ai peur qu'il soit plus lent que .image.

Je pense qu'on est dans la panade (je dis "on" parce que si Director avait pu mapper une vidéo HD, ça aurait permis de concurrencer plusieurs softs... Tant pis) parce que ma machine est relativement puissante (3.3 Ghz, 2 Go de RAM, Nvidia GE Force 280).

Merci encore. Bon, j'ai une autre question concernant rendertotexture (pénible ce gegedade avec ses questions).j'ai un monde 3D dans lequel j'ai un modèle sur lequel pointent 2 caméras, plus deux modèles qui sont deux "écrans" sur lesquels je voudrais qu'apparaissent les images de chacune des caméras (car je voudrais faire quelques opérations sur ces écrans).

myVG = member(1).newTexture("MyVG",#renderTexture, 624, 556) --je crée une texture
myVD = member(1).newTexture("MyVD",#renderTexture, 624, 556) --j'en crée une autre

sprite(6).renderToTexture(sprite(6).camera,myVG) --je récupère l'image de la caméra 1 et je la mets dans la texture 1
sprite(7).renderToTexture(sprite(7).camera,myVD) -- je récupère l'image de la caméra 2 et je la mets dans la texture 2.

member("gauche").image=myVG.image --ce n'est qu'un test : je vérifie que j'ai bien une image. OK, je l'ai.
member("droite").image=myVD.image -- ce n'est qu'un test : je vérifie que j'ai bien une image. OK, je l'ai.
--ces vérifications seront ensuite supprimées, car il semble que je puisse même me passer du passage de l'image en lingo (ce qui fait gagner beaucoup de temps paraît-il).

member(1).shader("Mgauche").texture=member(1).texture("myVG") --je renvoie la texture créée sur la texture du modèle écran 1. Ben j'ai du blanc.
member(1).shader("Mdroite").texture=member(1).texture("myVD") --je renvoie la texture créée sur la texture du modèle écran 2. Ben j'ai aussi du blanc.

Qu'est-ce que je fais mal ?? Merci d'avance les copains...

Amitiés directoresques

Modifié par gegedade, 19 novembre 2011 - 11:03 .


#5 glurp

    Modérateur

  • Moderateur
  • 1 249 messages

Posté 21 novembre 2011 - 05:16

A priori aucune erreur ne me saute aux yeux...

As-tu 3DPI ? Que peux-tu voir au niveau des shaders et textures ?

Mais un shader peut avoir plusieurs textures ;
Que se passe-t-il si tu écris member(1).shader("Mgauche").texture[1]=member(1).texture("myVG") ? (accès au 1er canal de texture)

#6 gegedade

    Ceinture Marron

  • Members
  • 125 messages

Posté 21 novembre 2011 - 07:04

Voui voui, j'ai 3DPI, et... ma texture est bien blanche. Y'a untruc que je fais mal, mais je ne sais pas lequel. Je vais repartir d'un .dir d'exemple que j'ai récupéré je ne sais plus où, dans lequel on voit une sorte de Culbuto qu'on peut reproduire sur un deuxième modèle. Merci pour ton regard, je te tiens au courant des développements !

Gegedade

#7 Alexx

    Ceinture Noire

  • Members
  • 343 messages

Posté 22 novembre 2011 - 01:25

gegedade, le 18 novembre 2011 - 04:19 , dit :

Bon, je n'ai pas trop d'espoir, je pense qu'en la matière on est en limite de Director, mais je tente quand même...

oui, commence par utiliser une vidéo source moins grande pour voir

#8 papwal

    Ceinture Marron

  • Members
  • 199 messages

Posté 26 novembre 2011 - 01:29

Alexx, le 22 novembre 2011 - 01:25 , dit :

oui, commence par utiliser une vidéo source moins grande pour voir

Oui comme dit Alex je ne vois pas bien d'autre solution...

Je ne sais pas si le nouveau type de texture #renderTexture permet d'accélérer l'update de texture, mais de toutes façons ça va passer par le vieux moteur graphique lingo imaging, qui est lent, je ne pense pas qu'adobe vont investir dans un rendu vidéo->texture directement via le hardware, son usage étant assez marginal.

Bref ça passe vraismemblablement par le moteur 2d, et vu qu'il est lent, une seule solution: du low-pixel.

Ha et sinon, fais bien attention d'utiliser une texture avec des dimensions puissance 2, sinon le rendu va être lent, voir crade sur certaines cartes.

Modifié par papwal, 26 novembre 2011 - 01:33 .


#9 papwal

    Ceinture Marron

  • Members
  • 199 messages

Posté 26 novembre 2011 - 01:38

Citation

Comment agissent les softs qui font du mapping 3D temps réel pour la vidéo (ce qui est très iontéressant car on peut effectuer des tas de modifications sur ladite vidéo) ?

exactement comme un player vidéo avec stretch "hardware" direct3d, l'image est directement écrite dans une texture

dans director c'est lent parce qu'il va d'abord faire une copie de l'image dans le moteur graphique lingo imaging (qui en plus est réputé pour être très mal optimisé) et ensuite il refait une copie dans une texture, bref l'opération est bien lourdingue

quand je fais des textures mises à jour via lingo imaging, je choisis une toute petite résolution, genre 16*16

#10 gegedade

    Ceinture Marron

  • Members
  • 125 messages

Posté 27 novembre 2011 - 10:09

Je suis désolé d'avoir lancé deux discussions dans le même post : d'abord le mapping de vidéos, puis le rendertotexture. Mais peut-être finalement y a-t-ilune liaison (je trouve ça grâce à papwal, merci !) :
J'ai vu qu'avec rendertotexture, on a le droit d'éviter le passage par le lingo !
Mais évidemment, vu que je n'ai même pas réussi à coller mon rendertotexture dans une texture (voir les messages relatifs à cette commande), je n'en suis pas encore à tester cette description d'Adobe :
"The updateRTImageOnRender property is set to 'True' by default. This means, Director copies the texture image from the video RAM to the Lingo code and then applies to the target object.
If you want to apply the texture directly from video RAM to the target object, set the updateRTImageOnRender property to 'False'."

Tout est expliqué dans cette note : http://help.adobe.co...e109e-8000.html
Mais je n'ai pas réussi à appliquer ces deux lignes de script :
sprite3D = sprite("3D World")
myRT = member("3D World").newTexture("MyRT1",#renderTexture, 512, 512)
sprite3D.renderToTexture(sprite3D.camera, myRT)

Après, bien sûr, il reste à voir comment bidouiller cette possibilité pour récupérer l'image d'une vidéo "sans passer par le Lingo code" comme ils disent... Quelqu'un a une idée pour relancer notre vieux soft tant aimé ?

Amitiés directoresques





1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS - Tel. 0826 466 613 - Fax. 01 72 70 31 38

FFP