Auf meinem Computer bei der Arbeit enthalten meine rgl-Snapshots nur die obere linke Ecke des angezeigten GL-Geräts. Für Python mit mayavi funktioniert der Onscreen-Snapshot. Das Verwenden des Offscreen-Renderings führt jedoch zu demselben Fehler. Leider ist mein Problem nicht reproduzierbar, da zu Hause mit dem gleichen Skript funktioniert wie es sollte. Daher denke ich, dass es mit Mesa verwandt sein muss, aber ich habe keine Ahnung, wo ich nach meiner Fehlkonfiguration suchen soll. Beide Computer arbeiten unter Debian-Tests, aber ich habe dieses Problem schon seit einiger Zeit. Ich fand einen Kommentar in another thread über das gleiche Problem, aber keine Lösung wurde zur Verfügung gestellt.GL-Snapshots enthalten nur die obere linke Ecke
ist die R-Code Ich lief:
library(rgl)
shade3d(cylinder3d(matrix(c(1, -1, 2, -2, 0, 5), 2)), color="red")
rgl.viewpoint(0, -55, fov=30, zoom=0.6)
rgl.snapshot("rgl2.png")
Resultierende in rgl.snapshot, sollte aber rgl screenshot
Der Python-Code I entspricht
from mayavi import mlab
kwargs = dict(color=(.0,.33,.0), mode='cone', resolution=20, scale_mode='none', scale_factor=0.12, opacity=0.67)
cone = mlab.quiver3d(0, 0, 0, -1.0, 0.0, -1.0, **kwargs)
mlab.savefig('mayavi.png')
mlab.close()
from tvtk.api import tvtk
from tvtk.common import configure_input_data
mlab.options.offscreen = True
fig=mlab.figure()
kwargs = dict(color=(.0,.33,.0), mode='cone', resolution=20, scale_mode='none', scale_factor=0.12, opacity=0.67)
cone = mlab.quiver3d(0, 0, 0, -1.0, 0.0, -1.0, **kwargs)
rw = tvtk.RenderWindow(size=fig.scene._renwin.size, off_screen_rendering=1)
rw.add_renderer(fig.scene._renderer)
w2if = tvtk.WindowToImageFilter()
w2if.magnification = fig.scene.magnification
w2if.input = rw
ex = tvtk.PNGWriter()
fname = 'mayavi_offscreen.png'
ex.file_name = fname
configure_input_data(ex, w2if.output)
w2if.update()
ex.write()
Die Ergebnisse sind verwendet werden. Die erste (mlab.savefig) funktioniert so, wie sie sollte, aber die zweite (ex.write) resultiert nur in der oberen linken Ecke wie in dem obigen R-Beispiel.
Hat jemand das gleiche Problem erfahren und es gelöst? Irgendwelche Vorschläge? Weitere Informationen benötigt (p.glxinfo, ...)?
Dank und freundlichen Grüßen
Jörg
Klingt wie Ihr MesaGL-Treiber inkonsistente Größeninformationen über die Anzeige zurückgibt. Keine Ahnung, wie Sie das beheben können, außer dass Sie sicherstellen, dass Sie das neueste Update beider Grafikkartentreiber und Mesa haben. – user2554330