def __init__( self, SCENEGRAPH=None, SCREEN_RESOLUTION=avango.gua.Vec2ui(1024, 1024) # in pixels , SCREEN_DIMENSIONS=avango.gua.Vec2(0.3, 0.3) # in meter , SCREEN_MATRIX=avango.gua.make_identity_mat(), STEREO_FLAG=False, STEREO_MODE=avango.gua.StereoMode.ANAGLYPH_RED_CYAN, HEADTRACKING_FLAG=False, HEADTRACKING_STATION=None, TRACKING_TRANSMITTER_OFFSET=avango.gua.make_identity_mat()): ### resources ### self.shell = GuaVE() ## init window self.window = avango.gua.nodes.GlfwWindow(Title="window") self.window.Size.value = SCREEN_RESOLUTION self.window.LeftResolution.value = SCREEN_RESOLUTION self.window.RightResolution.value = SCREEN_RESOLUTION self.window.EnableVsync.value = False avango.gua.register_window(self.window.Title.value, self.window) ## init viewer self.viewer = avango.gua.nodes.Viewer() self.viewer.SceneGraphs.value = [SCENEGRAPH] self.viewer.Windows.value = [self.window] self.viewer.DesiredFPS.value = 200.0 # in Hz ## init passes & render pipeline description self.resolve_pass = avango.gua.nodes.ResolvePassDescription() self.resolve_pass.EnableSSAO.value = True self.resolve_pass.SSAOIntensity.value = 2.0 #self.resolve_pass.SSAOFalloff.value = 10.0 self.resolve_pass.SSAORadius.value = 4.0 #self.resolve_pass.EnableScreenSpaceShadow.value = True self.resolve_pass.EnvironmentLightingColor.value = avango.gua.Color( 0.2, 0.2, 0.2) self.resolve_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED self.resolve_pass.Exposure.value = 1.0 self.resolve_pass.BackgroundMode.value = avango.gua.BackgroundMode.COLOR self.resolve_pass.BackgroundColor.value = avango.gua.Color( 0.45, 0.5, 0.6) #self.resolve_pass.BackgroundMode.value = avango.gua.BackgroundMode.SKYMAP_TEXTURE #self.resolve_pass.BackgroundTexture.value = "/opt/guacamole/resources/skymaps/stars.jpg" #self.resolve_pass.BackgroundTexture.value = "/opt/guacamole/resources/skymaps/bath.jpg" self.pipeline_description = avango.gua.nodes.PipelineDescription( Passes=[]) self.pipeline_description.EnableABuffer.value = True self.pipeline_description.Passes.value.append( avango.gua.nodes.TriMeshPassDescription()) self.pipeline_description.Passes.value.append( avango.gua.nodes.LightVisibilityPassDescription()) self.pipeline_description.Passes.value.append(self.resolve_pass) self.pipeline_description.Passes.value.append( avango.gua.nodes.TexturedScreenSpaceQuadPassDescription()) self.pipeline_description.Passes.value.append( avango.gua.nodes.SSAAPassDescription()) ## init navigation node self.navigation_node = avango.gua.nodes.TransformNode( Name="navigation_node") SCENEGRAPH.Root.value.Children.value.append(self.navigation_node) ## init head node self.head_node = avango.gua.nodes.TransformNode(Name="head_node") self.navigation_node.Children.value.append(self.head_node) if HEADTRACKING_FLAG == True: self.headtracking_sensor = avango.daemon.nodes.DeviceSensor( DeviceService=avango.daemon.DeviceService()) self.headtracking_sensor.Station.value = HEADTRACKING_STATION self.headtracking_sensor.TransmitterOffset.value = TRACKING_TRANSMITTER_OFFSET self.headtracking_sensor.ReceiverOffset.value = avango.gua.make_identity_mat( ) self.head_node.Transform.connect_from( self.headtracking_sensor.Matrix) else: self.head_node.Transform.value = avango.gua.make_trans_mat( 0.0, 0.0, 0.6) # default head position ## init screen node self.screen_node = avango.gua.nodes.ScreenNode(Name="screen_node") self.screen_node.Width.value = SCREEN_DIMENSIONS.x self.screen_node.Height.value = SCREEN_DIMENSIONS.y self.screen_node.Transform.value = SCREEN_MATRIX self.navigation_node.Children.value.append(self.screen_node) ## init camera node self.camera_node = avango.gua.nodes.CameraNode(Name="camera_node") self.camera_node.SceneGraph.value = SCENEGRAPH.Name.value self.camera_node.LeftScreenPath.value = self.screen_node.Path.value self.camera_node.RightScreenPath.value = self.screen_node.Path.value self.camera_node.NearClip.value = 0.1 # in meter self.camera_node.FarClip.value = 150.0 # in meter self.camera_node.Resolution.value = SCREEN_RESOLUTION self.camera_node.OutputWindowName.value = self.window.Title.value self.camera_node.PipelineDescription.value = self.pipeline_description self.head_node.Children.value = [self.camera_node] self.camera_node.EnableStereo.value = STEREO_FLAG self.camera_node.BlackList.value = ["invisible"] if STEREO_FLAG == True: self.window.StereoMode.value = STEREO_MODE #self.set_eye_distance(-0.064) self.set_eye_distance(0.064) ## init FPS gui sub-class self.fpsGUI = FPSGui(PARENT_NODE=self.screen_node, WINDOW=self.window, VIEWER=self.viewer)
def __init__(self, SCENEGRAPH=None, PARENT_NODE=None, STEREO_MODE="mono", HEADTRACKING_FLAG=False): ### parameters ### #self.window_size = avango.gua.Vec2ui(2560, 1440) # in pixels self.window_size = avango.gua.Vec2ui(1920, 1200) # in pixels #self.window_size = avango.gua.Vec2ui(1280, 720) # in pixels self.screen_dimensions = avango.gua.Vec2(0.595, 0.335) # in meter self.screen_mat = avango.gua.make_trans_mat(0.0, 0.0, 0.0) ### resources ### self.shell = GuaVE() ## init window self.window = avango.gua.nodes.GlfwWindow(Title="window") self.window.EnableFullscreen.value = True self.window.Size.value = self.window_size self.window.LeftResolution.value = self.window_size avango.gua.register_window(self.window.Title.value, self.window) ## init viewer self.viewer = avango.gua.nodes.Viewer() self.viewer.SceneGraphs.value = [SCENEGRAPH] self.viewer.Windows.value = [self.window] self.viewer.DesiredFPS.value = 60.0 # in Hz ## init passes & render pipeline description self.resolve_pass = avango.gua.nodes.ResolvePassDescription() self.resolve_pass.EnableSSAO.value = True self.resolve_pass.SSAOIntensity.value = 3.0 self.resolve_pass.SSAOFalloff.value = 10.0 self.resolve_pass.SSAORadius.value = 2.0 #self.resolve_pass.EnableScreenSpaceShadow.value = True self.resolve_pass.EnvironmentLightingColor.value = avango.gua.Color( 0.2, 0.2, 0.2) self.resolve_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED self.resolve_pass.Exposure.value = 1.0 #self.resolve_pass.BackgroundMode.value = avango.gua.BackgroundMode.COLOR #self.resolve_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6) self.resolve_pass.BackgroundMode.value = avango.gua.BackgroundMode.SKYMAP_TEXTURE self.resolve_pass.BackgroundTexture.value = "/opt/guacamole/resources/skymaps/DH216SN.png" #self.resolve_pass.BackgroundTexture.value = "/opt/guacamole/resources/skymaps/warehouse.jpg" self.pipeline_description = avango.gua.nodes.PipelineDescription( Passes=[]) self.pipeline_description.EnableABuffer.value = False self.pipeline_description.Passes.value.append( avango.gua.nodes.TriMeshPassDescription()) #self.pipeline_description.Passes.value.append(avango.gua.nodes.TexturedQuadPassDescription()) self.pipeline_description.Passes.value.append( avango.gua.nodes.LightVisibilityPassDescription()) #self.pipeline_description.Passes.value.append(avango.gua.nodes.BBoxPassDescription()) self.pipeline_description.Passes.value.append(self.resolve_pass) self.pipeline_description.Passes.value.append( avango.gua.nodes.TexturedScreenSpaceQuadPassDescription()) self.pipeline_description.Passes.value.append( avango.gua.nodes.SSAAPassDescription()) ## init navigation node self.navigation_node = avango.gua.nodes.TransformNode( Name="navigation_node") PARENT_NODE.Children.value.append(self.navigation_node) ## init head node self.head_node = avango.gua.nodes.TransformNode(Name="head_node") self.head_node.Transform.value = avango.gua.make_trans_mat( 0.0, 0.0, 0.6) self.navigation_node.Children.value.append(self.head_node) if HEADTRACKING_FLAG == True: self.headtracking_sensor = avango.daemon.nodes.DeviceSensor( DeviceService=avango.daemon.DeviceService()) self.headtracking_sensor.Station.value = "tracking-lcd-glasses-1" self.headtracking_sensor.TransmitterOffset.value = avango.gua.make_identity_mat( ) self.headtracking_sensor.ReceiverOffset.value = avango.gua.make_identity_mat( ) self.head_node.Transform.connect_from( self.headtracking_sensor.Matrix) ## init screen node self.screen_node = avango.gua.nodes.ScreenNode(Name="screen_node") self.screen_node.Width.value = self.screen_dimensions.x self.screen_node.Height.value = self.screen_dimensions.y self.screen_node.Transform.value = self.screen_mat self.navigation_node.Children.value.append(self.screen_node) ## init camera node self.camera_node = avango.gua.nodes.CameraNode(Name="camera_node") self.camera_node.SceneGraph.value = SCENEGRAPH.Name.value self.camera_node.LeftScreenPath.value = self.screen_node.Path.value self.camera_node.NearClip.value = 0.1 # in meter self.camera_node.FarClip.value = 100.0 # in meter self.camera_node.Resolution.value = self.window_size self.camera_node.OutputWindowName.value = self.window.Title.value self.camera_node.PipelineDescription.value = self.pipeline_description self.head_node.Children.value = [self.camera_node] if STEREO_MODE == "anaglyph": self.camera_node.EnableStereo.value = True self.camera_node.RightScreenPath.value = self.screen_node.Path.value self.window.StereoMode.value = avango.gua.StereoMode.ANAGLYPH_RED_CYAN self.window.RightResolution.value = self.window_size self.set_eye_distance(0.064) ## intit FPS gui sub-class self.fpsGUI = FPSGui(PARENT_NODE=self.screen_node, WINDOW=self.window, VIEWER=self.viewer)