Sto creando alcune animazioni di base usando d3.js, come animazioni con grafici a barre che mostrano una transizione tra due serie di dati. In definitiva, voglio portare questa animazione in Adobe AfterEffects da includere come parte di un video più grande. Voglio esportare l'animazione web come una serie di fotogrammi vettoriali (ai o svg o png se necessario) da importare in After Effects o Illustrator. Come posso fare questo? Grazie!Come esportare l'animazione d3.js in cornici vettoriali per creare una sequenza AfterEffects?
risposta
Questo in realtà potrebbe essere abbastanza semplice con il modo in cui d3.js esegue le transizioni! Dato che d3.js cambia direttamente gli elementi DOM per fare le transizioni, puoi semplicemente salvare gli elementi DOM ad ogni 1/30 di secondo. Ecco un esempio completo:
<html>
<head>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<style>
svg { border:1px solid black; }
</style>
</head>
<body>
<svg id="svg" width="480" height="240" xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" cy="50" r="40" stroke="black"
stroke-width="2" fill="red" />
</svg><br/>
<button id="b1" type="button">Animate</button>
<script type="text/javascript">
var svg = d3.select("svg");
var b1 = d3.select("#b1");
var duration = 1000;
var nTimes = 30;
var x = new XMLSerializer();
var n = 0;
function outputToConsole() {
console.log(x.serializeToString(document.getElementById("svg")));
if(n++ >= 30)
return;
setTimeout(outputToConsole, 33); // 33 milliseconds is close to 1/30th of a second
}
b1.on("click", function() {
svg.select("circle").transition().duration(duration).attr("cx",150);
outputToConsole();
});
</script>
</body>
</html>
L'ultimo passo sarebbe quello di salvare ciascuno di tali elementi SVG pressione forniti in singoli file .svg su disco (anziché semplicemente l'output alla console, come nell'esempio di cui sopra). Non l'ho ancora provato, ma probabilmente si potrebbe usare qualcosa come FileSaver.js. Quindi, facoltativamente, i file .svg potrebbero essere convertiti in file .png usando qualcosa come ImageMagick.
AggiornamentoNota ImageMagick non converte sempre i file svg correttamente. Vedi [questo post] (http://stackoverflow.com/questions/6068751/svg-converting-using-imagemagick-doesnt-apply-a-translation-correctly) – t2k32316
Ho preso la risposta sopra e ho aggiunto il passaggio finale, per favore controlla il mio bl.ock http://bl.ocks.org/sdbernard/afbb899e60902ad42064 Questo salva lo svg ogni 1/40 di secondo per corrispondere a una frequenza di fotogrammi di 25 fps in After Effects –
- 1. Come creare uno "slopegraph" in d3.js
- 2. Come creare video dalle sue cornici iPhone
- 3. D3.js, necessario evento click in d3.js
- 4. geochart in d3.js
- 5. Come ruotare una tabella con d3.js?
- 6. Transizioni D3.js
- 7. d3.js: come creare "cluster di grafi diretti"
- 8. Area impilata in D3.js
- 9. Come posso utilizzare d3.js per creare una linea di regressione trend/esponenziale?
- 10. Disegno in tempo reale di una linea in D3.js
- 11. Bounding box in D3.js
- 12. d3 js nodi come immagini
- 13. Cornici nere in AVMutableComposition
- 14. d3.js crea una griglia di rettangoli
- 15. Ordina dati per il percorso d3.js
- 16. D3.js: eseguire una transizione continuamente?
- 17. Come rimuovere un attributo in D3.js?
- 18. ridimensionamento proiezioni d3.js
- 19. D3.js: rimuovere force.drag da una selezione
- 20. d3.js e document.onReady
- 21. d3.js salva stati
- 22. csv a matrice in d3.js
- 23. Come creare una sequenza partizionata di PostgreSQL?
- 24. Visualizzazione D3.js con node.js
- 25. d3.js t.map non è una funzione
- 26. D3.js vs Raphael.js
- 27. D3 JS Data Filtering
- 28. Come esportare e quindi importare una scena con Three JS?
- 29. Emacs hook per nuove cornici
- 30. D3.js - Uscita animata per l'oggetto nidificato
: Sto lavorando a una soluzione basata su questo [esempio] (http://d3export.cancan.cshl.edu/). Fin qui tutto bene. Sto chiamando form.submit usando setInterval() nel mio html, e quindi lo script perl crea un download di file con i dati dal nodo svg. Il problema è che ho bisogno di 30 fotogrammi/file al secondo, e finora non sembra che lo script possa funzionare così velocemente. Se provo a creare 30 file da un'animazione di 1 secondo, nella cartella Download vengono visualizzati solo circa 6 o 7 file. – Carrie
Hai fatto molti più progressi nella tua implementazione? Sto cercando di trovare una soluzione simile, ma finora le soluzioni più vicine che ho trovato utilizzano qualcosa come node.js, PhantomJS, jsdom, ecc. Per salvare SVG creati dinamicamente, ma non penso che siano responsabili delle transizioni. .. (es. [questa soluzione] (http://eng.wealthfront.com/2011/12/converting-dynamic-svg-to-png-with.html)). – t2k32316
Ciao, qualche novità su questo? Voglio anche implementarlo. Forse insieme possiamo fare di più. – VividD