Quando si esegue MATLAB in una modalità batch senza un display (ad esempio con la variabile di ambiente $DISPLAY
UNIX non impostata, o con il flag matlab -nodisplay
all'avvio), normalmente non è possibile utilizzare il renderizzatore opengl
. Invece devi accontentarti del renderizzatore painters
. Per esempio:Tutto il testo viene perso quando si usa il renderer openGL in modalità batch
>> print -dpng -opengl fig.png
Warning: OpenGL mode can not be used in terminal emulation mode; ignoring option.
Purtroppo, painters
dà spesso scarsi risultati quando si lavora con le scene 3D con patch, l'illuminazione, la trasparenza, ecc .. Ecco un semplice esempio (si utilizza un display per ora) in cui si perde l'alfa:
peaks
alpha(0.5)
print -dpng -opengl peaks_opengl.png
print -dpng -painters peaks_painters.png
causa di queste limitazioni, ero molto emozionato per trovare la maggior parte privi di documenti-01.230.funzione MATLAB incorporata, che fa in qualche modo consente di utilizzare il renderer opengl
senza un display. Questa funzione è alla base della straordinaria funzione export_fig()
. Ora sono in grado di salvare molto rapidamente figure 3D di alta qualità in modalità batch.
Tuttavia, c'è un problema: Tutto il testo viene perso quando la cifra viene passata attraverso la funzione hardcopy()
. Per esempio:
plot(1,1)
title('TEST')
>> A = hardcopy(gcf, '-Dopengl', '-r300');
Warning: Failed to draw text string
> In /Applications/MATLAB_R2010b.app/toolbox/matlab/graphics/hardcopy.p>hardcopy at 21
La figura uscita manca completamente qualsiasi testo (nessun asse zecche etichette e nessun titolo):
export_fig axis.png -opengl
Quindi quello che sto chiedendo is: Come è possibile ottenere il renderer opengl
per lavorare con il testo in modalità batch? C'è un modo per far funzionare il testo con la funzione hardcopy()
? Forse un modo per rasterizzare il testo in anticipo? O un modo per combinare una copia del testo painters
e una copia cartacea del opengl
? In alternativa, c'è un percorso completamente diverso per fare questo lavoro rispetto alla funzione hardcopy()
? Inoltre, è improbabile che il problema si verifichi con l'installazione del mio sistema, poiché è riproducibile sia con Mac OS che con Ubuntu.
Hai letto questo [post di Mathworks] (http://www.mathworks.com/matlabcentral/newsreader/view_thread/300393) su un font di testo mancante? –
@JuanMellado Grazie per la ricerca. Mi sono imbattuto in quel thread prima, ma non credo che il font sia un problema qui. Posso usare uno qualsiasi dei miei font in 'listfonts' e si esportano bene con i pittori sia in modalità interattiva che batch e con opengl in modalità interattiva. Non posso esserne sicuro, ma quell'altro thread avrebbe potuto confondere 2 problemi separati. –