module inscription newsletter haut de page forum mobile

Dismiss Notice

formations etalonnage sur davinci resolve

Nos Formations Etalonnage avec Forest reviennent en octobre !
Adoptez une réelle méthodologie d'étalonnage professionnelle et atteignez vos objectifs créatifs avec nos formations intensives sur 3 jours
Toutes les infos
Dismiss Notice

ateliers live resolve avec forest

Ateliers Live Resolve - Formez-vous en ligne tous les mois avec Forest !
Faites rapidement évoluer la qualité de vos étalonnage avec nos ateliers mensuels de 3h.
Toutes les infos
Dismiss Notice

Formation Lumière - Pratique Intensive du 14 au 16 octobre à Paris
Formez-vous avec cet atelier de pratique intensive dans des conditions exceptionnelles ! Formation finançable.
Toutes les infos

Ateliers et Formations

help scripting : 100 calques pour une animation de texte

Discussion in 'Adobe After Effects' started by jemitey, Aug 3, 2006.

Tags:
  1. jemitey

    Trophy Points:
    1,000
    Likes Received:
    0
    Messages:
    102
    Appréciations:
    +0 / 0 / -0
    Bonjour :)

    :help: Pour un projet j'ai besoin de créer un effet de texte. Je part de l'animation prédéfinie "espresso eye chart" en entrée et en sortie. Jusque là tout va bien ... Mais ça se corse car je voudrais enchainer plusieurs "pages": en fait un éphéméride de 1962 à 2005. J'ai un fichier texte de plus de 2000 lignes et je voudrais mettre 20 lignes par calques soit a peu pres 100 calques.. J'ai essayé d'automatiser la creation des calques avec un script mais ça coince avec l'ouverture du fichier texte, la lecture séquentielle par ligne et le remplissage de chaque calque texte. Pouvez-vous m'aider ?


    :) Merci d'avance :)

    Jemit
     
  2. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    Pour t'aider à démarrer :cool: :

    Code:
    {
    
    // demande le fichier à ouvrir
    var myFile = fileGetDialog("Sélectionner le fichier texte :", "");
    if (myFile != null) {
    	// ouvre le fichier
           var FileIsOK = myFile.open("r","TEXT","????");
           if (FileIsOK){
              var myProj = app.project;
              var myComp = myProj.activeItem;         
              
              app.beginUndoGroup("readText.jsx");
              var theText = "";
              // tant que le fichier n'est pas terminé          
              while (!myFile.eof) {
                 // récupère la ligne courante
                 theText += myFile.readln() + "\r";
              }
               // ajoute un calque texte
    	  var myTextLayer = myComp.layers.addText(theText);
              
              app.endUndoGroup();          
              myFile.close();
           }
           else
              alert("L'ouverture du fichier a échoué."); 
    }
    
    }
    
     
  3. jemitey

    Trophy Points:
    1,000
    Likes Received:
    0
    Messages:
    102
    Appréciations:
    +0 / 0 / -0
    Rebonjour à toi !

    Merci pour cette réponse je vais creusé. :bravo:
    Par contre je suis parti aussi dans une autre direction. Mon idée est d'utiliser un calque texte invisble contenant X lignes et grâce aux expressions copier des blocks de texte successifs vers un calque cible à intervalles réguliers. J'ai écrit une séquence d'expression que je te soumet. Elle est située dans le sourcetext du calque cible. J'utilise aussi un calque null pour y ranger un parametre glissiere comme variable globale. Bien sur ça ne marche pas. Je récupère la totalité du calque source. Peut-être est-ce impossible à faire, peut-être mon code est incorrect. peux-tu me donner ton avis s'il te plait ? la mise en forme par mail n'est pas mon fort j'espere que se sera lisible et compréhensible.

    Jemitey

    THE CODE

    // chargement de texte toutes les 6 secondes
    if ((time%6) == 0) {
    // récupere la totalité du texte memorisé dans un calque texte invisible "calquesource"
    var sourcetexte = thisComp.layer("calquesource").text.sourceText;
    if (sourcetexte != null){
    var chainesourcetext = sourcetexte;
    var chaineblock = "";
    // recuperation de la variable globale mémorisée dans un parametre glissiere du "calquenull"
    // cette variable donne la position du 1er caractere de la 1ere ligne du block a copier
    indexdeb = thisComp.layer("calquenull").effect("Paramètre glissière")("Curseur") ;
    indexdebtmp = indexdeb; // récupère cette information dans une variable temporaire
    indexfin = 0; // index de fin de block
    // on définit un block de 10 lignes. On va chercher la position du dernier caracteres de la 10eme ligne
    for (indexL = 1; indexL < 10; indexL ++) {
    // on récupere la position du dernier caracteres de la ligne
    indexfin = indexfin + chainesourcetext.indexOf("\n",indexdebtmp);
    if (indexfin == 0) {
    alert("pas de chaine reconnue");
    break;
    }
    indexdebtmp = indexfin ++;
    if (indexdebtmp > chainesourcetext.length){
    break;
    }
    }
    // on récupère le block de caracteres pour le copier dans le calques cible
    chaineblock = chainesourcetext.substring(indexdeb, indexfin);
    // on calcule la position du 1er caracteres de la 1ere ligne du block suivant et on le mémorise dans glissiere
    indexdeb = indexfin + 1;
    thisComp.layer("calquenull"). effect("Paramètre glissière")("Curseur").value = indexdeb;
    // on copie le block dans le "calquecible"
    var mytextblock = new TextDocument(chaineblock);
    text.sourceText= mytextblock;
    }
    }
     
  4. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    salut, alors si tu veux le faire avec une expression, tu pourras utiliser quelquechose comme ca:
    Code:
    myText = thisComp.layer("source").text.sourceText;
    myTextLinesTab = myText.split("\r");
    myNewText = "";
    for(i = 0; i < 10; i++)
    	myNewText += myTextLinesTab[i] + "\r";
    myNewText;
    
    
    A toi de mettre en glissière ce qui correspond au "0" et au "10", pour faire varier l intervalle au cours du temps (de 0 à 10, de 10 à 20, etc..)

    ps: je remarque que tu as progressé par rapport à notre derniere rencontre, ca fait plaisir :bravo:
     
  5. jemitey

    Trophy Points:
    1,000
    Likes Received:
    0
    Messages:
    102
    Appréciations:
    +0 / 0 / -0
    helloo

    Merci j'ai un bon prof ! J'ai testé l'expression c'est exactement ce que je voulais faire en ajoutant les parametres glissiere qui vont bien. J'ai couplé avec une animation de texte prédéfinie que j'ai converti en expression aussi. Le pb avec after effect c'est que le debug n'est pas facile et comme je ne suis pas un expert en javascrit je rame un peu. Je fait du code à la truelle plutôt qu'au pinceau. Ta solution est vraiement élégante: le privilège de la maîtrise. J'arrête le panégyrique et te souhaite le bonjour.

    PS: je m'organise pour trouver de l'espace sur le WEB pour les upload des résultats.
     
Loading...

Share This Page

Vous souhaitez annoncer sur le Repaire ? Contactez-nous