def save_x3d(self, event=None): """Save last renderd scene as u3d.""" from tvtk.api import tvtk fdialog = wx.FileDialog(None, 'Save 3D scene as ...', wildcard='*.x3d', style=wx.FD_SAVE)# | wx.HIDE_READONLY) succ = fdialog.ShowModal() if (succ == wx.ID_OK): fname = fdialog.GetPath() #tvtk.STLWriter(input=self.lastSurf.actor.mapper.input, file_name=fname).write() render_window = self.dsviewer.f3d.scene.render_window x3d_exporter = tvtk.X3DExporter(file_name=fname, input=render_window, binary=0) x3d_exporter.write() fdialog.Destroy()
def save_x3d(self, file_name): """Save scene to an X3D file (http://www.web3d.org/x3d/). Keyword Arguments: file_name -- File name to save to. """ # Make sure the exporter is available. if not hasattr(tvtk, 'X3DExporter'): msg = "Saving as a X3D file does not appear to be "\ "supported by your version of VTK." print msg return if len(file_name) != 0: ex = tvtk.X3DExporter() ex.input = self._renwin ex.file_name = file_name ex.update() ex.write()
def scene_to_x3d(scene): ex = tvtk.X3DExporter() ex.input = scene.render_window lm = scene.light_manager.light_mode # The default raymond mode is too bright so switch back to vtk mode. scene.light_manager.light_mode = 'vtk' ex.write_to_output_string = True ex.update() ex.write() # Switch back scene.light_manager.light_mode = lm if _local: url_base = "nbextensions/mayavi/x3d" else: url_base = "https://www.x3dom.org/download/1.7.2" x3d_elem = _fix_x3d_header(ex.output_string) html = ''' %s <script type="text/javascript"> require(["%s/x3dom"], function(x3dom) { var x3dom_css = document.getElementById("x3dom-css"); if (x3dom_css === null) { var l = document.createElement("link"); l.setAttribute("rel", "stylesheet"); l.setAttribute("type", "text/css"); l.setAttribute("href", require.toUrl("%s/x3dom.css")); l.setAttribute("id", "x3dom-css"); $("head").append(l); } if (typeof x3dom != 'undefined') { x3dom.reload(); } else if (typeof window.x3dom != 'undefined') { window.x3dom.reload(); } }) </script> ''' % (x3d_elem, url_base, url_base) return html