Home | Trees | Indices | Help |
|
---|
|
1 #!/usr/bin/env python 2 # 3 # The Vision Egg: ScreenPositionServer 4 # 5 # Copyright (C) 2001-2003 Andrew Straw. 6 # Author: Andrew Straw <astraw@users.sourceforge.net> 7 # URL: <http://www.visionegg.org/> 8 # 9 # Distributed under the terms of the GNU Lesser General Public License 10 # (LGPL). See LICENSE.TXT that came with this file. 11 # 12 # $Id$ 13 14 """Handle 3D perspective projection (server-side)""" 15 16 import Pyro.core 17 18 import sys, os, string 19 import VisionEgg.Core 20 import VisionEgg.FlowControl 21 import VisionEgg.SphereMap 22 import VisionEgg.Textures 23 import VisionEgg.PyroHelpers 24 25 from VisionEgg.PyroApps.ScreenPositionGUI import ScreenPositionParameters 26 27 __version__ = VisionEgg.release_name 28 __cvs__ = string.split('$Revision$')[1] 29 __date__ = string.join(string.split('$Date$')[1:3], ' ') 30 __author__ = 'Andrew Straw <astraw@users.sourceforge.net>' 3133 """Encapsulates all parameters controlling screen position"""83 84 # Don't do anything unless this script is being run 85 if __name__ == '__main__': 86 87 pyro_server = VisionEgg.PyroHelpers.PyroServer() 88 89 # get Vision Egg stimulus ready to go 90 screen = VisionEgg.Core.Screen.create_default() 91 filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data/az_el.png") 92 texture = VisionEgg.Textures.Texture(filename) 93 sphere_map = VisionEgg.SphereMap.SphereMap(texture=texture, 94 shrink_texture_ok=1, 95 stacks=100, 96 slices=100) 97 temp = ScreenPositionParameters() 98 99 projection = VisionEgg.Core.PerspectiveProjection(temp.left, 100 temp.right, 101 temp.bottom, 102 temp.top, 103 temp.near, 104 temp.far) 105 viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[sphere_map],projection=projection) 106 p = VisionEgg.FlowControl.Presentation(viewports=[viewport]) 107 108 # now hand over control of stimulus to GratingExperimentMetaController 109 projection_controller = ScreenPositionMetaController(p,projection) 110 pyro_server.connect(projection_controller,"projection_controller") 111 112 # get listener controller and register it 113 p.add_controller(None,None, pyro_server.create_listener_controller()) 114 115 # enter endless loop 116 p.run_forever() 11735 Pyro.core.ObjBase.__init__(self) 36 self.meta_params = ScreenPositionParameters() 37 if not isinstance(presentation,VisionEgg.FlowControl.Presentation): 38 raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation") 39 if not isinstance(projection,VisionEgg.Core.PerspectiveProjection): 40 raise ValueError("Expecting instance of VisionEgg.Core.PerspectiveProjection") 41 self.p = presentation 42 self.proj = projection43 4648 if isinstance(new_parameters, ScreenPositionParameters): 49 self.meta_params = new_parameters 50 else: 51 raise ValueError("Argument to set_parameters must be instance of ScreenPositionParameters") 52 self.update()5355 left = self.meta_params.left 56 right = self.meta_params.right 57 bottom = self.meta_params.bottom 58 top = self.meta_params.top 59 near = self.meta_params.near 60 far = self.meta_params.far 61 62 eye = (self.meta_params.eye[0], 63 self.meta_params.eye[1], 64 self.meta_params.eye[2]) 65 66 center = (self.meta_params.center[0], 67 self.meta_params.center[1], 68 self.meta_params.center[2]) 69 70 up = (self.meta_params.up[0], 71 self.meta_params.up[1], 72 self.meta_params.up[2]) 73 74 temp = VisionEgg.Core.PerspectiveProjection(left,right,bottom,top,near,far) 75 temp.look_at(eye,center,up) 76 self.proj.parameters.matrix = temp.get_matrix()77 8082 self.p.parameters.quit = 1
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0beta1 on Sat Jun 7 09:06:51 2008 | http://epydoc.sourceforge.net |