2015-02-27 17 views
10

Ho una scena 3D generata con il pacchetto R rgl.Salvataggio della scena 3D rgl in u3d (per l'integrazione .pdf)

  • Posso salvarlo in formato RTL e OBJ tramite le funzioni Rgl, ma queste funzioni non supportano i colori.
  • Posso salvarlo in WebGL, ma non riesco a trovare un convertitore WebGL per .u3d, né alcun modo per inserire contenuto WebGL in un file .pdf (generato con LaTeX).
  • posso salvarlo in formato PLY e poi esportare in .u3d (ad esempio utilizzando MeshLab), ma mi dà il seguente errore:

    Error in if (sum(normals[1:3, it[j, i]] * normal) < 0) normals[, it[j, : 
    missing value where TRUE/FALSE needed 
    

che davvero non so come risolvere.

Here è un file di esempio per riprodurre il problema. Per riprodurre semplicemente scaricare il file nella directory di lavoro, eseguire ed eseguire R:

library(rgl) 
load("alps3d.Rdata") #This loads the alps3d variable 
plot3d(alps3d) 
writePLY("alps3d.ply") 

Come posso salvare la scena 3D in un formato che può essere itegrated in .pdf utilizzando LaTeX?

+0

Il file di esempio non è più disponibile per il download dal sito collegato. Puoi caricarlo di nuovo o hai un altro modo semplice per riprodurre il problema con PLY? – WhiteViking

+0

@WhiteViking grazie per avermi informato. Ho aggiornato il link per il download, dovrebbe funzionare ora. – AF7

+2

http://stackoverflow.com/q/12781129/471093 e http://r.789695.n4.nabble.com/Exporting-an-rgl-graph-td1872712.html potrebbe rivelarsi utile – baptiste

risposta

3

Si dovrebbe provare writeASY(). Scrive per Asymptote, che può produrre PRC piuttosto che U3D, ma può essere abbastanza buono. Ho provato la scena campione e sono necessari circa 5 minuti per caricare il risultato in Acrobat Reader, ma alla fine carica e funziona.

writeASY() è una recente aggiunta a rgl; dovrai prenderlo dalle copie di R-Forge o Github.

+2

Questo è utile @ user2554330. Se l'hai visto, potresti indicarci una risorsa su come usare l'output di writeASY() in un documento LaTeX per completezza? (A meno che non si tratti più di una domanda LaTeX ora?) La documentazione e le pagine di aiuto standard che ho visto non sembrano coprire esattamente ciò che è richiesto e ho avuto un sacco di errori di compilazione usando i consigli di http://tex.stackexchange.com/questions/111655/semplice- way-to-switch-linea-asintoto figure-on-and-off –

1

È possibile utilizzare rgl.postscript, che consente di esportare in vari formati, compreso il pdf. Bene, il risultato non è eccezionale, ma dovrebbe dipendere dal tipo di trama.

> x <- y <- seq(-10, 10, length = 20) 
> z <- outer(x, y, function(x, y) x^2 + y^2) 
> persp3d(x, y, z, col = 'lightblue') 
> rgl.postscript("persp3d.pdf", "pdf") 

enter image description here

È possibile anche l'esportazione verso tex, che permette di fare alcune modifiche manuali.