Re: key press event in vtkWeb
Sebastien Jourdain via vtkusers <[email protected]>
| Newsgroups | gmane.comp.lib.vtk.user |
|---|---|
| Message-ID | <CABObKxczcdWRPySL9HvYMRLY1WdL8bQ=YE8rrQdzcpMd36zq0w@mail.gmail.com> |
The event handling needs to happen on the client side (JS) which should then trigger a RPC call to the server to adjust the resolution of the server data. I don't think we register any key listener in the browser that's why they don't get forwarded to the server. On Mon, Dec 3, 2018 at 8:47 AM ivan rodriguez <[email protected]> wrote: > Hello, > > I'm using the module vtkWeb for Remote Rendering, following this simple > python example: > > *https://github.com/dmreagan/vtk-remote-render/blob/master/server/vtk_server.py > <https://github.com/dmreagan/vtk-remote-render/blob/master/server/vtk_server.py>* > > and I have modified it in order to include a keyPress event. The code > works but the > key event is not working . Please find my code below (the only > modification from the link is the class MyInteractorStyle ). > > I'll really appreciate any help with this! > > Thanks !! > > > > > > ########################################################################## > ########################################################################## > > # import to process args > import sys > import os > > # import vtk modules. > import vtk > from vtk.web import protocols > from vtk.web import wslink as vtk_wslink > from wslink import server > > try: > import argparse > except ImportError: > # since Python 2.6 and earlier don't have argparse, we simply provide > # the source for the same as _argparse and we use it instead. > from vtk.util import _argparse as argparse > > # > ============================================================================= > # Create custom ServerProtocol class to handle clients requests > # > ============================================================================= > > > class MyInteractorStyle(vtk.vtkInteractorStyleTrackballCamera): > > def __init__(self,renderer, cone): > self.parent = renderer.GetInteractor() > self.resolution=5 > self.cone = cone > > self.AddObserver("KeyPressEvent",self.keyPressEvent) > > def keyPressEvent(self,obj,event): > key = self.parent.GetKeySym() > if key == 'l': > print(key) > self.cone.SetResolution(self.resolution) > self.resolution+=1 > return > > > > > class _WebCone(vtk_wslink.ServerProtocol): > > # Application configuration > view = None > authKey = "wslink-secret" > > def initialize(self): > global renderer, renderWindow, renderWindowInteractor, cone, > mapper, actor > > # Bring used components > self.registerVtkWebProtocol(protocols.vtkWebMouseHandler()) > self.registerVtkWebProtocol(protocols.vtkWebViewPort()) > > self.registerVtkWebProtocol(protocols.vtkWebViewPortImageDelivery()) > > self.registerVtkWebProtocol(protocols.vtkWebViewPortGeometryDelivery()) > > # Update authentication key to use > self.updateSecret(_WebCone.authKey) > > # Create default pipeline (Only once for all the session) > if not _WebCone.view: > # VTK specific code > renderer = vtk.vtkRenderer() > renderWindow = vtk.vtkRenderWindow() > renderWindow.AddRenderer(renderer) > > renderWindowInteractor = vtk.vtkRenderWindowInteractor() > renderWindowInteractor.SetRenderWindow(renderWindow) > > > > cone = vtk.vtkConeSource() > mapper = vtk.vtkPolyDataMapper() > actor = vtk.vtkActor() > > mapper.SetInputConnection(cone.GetOutputPort()) > actor.SetMapper(mapper) > > > renderWindowInteractor.SetInteractorStyle(MyInteractorStyle(renderWindow, > cone)) > > renderer.AddActor(actor) > renderer.ResetCamera() > renderWindow.Render() > > # VTK Web application specific > _WebCone.view = renderWindow > self.getApplication().GetObjectIdMap().SetActiveObject("VIEW", > renderWindow) > > # renderWindowInteractor.Start() > > # > ============================================================================= > # Main: Parse args and start server > # > ============================================================================= > > if __name__ == "__main__": > # Create argument parser > parser = argparse.ArgumentParser(description="VTK/Web Cone > web-application") > > # Add default arguments > server.add_arguments(parser) > > # Extract arguments > args = parser.parse_args() > > # Configure our current application > _WebCone.authKey = args.authKey > > # Start server > server.start_webserver(options=args, protocol=_WebCone) > > _______________________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the VTK FAQ at: > http://www.vtk.org/Wiki/VTK_FAQ > > Search the list archives at: http://markmail.org/search/?q=vtkusers > > Follow this link to subscribe/unsubscribe: > https://public.kitware.com/mailman/listinfo/vtkusers > _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ Search the list archives at: http://markmail.org/search/?q=vtkusers Follow this link to subscribe/unsubscribe: https://public.kitware.com/mailman/listinfo/vtkusers