2016-12-12 1 views
0

Après beaucoup d'efforts, la caméra mayavi a été orientée dans le même sens qu'une transformation rigide que j'utilise pour positionner mon appareil photo (différent de la caméra mayavi) dans une scène virtuelle. Ensuite, j'utilise mayavi pour générer des captures d'écran que j'insère dans ma scène virtuelle, donc je peux voir clairement quand les captures d'écran et la scène sont correctement alignées lorsque la caméra bouge. Comme je l'ai seulement besoin des captures d'écran de la scène mayavi, je me suis rendu le hors-champ pour cacher la fenêtre mayavi en définissant:La fenêtre Mayavi change légèrement en activant le rendu hors écran

mlab.options.offscreen = True 

avant de créer la figure mayavi (comme expliqué dans here). Au premier coup d'œil, cela a semblé fonctionner, mais j'ai réalisé que les captures d'écran étaient légèrement différentes, comme si le champ de vision de la caméra avait diminué un peu. n'utilisant pas le rendu hors écran. J'ai interrogé les paramètres d'affichage et rien ne semble avoir changé lorsque je suis en train de faire un rendu hors écran. La seule chose que j'ai trouvé en ligne qui peut être liée est la question this, où la dernière réponse fait valoir que la bordure de la fenêtre semble changer quelque chose dans le rendu hors écran. J'ai essayé les suivantes:

mlab.options.offscreen = True 
self.fig = mlab.figure(bgcolor=(1, 1, 1), fgcolor=(0, 0, 0), size=(w, h)) 
scene = self.fig.scene 
cam = scene.camera 
cam.view_angle = self.fov 
ren = scene.renderer 
win = ren._get_vtk_window() 
win.borders = False 

pour tenter d'éteindre ces frontières, mais les captures d'écran que je reçois alors que dans le rendu offscreen sont encore différents de non-rendus hors écran. Une idée de ce qui se passe?

Répondre

0

J'ai trouvé le problème. C'est la barre d'outils qui change la taille de la zone visible et quand je fais le rendu hors écran, il n'y a pas de barre d'outils (et pas de fenêtre).

Si je désactive la barre d'outils comme ceci:

scene = self.fig.scene 
scene._tool_bar.setVisible(False) 

puis-je obtenir les mêmes captures d'écran avec rendu et sans offscreen.