Per scrivere le espressioni usate gli elementi espressione di After Effects con gli elementi JavaScript standard. Potete utilizzare il menu Lingua espressione in qualsiasi momento per inserire metodi e attributi in un’espressione e potete utilizzare il selettore in qualsiasi momento per inserire proprietà.

Se un argomento contiene un segno uguale (=) e un valore (ad esempio t=time o width=.2), se non viene specificato un valore diverso, l’argomento utilizzerà quello predefinito incluso.

Alcune descrizioni degli argomenti includono un numero tra parentesi quadre. Questo numero indica le dimensioni della proprietà o della Matrice prevista.

Alcune descrizioni dei valori restituiti includono un numero tra parentesi quadre. Questo numero indica le dimensioni della proprietà prevista o della Matrice. Se non è inclusa alcuna dimensione specifica, le dimensioni della Matrice restituita dipendono dalle dimensioni dell’input.

Il sito Web di riferimento W3Schools JavaScript fornisce informazioni per il linguaggio JavaScript standard, comprese le pagine per gli oggetti JavaScript Math e String.

Espressioni: motore JavaScript

Per la valutazione delle espressioni, After Effects utilizza il motore JavaScript. Le prestazioni di valutazione delle espressioni durante il rendering possono essere fino a 5 volte più veloci rispetto al motore ExtendScript.

In Windows, After Effects usa il motore JavaScript open source V8. In macOS, After Effects usa il framework JavaScriptCore. Entrambi i motori forniscono una versione più moderna di JavaScript rispetto a ExtendScript, che supporta solo la 3a edizione dello standard ECMA-262.

Per scegliere se un progetto usa il motore JavaScript o il precedente motore ExtendScript, nella finestra di dialogo Impostazioni progetto fate clic sulla scheda Espressioni e modificate l’opzione Modulo espressioni. Per impostazione predefinita, i progetti salvati nelle versioni precedenti di After Effects usano il modulo ExtendScript di versioni precedenti.

Miglioramenti offerti dal motore JavaScript

  • Maggiore precisione matematica nelle operazioni a virgola mobile. 
  • Possibilità di usare i metodi per matrici e stringhe del moderno JavaScript.
  • Disponibilità di altri oggetti del moderno JavaScript come typed array (matrici con tipo), utilizzo delle parole chiave “let” e “const” e molte altre novità introdotte nelle versioni più recenti dello standard ECMA-262.

Differenze tra il motore JavaScript e ExtendScript

  • La sintassi delle dichiarazioni if/else è rigorosa nel motore JavaScript e deve essere scritta per il linguaggio JavaScript standardizzato.
  • Per accedere agli indici di caratteri su un livello Testo come matrice, usate text.sourceText.value[i] invece di text.sourceText[i].
  • I metodi di espressione precedenti di tipo snake_case come this_comp e to_world, precedentemente abbandonati in ExtendScript, non sono supportati.
  • La sintassi semplificata “this(arg)” non è supportata.

Oggetti globali, attributi e metodi (riferimento espressioni)

comp(name)

Tipo di valore restituito: Comp.

Tipo di argomento: name è una Stringa.

Recupera un’altra composizione in base al nome.

footage(name)

Tipo di valore restituito: Metraggio.

Tipo di argomento: name è una Stringa.

Recupera un elemento del metraggio in base al nome.

thisComp

Tipo di valore restituito: Comp.

Rappresenta la composizione contenente l’espressione.

thisLayer

Tipo di valore restituito: Livello, Luce o Videocamera.

Rappresenta il livello contenente l’espressione. Poiché thisLayer è un oggetto predefinito, il suo impiego è opzionale. Ad esempio, potete iniziare un’espressione con thisLayer.width o width e ottenere lo stesso risultato.

thisProperty

Tipo di valore restituito: Proprietà.

Rappresenta la proprietà contenente l’espressione. Ad esempio, scrivendo un’espressione sulla proprietà Rotazione, potete iniziare un’espressione con thisProperty per fare riferimento alla proprietà Rotazione.

time

Tipo di valore restituito: Numero.

Rappresenta il tempo della composizione, in secondi, in coincidenza del quale avviene la valutazione dell’espressione.

colorDepth

Tipo di valore restituito: Numero.

Restituisce il valore della profondità colore del progetto. Ad esempio, colorDepth restituisce 16 se la profondità colore del progetto è di 16 bit per canale.

posterizeTime(framesPerSecond)

Tipo di valore restituito: Numero.

Tipo di argomento: framesPerSecond è un numero.

Il valore framesPerSecond diventa la frequenza fotogrammi dalla quale eseguire il resto dell’espressione. Questa espressione consente di impostare la frequenza fotogrammi per una proprietà in modo che sia inferiore alla frequenza fotogrammi della composizione. Ad esempio, la seguente espressione aggiorna il valore della proprietà con un valore casuale una volta al secondo:

  posterizeTime(1);   random()

value

Tipo di valore restituito: Numero, Matrice o Stringa.

Rappresenta il valore al tempo corrente della proprietà contenente l’espressione.

Metodi di conversione del tempo (riferimento espressioni)

timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)

Tipo di valore restituito: Numero.

Tipo di argomento: t e fps sono numeri; isDuration è booleano.

Converte il valore di t, il cui valore predefinito è impostato sul tempo di composizione corrente, in un numero intero di fotogrammi. Il numero di fotogrammi al secondo è specificato nell’argomento fps il cui valore predefinito è impostato sulla frequenza fotogrammi della composizione corrente (1.0 / thisComp.frameDuration). L’argomento isDuration, preimpostato su falso, deve essere vero se il valore t rappresenta una differenza tra due tempi invece di un tempo assoluto. I tempi assoluti sono arrotondati verso l’infinito negativo; le durate sono arrotondate lontano dallo zero (in alto verso i valori positivi).

framesToTime(frames, fps = 1.0 / thisComp.frameDuration)

Tipo di valore restituito: Numero.

Tipo di argomento: frames efps sono numeri.

L’inverso di timeToFrames. Restituisce il tempo corrispondente all’argomento frames richiesto. Non deve essere necessariamente un numero intero. Consultate timeToFrames per indicazioni sull’argomento fps.

timeToTimecode(t = time + thisComp.displayStartTime, timecodeBase = 30, isDuration = false)

Tipo di valore restituito: Stringa.

Tipo di argomento: t e timecodeBase sono numeri, isDuration è booleano.

Converte il valore di t in una stringa che rappresenti il codice di tempo. Consultate timeToFrames per indicazioni sugli argomenti t e isDuration. Il valore timecodeBase, che per impostazione predefinita è pari a 30, specifica il numero di fotogrammi al secondo.

timeToNTSCTimecode(t = time + thisComp.displayStartTime, ntscDropFrame = false, isDuration = false)

Tipo di valore restituito: Stringa.

Tipo di argomento: t è un numero, ntscDropFrame e isDuration sono booleani.

Converte t in una stringa rappresentante il codice di tempo NTSC. Consultate timeToFrames per indicazioni sugli argomenti t e isDuration. Se ntscDropFrame è falso (impostazione predefinita), la stringa risultante è il codice di tempo NTSC senza drop-frame. Se ntscDropFrame è vero, la stringa risultante è il codice di tempo NTSC con drop-frame.

timeToFeetAndFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, framesPerFoot = 16, isDuration = false)

Tipo di valore restituito: Stringa.

Tipo di argomento: t, fps e framesPerFoot sono numeri isDuration è booleano.

Converte il valore di t in una stringa che rappresenta i piedi della pellicola e i fotogrammi. Consultate timeToFrames per indicazioni sugli argomenti t, fps e isDuration. L’argomento framesPerFoot specifica il numero di fotogrammi in un piede di pellicola. Il suo valore predefinito è 16, la più comune frequenza fotogrammi per il metraggio 35 mm.

timeToCurrentFormat(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)

Tipo di valore restituito: Stringa.

Tipo di argomento: t e fps sono numeri; isDuration è booleano.

Converte il valore di t in una stringa rappresentante il tempo nel formato di visualizzazione corrente delle Impostazioni del progetto. Per una definizione di tutti gli argomenti, consultate timeToFrames.

In After Effects CS5.5 e versioni successive l’argomento opzionale ntscDropFrame è stato aggiunto alla funzione timeToCurrentFormat(). Impostazione predefinita: ntscDropFrame = thisComp.ntscDropFrame.

Nota:

Per un maggiore controllo dell’aspetto del codice di tempo nel metraggio, utilizzate l’espressione timeToCurrentFormat per generare il codice di tempo invece di usare l’effetto Codice di tempo o Numeri. Create un livello di testo, aggiungete un’espressione alla proprietà Testo sorgente e inserite timeToCurrentFormat() nel campo dell’espressione. Con questo metodo potete formattare e animare il testo del codice di tempo. Inoltre il codice di tempo utilizza lo stesso stile di visualizzazione definito dalle impostazioni correnti del progetto.

Metodi matematici vettoriali (riferimento espressioni)

Le funzioni matematiche vettoriali sono metodi globali per eseguire operazioni sulle matrici, considerandole come vettori matematici. A differenza dei metodi JavaScript incorporati, come Math.sin, questi metodi non sono utilizzati con il prefisso Math. A meno che non sia diversamente specificato, i metodi matematici vettoriali sono “indulgenti” per quanto riguarda le dimensioni e restituiscono un valore pari alla dimensione dell’oggetto Matrice di input più grande, aggiungendo degli zeri per gli elementi mancanti. Ad esempio, l’espressione add([10, 20], [1, 2, 3]) restituisce [11, 22, 3].

Nel sito Web di JJ Gifford potete trovare spiegazioni ed esempi che mostrano come utilizzare elementi di geometria e trigonometria con le espressioni.

add(vec1, vec2)

Tipo di valore restituito: Matrice.

Tipo di argomento: vec1 e vec2 sono matrici.

Aggiunge due vettori.

sub(vec1, vec2)

Tipo di valore restituito: Matrice.

Tipo di argomento: vec1 e vec2 sono matrici.

Sottrae due vettori.

mul(vec, amount)

Tipo di valore restituito: Matrice.

Tipo di argomento: vec è una matrice, amount è un numero.

Moltiplica ogni elemento del vettore per il valore numerico.

div(vec, amount)

Tipo di valore restituito: Matrice.

Tipo di argomento: vec è una matrice, amount è un numero.

Divide ogni elemento del vettore per il valore numerico.

clamp(value, limit1, limit2)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: value, limit1 e limit2 sono numeri o matrici.

Il valore di ogni componente di value è vincolato a essere compreso tra i valori dei valori corrispondenti di limit1 e limit2.

dot(vec1, vec2)

Tipo di valore restituito: Numero.

Tipo di argomento: vec1 e vec2 sono matrici.

Restituisce il prodotto (interno) dot degli argomenti vettore.

cross(vec1, vec2)

Tipo di valore restituito: Matrice [2 o 3].

Tipo di argomento: vec1 e vec2 sono matrici [2 o 3].

Restituisce il prodotto incrociato vettoriale di vec1 e vec2. Per ulteriori informazioni consultate un riferimento matematico o la guida JavaScript.

normalize(vec)

Tipo di valore restituito: Matrice.

Tipo di argomento: vec è una matrice.

Normalizza il vettore in modo tale che la sua lunghezza sia 1.0. L’uso del metodo normalize è una scorciatoia per l’esecuzione dell’operazione div(vec, length(vec)).

length(vec)

Tipo di valore restituito: Numero.

Tipo di argomento: vec è una matrice.

Restituisce la lunghezza del vettore vec.

length(point1, point2)

Tipo di valore restituito: Numero.

Tipo di argomento: point1 e point2 sono matrici.

Restituisce la distanza tra due punti. L’argomento point2 è opzionale. Ad esempio, length(point1, point2) corrisponde a length(sub(point1, point2)).

Ad esempio, aggiungete questa espressione alla proprietà Distanza focale di una videocamera per bloccare il piano focale sul punto di interesse della videocamera in modo tale che il punto di interesse sia a fuoco:

  length(position, pointOfInterest)

lookAt(fromPoint, atPoint)

Tipo di valore restituito: matrice [3].

Tipo di argomento: fromPoint e atPoint sono matrici [3].

L’argomento fromPoint è il punto nello spazio mondo del livello che desiderate orientare. L’argomento atPoint è il punto nello spazio mondo verso il quale deve essere orientato il livello. Il valore restituito può essere utilizzato come espressione per la proprietà Orientamento, con l’asse z del livello orientato verso atPoint. Questo metodo è particolarmente utile per videocamere e luci. Utilizzando questa espressione su una videocamera, disattivate l’orientamento automatico. Ad esempio, questa espressione sulla proprietà Orientamento di un faretto crea il punto luminoso nel punto di ancoraggio del livello numero 1 nella stessa composizione: lookAt(position, thisComp.layer(1).position)

Metodi di numeri casuali (riferimento espressioni)

Nota:

Il metodo deformazione (utilizzato per variare a caso un valore di proprietà) si trova nella categoria di attributi e metodi Proprietà. Per ulteriori informazioni, consultate Attributi e metodi delle proprietà (riferimento espressioni).

seedRandom(offset, timeless=false)

Tipo di valore restituito: nessuno.

Tipo di argomento: offset è un Numero, timeless è un valore booleano.

I metodi random e gaussRandom utilizzano un valore che controlla la sequenza dei numeri. Per impostazione predefinita, il valore viene calcolato come una funzione di un identificatore di livello univoco, la proprietà all’interno del livello, il tempo corrente e un valore di scostamento pari a 0. Chiamate seedRandom per impostare lo scostamento su un valore diverso da 0 e creare una diversa sequenza casuale.

Usate true per l’argomento timeless per non usare il tempo corrente come dati per il valore seed casuale. Usando true per l’argomento timeless è possibile generare un numero casuale che non varia a seconda del tempo di valutazione.

Il valore di offset, ma non il valore di timeless, è utilizzato anche per controllare il valore iniziale della funzione wiggle.

Ad esempio, quest’espressione sulla proprietà Opacità imposta il valore Opacità su un valore casuale che non varia nel tempo:

  seedRandom(123456, true);   random()*100

La moltiplicazione per 100, in questo esempio, converte il valore compreso nell’intervallo 0–1 restituito dal metodo casuale in un numero compreso tra 0–100. Questo intervallo di solito è più utile per la proprietà Opacità, la quale ha dei valori che vanno da 0% a 100%.

random()

Tipo di valore restituito: Numero.

Restituisce un numero casuale compreso nell’intervallo 0–1.

In After Effects CC e CS6, il comportamento della funzione random() viene modificato in modo da essere più casuale quando gli ID dei livelli sono ravvicinati. L’espressione wiggle() non subisce modifiche.

random(maxValOrArray)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: maxValOrArray è un numero o una matrice.

Se maxValOrArray è un numero, questo metodo restituisce un numero nell’intervallo da 0 a maxValOrArray. Se maxValOrArray è una matrice, questo metodo restituisce una matrice con le stesse dimensioni di maxValOrArray, con ogni componente compreso tra 0 e il componente corrispondente di maxValOrArray.

random(minValOrArray, maxValOrArray)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: minValOrArray e maxValOrArray sono numeri o matrici.

Se minValOrArray e maxValOrArray sono numeri, questo metodo restituisce un numero compreso nell’intervallo da minValOrArray a maxValOrArray. Se gli argomenti sono matrici, questo metodo restituisce una matrice con la stessa dimensione dell’argomento con la dimensione più grande, con ciascun componente nell’interno dal componente corrispondente di minValOrArray al componente corrispondente di maxValOrArray. Ad esempio, l’espressione random([100, 200], [300, 400]) restituisce una matrice il cui primo valore è compreso nell’intervallo 100–300 e il cui secondo valore è compreso nell’intervallo 200–400. Se le dimensioni delle due matrici di input non corrispondono, i valori di dimensioni più elevate della matrice più corta sono ampliati con degli zeri.

gaussRandom()

Tipo di valore restituito: Numero.

Restituisce un numero casuale. I risultati hanno una distribuzione di forma gaussiana (a campana). Circa il 90% dei risultati è compreso nell’intervallo 0–1 e il rimanente 10% non rientra in questo intervallo.

gaussRandom(maxValOrArray)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: maxValOrArray è un numero o una matrice.

Se maxValOrArray è un numero, questo metodo restituisce un numero casuale. Circa il 90% dei risultati è compreso nell’intervallo da 0 a maxValOrArray e il rimanente 10% non rientra in questo intervallo. Se maxValOrArray è una matrice, questo metodo restituisce una matrice di valori casuali, con le stesse dimensioni di maxValOrArray. Il 90% dei valori è compreso nell’intervallo da 0 a maxValOrArray e il rimanente 10% non rientra in questo intervallo. I risultati hanno una distribuzione di forma gaussiana (a campana).

gaussRandom(minValOrArray, maxValOrArray)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: minValOrArray e maxValOrArray sono numeri o matrici.

Se minValOrArray e maxValOrArray sono numeri, questo metodo restituisce un numero casuale. Il 90% circa dei valori è compreso nell’intervallo da minValOrArray a maxValOrArray e il rimanente 10% non rientra in questo intervallo. Se gli argomenti sono Matrici, questo metodo restituisce una matrice di numeri casuali con le stesse dimensioni dell’argomento con le dimensioni maggiori. Per ciascun componente, il 90% circa dei risultati è compreso nell’intervallo dalla componente corrispondente di minValOrArray al componente corrispondente di maxValOrArray e il rimanente 10% non rientra in questo intervallo. I risultati hanno una distribuzione di forma gaussiana (a campana).

noise(valOrArray)

Tipo di valore restituito: Numero.

Tipo di argomento: valOrArray è un numero o una matrice [2 o 3].

Restituisce un numero compreso tra -1 e 1. Il disturbo non è di fatto casuale, ma è basato su un disturbo Perlin, il che significa che i valori restituiti per due valori di input vicini tra loro tendono a essere anch’essi vicini tra loro. Questo tipo di disturbo è utile quando desiderate una sequenza di numeri apparentemente casuali che non variano enormemente l’uno dall’altro, come accade di solito quando si anima un qualsiasi tipo di movimento naturale apparentemente casuale. Esempio: rotation + 360*noise(time)

Metodi di interpolazione (riferimento espressioni)

Per tutti i metodi di interpolazione, l’argomento t è spesso time o value, sebbene possa avere anche altri valori. Se t è time, l’interpolazione tra i valori ha luogo su una durata. Se t è value, l’espressione mappa un intervallo di valori su un nuovo intervallo di valori.

Per ulteriori spiegazioni ed esempi sui metodi di interpolazione, consultate il sito Web di JJ Gifford.

Nel sito Web ProVideo Coalition è disponibile un articolo di Chris e Trish Meyer con informazioni aggiuntive ed esempi per tali metodi.

Ian Haigh mette a disposizione uno script nel sito Web di After Effects utilizzabile per applicare alle proprietà le espressioni avanzate del metodo di interpolazione, come i rimbalzi.

Sul sito Web di Creative COW sono disponibili due esercitazioni video di Andrew Devis che mostrano nel dettaglio come utilizzare il metodo di espressione linear con il comando Converti audio in fotogrammi chiave.

linear(t, tMin, tMax, value1, value2)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t, tMin e tMax sono numeri e value1 e value2 sono numeri o matrici.

Restituisce value1 quando t <= tMin. Restituisce value2 quando t >= tMax. Restituisce una interpolazione lineare tra value1 e value2 quando tMin < t < tMax.

Ad esempio, quest’espressione sulla proprietà Opacità fa sì che i valori Opacità sfumino in modo lineare dal 20% all’80% nel tempo da 0 a 6 secondi:

  linear(time, 0, 6, 20, 80)

Questo metodo, come tutti quelli di interpolazione, può essere usato anche per la conversione da un intervallo di valori in un altro. Ad esempio, questa espressione sulla proprietà Opacità converte i valori Opacità dall’intervallo 0%-100% nell’intervallo 20%-80%:

  lineare(valore, 0, 100, 20, 80)

linear(t, value1, value2)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t è un numero e value1 e value2 sono numeri o matrici.

Restituisce un valore che esegue l’interpolazione lineare davalue1 a value2 quando t varia da 0 a 1. Restituisce value1 se t <= 0. Restituisce value2 se t >= 1.

ease(t, value1, value2)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t è un numero e value1 e value2 sono numeri o matrici.

Simile a linear, con gli stessi argomenti, a eccezione del fatto che l’interpolazione esegue la regolazione automatica dell’attacco e dello stacco in modo tale che la velocità sia 0 nel punto iniziale e nel punto finale. Questo metodo produce un’animazione fluida.

ease(t, tMin, tMax, value1, value2)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t, tMin e tMax sono numeri e value1 e value2 sono numeri o matrici.

Simile a linear, con gli stessi argomenti, a eccezione del fatto che l’interpolazione esegue la regolazione automatica dell’attacco e dello stacco in modo tale che la velocità sia 0 nel punto iniziale e nel punto finale. Questo metodo produce un’animazione fluida.

easeIn(t, value1, value2)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t è un numero e value1 e value2 sono numeri o matrici.

Simile a ease, a eccezione del fatto che la tangente è 0 solo sul lato value1 e l’interpolazione è lineare sul lato value2.

easeIn(t, tMin, tMax, value1, value2)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t, tMin e tMax sono numeri e value1 evalue2 sono numeri o matrici.

Simile a ease, a eccezione del fatto che la tangente è 0 solo sul lato tMin e l’interpolazione è lineare sul lato tMax.

easeOut(t, value1, value2)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t è un numero e value1 e value2 sono numeri o matrici.

Simile a ease, a eccezione del fatto che la tangente è 0 solo sul lato value2 e l’interpolazione è lineare sul lato value1.

easeOut(t, tMin, tMax, value1, value2)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t, tMin e tMax sono numeri e value1 evalue2 sono numeri o matrici.

Simile a ease, a eccezione del fatto che la tangente è 0 solo sul lato tMax e l’interpolazione è lineare sul lato tMin.

Metodi di conversione del colore (riferimento espressioni)

Nel sito Web graymachine è disponibile un’esercitazione video di Harry Frank che illustra come utilizzare questi metodi di conversione per cambiare il colore delle onde prodotte dall’effetto Onde radio.

rgbToHsl(rgbaArray)

Tipo di valore restituito: Matrice [4].

Tipo di argomento: rgbaArray è una matrice [4].

Converte un colore dello spazio cromatico RGBA nello spazio cromatico HSLA. L’input è una matrice di valori normalizzati dei canali rosso, verde, blu e alfa, tutti compresi tra 0.0 e 1.0. Il valore risultante è una matrice di valori dei canali di tonalità, saturazione, luminosità e alfa, tutti compresi tra 0.0 e 1.0. Esempio:

  rgbToHsl.effect("Change Color")("Color To Change")

hslToRgb(hslaArray)

Tipo di valore restituito: Matrice [4].

Tipo di argomento: hslaArray è una matrice [4].

Converte un colore dello spazio cromatico HSLA nello spazio cromatico RGBA. Questa conversione è l’opposto della conversione eseguita dal metodo rgbToHsl.

Altri metodi matematici (riferimento espressioni)

degreesToRadians(degrees)

Tipo di valore restituito: Numero.

Tipo di argomento: degrees è un Numero.

Converte i gradi in radianti.

radiansToDegrees(radians)

Tipo di valore restituito: Numero.

Tipo di argomento: radians è un Numero.

Converte i radianti in gradi.

Attributi e metodi di composizione (riferimento espressioni)

layer(index)

Tipo di valore restituito: Livello, Luce o Videocamera.

Tipo di argomento: index è un Numero.

Recupera il livello in base al numero (ordine numerico nel pannello Timeline). Esempio: thisComp.layer(3)

layer(name)

Tipo di valore restituito: Livello, Luce o Videocamera.

Tipo di argomento: name è una Stringa.

Recupera il livello per nome. I nomi vengono abbinati in base al nome livello o, in sua assenza, in base al nome sorgente. Se esistono nomi duplicati, After Effects utilizza il primo dall’alto nel pannello Timeline. Esempio:

  thisComp.layer("Solid 1")

layer(otherLayer, relIndex)

Tipo di valore restituito: Livello, Luce o Videocamera.

Tipo di argomento: otherLayer è un oggetto Livello erelIndex è un numero.

Recupera il livello che si trova relIndex livelli sopra o sottootherLayer. Ad esempio, thisComp.layer(thisLayer, 1).active restituisce vero se il livello successivo verso il basso nel pannello Timeline è attivo.

marker

Tipo di valore restituito: MarkerProperty.

Nota:

Non potete accedere a un marcatore composizione in base al numero di marcatore. Se disponete di un progetto creato con una versione precedente di After Effects che utilizza numeri di marcatori composizione nelle espressioni, dovrete modificare le chiamate perché utilizzino invece marker.key(name). Poiché il nome predefinito di un marcatore composizione è un numero, convertendo il riferimento per usare il nome spesso è sufficiente racchiudere il numero tra virgolette.

marker.key(index)

Tipo di valore restituito: MarkerKey.

Tipo di argomento: index è un numero.

Restituisce l’oggetto MarkerKey del marcatore con l’indice specificato. L’indice fa riferimento all’ordine del marcatore nel tempo di composizione, non al nome del marcatore. Ad esempio questa espressione restituisce il tempo del primo marcatore composizione:

  thisComp.marker.key(1).time

marker.key(name)

Tipo di valore restituito: MarkerKey.

Tipo di argomento: name è una Stringa.

Restituisce l’oggetto MarkerKey del marcatore con il nome specificato. Il valore name è il nome del marcatore, come digitato nel campo Commento nella finestra di dialogo Marcatore, ad esempio, marker.key("1"). Per un marcatore composizione il nome predefinito è un numero. Se più di un marcatore nella composizione ha lo stesso nome, questo metodo restituisce il marcatore che è posizionato prima nel tempo (nel tempo di composizione). Il valore per un marcatore è una stringa, non un numero. Ad esempio, questa espressione restituisce il tempo del marcatore composizione con il nome “0”.

  thisComp.marker.key("0").time

marker.nearestKey(t)

Tipo di valore restituito: MarkerKey.

Tipo di argomento: t è un numero.

Restituisce il marcatore più vicino nel tempo a t. Ad esempio, questa espressione restituisce il tempo del marcatore composizione più vicino a 1 secondo:

  thisComp.marker.nearestKey(1).time

Questa espressione restituisce il tempo del marcatore composizione più vicino al tempo corrente:

  thisComp.marker.nearestKey(time).time

marker.numKeys

Tipo di valore restituito: Numero.

Restituisce il numero totale di marcatori composizione nella composizione.

numLayers

Tipo di valore restituito: Numero.

Restituisce il numero di livelli nella composizione.

activeCamera

Tipo di valore restituito: Videocamera.

Restituisce l’oggetto Videocamera per la videocamera mediante la quale viene eseguito il rendering della composizione in corrispondenza del fotogramma corrente. Non si tratta necessariamente della videocamera attraverso la quale state guardando il pannello Composizione.

width

Tipo di valore restituito: Numero.

Restituisce la larghezza della composizione in pixel.

Applicate la seguente espressione alla proprietà Posizione di un livello per centrare il livello nel fotogramma della composizione:

  [thisComp.width/2, thisComp.height/2]

height

Tipo di valore restituito: Numero.

Restituisce l’altezza della composizione in pixel.

duration

Tipo di valore restituito: Numero.

Restituisce la durata della composizione in secondi.

ntscDropFrame

Tipo di valore restituito: Booleano.

Restituisce vero se il codice di tempo è in formato drop-frame (After Effects CS5.5 e versioni successive).

displayStartTime

Tipo di valore restituito: Numero.

Restituisce il tempo di inizio della composizione in secondi.

frameDuration

Tipo di valore restituito: Numero.

Restituisce la durata di un fotogramma in secondi.

shutterAngle

Tipo di valore restituito: Numero.

Restituisce il valore dell’angolo otturatore della composizione in gradi.

shutterPhase

Tipo di valore restituito: Numero.

Restituisce il valore della fase otturatore della composizione in gradi.

bgColor

Tipo di valore restituito: Matrice [4].

Restituisce il colore di sfondo della composizione.

pixelAspect

Tipo di valore restituito: Numero.

Restituisce le proporzioni pixel della composizione.

name

Tipo di valore restituito: Stringa.

Specifica il nome della composizione.

Attributo Area protetta per marcatori composizione

L’opzione Area protetta per i marcatori composizione può essere letta con l’attributo per marcatori composizione protectedRegion.

Attributi e metodi del metraggio (riferimento espressioni)

Per utilizzare un elemento di metraggio dal pannello Progetto come oggetto in un’espressione, utilizzate il metodo footage globale, come in footage("file_name"). Potete inoltre accedere all’oggetto metraggio utilizzando l’attributo source su un livello la cui sorgente è un elemento del metraggio.

width

Tipo di valore restituito: Numero.

Restituisce l’ampiezza dell’elemento di metraggio in pixel.

height

Tipo di valore restituito: Numero.

Restituisce l’altezza dell’elemento di metraggio in pixel.

duration

Tipo di valore restituito: Numero.

Restituisce la durata dell’elemento di metraggio in secondi.

frameDuration

Tipo di valore restituito: Numero.

Restituisce la durata di un fotogramma nell’elemento di metraggio in secondi.

ntscDropFrame

Tipo di valore restituito: Booleano.

Restituisce vero se il codice di tempo è in formato drop-frame (After Effects CS5.5 e versioni successive).

pixelAspect

Tipo di valore restituito: Numero.

Restituisce le proporzioni pixel dell’elemento di metraggio.

name

Tipo di valore restituito: Stringa.

Restituisce il nome dell’elemento del metraggio come indicato nel pannello Progetto.

Attributi e metodi Oggetti secondari per i livelli (riferimento per espressioni)

Nota:

Per After Effects CC e CS6, il menu Lingua espressione, le voci “Oggetti secondari del livello”, “Generali dei livelli”, “Proprietà dei livelli”, “Livello 3D” e “Trasformazione dello spazio di un livello” sono state organizzate in un sottomenu “Livello”.

source

Tipo di valore restituito: Comp. o Metraggio.

Restituisce l’oggetto Composizione sorgente o Metraggio sorgente per il livello. L’impostazione predefinita del tempo è regolata in base al tempo nella sorgente. Esempio: source.layer(1).position

sourceTime(t = time)

Tipo di valore restituito: Numero.

Restituisce la sorgente del livello corrispondente al tempo t (After Effects CS5.5 e versioni successive).

sourceRectAtTime(t = tempo, includeExtents = falso)

Tipo di valore restituito: oggetto Javascript con quattro attributi: [superiore, sinistra, larghezza, altezza]. Le distanze vengono applicate solo per definire i livelli, aumentando la dimensione dei limiti del livello ove necessario e i livelli del testo del paragrafo (After Effects 15.1 e versioni successive), dove ritorna ai limiti della casella paragrafo. Esempio: myTextLayer.sourceRectAtTime().width.

effect(name)

Tipo di valore restituito: Effetto.

Tipo di argomento: name è una Stringa.

After Effects trova l’effetto in base al nome nel pannello Controlli Effetti. Il nome può essere il nome predefinito o un nome definito dall’utente. Se più effetti hanno lo stesso nome, viene usato l’effetto più vicino alla parte superiore del pannello Controlli effetto. Esempio:

  effect("Fast Blur")("Blurriness")

effect(index)

Tipo di valore restituito: Effetto.

Tipo di argomento: index è un Numero.

After Effects trova l’effetto in base all’indice nel pannello Controlli effetti, partendo da 1 ed eseguendo il conto dall’alto.

mask(name)

Tipo di valore restituito: Maschera.

Tipo di argomento: name è una Stringa.

Il nome può essere il nome predefinito o un nome definito dall’utente. Se più maschere hanno lo stesso nome, viene usata la prima maschera (quella in cima all’elenco). Esempio:

  mask("Mask 1")

mask(index)

Tipo di valore restituito: Maschera.

Tipo di argomento: index è un Numero.

After Effects trova la maschera in base all’indice nel pannello Timeline, partendo da 1 ed eseguendo il conto alla rovescia dall’alto.

Attributi e metodi Generali per i livelli (riferimento per espressioni)

width

Tipo di valore restituito: Numero.

Restituisce la larghezza del livello in pixel. È uguale a source.width.

height

Tipo di valore restituito: Numero.

 Restituisce l’altezza del livello in pixel. È uguale a source.height.

index

Tipo di valore restituito: Numero.

Restituisce il numero di indice del livello nella composizione.

parent

Tipo di valore restituito: Livello, Luce o Videocamera.

Restituisce l’oggetto Livello superiore del livello, se esiste. Esempio: position[0] + parent.width

hasParent

Tipo di valore restituito: Booleano.

Restituisce vero se il livello ha un elemento superiore o falso in caso contrario.

Utilizzate l’attributo hasParent per stabilire se un livello ha un elemento superiore. Potete utilizzare questo attributo anche se il livello non ha un livello superiore. Ad esempio, la seguente espressione indica che il livello al quale applicate l’elemento superiore si deforma in base alla posizione dell’elemento superiore. Se il livello non ha elementi superiori, si deforma rispetto alla propria posizione. Se al livello viene successivamente assegnato un livello superiore, il comportamento del livello cambia di conseguenza:

  idx = index;   if (hasParent) {     idx = parent.index;   }   thisComp.layer(idx).position.wiggle(5,20)

inPoint

Tipo di valore restituito: Numero.

Restituisce il punto di attacco del livello in secondi.

Nota:

In generale, il valore di outPoint è maggiore del valore di inPoint. Tuttavia, se l’ordine di un livello nel tempo viene invertito, il valore di in Point è maggiore del valore di outPoint. Allo stesso modo, il valore di startTime può essere maggiore del valore di inPoint.

outPoint

Tipo di valore restituito: Numero.

Restituisce il punto di stacco del livello in secondi.

startTime

Tipo di valore restituito: Numero.

Restituisce il momento iniziale del livello in secondi.

hasVideo

Tipo di valore restituito: Booleano.

Restituisce vero se il livello ha un video o falso in caso contrario.

hasAudio

Tipo di valore restituito: Booleano.

Restituisce vero se il livello ha l’audio o falso in caso contrario.

active

Tipo di valore restituito: Booleano.

Restituisce vero se lo switch Video  è attivato per il livello e se il tempo corrente è compreso nell’intervallo dal punto di attacco del livello al punto di scatto del livello, altrimenti restituisce falso.

enabled

Tipo di valore restituito: Booleano.

Restituisce vero se lo switch Video è attivato per il livello; in caso contrario restituisce falso.

audioActive

Tipo di valore restituito: Booleano.

Restituisce vero se lo switch Audio è attivato per il livello e se il tempo corrente è compreso nell’intervallo dal punto di attacco del livello al punto di scatto del livello, altrimenti restituisce falso.

sampleImage(point, radius = [.5, .5], postEffect=true, t=time)

Tipo di valore restituito: Matrice [4].

Tipo di argomento: point è una Matrice [2], radius è una Matrice [2], postEffect è un Booleano e t è un Numero.

Campiona i valori dei colori e del canale alfa di un livello e restituisce il valore alfa medio ponderato dei pixel entro la distanza specificata del punto come matrice: [red, green, blue, alpha]. Se postEffect è vero, i valori campionati sono relativi al livello dopo che maschere ed effetti del livello stesso sono stati sottoposti a rendering; se postEffect è falso, i valori campionati sono relativi al livello prima che maschere ed effetti siano stati sottoposti a rendering. Il valore di input point è nello spazio del livello; il punto [0,0] è il centro del pixel in alto a sinistra del livello. Il valore di input radius specifica la distanza verticale e orizzontale dal centro del campione ai bordi del rettangolo campionato. Il valore predefinito campiona un solo pixel.

Nota:

Il parametro postEffect si riferisce agli effetti applicati direttamente al livello, non agli effetti applicati indirettamente, come nel caso di un livello di regolazione.

Nota:

L’utilizzo di sampleImage in un’espressione non disattiva più l’elaborazione multipla.

In questo esempio viene campionato un rettangolo di 4 pixel di larghezza e 3 pixel di altezza, centrato intorno a un punto 100 pixel in basso e a destra dell’angolo superiore sinistro del livello.

  thisComp.layer(1).sampleImage([100, 100], [2, 1.5])

Dan Ebberts mette a disposizione un esempio di come utilizzare il metodo sampleImage nel suo sito Web MotionScript.

Nel blog After Effects Region of Interest di Todd Kopriva sono disponibili istruzioni sull’uso del metodo sampleImage e sull’effetto Controllo punto per cercare un punto specifico nei colori durante la correzione dei colori.

Attributi e metodi delle proprietà del livello (riferimento espressioni).

Aggiungendo maschere, effetti, pennello o testo a un livello, After Effects aggiunge nuove proprietà al pannello Timeline. Il numero delle proprietà è troppo elevato perché possano essere elencate, usate quindi il selettore per imparare la sintassi necessaria per fare riferimento a esse nelle vostre espressioni.

anchorPoint

Tipo di valore restituito: Proprietà [2 o 3].

Restituisce il valore del punto di ancoraggio del livello nel sistema di coordinate del livello (spazio livello).

position

Tipo di valore restituito: Proprietà [2 o 3].

Restituisce il valore della posizione del livello, nello spazio mondo, se il livello non ha un elemento superiore. Se il livello ha un elemento superiore, restituisce il valore della posizione del livello nel sistema di coordinate del livello superiore (nello spazio livello del livello superiore).

scale

Tipo di valore restituito: Proprietà [2 o 3].

Restituisce il valore della scala del livello, espressa in percentuale.

rotation

Tipo di valore restituito: Proprietà.

Restituisce il valore della rotazione del livello in gradi. Per un livello 3D, restituisce il valore di rotazione z in gradi.

opacity

Tipo di valore restituito: Proprietà.

Restituisce il valore dell’opacità per il livello, espressa in percentuale.

audioLevels

Tipo di valore restituito: Proprietà [2].

Restituisce il valore della proprietà Livello audio del livello, in decibel. Si tratta di un valore 2D; il primo valore rappresenta il canale audio a sinistra e il secondo valore il canale audio a destra. Il valore non è l’ampiezza della traccia audio del materiale sorgente. Al contrario, si tratta del valore della proprietà Livelli audio, che potrebbe venire interessato dai fotogrammi chiave.

timeRemap

Tipo di valore restituito: Proprietà.

Restituisce il valore della proprietà Modifica tempo in secondi, se tale funzione è attivata.

marker.key(index)

Tipo di valore restituito: MarkerKey.

Tipo di argomento: index è un Numero.

Restituisce l’oggetto MarkerKey del marcatore livello con l’indice specificato.

marker.key(name)

Tipo di valore restituito: MarkerKey.

Tipo di argomento: name è una Stringa.

Restituisce l’oggetto MarkerKey del marcatore livello con il nome specificato. Il valore name è il nome del marcatore, come digitato nel campo Commento nella finestra di dialogo Marcatore, ad esempio, marker.key("ch1"). Se nel livello esistono più marcatori con lo stesso nome, questo metodo restituisce il marcatore posizionato prima nel tempo (nel tempo livello). Il valore per un marcatore è una stringa, non un numero.

Quest’espressione su una proprietà regola il valore della proprietà da 0 a 100 tra due marcatori identificati dal nome:

  m1 = marker.key("Start").time;   m2 = marker.key("End").time;   linear(time, m1, m2, 0, 100);

marker.nearestKey(t)

Tipo di valore restituito: MarkerKey.

Tipo di argomento: t è un numero.

Restituisce il marcatore livello più vicino nel tempo a t. Ad esempio, questa espressione restituisce il tempo del marcatore sul livello più vicino al tempo di 1 secondo:

  marker.nearestKey(1).time

Questa espressione restituisce il tempo del marcatore sul livello più vicino al tempo corrente:

  marker.nearestKey(time).time

marker.numKeys

Tipo di valore restituito: Numero.

Restituisce il numero di marcatori del livello.

name

Tipo di valore restituito: Stringa.

Restituisce il nome del livello.

Attributi e metodi 3D per i livelli (riferimento per espressioni)

orientation

Tipo di valore restituito: Proprietà [3].

Restituisce il valore orientamento 3D in gradi per un livello 3D.

rotationX

Tipo di valore restituito: Proprietà.

Restituisce il valore orientamento x in gradi per un livello 3D.

rotationY

Tipo di valore restituito: Proprietà.

Restituisce il valore orientamento y in gradi per un livello 3D.

rotationZ

Tipo di valore restituito: Proprietà.

Restituisce il valore orientamento z in gradi per un livello 3D.

lightTransmission

Tipo di valore restituito: Proprietà.

Restituisce il valore della proprietà Trasmissione luce per un livello 3D.

castsShadows

Tipo di valore restituito: Proprietà.

Restituisce un valore di 1.0 se il livello crea ombre.

acceptsShadows

Tipo di valore restituito: Proprietà.

Restituisce un valore di 1.0 se il livello accetta ombre.

acceptsLights

Tipo di valore restituito: Proprietà.

Restituisce un valore di 1.0 se il livello accetta luci.

ambient

Tipo di valore restituito: Proprietà.

Restituisce il valore del componente ambiente come percentuale.

diffuse

Tipo di valore restituito: Proprietà.

Restituisce il valore del componente diffusione come valore percentuale.

specular

Tipo di valore restituito: Proprietà.

Restituisce il valore del componente speculare come valore percentuale.

shininess

Tipo di valore restituito: Proprietà.

Restituisce il valore del componente luminosità come valore percentuale.

metal

Tipo di valore restituito: Proprietà.

Restituisce il valore del componente metallo come valore percentuale.

Metodi di trasformazione dello spazio per i livelli (riferimento per espressioni)

Utilizzate i metodi di trasformazione dello spazio di un livello per trasformare i valori da uno spazio all’altro, ad esempio dallo spazio livello allo spazio mondo. I metodi “from” trasformano i valori dallo spazio denominato (composizione o mondo) allo spazio del livello. I metodi “to” trasformano i valori dallo spazio del livello allo spazio denominato (composizione o mondo). Ogni metodo di trasformazione prende un argomento opzionale per determinare il tempo in cui viene calcolata la trasformazione; tuttavia, potete usare quasi sempre il tempo corrente (predefinito).

Utilizzate i metodi di trasformazione “Vec” per trasformare un vettore direzione, a esempio la differenza tra due valori posizione. Utilizzate i metodi di trasformazione normali (non-”Vec”) per trasformare un punto, a esempio una posizione. Lo spazio composizione e mondo sono gli stessi per i livelli 2D. Per i livelli 3D, tuttavia, lo spazio composizione è relativo alla videocamera attiva e lo spazio mondo è indipendente dalla videocamera.

toComp(point, t=time)

Tipo di valore restituito: Matrice [2 o 3].

Tipo di argomento: point è una Matrice [2 o 3] e t è un Numero.

Trasforma un punto dallo spazio livello allo spazio composizione.

fromComp(point, t=time)

Tipo di valore restituito: Matrice [2 o 3].

Tipo di argomento: point è una Matrice [2 o 3] e t è un Numero.

Trasforma un punto dallo spazio composizione allo spazio livello. Il punto risultante in un livello 3D ha un valore diverso da zero anche se si trova nello spazio livello. Esempio: fromComp(thisComp.layer(2).position)

toWorld(point, t=time)

Tipo di valore restituito: Matrice [2 o 3].

Tipo di argomento: point è una matrice [2 o 3] e t è un numero.

Trasforma un punto dallo spazio livello allo spazio mondo indipendente dalla visualizzazione. Esempio:

  toWorld.effect("Bulge")("Bulge Center")

Dan Ebberts mette a disposizione un’espressione nel suo sito Web MotionScript che utilizza il metodo toWorld per orientare automaticamente un livello lungo un solo asse. Questa possibilità risulta utile, ad esempio, per fare in modo che i personaggi si voltino da un lato all’altro per seguire la videocamera, restando in piedi.

 

Nel sito Web AE Portal di Rich Young è disponibile un set di espressioni in cui viene utilizzato il metodo toWorld per collegare una videocamera e una luce a un livello con l’effetto CC Sphere.

fromWorld(point, t=time)

Tipo di valore restituito: Matrice [2 o 3].

Tipo di argomento: point è una Matrice [2 o 3] e t è un Numero.

Trasforma un punto dallo spazio mondo allo spazio livello. Esempio: fromWorld(thisComp.layer(2).position)

Per un esempio di come è possibile utilizzare questo metodo, consultate Esempio di espressione: creare un rigonfiamento tra due livelli.

toCompVec(vec, t=time)

Tipo di valore restituito: Matrice [2 o 3].

Tipo di argomento: vec è una Matrice [2 o 3] e t è un Numero.

Trasforma un vettore dallo spazio livello allo spazio composizione. Esempio: toCompVec([1,0])

fromCompVec(vec, t=time)

Tipo di valore restituito: Matrice [2 o 3].

Tipo di argomento: vec è una Matrice [2 o 3] e t è un Numero.

Trasforma un vettore dallo spazio composizione allo spazio livello. Esempio (livello 2D):

  dir=sub(position, thisComp.layer(2).position);   fromCompVec(dir)

toWorldVec(vec, t=time)

Tipo di valore restituito: Matrice [2 o 3].

Tipo di argomento: vec è una Matrice [2 o 3] e t è un Numero.

Trasforma un vettore dallo spazio livello allo spazio mondo. Esempio:   p1 = effect("Eye Bulge 1")("Bulge Center");    p2 = effect("Eye Bulge 2")("Bulge Center");     toWorld(sub(p1, p2))

fromWorldVec(vec, t=time)

Tipo di valore restituito: Matrice [2 o 3].

Tipo di argomento: vec è una Matrice [2 o 3] e t è un Numero.

Trasforma un vettore dallo spazio mondo allo spazio livello. Esempio: fromWorld(thisComp.layer(2).position)

fromCompToSurface(point, t=time)

Tipo di valore restituito: Matrice [2].

Tipo di argomento: point è una Matrice [2 o 3] e t è un Numero.

Proietta un punto nello spazio composizione verso un punto sulla superficie del livello (valore z zero) nella posizione nella quale compare quando è visualizzato dalla videocamera attiva. Questo metodo è utile per impostare i punti di controllo degli effetti. Usare solo con i livelli 3D.

Attributi e metodi Videocamera (riferimento espressioni)

Gli oggetti Videocamera hanno gli stessi attributi e metodi degli oggetti Livello, a eccezione di source, effect, mask, width, height, anchorPoint, scale, opacity, audioLevels, timeRemap e di tutte le proprietà materiale.

pointOfInterest

Tipo di valore restituito: Proprietà [3].

Restituisce i valori del punto di interesse di una videocamera nello spazio mondo.

zoom

Tipo di valore restituito: Proprietà.

Restituisce i valori di zoom, di una videocamera in pixel.

Ecco un’espressione per la proprietà Scala di un livello che mantiene le dimensioni relative del livello nel fotogramma, mentre cambia la posizione z (profondità) di un livello o il valore Zoom di una videocamera:

  cam = thisComp.activeCamera;    distance = length(sub(position, cam.position));    scale * distance / cam.zoom;

depthOfField

Tipo di valore restituito: Proprietà.

Restituisce 1 se la proprietà Profondità di campo di una videocamera è attivata, oppure restituisce 0 se la proprietà Profondità di campo è disattivata.

focusDistance

Tipo di valore restituito: Proprietà.

Restituisce il valore della distanza focale di una videocamera, in pixel.

aperture

Tipo di valore restituito: Proprietà.

Restituisce il valore dell’apertura di una videocamera, in pixel.

blurLevel

Tipo di valore restituito: Proprietà.

Restituisce il valore del livello di sfocatura di una videocamera, come percentuale.

active

Tipo di valore restituito: Booleano.

Restituisce vero se la videocamera è la videocamera attiva per la composizione nel tempo corrente: lo switch Video  per il livello della videocamera è attivato, il tempo corrente è compreso nell’intervallo dal punto di attacco del livello della videocamera al punto di stacco del livello della videocamera ed è il primo livello di tale videocamera (quello in cima all’elenco) elencato nel pannello Timeline. In caso contrario restituisce falso.

Attributi e metodi Luce (riferimento espressioni)

Gli oggetti Luce hanno gli stessi attributi e metodi degli oggetti Livello, a eccezione di source, effect, mask, width, height, anchorPoint, scale, opacity, audioLevels, timeRemap e di tutte le proprietà materiale.

pointOfInterest

Tipo di valore restituito: Proprietà [3].

Restituisce i valori del punto di interesse di una luce nello spazio mondo.

intensity

Tipo di valore restituito: Proprietà.

Restituisce i valori di intensità di una luce, come percentuale.

color

Tipo di valore restituito: Proprietà [4].

Restituisce il valore di colore di una luce.

coneAngle

Tipo di valore restituito: Proprietà.

Restituisce l’angolo di un cono di luce, in gradi.

coneFeather

Tipo di valore restituito: Proprietà.

Restituisce il valore di sfumatura di un cono di luce, come percentuale.

shadowDarkness

Tipo di valore restituito: Proprietà.

Restituisce il valore di oscurità di un’ombra di luce, come percentuale.

shadowDiffusion

Tipo di valore restituito: Proprietà.

Restituisce il valore di diffusione dell’ombra di una luce, in pixel.

Nel blog omino pixel di David Van Brink potete trovar un articolo di istruzioni e un progetto di esempio che mostrano come utilizzare le espressioni con le luci.

Attributi e metodi degli effetti (riferimento espressioni)

active

Tipo di valore restituito: Booleano.

Restituisce vero se l’effetto è attivato (lo switch Effetto è selezionato).

param(name)

Tipo di valore restituito: Proprietà.

Tipo di argomento: name è una Stringa.

Restituisce una proprietà all’interno di un effetto. I punti di controllo dell’effetto sono sempre nello spazio livello. Esempio:

  effect("Bulge").param("Bulge Height")

param(index)

Tipo di valore restituito: Proprietà.

Tipo di argomento: index è un Numero.

Restituisce una proprietà all’interno di un effetto. I punti di controllo dell’effetto sono sempre nello spazio livello. Ad esempio, effect("Bulge").param(4) restituisce la proprietà Altezza rigonfiamento.

Attributi e metodi delle maschere (riferimento espressioni)

Nota:

Potete collegare le proprietà Tracciato maschera ad altre proprietà di tracciato (tracciati in un livello forma, tratti pennello) ma le proprietà non sono accessibili per l’elaborazione numerica diretta tramite espressioni.

maskOpacity

Tipo di valore restituito: Proprietà.

Restituisce il valore di opacità di una maschera, come percentuale.

maskFeather

Tipo di valore restituito: Proprietà.

Restituisce il valore di sfumatura di una maschera, in pixel.

maskExpansion

Tipo di valore restituito: Proprietà.

Restituisce il valore di espansione di una maschera, in pixel.

invert

Tipo di valore restituito: Booleano.

Restituisce vero se la maschera è invertita o falso se non lo è.

Attributi e metodi delle proprietà (riferimento espressioni)

value

Tipo di valore restituito: Numero, Matrice o Stringa.

Restituisce il valore di una proprietà nel tempo corrente.

valueAtTime(t)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t è un numero.

Restituisce il valore di una proprietà nel tempo specificato, in secondi.

Ad esempio, per avere un valore di proprietà per ciascun fotogramma da scegliere casualmente da un insieme di quattro valori, impostate i quattro valori come fotogrammi chiave a 0, 1, 2 e 3 secondi, quindi applicate la seguente espressione alla proprietà:

  valueAtTime(random(4))

Nota:

Nel sito Web MotionScript di Dan Ebberts sono disponibili altri esempi e tecniche sull’utilizzo dei metodi valueAtTime e velocityAtTime.

velocity

Tipo di valore restituito: Numero o matrice.

Restituisce il valore della velocità temporale al tempo corrente. Per le proprietà spaziali, ad esempio la Posizione, restituisce il valore del vettore tangente. Il risultato è la stessa dimensione della proprietà.

velocityAtTime(t)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: t è un numero.

Restituisce il valore della velocità temporale al tempo specificato.

speed

Tipo di valore restituito: Numero.

Restituisce un 1D, un valore di velocità positiva uguale alla velocità alla quale la proprietà sta cambiando al tempo predefinito. Questo elemento può essere usato solo per le proprietà spaziali.

speedAtTime(t)

Tipo di valore restituito: Numero.

Tipo di argomento: t è un numero.

Restituisce il valore della velocità spaziale al tempo specificato.

wiggle(freq, amp, octaves=1, amp_mult=.5, t=time)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: freq, amp, octaves, amp_mult e t sono Numeri.

Scuote (deforma) casualmente il valore della proprietà.

Il valore freq è la frequenza espressa in deformazioni al secondo.

Il valore amp è l’ampiezza espressa in unità della proprietà alla quale viene applicato.

octaves è il numero di ottave di rumore da aggiungere insieme. Questo valore controlla quanti dettagli sono presenti nella deformazione. Potete elevare questo valore rispetto al valore predefinito 1 in modo da includere le frequenze più alte, oppure potete abbassarlo per includere l’armonica di ampiezza nella deformazione.

amp_mult è il valore per il quale amp viene moltiplicato per ciascuna ottava. Questo valore controlla la rapidità con la quale le armoniche vengono rilasciate. Il valore predefinito è pari a 0,5. Avvicinandolo a 1, l’armonica viene aggiunta alla stessa ampiezza della frequenza di base, mentre avvicinandolo a 0 viene aggiunto un numero minore di dettagli.

t è il tempo di inizio base. Questo valore passa automaticamente al tempo corrente. Usate questo parametro se desiderate che l’output sia una deformazione del valore della proprietà campionato in un tempo diverso.

Esempio: position.wiggle(5, 20, 3, .5) genera circa 5 deformazioni al secondo con dimensioni medie pari a circa 20 pixel. Oltre alla deformazione principale, si verificano altri due livelli di deformazioni dettagliate, con una frequenza di 10 e 20 deformazioni al secondo e dimensioni pari a 10 e 5 pixel, rispettivamente.

In questo esempio, su una proprietà bidimensionale come Scala, entrambe le dimensioni vengono deformate in base alla stesso valore:

  v = wiggle(5, 10);   [v[0], v[0]]

Questo esempio, su una proprietà bidimensionale, deforma solo lungo l’asse y:

  freq = 3;   amp = 50;   w = wiggle(freq,amp);   [value[0],w[1]];

Nel sito Web MotionScript di Dan Ebberts è disponibile un’espressione di esempio e una spiegazione dettagliata che mostra come utilizzare il parametro di tempo del metodo wiggle per creare un’animazione a ciclo continuo.

temporalWiggle(freq, amp, octaves=1, amp_mult=.5, t=time)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: freq, amp, octaves, amp_mult e t sono Numeri.

Esegue il campionamento della proprietà a un tempo deformato. Il valore freq rappresenta la frequenza di deformazioni al secondo, ampè l’ampiezza in unità della proprietà alla quale è applicato, octaves rappresenta il numero di ottave di disturbo da aggiungere, amp_mult è la quantità per la quale moltiplicare amp per ogni ottava e t è il momento iniziale di base. Perché questa funzione abbia significato, la proprietà campionata deve essere animata, dal momento che la funzione altera solo il tempo di campionamento, non il valore. Esempio: scale.temporalWiggle(5, .2)

smooth(width=.2, samples=5, t=time)

Tipo di valore restituito: Numero o matrice.

Tipo di argomento: width, samples e t sono numeri.

Uniforma i valori della proprietà nel tempo, convertendo deviazioni grandi e brevi del valore in deviazioni più piccole e distribuite più uniformemente. Questa operazione di uniformazione viene eseguita applicando un filtro casella al valore della proprietà al tempo specificato. Il valore width è l’intervallo di tempo (in secondi) durante il quale il filtro ha un valore medio. Il valore samples è il numero di campioni discreti distanziati in modo uniforme nel tempo; utilizzate un valore maggiore per ottenere una maggiore uniformità (ma prestazioni inferiori). In genere samples deve essere un numero dispari in modo tale che il valore al tempo corrente sia incluso nella media. Esempio: position.smooth(.1, 5)

loopIn(type="cycle", numKeyframes=0)

Tipo di valore restituito: Numero o matrice.

Esegue il ciclo continuo di un segmento di tempo misurato dal primo fotogramma chiave sul livello in avanti verso il punto di stacco del livello. Il ciclo continuo viene eseguito dal punto di attacco del livello. Il valore numKeyframe determina il segmento del quale viene eseguito il ciclo. Questo segmento è la parte del livello dal primo fotogramma chiave al numKeyframes+ 1 fotogramma chiave. Ad esempio, loopIn("cycle", 3) esegue il ciclo continuo del segmento limitato dal primo e dal quarto fotogramma chiave. Il valore predefinito 0 indica che su tutti i fotogrammi chiave sarà eseguito il ciclo continuo.

Potete utilizzare i metodi di ripetizione a ciclo continuo dei fotogrammi chiave per ripetere una serie di fotogrammi chiave. Questi metodi possono essere utilizzati sulla maggior parte delle proprietà. Le eccezioni includono le proprietà che non possono essere espresse mediante semplici valori numerici nel pannello Timeline, come ad esempio la proprietà Testo sorgente, le proprietà della forma del tracciato e la proprietà Istogramma per l’effetto Livelli. I fotogrammi chiave o i valori di durata troppo ampi sono ritagliati al valore massimo consentito. I valori troppo piccoli produrranno un ciclo continuo.

 

Tipo di ciclo

Risultato

cycle

(impostazione predefinita) Ripete il segmento specificato.

pingpong

Ripete il segmento specificato, alternandolo avanti e indietro.

offset

Ripete il segmento specificato, ma esegue uno scostamento di ogni ciclo pari alla differenza del valore della proprietà all’inizio e alla fine del segmento, moltiplicato per il numero di volte che il segmento ha eseguito il ciclo continuo.

continue

Non ripete il segmento specifico, ma continua a animare una proprietà in base alla velocità in prossimità del primo o dell’ultimo fotogramma. Ad esempio, se l’ultimo fotogramma della proprietà Scala di un livello è pari a 100%, il livello continua a scalare da 100% fino al punto di stacco, invece di eseguire un ciclo continuo direttamente indietro fino al punto di stacco. Questo tipo non accetta un argomento keyframes o duration.

loopOut(type="cycle", numKeyframes=0)

Tipo di valore restituito: Numero o matrice.

Esegue il ciclo continuo di un segmento di tempo misurato dall’ultimo fotogramma chiave sul livello indietro verso il punto di stacco del livello. Il ciclo continuo viene eseguito fino al punto di stacco del livello. Il numero specificato di fotogrammi chiave determina il segmento del quale eseguire il ciclo continuo. Il valore numKeyframes imposta il numero di segmenti del fotogramma chiave dei quali eseguire il ciclo continuo; la misurazione dell’intervallo specificato viene effettuata all’indietro partendo dall’ultimo fotogramma chiave. Ad esempio, loopOut("cycle", 1) esegue il ciclo continuo del segmento limitato dall’ultimo e dal penultimo fotogramma chiave. Il valore predefinito 0 indica che su tutti i fotogrammi chiave sarà eseguito il ciclo continuo. Per ulteriori informazioni consultate la voce loopIn.

Potete trovare un articolo e un progetto di esempio sul blog di David Van Brink, ominopixel blog chespiegacome usare l’effetto Eco, l’effetto Ambiente particelle e il metodo loopOut per animare uno sciame di batteri fluttuanti stilizzati.

loopInDuration(type="cycle", duration=0)

Tipo di valore restituito: Numero o matrice.

Esegue il ciclo continuo di un segmento di tempo misurato dal primo fotogramma chiave sul livello in avanti verso il punto di stacco del livello. Il ciclo continuo viene eseguito dal punto di attacco del livello. La durata specificata determina il segmento del quale eseguire il ciclo continuo. Il valore duration imposta il numero di secondi della composizione in un segmento del quale eseguire il ciclo continuo; l’intervallo specificato viene misurato dal primo fotogramma chiave. Ad esempio, loopInDuration("cycle", 1) esegue il ciclo continuo del primo secondo dell’intera animazione. Il valore predefinito di 0 significa che il segmento del quale eseguire il ciclo continuo inizia al punto di stacco del livello. Per ulteriori informazioni consultate la voce loopIn.

loopOutDuration(type="cycle", duration=0)

Tipo di valore restituito: Numero o matrice.

Esegue il ciclo continuo di un segmento di tempo misurato dall’ultimo fotogramma chiave sul livello indietro verso il punto di stacco del livello. Il ciclo continuo viene eseguito fino al punto di stacco del livello. La durata specificata determina il segmento del quale eseguire il ciclo continuo. Il valore duration imposta il numero di secondi della composizione in un segmento del quale eseguire il ciclo continuo; la misurazione dell’intervallo specificato viene effettuata indietro dall’ultimo fotogramma chiave. Ad esempio, loopOutDuration("cycle", 1) esegue il ciclo continuo dell’ultimo secondo dell’intera animazione. Il valore predefinito di 0 significa che il segmento del quale eseguire il ciclo continuo inizia nel punto di attacco del livello. Per ulteriori informazioni consultate la voce loopIn.

key(index)

Tipo di valore restituito: Key o MarkerKey.

Tipo di argomento: index è un Numero.

Restituisce l’oggetto Key o MarkerKey in base al numero. Ad esempio, key(1) restituisce il primo fotogramma chiave.

key(markerName)

Tipo di valore restituito: MarkerKey.

Tipo di argomento: markerName è una stringa.

Restituisce l’oggetto MarkerKey con questo nome. Da utilizzare solo sulle proprietà marcatore.

nearestKey(t)

Tipo di valore restituito: Key o MarkerKey.

Restituisce l’oggetto Key o MarkerKey più vicino al tempo indicato.

numKeys

Tipo di valore restituito: Numero.

Restituisce il numero di fotogrammi chiave in una proprietà. Restituisce il numero di marcatori in una proprietà marcatore.

Nota:

Se usate il comando Dimensioni separate per separare le dimensioni della proprietà Posizione in singoli componenti, il numero di fotogrammi chiave cambia, quindi cambia anche il valore restituito da questo metodo.

propertyGroup(countUp = 1)

Tipo di valore restituito: Gruppo.

Restituisce un gruppo di proprietà relative alla proprietà sulla quale è scritta l’espressione. Ad esempio, aggiungendo l’espressione propertyGroup(1) alla proprietà Rotazione di un tratto pennello, l’espressione è destinata al gruppo di proprietà Trasformazione, che contiene la proprietà Rotazione. Aggiungendo invece propertyGroup(2), l’espressione è destinata al gruppo di proprietà Pennello. Questo metodo vi consente di stabilire relazioni indipendenti dal nome nella gerarchia della proprietà. Questo metodo particolarmente utile durante la duplicazione delle proprietà che contengono le espressioni.

Il metodo numProperties per propertyGroup restituisce il numero di proprietà presenti nel gruppo di proprietà.

Questo esempio restituisce il numero di proprietà nel gruppo che contiene la proprietà sulla quale è scritta l’espressione:

  thisProperty.propertyGroup(1).numProperties

propertyIndex

Tipo di valore restituito: Numero.

Restituisce l’indice di una proprietà relativa ad altre proprietà nel suo gruppo di proprietà, inclusi i gruppi di proprietà all’interno di maschere, effetti, animatori di testo, selettori, forme, tracciatori e punti traccia.

name

Tipo di valore restituito: Stringa.

Restituisce il nome della proprietà o del gruppo di proprietà.

Esempio: creare animazioni con il metodo propertyGroup e l’attributo propertyIndex

Valore del gruppo di proprietà relativi alla proprietà Posizione di un tratto pennello
Valore del gruppo di proprietà relativi alla proprietà Posizione di un tratto pennello

A. propertyGroup(4) B. propertyGroup(3) C. propertyGroup(2) D. propertyGroup(1) E. Il valore propertyIndex della Posizione è 2; il valore propertyIndex della Rotazione è 4. 

In questo esempio, il metodo propertyGroup di ciascun tratto del pennello è destinato al gruppo di proprietà Pennello perché tale gruppo è costituito da due gruppi di proprietà sopra la proprietà Rotazione. L’attributo propertyIndex in ogni Tratto pennello quindi restituisce un valore unico per ogni Tratto pennello. Il valore risultante viene quindi moltiplicato per il tempo e 200 e applicato a ogni valore della rotazione, facendo ruotare ogni tratto pennello in modo diverso, creando tratti pennello a spirale:  propertyGroup(2).propertyIndex * time * 200

  propertyGroup(2).propertyIndex * time * 200
Animare un tratto pennello con un’espressione
Animare un tratto pennello con un’espressione

Proprietà del progetto (riferimento espressioni)

Metodo di espressione:

  • L’oggetto thisProject rappresenta il progetto che contiene l’espressione.

Tipo:

Oggetto Progetto; di sola lettura

  • Attributo fullPath del progetto thisProject.fullPath: il percorso assoluto del file specifico per la piattaforma, incluso il nome del file del progetto. Se il progetto non è stato salvato, restituisce una stringa vuota.
Tipo:
Stringa; di sola lettura.
  • Attributo bitsPerChannel del progetto thisProject.bitsPerChannel: la profondità di colore del progetto in bit per canale (bpc), come impostato in Impostazioni progetto > Gestione colore. È uno tra i seguenti valori: 8, 16, 32. Equivale all’attributo del progetto per script app.project.bitsPerChannel.
Tipo
Numero; di sola lettura.
  • Attributo linearBlending del progetto thisProject.linearBlending: lo stato dell’opzione Fusione colori con gamma 1,0 in Impostazioni progetto > Gestione colore. Equivale all’attributo del progetto per script app.project.linearBlending.
Tipo:
Booleano; di sola lettura.

Attributi e metodi per fotogrammi chiave (riferimento espressioni)

Accedendo all’oggetto Key, potete ottenere le proprietà Tempo, Indice e Valore. Ad esempio, la seguente espressione fornisce il valore del fotogramma chiave nella terza posizione: position.key(3).value.

La seguente espressione, se scritta su una proprietà Opacità con fotogrammi chiave, ignora i valori dei fotogrammi chiave e utilizza solo la posizione dei fotogrammi chiave nel tempo per determinare dove deve verificarsi un flash:   d = Math.abs(time - nearestKey(time).time);   easeOut(d, 0, .1, 100, 0)

  d = Math.abs(time - nearestKey(time).time); 
  easeOut(d, 0, .1, 100, 0)

value

Tipo di valore restituito: Numero o matrice.

Restituisce il valore del fotogramma chiave.

time

Tipo di valore restituito: Numero.

Restituisce il tempo del fotogramma chiave.

index

Tipo di valore restituito: Numero.

Restituisce l’indice del fotogramma chiave.

Attributi MarkerKey (riferimento espressioni)

Potete accedere ai valori per i marcatori composizione e i marcatori livello utilizzando gli stessi metodi. Potete accedere ai marcatori livello mediante l’oggetto thisLayer.marker e ai marcatori composizione mediante l’oggetto thisComp.marker.

Per le espressioni, i marcatori sono un tipo speciale di oggetto Key, potete quindi utilizzare metodi come nearestKey(time) per accedere ai marcatori. I marcatori hanno anche attributi time e index. L’attributo index non è il numero (nome) del marcatore, è il numero di indice del fotogramma chiave, che rappresenta l’ordine del marcatore nel righello temporale.

Le espressioni hanno accesso a tutti i valori di un marcatore che potete impostare nella finestra di dialogo Marcatore composizione o Marcatore livello. Questa espressione sulla proprietà Testo sorgente di un livello di testo visualizza il tempo, la durata, l’indice, il commento (nome), il capitolo, l’URL, il fotogramma di destinazione e il nome del punto cue per il marcatore livello più vicino al tempo corrente e se il marcatore è relativo a un punto cue pari.

  m = thisLayer.marker.nearestKey(time);  
  s = "time:" + timeToCurrentFormat(m.time) + "\r" +  
      "duration: " + m.duration + "\r" +  
      "key index: " + m.index + "\r" +  
      "comment:" + m.comment + "\r" +  
      "chapter:" + m.chapter + "\r" +  
      "URL:" + m.url + "\r" +  
      "frame target: " + m.frameTarget + "\r" +  
      "cue point name: " + m.cuePointName + "\r" +  
      "Event cue point? " + m.eventCuePoint + "\r";  
  for (param in m.parameters){  
       s += "parameter: " + param + " value: " + m.parameters[param] + "\r";  
  } 
  s

Poiché i metadati XMP in un elemento di metraggio possono essere convertiti in marcatori livello per un livello in base a quell’elemento, le espressioni possono interagire con i metadati. Per informazioni, consultate Metadati XMP in After Effects.

Nel Centro per sviluppatori di After Effects è disponibile un’esercitazione creata da Dan Ebberts che include un esempio di utilizzo di metadati XMP con le espressioni.

duration

Tipo di valore restituito: Numero.

Durata, in secondi, del marcatore.

comment

Tipo di valore restituito: Stringa.

Contenuto del campo Comment nella finestra di dialogo del marcatore.

chapter

Tipo di valore restituito: Stringa.

Contenuto del campo Chapter nella finestra di dialogo del marcatore.

url

Tipo di valore restituito: Stringa.

Contenuto del campo URL nella finestra di dialogo del marcatore.

frameTarget

Tipo di valore restituito: Stringa.

Contenuto del campo frameTarget nella finestra di dialogo del marcatore.

eventCuePoint

Tipo di valore restituito: Booleano.

Impostazione del tipo di punto cue nella finestra di dialogo del marcatore. Vero per Event, falso per Navigation.

cuePointName

Tipo di valore restituito: Stringa.

Contenuto del campo Name del punto cue nella finestra di dialogo del marcatore.

parameters

Tipo di valore restituito: matrice che associa valori Stringa.

Contenuto dei campi Parameter Name e Parameter Value nella finestra di dialogo del marcatore.

Se ad esempio avete un parametro denominato “background color”, potete utilizzare la seguente espressione per accedere ai relativi valori sul marcatore più vicino:

  thisComp.marker.nearestKey(time).parameters["background color"]

MarkerValue.protectedRegion (riferimento espressioni)

Metodo di espressione:

thisComp.marker.key(index).protectedRegion

Descrizione:

Se è Vero, il marcatore composizione si comporta come un’area protetta.

Tipo:

Booleano; sola lettura.

Accesso ai punti tracciato su forme, maschere e tratti pennello per le espressioni (riferimento espressioni)

Potete utilizzare le espressioni per leggere e scrivere le coordinate x e y dei punti di tracciati o vertici, per:

  • Maschere di livello
  • Forme Bezier
  • Tratti pennello negli effetti Disegno e Pennello a rotoscopio e miglioramento dei bordi.

Metodi di espressione:

  • Metodo points() per tracciati: {pathProperty}.points(t = time) Consente di ottenere le coordinate x e y di tutti i punti di un tracciato. Le coordinate dei punti del tracciato di una maschera di livello sono relative all’origine del livello nel suo angolo superiore sinistro. Le coordinate dei punti del tracciato di una forma Bezier sono relativi al punto di ancoraggio del gruppo di forme del tracciato, ad esempio Trasformazione: Forma 1 > Punto di ancoraggio. Le coordinate dei punti del tracciato dei tratti pennello sono relative all’inizio del tratto; il primo punto è [0,0]. Facoltativamente, potete specificare il tempo in corrispondenza del quale verrà campionato il tracciato. Quando si duplica un tracciato, questo metodo può essere passato nel metodo createPath() per il parametro points.

Parametri:

t Numero, opzionale. Il tempo nella composizione (in secondi) in corrispondenza del quale verrà campionato il tracciato. Il valore predefinito è time (tempo corrente).

Valori restituiti:

Matrice di matrici composte di coppie di numeri, con arrotondamento alla quarta cifra decimale.

  • Metodo inTangents() per tracciati: {pathProperty}.inTangents(t = time) Consente di ottenere le coordinate x e y della maniglia tangente in ingresso per tutti i punti di un tracciato. I valori delle coordinate della tangente rappresentano lo scostamento relativo alle coordinate del punto a cui appartiene la maniglia. In altre parole, il valore [0,0] non crea alcuna curvatura per la tangente in ingresso. Quando si duplica un tracciato, questo metodo può essere passato nel metodo createPath() per il parametro inTangents.  Facoltativamente, potete specificare il tempo in corrispondenza del quale verrà campionato il tracciato.

Parametri:

t Numero, opzionale. Il tempo nella composizione (in secondi) in corrispondenza del quale verrà campionato il tracciato. Il valore predefinito è time (tempo corrente).

Valori restituiti:

Matrice di matrici composte di coppie di numeri, con arrotondamento alla quarta cifra decimale.

  • Metodo outTangents() per tracciati: {pathProperty}.outTangents(t = time) Consente di ottenere le coordinate x e y della maniglia tangente in uscita per tutti i punti di un tracciato. I valori delle coordinate della tangente rappresentano lo scostamento relativo alle coordinate del punto a cui appartiene la maniglia. Il valore [0,0] non crea alcuna curvatura nella tangente in uscita. Quando si duplica un tracciato, questo metodo può essere passato nel metodo createPath() per il parametro outTangents.  Facoltativamente, potete specificare il tempo in corrispondenza del quale verrà campionato il tracciato.

Parametri:

t Numero, opzionale. Il tempo nella composizione (in secondi) in corrispondenza del quale verrà campionato il tracciato. Il valore predefinito è time (tempo corrente).

Valori restituiti:

Matrice di matrici composte di coppie di numeri, con arrotondamento alla quarta cifra decimale.

  • Metodo isClosed() per tracciati{pathProperty}.isClosed()Determina se il tracciato è aperto o chiuso. Restituisce true se il tracciato è chiuso, false se è aperto. Quando si duplica un tracciato, questo metodo può essere passato nel metodo createPath() per il parametro is_closed.

Parametri:

Nessuno

Valori restituiti:

Booleano

  • Metodo pointOnPath() per tracciati {pathProperty}.pointOnPath(percentage = 0.5, t = time)Consente di ottenere le coordinate x e y di un punto arbitrario lungo un tracciato. Il punto viene espresso come percentuale della lunghezza dell’arco del tracciato. 0% è il primo punto e 100% è l’ultimo. Quando il tracciato è chiuso, 0% e 100% restituiscono le stesse coordinate. La percentuale della lunghezza dell’arco viene utilizzata per garantire una velocità uniforme lungo il tracciato. A parte i valori 0% e 100%, le percentuali non sono necessariamente correlate ai punti Bezier del tracciato. Per un tracciato con tre punti, il secondo punto non corrisponde necessariamente al 50%. Questo significa anche che per un tracciato aperto e un tracciato chiuso con punti identici, la percentuale lungo il tracciato aperto non restituisce le stesse coordinate del tracciato chiuso, a causa della lunghezza aggiuntiva del tracciato chiuso.  Facoltativamente, potete specificare il tempo in corrispondenza del quale verrà campionato il tracciato.

Parametri:

percentage Numero compreso tra 0 e 1, opzionale. La percentuale lungo la lunghezza dell’arco del tracciato da campionare. I valori inferiori a 0 e superiori a 1 vengono ritagliati. Il valore predefinito è 0.5.
t Numero, opzionale. Il tempo nella composizione (in secondi) in corrispondenza del quale verrà campionato il tracciato. Il valore predefinito è time (tempo corrente).

Valori restituiti:

Matrice con coppie di numeri.

  • Metodo tangentOnPath() per tracciati {pathProperty}.tangentOnPath(percentage = 0.5, t = time) Consente di ottenere le coordinate x e y calcolate della maniglia tangente in uscita per un punto arbitrario lungo il tracciato. I valori delle coordinate della tangente rappresentano lo scostamento relativo alle coordinate del punto a cui appartiene la maniglia. Il valore [0,0] non crea alcuna curvatura nella tangente in uscita. La maniglia tangente in ingresso è l’inverso di questo valore (si moltiplicano le coordinate x e y per -1). Il punto della tangente è espresso come percentuale della lunghezza dell’arco del tracciato. Le coordinate restituite datangentOnPath() sono calcolate a partire da tale punto e differiscono da quelle restituite da outTangents() se per quella percentuale della lunghezza dell’arco esiste anche un punto definito dall’utente. La distanza lineare tra le coordinate del punto e le coordinate di tangentOnPath() è sempre 1. Potete moltiplicare le coordinate restituite per creare una tangente più lunga, ad esempio (myPath.tangentOnPath() * 100).  Facoltativamente, potete specificare il tempo in corrispondenza del quale verrà campionato il tracciato.

Parametri:

percentage Numero compreso tra 0 e 1, opzionale. La percentuale lungo la lunghezza dell’arco del tracciato da campionare. I valori inferiori a 0 e superiori a 1 vengono ritagliati. Il valore predefinito è 0.5.
t Numero, opzionale. Il tempo nella composizione (in secondi) in corrispondenza del quale verrà campionato il tracciato. Il valore predefinito è time (tempo corrente).

Valori restituiti:

Matrice con coppie di numeri.

  • Metodo normalOnPath() per i tracciati {pathProperty}.normalOnPath(percentage = 0.5, t = time) Consente di ottenere le coordinate x e y calcolate della normale per un punto arbitrario lungo un tracciato. I valori delle coordinate di una normale rappresentano lo scostamento relativo alle coordinate di tale punto. Il valore [0,0] corrisponde a tale punto. Il punto associato alla normale è espresso come percentuale della lunghezza dell’arco del tracciato. Per i dettagli sulla percentuale di lunghezza dell’arco, leggete la descrizione del metodo pointOnPath(). Le coordinate restituite da normalOnPath() sono calcolate a partire dal punto associato alla normale. La distanza lineare tra le coordinate del punto e le coordinate di normalOnPath() è sempre 1. Potete moltiplicare le coordinate restituite per creare una normale più lunga, ad esempio (myPath.normalOnPath() * 100).  Facoltativamente, potete specificare il tempo in corrispondenza del quale verrà campionato il tracciato.

Parametri:

percentage Numero compreso tra 0 e 1, opzionale. La percentuale lungo la lunghezza dell’arco del tracciato da campionare. I valori inferiori a 0 e superiori a 1 vengono ritagliati. Il valore predefinito è 0.5.
t Numero, opzionale. Il tempo nella composizione (in secondi) in corrispondenza del quale verrà campionato il tracciato. Il valore predefinito è time (tempo corrente).

Valori restituiti:

Matrice con coppie di numeri.

  • Metodo createPath() per tracciati {pathProperty}.createPath(points = [[0,0], [100,0], [100,100], [0,100]], inTangents = [], outTangents = [], is_closed = true) Consente di creare un oggetto tracciato da un set di punti e tangenti. I punti sono definiti da una matrice composta di matrici di coppie di numeri che rappresentano le relative coordinate x e y. La lunghezza della matrice deve essere almeno 1. Le maniglie tangente in ingresso e in uscita dei punti sono definite da una matrice composta di matrici di coppie di numeri che rappresentano le relative coordinate x,y dello scostamento. La lunghezza delle matrici delle tangenti deve essere uguale a quella del parametro points. I valori delle coordinate di una tangente rappresentano lo scostamento relativo alle coordinate del punto associato alla tangente. Il valore [0,0] non crea alcuna curvatura nella tangente in ingresso. I metodi points(), inTangents(), outTangents()isClosed() di un tracciato possono essere passati nei parametri points, inTangents, outTangents e is_closed per duplicare un tracciato. I punti e le tangenti di uno stesso tracciato possono essere passati in createPath() con modifiche per generare un risultato diverso. Ad esempio, la seguente espressione comporta la rimozione delle curve dalla maschera Mask 1 perché non passa i parametri inTangents o outTangents:

myMask = mask("Mask 1").path;
myMask.createPath(myMask.points());

L’esempio seguente passa i punti e le tangenti della maschera Mask 1 e li converte in un tracciato aperto impostando is_closed su false:

myMask = mask("Mask 1").path;
myMask.createPath(myMask.points(), myMask.inTangents(), myMask.outTangents(), false);

 

points Una matrice di lunghezza uguale o maggiore a 1 contenente matrici di coppie di numeri che rappresentano le coordinate [x,y] dei punti del tracciato. Obbligatorio a meno che non venga passato nessun parametro (ovvero, createPath()). Il valore predefinito è [[0,0], [100,0], [100,100], [0,100]].
is_closed Booleano, opzionale. Determina se la maschera è chiusa. Se è true, l’ultimo punto verrà collegato al primo punto. Il valore predefinito è true.
inTangents Una matrice che contiene matrici di coppie di numeri che rappresentano le coordinate di scostamento [x,y] delle maniglie tangente in uscita rispetto ai punti del tracciato. Obbligatorio a meno che non venga passato nessun parametro (ovvero, createPath()). La lunghezza della matrice deve essere uguale a quella di points; oppure è possibile passare una matrice vuota ([]), a cui verrà assegnata la stessa lunghezza di point e [0,0] per tutte le tangenti. Il valore predefinito è una matrice vuota.
outTangents Una matrice che contiene matrici di coppie di numeri che rappresentano le coordinate di scostamento [x,y] delle maniglie tangente in ingresso rispetto ai punti del tracciato. Obbligatorio a meno che non venga passato nessun parametro (ovvero, createPath()). La lunghezza della matrice deve essere uguale a quella di points; oppure è possibile passare una matrice vuota ([]), a cui verrà assegnata la stessa lunghezza di point e [0,0] per tutte le tangenti. Il valore predefinito è una matrice vuota.

Valori restituiti:

Oggetto tracciato.

Esempi:

  • Esempio 1

Questo esempio genera un stringa con l’elenco delle coordinate di punti e tangenti dal tracciato Path 1 della forma Shape 1 sul livello Shape Layer 1, per la posizione temporale time=0. Applicate questo esempio alla proprietà di testo sorgente di un livello di testo per rilevare le coordinate e le tangenti in ingresso e in uscita della forma.

pointsList = "";
sampleTime = 0;

myShape = thisComp.layer("Shape Layer 1").content("Shape 1").content("Path 1").path;

for (i = 0; i < myShape.points(sampleTime).length; i++) {
    pointsList += "c: " + myShape.points(sampleTime)[i].toString() + "  i: " + myShape.inTangents(sampleTime)[i].toString() + " o: " + myShape.outTangents(sampleTime)[i].toString() + "\n";
}

pointsList;

  • Esempio 2

Questo esempio legge le coordinate del primo vertice della maschera Mask 1 sul livello Dark Gray Solid 1 e le converte in coordinate della composizione. Applicate questo esempio a un controllo di tipo punto 2D di un effetto, come Scrivi sopra o CC Particle Systems II, in modo che l’effetto possa tracciare o seguire il primo punto di una maschera animata. Duplicate l’effetto e modificate il valore indice dei punti del tracciato ([0]) per tracciare gli altri punti della maschera.

myLayer = thisComp.layer("Dark Gray Solid 1");
myLayer.toComp(myLayer.mask("Mask 1").maskPath.points()[0]);

Animazione basata sui dati (riferimento espressioni)

Metodi di espressione:

  • L’attributo di metraggio sourceText {footageItem}.sourceText restituisce il contenuto di un file .JSON sotto forma di stringa. Il metodo eval() può essere utilizzato per convertire la stringa in una matrice di oggetti sourceData, identico ai risultati dell’attributo sourceData, dalla quale si può fare riferimento ai singoli flussi di dati come attributi gerarchici dei dati. Ad esempio: 

var myData = eval(footage("sample.json").sourceText);

myData.sampleValue;

Tipo:

Stringa, il contenuto del file .JSON; di sola lettura.

  • L’attributo di metraggio sourceData {footageItem}.sourceData restituisce i dati di un file .JSON come una matrice di oggetti sourceData. La struttura del file .JSON determina la dimensione e la complessità della matrice. È possibile fare riferimento ai singoli flussi di dati come attributi gerarchici dei dati. Ad esempio, dato un flusso di dati denominato Color, il codice seguente restituirà il valore di Color dal primo oggetto dati: footage("sample.json").sourceData[0].Color

L’utilizzo tipico consiste nell’assegnare il sourceData di un file .JSON a una variabile, quindi fare riferimento al flusso di dati desiderato. Ad esempio:

var myData = footage("sample.json").sourceData;

myData[0].Color;

Tipo:

Una matrice di oggetti sourceData; di sola lettura.

  • Il metodo di metraggio dataValue() {footageItem}.dataValue(dataPath) restituisce il valore del flusso di dati statico o dinamico specificato in un file .mgJSON. Accetta un valore a matrice singola per definire il tracciato nella gerarchia del flusso di dati desiderato. Ad esempio:

footage("sample.mgjson").dataValue([0]) restituisce i dati del primo elemento secondario.

footage("sample.mgjson").dataValue([1][0]) restituisce i dati del primo elemento secondario nel secondo gruppo.

Parametri:

dataPath  Matrice, obbligatoria. Il tracciato nella gerarchia in un flusso di dati statico o dinamico.

Valori restituiti:

Il valore del flusso di dati.

  • Il metodo di metraggio dataKeyCount() {footageItem}.dataKeyCount(dataPath)restituisce il numero di campioni in un flusso di dati dinamico specificato in un file .mgJSON. Accetta un valore a matrice singola per definire il tracciato nella gerarchia del flusso di dati dinamico desiderato. 

Ad esempio:

  • footage("sample.mgjson").dataKeyCount([0]) restituisce il conteggio dei campioni per il primo elemento secondario
  • footage("sample.mgjson").dataKeyCount([1][0]) restituisce il conteggio dei campioni per il secondo gruppo

Parametri:

dataPath  Matrice, obbligatoria. Il tracciato nella gerarchia in un flusso di dati statico o dinamico.

Valori restituiti:

Il numero di campioni nel flusso di dati dinamico.

  • Il metodo di metraggio dataKeyTimes() {footageItem}.dataKeyTimes(dataPath, t0 = startTime, t1 = endTime)restituisce il tempo in secondi per i campioni di un flusso di dati dinamico specificato in un file .mgJSON. Facoltativamente, potete specificare l’intervallo di tempo da cui restituire i campioni. Per impostazione predefinita, viene restituito il tempo per tutti campioni tra startTime e endTime nel flusso di dati dinamico, come definito dalla proprietà samplesTemporalExtent del flusso di dati nel file .mgJSON. Accetta un valore a matrice singola per definire il tracciato nella gerarchia del flusso di dati dinamico desiderato. 

L’esempio seguente restituisce i tempi dei campioni compresi tra 1 secondo e 3 secondi per il primo elemento secondario:

footage("sample.mgjson").dataKeyTimes([0], 1, 3)

Parametri:

dataPath Matrice, obbligatoria. Il tracciato nella gerarchia in un flusso di dati dinamico.
t0 Numero, opzionale. Il tempo di inizio, in secondi, dell’intervallo da cui restituire i campioni. Il valore predefinito è impostato su startTime.
t1
Numero, opzionale. Il tempo finale, in secondi, dell’intervallo da cui restituire i campioni. Il valore predefinito è impostato su endTime.

Valori restituiti:

Matrice dei numeri che rappresentano i tempi campione.

  • Il metodo dataKeyValues() del metraggio {footageItem}.dataKeyValues(dataPath, t0 = startTime, t1 = endTime)restituisce i valori dei campioni di un flusso di dati dinamico specificato in un file .mgJSON. Facoltativamente, potete specificare l’intervallo di tempo da cui restituire i campioni. Per impostazione predefinita, viene restituito il tempo per tutti campioni tra startTime e endTime nel flusso di dati dinamico, come definito dalla proprietà samplesTemporalExtent del flusso di dati nel file .mgJSON. Accetta un valore a matrice singola per definire il tracciato nella gerarchia del flusso di dati dinamico desiderato. 

Ad esempio:

footage("sample.mgjson").dataKeyValues([0], 1, 3) restituisce i valori dei campioni compresi tra 1 secondo e 3 secondi per il primo elemento secondario.

Parametri:

dataPath Matrice, obbligatoria. Il tracciato nella gerarchia in un flusso di dati dinamico.
t0 Numero, opzionale. Il tempo di inizio, in secondi, dell’intervallo da cui restituire i campioni. Il valore predefinito è impostato su startTime.
t1
Numero, opzionale. Il tempo finale, in secondi, dell’intervallo da cui restituire i campioni. Il valore predefinito è impostato su endTime.

Valori restituiti:

Matrice di numeri che rappresentano i valori campione.

Metodo di conversione colore da Hex a RGB (riferimento espressioni)

Questo metodo di conversione colore, hexToRgb(), converte i valori cromatici esadecimali, ad esempio #FF00FF, a valori cromatici RGBA. Questa conversione può essere utile per collegare i parametri cromatici ai valori cromatici rappresentati come stringhe esadecimali delle fonti di dati CSV/TSV o JSON.

Metodo di espressione:

hexToRgb(hexString) converte un colore da uno spazio terzinato esadecimale in RGB, oppure da uno spazio a quattro esadecimale a RGBA. Per i terzinati esadecimali, i valori predefiniti alfa sono pari a 1.0.

Parametri:

hexString Si tratta di una stringa che rappresenta un terzinato esadecimale (6 cifre, nessun canale alfa) o un quartetto (8 cifre, include il canale alfa) contenente solo numeri o caratteri dalla A alla F. I caratteri opzionali principali 0x, 0X o # sono ignorati. I caratteri oltre le 8 cifre vengono ignorati.

Valori restituiti:

Matrice di valore cromatico RGBA.

Esempi:

Una delle seguenti operazioni sarà ripristinata [1.0, 0.0, 1.0, 1.0]:

  • hexToRgb("FF00FF")
  • hexToRgb("#FF00FF")
  • hexToRgb("0xFF00FF")
  • hexToRgb("0XFF00FFFF") ("0XFF00FFFF") Nota: nel quartetto esadecimale di 8 cifre, le ultime due cifre impostano il valore alfa su 1.0.

Questo prodotto è concesso in licenza in base alla licenza di Attribuzione-Non commerciale-Condividi allo stesso modo 3.0 Unported di Creative Commons.  I post su Twitter™ e Facebook non sono coperti dai termini di Creative Commons.

Note legali   |   Informativa sulla privacy online