Example #1
0
def start(filename):

    # setup scenegraph
    graph = nodes.SceneGraph(Name="scenegraph")

    nrp_root = nrp_nodes.NRPNode()
    nrp_root.Transform.value = make_trans_mat(-3.6, -1.05, -6.0)
    nrp_root.Name.value = "nrp_root"

    nrp_interactive = nrp_nodes.NRPInteractiveNode()
    nrp_interactive.Name.value = "interactive_transform"

    loader = nodes.TriMeshLoader()

    wrapper = nodes.TransformNode(Name="wrapper")
    baseball = loader.create_geometry_from_file(
        "interactive_baseball_2", "data/objects/sphere.obj",
        avango.gua.LoaderFlags.DEFAULTS | avango.gua.LoaderFlags.MAKE_PICKABLE)
    baseball.Material.value.set_uniform("Color",
                                        avango.gua.Vec4(1., 0., 0., 1.0))
    baseball.Material.value.set_uniform("Roughness", 0.6)
    baseball.Material.value.set_uniform("Metalness", 0.1)
    baseball.Transform.value = avango.gua.make_trans_mat(
        0.0, 0.0, -2.0) * avango.gua.make_scale_mat(0.1, 0.1, 0.1)
    wrapper.Children.value.append(baseball)
    nrp_interactive.Children.value.append(wrapper)

    size = Vec2ui(2560, 1440)

    window = nodes.GlfwWindow(Title="HBP NRP @ BUW: Distribution Client",
                              Size=size,
                              LeftResolution=size)

    register_window("client_window", window)

    logger = avango.gua.nodes.Logger(EnableWarning=False)

    nettrans = avango.gua.nodes.NetTransform(
        Name="net", Groupname="AVCLIENT|127.0.0.1|7432")

    graph.Root.value.Children.value = [nettrans, nrp_root, nrp_interactive]

    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = wrapper.Transform.value.get_translate()
    navigator.OutTransform.connect_from(wrapper.Transform)

    navigator.RotationSpeed.value = 0.2
    navigator.MotionSpeed.value = 0.04

    wrapper.Transform.connect_from(navigator.OutTransform)

    viewer = nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #2
0
 def run(self):
     guaVE = GuaVE()
     guaVE.start(locals(), globals(), show_banner=False)
     tmp = self.camera.EnableFrustumCulling.value
     self.camera.EnableFrustumCulling.value = False
     self.viewer.frame()
     self.camera.EnableFrustumCulling.value = tmp
     self.viewer.run()
Example #3
0
    def launch(self, otherlocals):
        print("Launch")
        guaVE = GuaVE()
        z = globals().copy()
        z.update(otherlocals)
        guaVE.start(locals(), z)

        self.viewer.run()
Example #4
0
def start():
  # setup scenegraph
  graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
  loader = avango.gua.nodes.TriMeshLoader()

  volumeloader = avango.gua.nodes.VolumeLoader()
  volume_geode = volumeloader.load("volume", "/opt/gua_vrgeo_2013/data/objects/head_w256_h256_d225_c1_b8.raw", 0)

  transform = avango.gua.nodes.TransformNode(
    Children=[volume_geode]
  )

  size = avango.gua.Vec2ui(1024, 768)

  window = avango.gua.nodes.GlfwWindow(
    Size=size,
    LeftResolution=size
  )

  avango.gua.register_window("window", window)

  cam = avango.gua.nodes.CameraNode(
    LeftScreenPath="/screen",
    SceneGraph="scenegraph",
    Resolution=size,
    OutputWindowName="window",
    Transform=avango.gua.make_trans_mat(0.0, 0.0, 1.5)
  )

  cam.PipelineDescription.value.Passes.value.append(avango.gua.nodes.VolumePassDescription())

  screen = avango.gua.nodes.ScreenNode(
    Name="screen",
    Width=2,
    Height=1.5,
    Children=[cam],
    Transform=avango.gua.make_trans_mat(0.0, 0.0, 1.5)
  )

  graph.Root.value.Children.value = [transform, screen]

  #setup viewer
  viewer = avango.gua.nodes.Viewer()
  viewer.SceneGraphs.value = [graph]
  viewer.Windows.value = [window]

  updater = TimedRotate()

  timer = avango.nodes.TimeSensor()
  updater.TimeIn.connect_from(timer.Time)

  transform.Transform.connect_from(updater.MatrixOut)

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #5
0
def start(filename):

    # setup scenegraph
    graph = nodes.SceneGraph(Name="scenegraph")

    nrp_root = nrp_nodes.NRPNode()
    nrp_root.Transform.value = make_trans_mat(-3.6, -1.05, -6.0)
    nrp_root.Name.value = "nrp_root"

    nrp_interactive = nrp_nodes.NRPInteractiveNode()
    nrp_interactive.Name.value = "interactive_transform"

    loader = nodes.TriMeshLoader()

    wrapper = nodes.TransformNode(Name="wrapper")
    baseball = loader.create_geometry_from_file(
        "interactive_baseball_2",
        "data/objects/sphere.obj",
        avango.gua.LoaderFlags.DEFAULTS | avango.gua.LoaderFlags.MAKE_PICKABLE
    )
    baseball.Material.value.set_uniform("Color", avango.gua.Vec4(1., 0., 0., 1.0))
    baseball.Material.value.set_uniform("Roughness", 0.6)
    baseball.Material.value.set_uniform("Metalness", 0.1)
    baseball.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, -2.0) * avango.gua.make_scale_mat(0.1, 0.1, 0.1)
    wrapper.Children.value.append(baseball)
    nrp_interactive.Children.value.append(wrapper)

    size = Vec2ui(2560, 1440)

    window = nodes.GlfwWindow(Title="HBP NRP @ BUW: Distribution Client", Size=size, LeftResolution=size)

    register_window("client_window", window)

    logger = avango.gua.nodes.Logger(EnableWarning=False)

    nettrans = avango.gua.nodes.NetTransform(Name="net", Groupname="AVCLIENT|127.0.0.1|7432")

    graph.Root.value.Children.value = [nettrans, nrp_root, nrp_interactive]

    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = wrapper.Transform.value.get_translate()
    navigator.OutTransform.connect_from(wrapper.Transform)

    navigator.RotationSpeed.value = 0.2
    navigator.MotionSpeed.value = 0.04

    wrapper.Transform.connect_from(navigator.OutTransform)

    viewer = nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #6
0
def start():

    avango.gua.load_shading_models_from("data/materials")
    avango.gua.load_materials_from("data/materials")

    graph = scene.create()

    eye = avango.gua.nodes.TransformNode(Name="eye",
                                         Transform=avango.gua.make_trans_mat(
                                             0, 0, 4))

    screen_size = avango.gua.Vec2(8, 4.5)

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=screen_size.x,
                                         Height=screen_size.y,
                                         Children=[eye])

    graph.Root.value.Children.value.append(screen)

    camera = avango.gua.nodes.Camera(LeftEye=eye.Path.value,
                                     LeftScreen=screen.Path.value,
                                     SceneGraph=graph.Name.value)

    split_screens = DynamicSplitScreens(GraphIn=graph, WindowSize=size)

    split_screens.init(
        5, lambda: avango.gua.nodes.Pipeline(
            LeftResolution=size,
            BackgroundTexture="data/textures/checker.png",
            BackgroundMode=avango.gua.BackgroundMode.SKYMAP_TEXTURE,
            AmbientColor=avango.gua.Color(1, 1, 1)))

    split_screens.add_split_screen(camera, avango.gua.Vec2(0, 0))

    def split(split_pos):
        return create_split_screen(graph, split_pos, split_screens,
                                   screen_size)

    def unsplit(split_screen):
        remove_split(graph, split_screen, split_screens)

    split_screen_handler = SplitScreenHandler()
    split_screen_handler.SplitScreens = split_screens

    #setup viewer
    viewer = avango.gua.nodes.Viewer(DesiredFPS=50)
    viewer.Pipelines.value = [split_screens.PipelineOut.value]
    viewer.SceneGraphs.value = [split_screens.GraphOut.value, graph]

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #7
0
def start():
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    volumeloader = avango.gua.nodes.VolumeLoader()
    volume_geode = volumeloader.load(
        "volume",
        "/opt/gua_vrgeo_2013/data/objects/head_w256_h256_d225_c1_b8.raw", 0)

    transform = avango.gua.nodes.TransformNode(Children=[volume_geode])

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window",
                                      Transform=avango.gua.make_trans_mat(
                                          0.0, 0.0, 1.5))

    cam.PipelineDescription.value.Passes.value.append(
        avango.gua.nodes.VolumePassDescription())

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=2,
                                         Height=1.5,
                                         Children=[cam],
                                         Transform=avango.gua.make_trans_mat(
                                             0.0, 0.0, 1.5))

    graph.Root.value.Children.value = [transform, screen]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    updater.TimeIn.connect_from(timer.Time)

    transform.Transform.connect_from(updater.MatrixOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #8
0
def start():

    graph = avango.gua.nodes.SceneGraph(Name="big_scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    root_node = avango.gua.nodes.TransformNode(
        Name="Root", Transform=avango.gua.make_scale_mat(0.5, 0.5, 0.5))

    root_monkey = loader.create_geometry_from_file("root_ape",
                                                   "data/objects/monkey.obj",
                                                   get_random_material())

    root_node.Children.value = [root_monkey]
    graph.Root.value.Children.value.append(root_node)

    monkey_updater = TimedRotate()
    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)
    root_monkey.Transform.connect_from(monkey_updater.MatrixOut)

    add_lights(graph, 40)
    setup_scene(graph, root_monkey, 4)

    size = avango.gua.Vec2ui(1500, int(1500 * 9 / 16))

    camera = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                         SceneGraph="big_scenegraph",
                                         Resolution=size,
                                         OutputWindowName="window",
                                         Transform=avango.gua.make_trans_mat(
                                             0.0, 0.0, 2.5))

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=1.6,
                                         Height=0.9,
                                         Children=[camera],
                                         Transform=avango.gua.make_trans_mat(
                                             0.0, 0.0, 0.5))

    graph.Root.value.Children.value.append(screen)

    window = avango.gua.nodes.Window(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    viewer.run()
Example #9
0
def start():
	avango.gua.load_shading_models_from("data/materials")
	avango.gua.load_materials_from("data/materials")

	# Quat to texture with portal view
	portal = avango.gua.nodes.TexturedQuadNode(Name = "portal",
																							Texture = "room",
																							Width = 1.6,
																							Height = 0.9)

	portal.Transform.value = avango.gua.make_trans_mat(0,2.5,2.0) *\
														avango.gua.make_rot_mat(-90.0, 0, 1, 0) *\
														avango.gua.make_scale_mat(2.0,6.0,2.0)

	simplescene.Root.value.Children.value.append(portal)

	# Portal updater for angle of view
	#portal_updater = UpdatePortalTransform()
	#portal_updater.PortalTransformIn.connect_from(portal.Transform)
	#portal_updater.ViewTransformIn.connect_from(simplescene["/screen/head"].Transform)
	#portal_updater.ScreenTransformIn.connect_from(simplescene["/screen"].Transform)
	#simpleroom["/screen/head"].Transform.connect_from(portal_updater.ViewTransformOut)

	# create pipeline, portal and frame
	pipe = create_pipeline("SimpleScene", "SimpleRoom", "firstpipe")

	# create navigator
	navigator = examples_common.navigator.Navigator()
	nav_node = simplescene["/screen"]
	nav_node.Transform.value = avango.gua.make_trans_mat(2.0,3.0,0.0)

	navigator.StartLocation.value = nav_node.Transform.value.get_translate()
	navigator.OutTransform.connect_from(nav_node.Transform)

	navigator.RotationSpeed.value = 0.2
	navigator.MotionSpeed.value = 0.04

	nav_node.Transform.connect_from(navigator.OutTransform)

	viewer = avango.gua.nodes.Viewer()
	viewer.Pipelines.value = [pipe]
	viewer.SceneGraphs.value = [simpleroom,simplescene]

	# If user ist near portal --> change the scene
	portal_user = PortalUser()
	portal_user.my_constructor(viewer, portal, nav_node)
	portal_user.UserPositionIn.connect_from(nav_node.Transform)

	guaVE = GuaVE()
	guaVE.start(locals(), globals())

	viewer.run()
Example #10
0
def start():

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    loader = avango.gua.nodes.TriMeshLoader()
    monkey = loader.create_geometry_from_file("monkey",
                                              "data/objects/monkey.obj",
                                              "data/materials/Stones.gmd",
                                              avango.gua.LoaderFlags.DEFAULTS)

    light = avango.gua.nodes.PointLightNode(Name="light",
                                            Color=avango.gua.Color(
                                                1.0, 1.0, 1.0))
    light.Transform.value = avango.gua.make_trans_mat(
        1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

    eye = avango.gua.nodes.TransformNode(Name="eye")
    eye.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 3.5)

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=4, Height=3)
    screen.Children.value = [eye]

    graph.Root.value.Children.value = [monkey, light, screen]

    # setup viewing
    size = avango.gua.Vec2ui(1024, 768)
    pipe = avango.gua.nodes.Pipeline(
        Camera=avango.gua.nodes.Camera(LeftEye="/screen/eye",
                                       RightEye="/screen/eye",
                                       LeftScreen="/screen",
                                       RightScreen="/screen",
                                       SceneGraph="scenegraph"),
        Window=avango.gua.nodes.Window(Size=size, LeftResolution=size),
        LeftResolution=size)

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.Pipelines.value = [pipe]
    viewer.SceneGraphs.value = [graph]

    monkey_updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)

    monkey.Transform.connect_from(monkey_updater.MatrixOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #11
0
def start(filename):

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    plodloader = avango.gua.nodes.PLODLoader()
    plodloader.UploadBudget.value = 32
    plodloader.RenderBudget.value = 2048
    plodloader.OutOfCoreBudget.value = 4096
    plod_geode = plodloader.create_geometry_from_file(
        "point_cloud", filename, avango.gua.LoaderFlags.DEFAULTS)

    light = avango.gua.nodes.PointLightNode(Name="light",
                                            Color=avango.gua.Color(
                                                1.0, 1.0, 1.0))
    light.Transform.value = avango.gua.make_trans_mat(
        1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

    eye = avango.gua.nodes.TransformNode(Name="eye")
    eye.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 3.5)

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=4, Height=3)
    screen.Children.value = [eye]

    graph.Root.value.Children.value = [plod_geode, light, screen]

    # setup viewing
    size = avango.gua.Vec2ui(1024, 768)
    pipe = avango.gua.nodes.Pipeline(
        Camera=avango.gua.nodes.Camera(LeftEye="/screen/eye",
                                       RightEye="/screen/eye",
                                       LeftScreen="/screen",
                                       RightScreen="/screen",
                                       SceneGraph="scenegraph"),
        Window=avango.gua.nodes.Window(Size=size, LeftResolution=size),
        LeftResolution=size)
    pipe.EnableBackfaceCulling.value = False

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.Pipelines.value = [pipe]
    viewer.SceneGraphs.value = [graph]

    timer = avango.nodes.TimeSensor()

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #12
0
def start(filename):

  # setup scenegraph
  graph = avango.gua.nodes.SceneGraph(Name = "scenegraph")

  plodloader = avango.gua.nodes.PLODLoader()
  plodloader.UploadBudget.value = 32
  plodloader.RenderBudget.value = 2048
  plodloader.OutOfCoreBudget.value = 4096
  plod_geode = plodloader.create_geometry_from_file("point_cloud",
                  filename, avango.gua.LoaderFlags.DEFAULTS)


  light = avango.gua.nodes.PointLightNode(Name = "light", Color = avango.gua.Color(1.0, 1.0, 1.0))
  light.Transform.value = avango.gua.make_trans_mat(1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

  eye = avango.gua.nodes.TransformNode(Name = "eye")
  eye.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 3.5)

  screen = avango.gua.nodes.ScreenNode(Name = "screen", Width = 4, Height = 3)
  screen.Children.value = [eye]

  graph.Root.value.Children.value = [plod_geode, light, screen]

  # setup viewing
  size = avango.gua.Vec2ui(1024, 768)
  pipe = avango.gua.nodes.Pipeline(Camera = avango.gua.nodes.Camera(LeftEye = "/screen/eye",
                                                                    RightEye = "/screen/eye",
                                                                    LeftScreen = "/screen",
                                                                    RightScreen = "/screen",
                                                                    SceneGraph = "scenegraph"),
                                   Window = avango.gua.nodes.Window(Size = size,
                                                                    LeftResolution = size),
                                   LeftResolution = size)
  pipe.EnableBackfaceCulling.value = False

  #setup viewer
  viewer = avango.gua.nodes.Viewer()
  viewer.Pipelines.value = [pipe]
  viewer.SceneGraphs.value = [graph]

  timer = avango.nodes.TimeSensor()

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #13
0
def start(filename):

  # setup scenegraph
  graph = avango.gua.nodes.SceneGraph(Name = "scenegraph")

  pbrloader = avango.gua.nodes.PBRLoader()
  pbr_geode = pbrloader.create_geometry_from_file("pbr",
                  filename)


  light = avango.gua.nodes.LightNode(
      Type=avango.gua.LightType.POINT,
      Name = "light", Color = avango.gua.Color(1.0, 1.0, 1.0))
  light.Transform.value = avango.gua.make_trans_mat(1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

  eye = avango.gua.nodes.TransformNode(Name = "eye")
  eye.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 3.5)

  screen = avango.gua.nodes.ScreenNode(Name = "screen", Width = 4, Height = 3)
  screen.Children.value = [eye]

  graph.Root.value.Children.value = [pbr_geode, light, screen]

  # setup viewing
  size = avango.gua.Vec2ui(1024, 768)
  pipe = avango.gua.nodes.Pipeline(Camera = avango.gua.nodes.Camera(LeftEye = "/screen/eye",
                                                                    RightEye = "/screen/eye",
                                                                    LeftScreen = "/screen",
                                                                    RightScreen = "/screen",
                                                                    SceneGraph = "scenegraph"),
                                   Window = avango.gua.nodes.Window(Size = size,
                                                                    LeftResolution = size),
                                   LeftResolution = size)
  pipe.EnableBackfaceCulling.value = False

  #setup viewer
  viewer = avango.gua.nodes.Viewer()
  viewer.Pipelines.value = [pipe]
  viewer.SceneGraphs.value = [graph]

  timer = avango.nodes.TimeSensor()

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #14
0
def start():

  # setup scenegraph
  graph = avango.gua.nodes.SceneGraph(Name = "scenegraph")

  loader = avango.gua.nodes.TriMeshLoader()
  monkey = loader.create_geometry_from_file("monkey", "data/objects/monkey.obj", "data/materials/Stones.gmd", avango.gua.LoaderFlags.DEFAULTS)

  light = avango.gua.nodes.PointLightNode(Name = "light", Color = avango.gua.Color(1.0, 1.0, 1.0))
  light.Transform.value = avango.gua.make_trans_mat(1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

  eye = avango.gua.nodes.TransformNode(Name = "eye")
  eye.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 3.5)

  screen = avango.gua.nodes.ScreenNode(Name = "screen", Width = 4, Height = 3)
  screen.Children.value = [eye]

  graph.Root.value.Children.value = [monkey, light, screen]

  # setup viewing
  size = avango.gua.Vec2ui(1024, 768)
  pipe = avango.gua.nodes.Pipeline(Camera = avango.gua.nodes.Camera(LeftEye = "/screen/eye",
                                                                    RightEye = "/screen/eye",
                                                                    LeftScreen = "/screen",
                                                                    RightScreen = "/screen",
                                                                    SceneGraph = "scenegraph"),
                                   Window = avango.gua.nodes.Window(Size = size,
                                                                    LeftResolution = size),
                                   LeftResolution = size)

  #setup viewer
  viewer = avango.gua.nodes.Viewer()
  viewer.Pipelines.value = [pipe]
  viewer.SceneGraphs.value = [graph]

  monkey_updater = TimedRotate()

  timer = avango.nodes.TimeSensor()
  monkey_updater.TimeIn.connect_from(timer.Time)

  monkey.Transform.connect_from(monkey_updater.MatrixOut)

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #15
0
def start(filename):

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    videoloader = avango.gua.nodes.Video3DLoader()
    video_geode = videoloader.load("kinect", filename)

    light = avango.gua.nodes.PointLightNode(Name="light",
                                            Color=avango.gua.Color(
                                                1.0, 1.0, 1.0))
    light.Transform.value = avango.gua.make_trans_mat(
        1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

    eye = avango.gua.nodes.TransformNode(Name="eye")
    eye.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 3.5)

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=4, Height=3)
    screen.Children.value = [eye]

    graph.Root.value.Children.value = [video_geode, light, screen]

    # setup viewing
    size = avango.gua.Vec2ui(1024, 768)
    pipe = avango.gua.nodes.Pipeline(
        Camera=avango.gua.nodes.Camera(LeftEye="/screen/eye",
                                       RightEye="/screen/eye",
                                       LeftScreen="/screen",
                                       RightScreen="/screen",
                                       SceneGraph="scenegraph"),
        Window=avango.gua.nodes.Window(Size=size, LeftResolution=size),
        LeftResolution=size)
    pipe.EnableBackfaceCulling.value = False

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.Pipelines.value = [pipe]
    viewer.SceneGraphs.value = [graph]

    timer = avango.nodes.TimeSensor()

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #16
0
def start(scenename, stereo=False):
    print("loading:", scenename, "Stereo:", stereo) 
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    scene = avango.gua.nodes.TransformNode(
      Transform=avango.gua.make_identity_mat(),
      Name="scene"
      )

    starting_pos = scenes.load_scene(scenename, scene)

    navigation = avango.gua.nodes.TransformNode(
      Transform=avango.gua.make_trans_mat(starting_pos),
      Name="navigation"
      )

    loader = avango.gua.nodes.TriMeshLoader()
    marker = loader.create_geometry_from_file(
        "marker", "data/objects/sphere.obj", avango.gua.LoaderFlags.NORMALIZE_SCALE
    )
    marker.Material.value.set_uniform("Color", avango.gua.Vec4(1.0, 1.0 ,1.0 ,1.0))
    marker.Material.value.set_uniform("Emissivity", 0.3)
    marker.Tags.value = ["markers"]

    arrow = loader.create_geometry_from_file(
       "arrow", "data/objects/arrow.obj", avango.gua.LoaderFlags.DEFAULTS | avango.gua.LoaderFlags.NORMALIZE_SCALE | avango.gua.LoaderFlags.NORMALIZE_POSITION
    )
    arrow.Tags.value = ["markers"]
    navigation.Children.value.append(arrow)

    graph.Root.value.Children.value.extend([scene, navigation, marker])

    size = avango.gua.Vec2ui(2560, 1440)

    stereomode = avango.gua.StereoMode.MONO
    if stereo:
      stereomode = avango.gua.StereoMode.ANAGLYPH_RED_CYAN

    window = avango.gua.nodes.GlfwWindow(
      Size = size,
      LeftPosition = avango.gua.Vec2ui(0, 0),
      LeftResolution = size,
      RightPosition = avango.gua.Vec2ui(0, 0),
      RightResolution = size,
      StereoMode = stereomode
    )

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(
      Name = "cam",
      LeftScreenPath = "/navigation/screen",
      RightScreenPath = "/navigation/screen",
      SceneGraph = "scenegraph",
      Resolution = size,
      EyeDistance = 0.06,
      EnableStereo = stereo,
      OutputWindowName = "window",
      ViewID = 1,
      Transform = avango.gua.make_trans_mat(0.0, 0.0, 0.0),
      # BlackList = ["markers"],
    )
    navigation.Children.value.append(cam)

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = False
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0
    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundMode.value = avango.gua.BackgroundMode.CUBEMAP_TEXTURE
    if not stereo:
      res_pass.BackgroundTexture.value = "awesome_skymap"

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.DepthMapPassDescription(),
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.BBoxPassDescription(),
            avango.gua.nodes.SkyMapPassDescription(
              OutputTextureName="awesome_skymap"
            ),
            avango.gua.nodes.PLODPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            res_pass,
            anti_aliasing,
            avango.gua.nodes.TexturedScreenSpaceQuadPassDescription(),
            ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(
        Name="screen",
        Transform=avango.gua.make_trans_mat(0.0, 0.0, -0.45),
        Width=0.444,
        Height=0.25,
        )
    navigation.Children.value.append(screen)

    
    dcm_transform = avango.gua.make_identity_mat()
    if stereo:
      dcm_transform = avango.gua.make_trans_mat(0.0, 0.0, -0.20)

    distance_cube_map = avango.gua.nodes.DepthMapNode(
      Name="navigation_depth_cube_map",
      NearClip=0.0001,
      FarClip=1000.0,
      Transform=dcm_transform,
      Resolution=64,
      ViewID=2,
      BlackList=["markers"],
    )
    navigation.Children.value.append(distance_cube_map)

    distance_cube_map_wrapper = DistanceMapWrapper()
    distance_cube_map_wrapper.DistanceMapNode.value = distance_cube_map

    '''
    # NOT SUPPORTED BY GUACAMOLE RIGHT NOW -> textured_screen_space_quad.frag has to be adapted
    debug_quad = avango.gua.nodes.TexturedScreenSpaceQuadNode(
      Name = "DepthMapDebug",
      Texture = distance_cube_map.TextureName.value,
      Width = int(size.x / 2),
      Height = int(size.x / 12),
      Anchor = avango.gua.Vec2(-1.0, -1.0)
      )
    graph.Root.value.Children.value.append(debug_quad)
    '''
    
    navi = navigator.MulitScaleNavigator(
      EnableEvasion=True,
      EnableAdaptiveMotionSpeed=True,
      RotationSpeed=0.3,
      MaxMotionSpeed=300.0,
      MaxDistance=300.0,
      )
    navi.StartLocation.value = navigation.Transform.value.get_translate()
    navi.OutTransform.connect_from(navigation.Transform)
    navi.MinDistance.connect_from(distance_cube_map_wrapper.MinDistance)
    navi.MinDistancePos.connect_from(distance_cube_map_wrapper.MinDistancePos)

    navigation.Transform.connect_from(navi.OutTransform)

    # MarkerUpdate
    marker_updater = MarkerUpdater()
    marker_updater.MinDistance.connect_from(distance_cube_map_wrapper.MinDistance)
    marker_updater.MinDistancePos.connect_from(distance_cube_map_wrapper.MinDistancePos)
    marker_smoother = TransformSmoother(Smoothness=0.2)
    marker_smoother.InTransform.connect_from(marker_updater.OutTransform)
    marker.Transform.connect_from(marker_smoother.OutTransform)
    
    # ArrowUpdate
    arrow_updater = ArrowUpdater()
    arrow_updater.MinDistance.connect_from(distance_cube_map_wrapper.MinDistance)
    arrow_updater.MinDistancePos.connect_from(distance_cube_map_wrapper.MinDistancePos)
    arrow_updater.NavigationTransformIn.connect_from(navigation.Transform)
    arrow_updater.EvasionInfo.connect_from(navi.EvasionInfo)
    arrow_smoother = TransformSmoother(Smoothness=0.2)
    arrow_smoother.InTransform.connect_from(arrow_updater.OutTransform)
    arrow.Transform.connect_from(arrow_smoother.OutTransform)
    arrow.Material.connect_from(arrow_updater.OutMaterial)

    #Clipping update
    clip_updater = ClippingUpdater(
      Near=0.0001,
      # Far=100.0,
    )
    clip_updater.MinDistance.connect_from(distance_cube_map_wrapper.MinDistance)

    cam.NearClip.connect_from(clip_updater.Near)
    cam.FarClip.connect_from(clip_updater.Far)
    # distance_cube_map.NearClip.connect_from(clip_updater.Near)
    # distance_cube_map.FarClip.connect_from(clip_updater.Far)
    arrow_updater.NearClip.connect_from(clip_updater.Near)

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    # def toogle_adaptive_locomotion():

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #17
0
def start():
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    monkey = loader.create_geometry_from_file(
        "monkey",
        "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    monkey.Material.value.set_uniform(
        "Color",
        avango.gua.Vec4(1.0, 0.766, 0.336, 1.0))
    monkey.Material.value.set_uniform("Roughness", 0.3)
    monkey.Material.value.set_uniform("Metalness", 1.0)

    transform = avango.gua.nodes.TransformNode(
        Children=[monkey]
        )

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30))
        )

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(
        Size=size,
        LeftResolution=size
        )

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(
        LeftScreenPath="/screen",
        SceneGraph="scenegraph",
        Resolution=size,
        OutputWindowName="window",
        Transform=avango.gua.make_trans_mat(0.0, 0.0, 3.5)
        )

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            res_pass,
            anti_aliasing,
            ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(
        Name="screen",
        Width=2,
        Height=1.5,
        Children=[cam]
        )

    graph.Root.value.Children.value = [transform, light, screen]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    # make monkey look at the mouse cursor
    mouse_move = MouseMove()
    mouse_move.Resolution.connect_from(window.LeftResolution)
    window.on_move_cursor(mouse_move.on_move_cursor)
    transform.Transform.connect_from(mouse_move.MatrixOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #18
0
def start():
    graph = avango.gua.nodes.SceneGraph(Name="scene")
    loader = avango.gua.nodes.TriMeshLoader()

    fps_size = avango.gua.Vec2(170, 55)

    fps = avango.gua.gui.nodes.GuiResourceNode()
    fps.TextureName.value = "fps"
    fps.URL.value = "asset://gua/data/html/fps.html"
    fps.Size.value = fps_size

    fps_quad = avango.gua.nodes.TexturedScreenSpaceQuadNode(
        Name="fps_quad",
        Texture="fps",
        Width=int(fps_size.x),
        Height=int(fps_size.y),
        Anchor=avango.gua.Vec2(1.0, 1.0))
    graph.Root.value.Children.value.append(fps_quad)

    fallback_mat = avango.gua.create_material(
        avango.gua.MaterialCapabilities.COLOR_VALUE |
        avango.gua.MaterialCapabilities.ROUGHNESS_VALUE)
    fallback_mat.set_uniform("Roughness", 0.6)

    for x in range(0, CUBE_COUNT_X):
        for y in range(0, CUBE_COUNT_Y):
            for z in range(0, CUBE_COUNT_Z):

                new_cube = loader.create_geometry_from_file(
                    "cube" + str(x) + str(y) + str(z),
                    "data/objects/monkey.obj", fallback_mat,
                    avango.gua.LoaderFlags.DEFAULTS)

                new_cube.Transform.value = avango.gua.make_trans_mat(x*2, y*2, z*2) * \
                                   avango.gua.make_scale_mat(0.3, 0.3, 0.3)
                graph.Root.value.Children.value.append(new_cube)
                new_cube.ShadowMode.value = 1

    sun_light = avango.gua.nodes.LightNode(
        Name="sun_light",
        Type=avango.gua.LightType.SUN,
        Color=avango.gua.Color(1.0, 1.0, 0.7),
        EnableShadows=True,
        ShadowMapSize=1024,
        ShadowOffset=0.0005,
        ShadowCascadedSplits=[0.1, 4, 7, 20],
        ShadowMaxDistance=30,
        ShadowNearClippingInSunDirection=100,
        ShadowFarClippingInSunDirection=100,
        Brightness=4)
    graph.Root.value.Children.value.append(sun_light)

    floor = loader.create_geometry_from_file(
        "floor", "data/objects/plane.obj", fallback_mat,
        avango.gua.LoaderFlags.DEFAULTS)
    floor.Transform.value = avango.gua.make_scale_mat(
        200, 1, 200) * avango.gua.make_trans_mat(-0.5, -0.2, -0.5)
    floor.ShadowMode.value = 0
    graph.Root.value.Children.value.append(floor)

    width = 1920
    height = int(width * 9.0 / 16.0)
    size = avango.gua.Vec2ui(width, height)

    screen = avango.gua.nodes.ScreenNode(
        Name="screen",
        Width=4.8,
        Height=2.7,
        Transform=avango.gua.make_trans_mat(0.0, 0.0, -2.5))

    camera = avango.gua.nodes.CameraNode(
        Name="cam",
        LeftScreenPath="/cam/screen",
        RightScreenPath="/cam/screen",
        SceneGraph="scene",
        Resolution=size,
        OutputWindowName="window",
        EyeDistance=0.2,
        EnableStereo=False,
        Children=[screen],
        Transform=avango.gua.make_trans_mat(0.0, 0.0, 7.0))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 3.0
    res_pass.SSAOFalloff.value = 20.0
    res_pass.SSAORadius.value = 10.0
    res_pass.EnvironmentLightingTexture.value = "day_skymap"
    res_pass.AlternativeEnvironmentLightingTexture.value = "night_skymap"
    res_pass.EnvironmentLightingMode.value = avango.gua.EnvironmentLightingMode.CUBEMAP
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.VignetteColor.value = avango.gua.Vec4(0, 0, 0, 0.7)
    res_pass.VignetteCoverage.value = 0.0
    res_pass.EnableFog.value = True
    res_pass.FogStart.value = 30
    res_pass.FogEnd.value = 100
    res_pass.BackgroundMode.value = avango.gua.BackgroundMode.CUBEMAP_TEXTURE
    res_pass.BackgroundTexture.value = "day_skymap"
    res_pass.AlternativeBackgroundTexture.value = "night_skymap"

    sky_pass = avango.gua.nodes.SkyMapPassDescription(
        OutputTextureName="day_skymap")

    avango.gua.create_texture_cube(
        "night_skymap",
        "data/textures/stars/purple-nebula/purple-nebula_right1.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_left2.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_bottom4.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_top3.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_front5.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_back6.jpg")

    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            sky_pass, avango.gua.nodes.TriMeshPassDescription(
            ), avango.gua.nodes.LightVisibilityPassDescription(), res_pass,
            avango.gua.nodes.TexturedScreenSpaceQuadPassDescription()
        ])

    camera.PipelineDescription.value = pipeline_description

    graph.Root.value.Children.value.append(camera)

    window = avango.gua.nodes.Window(
        Size=size,
        Title="shadows",
        LeftResolution=size,
        RightResolution=size,
        EnableVsync=False,
        StereoMode=avango.gua.StereoMode.MONO)

    avango.gua.register_window("window", window)

    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = camera.Transform.value.get_translate()
    navigator.OutTransform.connect_from(camera.Transform)

    navigator.RotationSpeed.value = 0.2
    navigator.MotionSpeed.value = 0.04

    camera.Transform.connect_from(navigator.OutTransform)

    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    timer = avango.nodes.TimeSensor()

    fps_updater = FPSUpdater(FPSResource=fps, Window=window, Viewer=viewer)
    fps_updater.TimeIn.connect_from(timer.Time)

    sun_updater = SunUpdater(TimeScale=3500)
    sun_updater.TimeIn.connect_from(timer.Time)
    sun_light.Transform.connect_from(sun_updater.MatrixOut)
    sun_light.Color.connect_from(sun_updater.SunColorOut)
    sky_pass.LightDirection.connect_from(sun_updater.DirectionOut)
    sky_pass.GroundColor.connect_from(sun_updater.GroundColorOut)
    res_pass.BackgroundTextureBlendFactor.connect_from(
        sun_updater.BlendFactorOut)
    res_pass.EnvironmentLightingTextureBlendFactor.connect_from(
        sun_updater.BlendFactorOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #19
0
class ViewingManager():

    ## @var viewer
    # The guacamole viewer to be used for rendering.
    viewer = avango.gua.nodes.Viewer()

    ## @var shell
    # The GuaVE shell to be used when the application is running.
    shell = GuaVE()

    ## Custom constructor
    # @param SCENEGRAPHS Reference to all scenegraph used in the application.
    # @param CONFIG_FILE Path to the XML configuration file.
    def __init__(self, SCENEGRAPHS, CONFIG_FILE):

        # parameters
        ## @var background_texture
        # The skymap to be used for all pipelines.
        self.background_texture = "data/textures/sky.jpg"
        avango.gua.create_texture(self.background_texture)

        # references
        ## @var SCENEGRAPH
        # Reference to the scenegraph.
        self.SCENEGRAPH = SCENEGRAPHS[0]

        # variables
        ## @var powerwall_user_list
        # List of all created PowerWallUser instances.
        self.powerwall_user_list = []

        ## @var ovr_user_list
        # List of all created OVRUser instances.
        self.ovr_user_list = []

        ## @var desktop_user_list
        # List of all created DesktopUser instances.
        self.desktop_user_list = []

        ## @var navigation_list
        # List of all created Navigation instances.
        self.navigation_list = []

        ## @var border_observer_list
        # List of all created BorderObserver instances.
        self.border_observer_list = []

        # global settings (can be overwritten by config file)
        ## @var transmitter_offset
        # Transmitter offset to be read in from configuration file
        self.transmitter_offset = avango.gua.make_identity_mat()

        ## @var no_tracking_mat
        # Matrix to be used when no tracking is available to be read in from configuration file
        self.no_tracking_mat = avango.gua.make_identity_mat()

        ## @var ground_following_settings
        # Settings for the GroundFollowing instance to be read in from configuration file: [activated, ray_start_height]
        self.ground_following_settings = [False, 0.75]

        ## @var enable_coupling_animation
        # Boolean indicating if an animation should be done when a coupling of Navigations is initiated.
        self.enable_coupling_animation = False

        ## @var enable_movementtraces
        #  Boolean indicating if the movement of every platform should be visualized by line segments.
        self.enable_movementtraces = False

        # load configuration file
        self.parse_config_file(CONFIG_FILE)

        for i in range(0, len(SCENEGRAPHS)):
            self.viewer.SceneGraphs.value.append(SCENEGRAPHS[i])

    ## Creates a Navigation instance and adds it to the list of navigations.
    # @param INPUT_DEVICE_TYPE Type of the input device to be associated (e.g. XBoxController" or "Spheron")
    # @param INPUT_DEVICE_NAME Name of the input device values as chosen in daemon.
    # @param STARTING_MATRIX Initial platform matrix for the new device.
    # @param PLATFORM_SIZE Physical size of the platform in meters. [width, depth]
    # @param ANIMATE_COUPLING Boolean indicating if an animation should be done when a coupling of Navigations is initiated.
    # @param MOVEMENT_TRACES Boolean indicating if the platform should leave traces behind.
    # @param DEVICE_TRACKING_NAME Name of the device's tracking sensor as chosen in daemon if available.
    def create_navigation(self,
                          INPUT_DEVICE_TYPE,
                          INPUT_DEVICE_NAME,
                          STARTING_MATRIX,
                          PLATFORM_SIZE,
                          ANIMATE_COUPLING,
                          MOVEMENT_TRACES,
                          DEVICE_TRACKING_NAME=None):
        _navigation = Navigation()
        _navigation.my_constructor(
            self.SCENEGRAPH, PLATFORM_SIZE, STARTING_MATRIX,
            self.navigation_list, INPUT_DEVICE_TYPE, INPUT_DEVICE_NAME,
            self.no_tracking_mat, self.ground_following_settings,
            ANIMATE_COUPLING, MOVEMENT_TRACES, DEVICE_TRACKING_NAME)
        self.navigation_list.append(_navigation)
        self.border_observer_list.append(None)

    ## Creates a OVRUser instance and adds it to the list of OVRUsers.
    # @param TRACKING_TARGET_NAME Name of the Oculus Rift's tracking target as chosen in daemon.py
    # @param INITIAL_PLATFORM_ID Platform to which the user should be appended to.
    # @param WARNINGS Boolean value to determine if the user should be appended to a BorderObserver (i.e. the user is shown warning planes when close to the platform borders)
    def create_ovr_user(self, TRACKING_TARGET_NAME, INITIAL_PLATFORM_ID,
                        SCENEGRAPH, WARNINGS):

        _user = OVRUser(self, TRACKING_TARGET_NAME, len(self.ovr_user_list),
                        INITIAL_PLATFORM_ID, self.no_tracking_mat, SCENEGRAPH)
        self.ovr_user_list.append(_user)

        # init border checker to warn user on platform
        if WARNINGS:
            if self.border_observer_list[INITIAL_PLATFORM_ID] == None:
                _checked_borders = [True, True, True, True]
                self.create_border_observer(
                    _checked_borders, _user,
                    self.navigation_list[INITIAL_PLATFORM_ID].platform)
            else:
                self.border_observer_list[INITIAL_PLATFORM_ID].add_user(_user)

    ## Creates a PowerWallUser instance and adds it to the list of PowerWallUsers.
    # @param TRACKING_TARGET_NAME Name of the glasses' tracking target as chosen in daemon.py
    # @param INITIAL_PLATFORM_ID Platform to which the user should be appended to.
    # @param TRANSMITTER_OFFSET The transmitter offset to be applied.
    # @param WARNINGS Boolean value to determine if the user should be appended to a BorderObserver (i.e. the user is shown warning planes when close to the platform borders)
    def create_powerwall_user(self, TRACKING_TARGET_NAME, INITIAL_PLATFORM_ID,
                              TRANSMITTER_OFFSET, SCENEGRAPH, WARNINGS):

        _user = PowerWallUser(self, TRACKING_TARGET_NAME,
                              len(self.powerwall_user_list),
                              INITIAL_PLATFORM_ID, self.no_tracking_mat,
                              TRANSMITTER_OFFSET, SCENEGRAPH)
        self.powerwall_user_list.append(_user)

        # init border checker to warn user on platform
        if WARNINGS:
            if self.border_observer_list[INITIAL_PLATFORM_ID] == None:
                _checked_borders = [False, False, True, False]
                self.create_border_observer(
                    _checked_borders, _user,
                    self.navigation_list[INITIAL_PLATFORM_ID].platform)
            else:
                self.border_observer_list[INITIAL_PLATFORM_ID].add_user(_user)

    ## Creates a DesktopUser instance and adds it to the list of DesktopUsers.
    # @param INITIAL_PLATFORM_ID Platform to which the user should be appended to.
    # @param WINDOW_SIZE Resolution of the window to be created on the display. [width, height]
    # @param SCREEN_SIZE Physical width of the screen space to be rendered on in meters. [width, height]
    def create_desktop_user(self, INITIAL_PLATFORM_ID, WINDOW_SIZE,
                            SCREEN_SIZE, SCENEGRAPH):

        _user = DesktopUser(self, len(self.desktop_user_list),
                            INITIAL_PLATFORM_ID, WINDOW_SIZE, SCREEN_SIZE,
                            SCENEGRAPH)
        self.desktop_user_list.append(_user)

    ## Creates a BorderObserver instance for a Platform and adds a User to it.
    # @param CHECKED_BORDERS A list of four booleans to indicate which borders of the platform should be checked:
    # [display_left_border, display_right_border, display_front_border, display_back_border]
    # @param USER_INSTANCE A first User to be appended to the new BorderObserver.
    # @param PLATFORM_INSTANCE The platform to which the BorderObserver should belong to.
    def create_border_observer(self, CHECKED_BORDERS, USER_INSTANCE,
                               PLATFORM_INSTANCE):
        _border_observer = BorderObserver()
        _border_observer.my_constructor(CHECKED_BORDERS, USER_INSTANCE,
                                        PLATFORM_INSTANCE)
        self.border_observer_list[
            PLATFORM_INSTANCE.platform_id] = _border_observer

    ## Parses a XML configuration file, saves settings and creates navigations and users.
    # @param FILENAME The path of the configuration file to be read in.
    def parse_config_file(self, FILENAME):
        print "\n=============================================================================="
        print "Loading configuration file", FILENAME
        print "==============================================================================\n"

        _in_comment = False
        _in_global = False
        _in_device = False
        _device_attributes = [
            None, None, None, None, None, None, None
        ]  # [type, inputsensor, trackingstation, startpos, platformpos (x,y,z), platformrot (yaw))]
        _platform_size = [1.0, 1.0]  # [width, depth]
        _in_user = False
        _user_attributes = [
            None, None, None, False
        ]  # [type, headtrackingstation, startplatform, warnings]
        _window_size = [1920, 1080]  # [width, height]
        _screen_size = [1.6, 1.0]  # [width, height]

        _config_file = open(FILENAME, 'r')
        _current_line = self.get_next_line_in_file(_config_file)

        while _current_line != "":

            # handle end of block comments
            if _in_comment and _current_line.rstrip().endswith("-->"):
                _in_comment = False
                _current_line = self.get_next_line_in_file(_config_file)
                continue
            elif _in_comment:
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # ignore one line comments
            if _current_line.startswith(
                    "<!--") and _current_line.rstrip().endswith("-->"):
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # handle start of block comments
            if _current_line.startswith("<!--"):
                _in_comment = True
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # ignore XML declaration
            if _current_line.startswith("<?xml"):
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # ignore doctype declaration
            if _current_line.startswith("<!DOCTYPE"):
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # ignore opening setup tag
            if _current_line.startswith("<setup>"):
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # detect end of configuration file
            if _current_line.startswith("</setup>"):
                break

            # detect start of global settings
            if _current_line.startswith("<global>"):
                _in_global = True
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            if _in_global:
                # get transmitter offset values
                if _current_line.startswith("<transmitteroffset>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<x>", "")
                    _current_line = _current_line.replace("</x>", "")
                    _current_line = _current_line.rstrip()
                    _transmitter_x = float(_current_line)
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<y>", "")
                    _current_line = _current_line.replace("</y>", "")
                    _current_line = _current_line.rstrip()
                    _transmitter_y = float(_current_line)
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<z>", "")
                    _current_line = _current_line.replace("</z>", "")
                    _current_line = _current_line.rstrip()
                    _transmitter_z = float(_current_line)
                    self.transmitter_offset = avango.gua.make_trans_mat(
                        _transmitter_x, _transmitter_y, _transmitter_z)

                # get end of transmitter offset values
                if _current_line.startswith("</transmitteroffset>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    continue

                # get no tracking position values
                if _current_line.startswith("<notrackingposition>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<x>", "")
                    _current_line = _current_line.replace("</x>", "")
                    _current_line = _current_line.rstrip()
                    _no_tracking_x = float(_current_line)
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<y>", "")
                    _current_line = _current_line.replace("</y>", "")
                    _current_line = _current_line.rstrip()
                    _no_tracking_y = float(_current_line)
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<z>", "")
                    _current_line = _current_line.replace("</z>", "")
                    _current_line = _current_line.rstrip()
                    _no_tracking_z = float(_current_line)
                    self.no_tracking_mat = avango.gua.make_trans_mat(
                        _no_tracking_x, _no_tracking_y, _no_tracking_z)

                # get end of no tracking position values
                if _current_line.startswith("</notrackingposition>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    continue

                # get ground following attributes
                if _current_line.startswith("<groundfollowing>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<activated>", "")
                    _current_line = _current_line.replace("</activated>", "")
                    _current_line = _current_line.rstrip()

                    if _current_line == "True":
                        self.ground_following_settings[0] = True
                    else:
                        self.ground_following_settings[0] = False

                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace(
                        "<raystartheight>", "")
                    _current_line = _current_line.replace(
                        "</raystartheight>", "")
                    _current_line = _current_line.rstrip()
                    self.ground_following_settings[1] = float(_current_line)

                # get end of ground following attributes
                if _current_line.startswith("</groundfollowing>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    continue

                # get coupling animation boolean
                if _current_line.startswith("<animatecoupling>"):
                    _current_line = _current_line.replace(
                        "<animatecoupling>", "")
                    _current_line = _current_line.replace(
                        "</animatecoupling>", "")
                    _current_line = _current_line.rstrip()
                    self.enable_coupling_animation = bool(_current_line)

                # get platformtraces boolean
                if _current_line.startswith("<movementtraces>"):
                    _current_line = _current_line.replace(
                        "<movementtraces>", "")
                    _current_line = _current_line.replace(
                        "</movementtraces>", "")
                    _current_line = _current_line.rstrip()
                    self.enable_movementtraces = bool(_current_line)

            # detect end of global settings
            if _current_line.startswith("</global>"):
                _in_global = False
                _current_line = self.get_next_line_in_file(_config_file)

                print "Global settings loaded:"
                print "------------------------"
                print "Transmitter Offset:", self.transmitter_offset.get_translate(
                )
                print "No tracking position:", self.no_tracking_mat.get_translate(
                )
                print "Ground Following settings:", self.ground_following_settings
                print "Coupling of Navigations animated:", self.enable_coupling_animation, "\n"

                continue

            # detect start of device declaration
            if _current_line.startswith("<device>"):
                _in_device = True
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # read device values
            if _in_device:
                # get device type
                if _current_line.startswith("<type>"):
                    _current_line = _current_line.replace("<type>", "")
                    _current_line = _current_line.replace("</type>", "")
                    _current_line = _current_line.rstrip()
                    _device_attributes[0] = _current_line

                # get inputsensor name
                if _current_line.startswith("<inputsensor>"):
                    _current_line = _current_line.replace("<inputsensor>", "")
                    _current_line = _current_line.replace("</inputsensor>", "")
                    _current_line = _current_line.rstrip()
                    _device_attributes[1] = _current_line

                # get trackingstation name
                if _current_line.startswith("<trackingstation>"):
                    _current_line = _current_line.replace(
                        "<trackingstation>", "")
                    _current_line = _current_line.replace(
                        "</trackingstation>", "")
                    _current_line = _current_line.rstrip()
                    if _current_line != "None":
                        _device_attributes[2] = _current_line

                # get platform position values
                if _current_line.startswith("<platformpos>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<x>", "")
                    _current_line = _current_line.replace("</x>", "")
                    _current_line = _current_line.rstrip()
                    _device_attributes[3] = float(_current_line)
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<y>", "")
                    _current_line = _current_line.replace("</y>", "")
                    _current_line = _current_line.rstrip()
                    _device_attributes[4] = float(_current_line)
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<z>", "")
                    _current_line = _current_line.replace("</z>", "")
                    _current_line = _current_line.rstrip()
                    _device_attributes[5] = float(_current_line)

                # get end of platform position
                if _current_line.startswith("</platformpos>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    continue

                # get platform size values
                if _current_line.startswith("<platformsize>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<width>", "")
                    _current_line = _current_line.replace("</width>", "")
                    _current_line = _current_line.rstrip()
                    _platform_size[0] = float(_current_line)
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<depth>", "")
                    _current_line = _current_line.replace("</depth>", "")
                    _current_line = _current_line.rstrip()
                    _platform_size[1] = float(_current_line)

                # get end of platform size values
                if _current_line.startswith("</platformsize>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    continue

                # get platform rotation values
                if _current_line.startswith("<platformrot>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<yaw>", "")
                    _current_line = _current_line.replace("</yaw>", "")
                    _current_line = _current_line.rstrip()
                    _device_attributes[6] = float(_current_line)

                # get end of platform rotation
                if _current_line.startswith("</platformrot>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    continue

            # detect end of device declaration
            if _current_line.startswith("</device>"):
                _in_device = False
                _starting_matrix = avango.gua.make_trans_mat(_device_attributes[3], _device_attributes[4], _device_attributes[5]) * \
                                   avango.gua.make_rot_mat(_device_attributes[6], 0, 1, 0)

                self.create_navigation(_device_attributes[0],
                                       _device_attributes[1], _starting_matrix,
                                       _platform_size,
                                       self.enable_coupling_animation,
                                       self.enable_movementtraces,
                                       _device_attributes[2])

                print "Navigation loaded and created:"
                print "------------------------------"
                print _device_attributes
                print "Platform size: ", _platform_size, "\n"

                _device_attributes = [None, None, None, None, None, None, None]
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # detect start of user declaration
            if _current_line.startswith("<user>"):
                _in_user = True
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # read user values
            if _in_user:
                # get user type
                if _current_line.startswith("<type>"):
                    _current_line = _current_line.replace("<type>", "")
                    _current_line = _current_line.replace("</type>", "")
                    _current_line = _current_line.rstrip()
                    _user_attributes[0] = _current_line

                # get headtracking station name
                if _current_line.startswith("<headtrackingstation>"):
                    _current_line = _current_line.replace(
                        "<headtrackingstation>", "")
                    _current_line = _current_line.replace(
                        "</headtrackingstation>", "")
                    _current_line = _current_line.rstrip()
                    if _current_line != "None":
                        _user_attributes[1] = _current_line

                # get starting platform name
                if _current_line.startswith("<startplatform>"):
                    _current_line = _current_line.replace(
                        "<startplatform>", "")
                    _current_line = _current_line.replace(
                        "</startplatform>", "")
                    _current_line = _current_line.rstrip()
                    _user_attributes[2] = int(_current_line)

                # get window size values
                if _current_line.startswith("<windowsize>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<width>", "")
                    _current_line = _current_line.replace("</width>", "")
                    _current_line = _current_line.rstrip()
                    _window_size[0] = int(_current_line)
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<height>", "")
                    _current_line = _current_line.replace("</height>", "")
                    _current_line = _current_line.rstrip()
                    _window_size[1] = int(_current_line)

                # get screen size values
                if _current_line.startswith("<screensize>"):
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<width>", "")
                    _current_line = _current_line.replace("</width>", "")
                    _current_line = _current_line.rstrip()
                    _screen_size[0] = float(_current_line)
                    _current_line = self.get_next_line_in_file(_config_file)
                    _current_line = _current_line.replace("<height>", "")
                    _current_line = _current_line.replace("</height>", "")
                    _current_line = _current_line.rstrip()
                    _screen_size[1] = float(_current_line)

                # get boolean for warning borders
                if _current_line.startswith("<warnings>"):
                    _current_line = _current_line.replace("<warnings>", "")
                    _current_line = _current_line.replace("</warnings>", "")
                    _current_line = _current_line.rstrip()

                    if _current_line == "True":
                        _user_attributes[3] = True

            # detect end of user declaration
            if _current_line.startswith("</user>"):
                _in_user = False

                if _user_attributes[0] == "PowerWallUser":
                    self.create_powerwall_user(_user_attributes[1],
                                               _user_attributes[2],
                                               self.transmitter_offset,
                                               self.SCENEGRAPH,
                                               _user_attributes[3])
                elif _user_attributes[0] == "OVRUser":
                    print "Oculus Rift Messages:"
                    print "----------------------"
                    self.create_ovr_user(_user_attributes[1],
                                         _user_attributes[2], self.SCENEGRAPH,
                                         _user_attributes[3])
                elif _user_attributes[0] == "DesktopUser":
                    self.create_desktop_user(_user_attributes[2], _window_size,
                                             _screen_size, self.SCENEGRAPH)
                else:
                    print "Unknown user type", _user_attributes[0]
                    _current_line = self.get_next_line_in_file(_config_file)
                    continue

                print "\nUser loaded and created:"
                print "-------------------------"
                print _user_attributes, "\n"

                if _user_attributes[0] == "DesktopUser":
                    print "Window resolution:", _window_size[
                        0], "x", _window_size[1]
                    print "Screen size:", _screen_size[0], "x", _screen_size[
                        1], "\n"
                    # restore default values
                    _window_size = [1920, 1080]
                    _screen_size = [1.6, 1.0]

                _user_attributes = [None, None, None, False]
                _current_line = self.get_next_line_in_file(_config_file)
                continue

            # go to next line in file
            _current_line = self.get_next_line_in_file(_config_file)

        print "\n=============================================================================="
        print "Configuration file", FILENAME, "successfully loaded."
        print "=============================================================================="

    ## Gets the next line in the file. Thereby, empty lines are skipped.
    # @param FILE The opened file to get the line from.
    def get_next_line_in_file(self, FILE):
        _next_line = FILE.readline()
        _next_line = _next_line.replace(" ", "")

        # skip empty lines
        while _next_line == "\r\n":
            _next_line = FILE.readline()
            _next_line = _next_line.replace(" ", "")

        return _next_line

    ## Sets RenderMask for hiding portals not owned by user
    def setup_portal_render_masks(self):
        # extend render mask for oculus users
        for OVR_user in self.ovr_user_list:
            for other_OVR_user in self.ovr_user_list:
                if other_OVR_user.id != OVR_user.id:
                    OVR_user.camera.RenderMask.value = OVR_user.camera.RenderMask.value + \
                                                    " && !" + other_OVR_user.portal_controller.NAME + \
                                                    "portals"
            for DESK_user in self.desktop_user_list:
                OVR_user.camera.RenderMask.value = OVR_user.camera.RenderMask.value + \
                                                  " && !" + DESK_user.portal_controller.NAME + \
                                                  "portals"
            for PW_user in self.powerwall_user_list:
                OVR_user.camera.RenderMask.value = OVR_user.camera.RenderMask.value + \
                                                  " && !" + PW_user.portal_controller.NAME + \
                                                  "portals"
            OVR_user.pipeline.Camera.value = OVR_user.camera
            OVR_user.portal_controller.PIPELINE = OVR_user.pipeline

        # extend render mask for oculus users
        for DESK_user in self.desktop_user_list:
            for other_DESK_user in self.desktop_user_list:
                if other_DESK_user.id != DESK_user.id:
                    DESK_user.camera.RenderMask.value = DESK_user.camera.RenderMask.value + \
                                                    " && !" + other_DESK_user.portal_controller.NAME + \
                                                    "portals"
            for OVR_user in self.ovr_user_list:
                DESK_user.camera.RenderMask.value = DESK_user.camera.RenderMask.value + \
                                                  " && !" + OVR_user.portal_controller.NAME + \
                                                  "portals"
            for PW_user in self.powerwall_user_list:
                DESK_user.camera.RenderMask.value = DESK_user.camera.RenderMask.value + \
                                                  " && !" + PW_user.portal_controller.NAME + \
                                                  "portals"
            DESK_user.pipeline.Camera.value = DESK_user.camera
            DESK_user.portal_controller.PIPELINE = DESK_user.pipeline

        # extend render mask for oculus users
        for PW_user in self.powerwall_user_list:
            for other_PW_user in self.powerwall_user_list:
                if other_PW_user.id != PW_user.id:
                    PW_user.camera.RenderMask.value = PW_user.camera.RenderMask.value + \
                                                    " && !" + other_PW_user.portal_controller.NAME + \
                                                    "portals"
            for DESK_user in self.desktop_user_list:
                PW_user.camera.RenderMask.value = PW_user.camera.RenderMask.value + \
                                                  " && !" + DESK_user.portal_controller.NAME + \
                                                  "portals"
            for OVR_user in self.ovr_user_list:
                PW_user.camera.RenderMask.value = PW_user.camera.RenderMask.value + \
                                                  " && !" + OVR_user.portal_controller.NAME + \
                                                  "portals"
            PW_user.pipeline.Camera.value = PW_user.camera
            PW_user.portal_controller.PIPELINE = PW_user.pipeline

    ## Starts the shell and the viewer.
    # @param LOCALS Local variables.
    # @param GLOBALS Global variables.
    def run(self, LOCALS, GLOBALS):
        self.shell.start(LOCALS, GLOBALS)
        self.viewer.run()

    ## Lists the variables of the shell.
    def list_variables(self):
        self.shell.list_variables()
Example #20
0
def start():
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    loader = avango.gua.nodes.LineStripLoader()

    line_strip_geode = loader.create_empty_geometry("line_strip_model_1",
                                                    "empty_name_1.lob")
    """
    line_strip_geode_2 = loader.create_geometry_from_file(
                            "line_strip_model_2", 
                            "PATH_TO_ANOMALY_FILE",
                            avango.gua.LoaderFlags.NORMALIZE_SCALE | avango.gua.LoaderFlags.NORMALIZE_POSITION)
    """

    transform1_additional_scale = avango.gua.nodes.TransformNode(
        Transform=avango.gua.make_scale_mat(0.66), Children=[line_strip_geode])

    transform1 = avango.gua.nodes.TransformNode(
        Children=[transform1_additional_scale])

    #line_strip_geode.RenderVolumetric.value = True
    #line_strip_geode.RenderAsPoints.value = False
    #only has effect if 'RenderVolumetric' is set to 'False'
    #   the effective range of this parameter is [1.0-10.0]
    #line_strip_geode.ScreenSpaceLineWidth.value = 10.0

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30)))

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window",
                                      Transform=avango.gua.make_trans_mat(
                                          0.0, 0.0, 3.5))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        avango.gua.nodes.LineStripPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        res_pass,
        anti_aliasing,
    ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=2,
                                         Height=1.5,
                                         Children=[cam])

    graph.Root.value.Children.value = [transform1, light, screen]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    timer = avango.nodes.TimeSensor()

    timed_vertex_push_object = TimedVertexPush()

    timed_vertex_push_object.set_line_strip_nodes(line_strip_geode)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #21
0
def start(filename):

  # setup scenegraph
  graph = avango.gua.nodes.SceneGraph(Name = "scenegraph")

  plodloader = avango.gua.nodes.PLODLoader()
  plodloader.UploadBudget.value = 32
  plodloader.RenderBudget.value = 2048
  plodloader.OutOfCoreBudget.value = 4096
  plod_geode = plodloader.create_geometry_from_file(
                  filename, avango.gua.PLODLoaderFlags.NORMALIZE_SCALE |
                            avango.gua.PLODLoaderFlags.NORMALIZE_POSITION )
                  #filename, avango.gua.PLODLoaderFlags.DEFAULTS)


  #light = avango.gua.nodes.LightNode(
  #     Type=avango.gua.LightType.POINT,
  #     Name = "light", Color = avango.gua.Color(1.0, 1.0, 1.0))
  light = avango.gua.nodes.LightNode(
    Type=avango.gua.LightType.POINT,
    Name = "light",
    Color = avango.gua.Color(1.0, 1.0, 1.0),
    Brightness = 50.0,
    Transform = avango.gua.make_trans_mat(1, 1, 5) * avango.gua.make_scale_mat(15, 15, 15)
  )

  light.Transform.value = avango.gua.make_trans_mat(1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

  size = avango.gua.Vec2ui(1024, 768)

  eye = avango.gua.nodes.TransformNode(Name = "eye")
  eye.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 3.5)


  window = avango.gua.nodes.GlfwWindow(
    Size = size,
    LeftResolution = size
  )

  avango.gua.register_window("window", window)

  cam = avango.gua.nodes.CameraNode(
    LeftScreenPath = "/screen",
    SceneGraph = "scenegraph",
    Resolution = size,
    OutputWindowName = "window",
    Transform = avango.gua.make_trans_mat(0.0, 0.0, 3.5)
  )

  resolve_pass = avango.gua.nodes.ResolvePassDescription()
  resolve_pass.BackgroundMode.value = avango.gua.BackgroundMode.COLOR
  resolve_pass.BackgroundColor.value = avango.gua.Color(1,0,0)
  resolve_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.LINEAR

  pipeline_description = avango.gua.nodes.PipelineDescription()
  pipeline_description.Passes.value = [
        avango.gua.nodes.TriMeshPassDescription()
      , avango.gua.nodes.TexturedQuadPassDescription()
      , avango.gua.nodes.PLODPassDescription()
      , avango.gua.nodes.LightVisibilityPassDescription()
      , avango.gua.nodes.BBoxPassDescription()
      , resolve_pass
      , avango.gua.nodes.TexturedScreenSpaceQuadPassDescription()
      ]

  cam.PipelineDescription.value = pipeline_description

  screen = avango.gua.nodes.ScreenNode(Name = "screen", Width = 4, Height = 3)
  screen = avango.gua.nodes.ScreenNode(
    Name = "screen",
    Width = 4,
    Height = 3,
    Children = [cam]
  )

  screen.Children.value = [eye]

  graph.Root.value.Children.value = [plod_geode, light, screen]

  # setup viewing
  size = avango.gua.Vec2ui(1024, 768)

  #setup viewer
  viewer = avango.gua.nodes.Viewer()
  viewer.SceneGraphs.value = [graph]
  viewer.Windows.value = [window]

  timer = avango.nodes.TimeSensor()

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #22
0
def start():
    # device sensor listening to the daemon values
    device = avango.daemon.nodes.DeviceSensor(
        DeviceService=avango.daemon.DeviceService())
    # station name determines which device is used
    device.Station.value = "kinect-head-0"  # 0 for first xbox controller

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    monkey = loader.create_geometry_from_file(
        "monkey", "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    monkey.Material.value.set_uniform("Color",
                                      avango.gua.Vec4(1.0, 0.766, 0.336, 1.0))
    monkey.Material.value.set_uniform("Roughness", 0.3)
    monkey.Material.value.set_uniform("Metalness", 1.0)

    transform = avango.gua.nodes.TransformNode(Children=[monkey])
    transform.Transform.connect_from(device.Matrix)

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30)))

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window",
                                      Transform=avango.gua.make_trans_mat(
                                          0.0, 0.0, 3.5))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0
    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        res_pass,
        anti_aliasing,
    ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=2,
                                         Height=1.5,
                                         Children=[cam])

    graph.Root.value.Children.value = [transform, light, screen]

    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #23
0
def start():

  avango.gua.load_material("data/materials/Bright.gmd")

  graph  = avango.gua.nodes.SceneGraph(Name = "scene")
  loader = avango.gua.nodes.TriMeshLoader()

  for x in range(0, CUBE_COUNT_X):
    for y in range(0, CUBE_COUNT_Y):
      for z in range(0, CUBE_COUNT_Z):

        new_cube = loader.create_geometry_from_file("cube" + str(x) + str(y) + str(z),
                  "data/objects/sphere.obj",
                  "data/materials/Stone.gmd",
                  avango.gua.LoaderFlags.DEFAULTS | avango.gua.LoaderFlags.MAKE_PICKABLE)

        new_cube.Transform.value = avango.gua.make_trans_mat(x, y, z) * \
                                   avango.gua.make_scale_mat(0.3, 0.3, 0.3)
        graph.Root.value.Children.value.append(new_cube)

  light = avango.gua.nodes.SunLightNode(
    Name = "sun",
    Color = avango.gua.Color(1.0, 1.0, 0.7),
    EnableGodrays = True
  )

  light.Transform.value = avango.gua.make_rot_mat(120, 0, 1, 0) * avango.gua.make_rot_mat(-20.0, 1.0, 1.0, 0.0)


  pick_ray = avango.gua.nodes.RayNode(Name = "pick_ray")
  pick_ray.Transform.value = avango.gua.make_trans_mat(0.0, -1.0, 0.0) * \
                             avango.gua.make_scale_mat(1.0, 1.0, 50.0)

  screen = avango.gua.nodes.ScreenNode(Name = "screen",
                                       Width = 4.8,
                                       Height = 2.7)


  screen.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, -2.5)

  eye = avango.gua.nodes.TransformNode(Name = "eye")

  eye.Transform.value = avango.gua.make_trans_mat(0.0, 2.8, 14.0)

  eye.Children.value = [screen, pick_ray]

  graph.Root.value.Children.value.append(light)
  graph.Root.value.Children.value.append(eye)


  picker = Picker()
  picker.SceneGraph.value = graph
  picker.Ray.value = pick_ray

  material_updater = MaterialUpdater()
  material_updater.DefaultMaterial.value = "data/materials/Stone.gmd"
  material_updater.TargetMaterial.value = "data/materials/Bright.gmd"
  material_updater.PickedNodes.connect_from(picker.Results)

  pipe = setup_pipe()

  navigator = examples_common.navigator.Navigator()
  navigator.StartLocation.value = eye.Transform.value.get_translate()
  navigator.OutTransform.connect_from(eye.Transform)

  navigator.RotationSpeed.value = 0.2
  navigator.MotionSpeed.value = 0.04

  eye.Transform.connect_from(navigator.OutTransform)

  viewer = avango.gua.nodes.Viewer()
  viewer.Pipelines.value = [pipe]
  viewer.SceneGraphs.value = [graph]

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #24
0
def start():
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    videoloader = avango.gua.nodes.Video3DLoader()

    live_avatar_node = videoloader.load(
        "live_avatar",
        "/opt/kinect-resources/rgbd-framework/rgbd-daemon/kinect_recordings/surface_23_24_25_26_hades.ks"
    )
    live_avatar_transform = avango.gua.nodes.TransformNode(
        Children=[live_avatar_node])

    recorded_avatar_node = videoloader.load(
        "recorded_avatar",
        "/opt/kinect-resources/rgbd-framework/rgbd-daemon/kinect_recordings/surface_23_24_25_26_hades_playback.ks"
    )
    recorded_avatar_transform = avango.gua.nodes.TransformNode(
        Children=[recorded_avatar_node])

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30)))

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window",
                                      Transform=avango.gua.make_trans_mat(
                                          0.0, 0.0, 3.5))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        avango.gua.nodes.Video3DPassDescription(),
        res_pass,
        anti_aliasing,
    ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=2,
                                         Height=1.5,
                                         Children=[cam])

    graph.Root.value.Children.value = [
        live_avatar_transform, recorded_avatar_transform, light, screen
    ]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    frame_updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    frame_updater.TimeIn.connect_from(timer.Time)

    live_avatar_transform.Transform.connect_from(
        frame_updater.live_avatar_matrix)
    recorded_avatar_transform.Transform.connect_from(
        frame_updater.recorded_avatar_matrix)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #25
0
def start(filename):

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name = "scenegraph")

    loader = avango.gua.nodes.TriMeshLoader()
    monkey = loader.create_geometry_from_file("monkey", "/mnt/data_internal/geometry_data/confidential/Kaisersaal/Ktris_15000/Bam_Kai_o_L_12_ct_1-5.obj", avango.gua.LoaderFlags.DEFAULTS | avango.gua.LoaderFlags.LOAD_MATERIALS)
    monkey.Transform.value = avango.gua.make_rot_mat(-90.0, 1.0, 0.0, 0.0)
    spointsloader = avango.gua.nodes.SPointsLoader()
    spoints_geode = spointsloader.load("kinect", filename)
    spoints_geode.Transform.value = avango.gua.make_rot_mat(180.0, 0.0, 1.0, 0.0) 
    light = avango.gua.nodes.LightNode(
      Type=avango.gua.LightType.POINT,
      Name = "light",
      Color = avango.gua.Color(1.0, 1.0, 1.0),
      Brightness = 300
    )
    light.Transform.value = avango.gua.make_trans_mat(1, 2, 2) * avango.gua.make_scale_mat(15, 15, 15)

    # setup viewing
    width = 1080 #1024
    height = 1200 #768
    eye_size = avango.gua.Vec2ui(width, height)
    window_size = avango.gua.Vec2ui(width, height)
    left_pos = avango.gua.Vec2ui(0, 0)
    right_pos = avango.gua.Vec2ui(0, 0)

    if STEREO_MODE == avango.gua.StereoMode.SIDE_BY_SIDE:
        right_pos.x = width + 1
        window_size.x *= 2

    window_left = avango.gua.nodes.Window(
        Size = window_size,
        Display = ":0.0",
        #SwapGroup = 1,
        #SwapBarrier = 1,
        LeftPosition = left_pos,
        LeftResolution = eye_size,
        RightPosition = right_pos,
        RightResolution = eye_size,
        StereoMode = STEREO_MODE)

    window_left.EnableVsync.value = False
    avango.gua.register_window("window_left", window_left)

    #window_right = avango.gua.nodes.Window(
    #    Size = window_size,
    #    Display = ":0.0",  # ":0.1",
        #SwapGroup = 1,
        #SwapBarrier = 1,
    #    LeftPosition = left_pos,
    #    LeftResolution = eye_size,
    #    RightPosition = right_pos,
    #    RightResolution = eye_size,
    #    StereoMode = STEREO_MODE)


    #window_right.EnableVsync.value = False
    #avango.gua.register_window("window_right", window_right)

    cam = avango.gua.nodes.CameraNode(
        Name = "cam",
        LeftScreenPath = "/screen",
        RightScreenPath = "/screen",
        SceneGraph = "scenegraph",
        Resolution = eye_size,
        EyeDistance = 0.06,
        EnableStereo = True,
        LeftOutputWindow = "window_left",
        Transform = avango.gua.make_trans_mat(0.0, 0.0, 0.5)
        # NearClip =
    )

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()


    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            avango.gua.nodes.SPointsPassDescription(),
            res_pass,
            anti_aliasing,
        ])
    cam.PipelineDescription.value = pipeline_description




    #cam.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 0.0)
    screen = avango.gua.nodes.ScreenNode(Name = "screen", Width = 0.255, Height = 0.285)
    screen.Transform.value = avango.gua.make_trans_mat(0.0, 1.0, 2.5)
    screen.Children.value = [cam]

    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = screen.Transform.value.get_translate()
    navigator.OutTransform.connect_from(screen.Transform)

    navigator.RotationSpeed.value = 0.12/3.0
    navigator.MotionSpeed.value = 0.07

    screen.Transform.connect_from(navigator.OutTransform)


    graph.Root.value.Children.value = [monkey, spoints_geode, light, screen]
    #graph.Root.value.Children.value = [ spoints_geode, light, screen]
    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window_left]#, window_right]
    viewer.DesiredFPS.value = 500.0

    monkey_updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)

    spoints_geode.Transform.connect_from(monkey_updater.MatrixOut)

    monkey_updater.set_left_window(window_left)
    #monkey_updater.set_right_window(window_right)
    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #26
0
def start(filename):
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    spointsloader = avango.gua.nodes.SPointsLoader()
    spoints_geode = spointsloader.load("kinect", filename)

    transform1 = avango.gua.nodes.TransformNode(Children=[spoints_geode])

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30)))

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(
        LeftScreenPath="/screen",
        SceneGraph="scenegraph",
        Resolution=size,
        OutputWindowName="window",
        Transform=avango.gua.make_trans_mat(0.0, 0.0, 3.5))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            avango.gua.nodes.SPointsPassDescription(),
            res_pass,
            anti_aliasing,
        ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(
        Name="screen",
        Width=2,
        Height=1.5,
        Children=[cam])

    graph.Root.value.Children.value = [transform1, light, screen]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    monkey_updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)

    transform1.Transform.connect_from(monkey_updater.MatrixOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #27
0
def start(filename):
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    spointsloader = avango.gua.nodes.SPointsLoader()
    spoints_geode = spointsloader.load("kinect", filename)

    transform1 = avango.gua.nodes.TransformNode(Children=[spoints_geode])

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30)))

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window",
                                      Transform=avango.gua.make_trans_mat(
                                          0.0, 0.0, 3.5))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        avango.gua.nodes.SPointsPassDescription(),
        res_pass,
        anti_aliasing,
    ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=2,
                                         Height=1.5,
                                         Children=[cam])

    graph.Root.value.Children.value = [transform1, light, screen]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    monkey_updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)

    transform1.Transform.connect_from(monkey_updater.MatrixOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #28
0
def start():

  # disable logger warningss
  logger = avango.gua.nodes.Logger(EnableWarning = False)

  # get the server ip
  server_ip = str(sys.argv[1])

  # get the workspace config file #
  workspace_config_file = str(sys.argv[2])
  exec('from ' + workspace_config_file.replace("/", ".").replace(".py", "") + ' import displays', globals())

  # get the workspace id
  workspace_id = int(sys.argv[3])

  # get the display group id
  display_group_id = int(sys.argv[4])

  # get the screen id
  screen_id = int(sys.argv[5])

  # get the display name
  display_name = str(sys.argv[6])

  # get own hostname
  hostname = open('/etc/hostname', 'r').readline()
  hostname = hostname.strip(" \n")

  print("This client is running on", hostname, "and listens to server", server_ip)
  print("It is responsible for workspace", workspace_id, ", display group", display_group_id, "and screen", screen_id)

  # preload materials and shading models
  avango.gua.load_shading_models_from("data/materials")
  avango.gua.load_materials_from("data/materials")
  
  # create distribution node
  nettrans = avango.gua.nodes.NetTransform(
                Name = "net",
                # specify role, ip, and port
                Groupname = "AVCLIENT|{0}|7432".format(server_ip)
                )

  # create a dummy scenegraph to be extended by distribution
  graph = avango.gua.nodes.SceneGraph(Name = "scenegraph")

  graph.Root.value.Children.value = [nettrans]

  # create material updaters as this cannot be distributed
  avango.gua.load_shading_models_from("data/materials")
  avango.gua.load_materials_from("data/materials")
  
  timer = avango.nodes.TimeSensor()
  
  water_updater = ClientMaterialUpdaters.TimedMaterialUniformUpdate()
  water_updater.MaterialName.value = "data/materials/Water.gmd"
  water_updater.UniformName.value = "time"
  water_updater.TimeIn.connect_from(timer.Time)

  '''
  # PLOD Stuff
  _loader = avango.gua.nodes.PLODLoader()
  _loader.UploadBudget.value = 256
  _loader.RenderBudget.value = 4*1024
  _loader.OutOfCoreBudget.value = 24*1024

  
  # Valcamonica
  _path = "/mnt/pitoti/KDN_LOD/PITOTI_KDN_LOD/01_SFM-Befliegung_Seradina_PointCloud/" # opt path
  #_path = "/media/SSD_500GB/CONVERTED_Seradina_Parts/" # ssd path 

  _node = _loader.create_geometry_from_file("seradina1_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_01.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("seradina2_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_02.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("seradina3_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_03.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("seradina4_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_04.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)    
  _node = _loader.create_geometry_from_file("seradina5_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_05.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina6_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_06.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina7_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_07.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina8_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_08.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina9_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_09.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina10_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_10.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina11_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_11.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina12_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_12.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina13_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_13.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina14_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_14.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina15_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_15.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  _node = _loader.create_geometry_from_file("seradina16_", "/mnt/pitoti/Seradina_FULL_SCAN/Parts/sera_part_16.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)            
  
  # seradina rock
  _path = "/mnt/pitoti/XYZ_ALL/new_pitoti_sampling/" # opt path
  #_path = "/media/SSD_500GB/Pitoti_Resampled/" # ssd path
  _node = _loader.create_geometry_from_file("rock", _path + "TLS_Seradina_Rock-12C.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  
  # seradina pitoti
  _node = _loader.create_geometry_from_file("pitoti1", _path + "Area-1_Warrior-scene_P01-1.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti2", _path + "Area-1_Warrior-scene_P01-2.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti3", _path + "Area-1_Warrior-scene_P01-3.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti4", _path + "Area-1_Warrior-scene_P01-4.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti5", _path + "Area-1_Warrior-scene_P02-1.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti6", _path + "Area-1_Warrior-scene_P02-2.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti7", _path + "Area-1_Warrior-scene_P02-3.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti8", _path + "Area-1_Warrior-scene_P02-4.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti9", _path + "Area-1_Warrior-scene_P03-1.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti10", _path + "Area-1_Warrior-scene_P03-2.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti11", _path + "Area-1_Warrior-scene_P03-3.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti12", _path + "Area-1_Warrior-scene_P03-4.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)

  _node = _loader.create_geometry_from_file("pitoti13", _path + "Area-2_Plowing-scene_P01-1.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti14", _path + "Area-2_Plowing-scene_P01-2.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)  
  _node = _loader.create_geometry_from_file("pitoti15", _path + "Area-2_Plowing-scene_P01-3.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)  
  _node = _loader.create_geometry_from_file("pitoti16", _path + "Area-2_Plowing-scene_P01-4.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti17", _path + "Area-2_Plowing-scene_P02-1.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti18", _path + "Area-2_Plowing-scene_P02-2.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)  
  _node = _loader.create_geometry_from_file("pitoti19", _path + "Area-2_Plowing-scene_P02-3.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)  
  _node = _loader.create_geometry_from_file("pitoti20", _path + "Area-2_Plowing-scene_P02-4.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
    
  _node = _loader.create_geometry_from_file("pitoti21", _path + "Area-10_Hunting_Scene_P01.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti22", _path + "Area-10_Hunting_Scene_P02.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti23", _path + "Area-10_Hunting_Scene_P03.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)    

  _node = _loader.create_geometry_from_file("pitoti24", _path + "Area-6_house_P01.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti25", _path + "Area-6_house_P02.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)  

  _node = _loader.create_geometry_from_file("pitoti26", _path + "Area-3_Archers_P01.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)
  _node = _loader.create_geometry_from_file("pitoti27", _path + "Area-3_Archers_P02.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)    
  
  _node = _loader.create_geometry_from_file("pitoti28", _path + "Area_4_hunter_with_bow.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)

  _node = _loader.create_geometry_from_file("pitoti29", _path + "Area-5_hunter_with_speer_P01.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)              
  _node = _loader.create_geometry_from_file("pitoti30", _path + "Area-5_hunter_with_speer_P02.kdn", avango.gua.PLODLoaderFlags.DEFAULTS)      
  # END PLOD stuff
  '''

  # get the display instance
  for _display in displays:
    if _display.name == display_name:
      handled_display_instance = _display

  # create a viewer
  viewer = avango.gua.nodes.Viewer()

  # Create a view for each displaystring (= slot)
  _string_num = 0
  views = []

  for _displaystring in handled_display_instance.displaystrings:

    _view = View()
    _view.my_constructor(graph, 
                         viewer,
                         handled_display_instance, 
                         workspace_id,
                         display_group_id,
                         screen_id,
                         _string_num)
    views.append(_view)
    _string_num += 1

  viewer.SceneGraphs.value = [graph]

  # create client portal manager
  portal_manager = ClientPortalManager()
  portal_manager.my_constructor(graph, views)

  shell_client = GuaVE()
  shell_client.start(locals(), globals())

  # start rendering process
  viewer.run()
Example #29
0
def start():
  # setup scenegraph
  graph  = avango.gua.nodes.SceneGraph(Name = "scenegraph")
  loader = avango.gua.nodes.TriMeshLoader()

  projector = Projector()
  projector.Graph.value = graph
  projector.Texture.value = "data/textures/smiley.jpg"

  monkey = loader.create_geometry_from_file("monkey", "data/objects/monkey.obj", avango.gua.LoaderFlags.NORMALIZE_SCALE)
  monkey.Material.connect_from(projector.Material)

  light = avango.gua.nodes.LightNode(
    Type=avango.gua.LightType.POINT,
    Name = "light",
    Color = avango.gua.Color(1.0, 1.0, 1.0),
    Brightness = 50.0,
    Transform = avango.gua.make_trans_mat(1, 1, 5) * avango.gua.make_scale_mat(15, 15, 15)
  )

  size = avango.gua.Vec2ui(1024, 768)

  window = avango.gua.nodes.GlfwWindow(
    Size = size,
    LeftResolution = size
  )

  avango.gua.register_window("window", window)

  cam = avango.gua.nodes.CameraNode(
    LeftScreenPath = "/screen",
    SceneGraph = "scenegraph",
    Resolution = size,
    OutputWindowName = "window",
    Transform = avango.gua.make_trans_mat(0.0, 0.0, 3.5)
  )

  pipeline_description = avango.gua.nodes.PipelineDescription(
      Passes = [
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            avango.gua.nodes.ResolvePassDescription()
          ])

  cam.PipelineDescription.value = pipeline_description

  screen = avango.gua.nodes.ScreenNode(
    Name = "screen",
    Width = 2,
    Height = 1.5,
    Children = [cam]
  )

  graph.Root.value.Children.value = [monkey, light, screen, projector.group_node]

  #setup viewer
  viewer = avango.gua.nodes.Viewer()
  viewer.SceneGraphs.value = [graph]
  viewer.Windows.value = [window]

  #monkey rotation
  monkey_updater = TimedRotate()
  timer = avango.nodes.TimeSensor()
  monkey_updater.TimeIn.connect_from(timer.Time)
  monkey.Transform.connect_from(monkey_updater.MatrixOut)

  # projector movement
  navigator = Navigator()
  navigator.OutTransform.value = avango.gua.make_identity_mat()
  navigator.StartLocation.value = avango.gua.Vec3(0.0, 0.0, 1.0)

  navigator.RotationSpeed.value = 0.2
  navigator.MotionSpeed.value = 0.04

  projector.Transform.connect_from(navigator.OutTransform)


  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #30
0
def start():

    graph = avango.gua.nodes.SceneGraph(Name="scene")
    loader = avango.gua.nodes.TriMeshLoader()

    fps_size = avango.gua.Vec2(170, 55)

    fps = avango.gua.gui.nodes.GuiResourceNode()
    fps.TextureName.value = "fps"
    fps.URL.value = "asset://gua/data/html/fps.html"
    fps.Size.value = fps_size

    fps_quad = avango.gua.nodes.TexturedScreenSpaceQuadNode(
        Name="fps_quad",
        Texture="fps",
        Width=int(fps_size.x),
        Height=int(fps_size.y),
        Anchor=avango.gua.Vec2(1.0, 1.0))
    graph.Root.value.Children.value.append(fps_quad)

    fallback_mat = avango.gua.create_material(
        avango.gua.MaterialCapabilities.COLOR_VALUE)

    for x in range(0, CUBE_COUNT_X):
        for y in range(0, CUBE_COUNT_Y):
            for z in range(0, CUBE_COUNT_Z):

                new_cube = loader.create_geometry_from_file(
                    "cube" + str(x) + str(y) + str(z),
                    "data/objects/monkey.obj", fallback_mat,
                    avango.gua.LoaderFlags.DEFAULTS)
                # new_cube.Material.value.set_uniform("Color", avango.gua.Vec4(1, 1, 1, 0.6))

                new_cube.Transform.value = avango.gua.make_trans_mat(x*2, y*2, z*2) * \
                                           avango.gua.make_scale_mat(0.3, 0.3, 0.3)
                graph.Root.value.Children.value.append(new_cube)
                new_cube.ShadowMode.value = 1

    spot_light_1 = avango.gua.nodes.LightNode(Name="spot_light_1",
                                              Type=avango.gua.LightType.SPOT,
                                              Color=avango.gua.Color(
                                                  1.0, 0.0, 0.7),
                                              EnableShadows=True,
                                              ShadowMapSize=512,
                                              ShadowOffset=0.002,
                                              ShadowMaxDistance=10,
                                              Falloff=1.5,
                                              Softness=2,
                                              Brightness=10)
    spot_light_1.Transform.value = avango.gua.make_trans_mat(
        14.0, 3.0, 18.0) * avango.gua.make_rot_mat(
            -20, 1, 0, 0) * avango.gua.make_scale_mat(20)
    graph.Root.value.Children.value.append(spot_light_1)

    point_light1 = avango.gua.nodes.LightNode(Type=avango.gua.LightType.POINT,
                                              Name="point_light1",
                                              Color=avango.gua.Color(
                                                  0.2, 1.0, 1.7),
                                              EnableShadows=True,
                                              ShadowMapSize=128,
                                              ShadowMaxDistance=10,
                                              ShadowOffset=0.03,
                                              Falloff=0.5,
                                              Brightness=20)
    point_light1.Transform.value = avango.gua.make_trans_mat(
        4.5, 1.0, 4.5) * avango.gua.make_scale_mat(4)
    graph.Root.value.Children.value.append(point_light1)

    sun_light = avango.gua.nodes.LightNode(
        Name="sun_light",
        Type=avango.gua.LightType.SUN,
        Color=avango.gua.Color(1.0, 1.0, 0.7),
        EnableShadows=True,
        ShadowMapSize=1024,
        ShadowOffset=0.0005,
        ShadowCascadedSplits=[0.1, 4, 7, 20],
        ShadowMaxDistance=30,
        ShadowNearClippingInSunDirection=100,
        ShadowFarClippingInSunDirection=100,
        Brightness=2)
    sun_light.Transform.value = avango.gua.make_rot_mat(
        210, 0, 1, 0) * avango.gua.make_rot_mat(-50.0, 1.0, 0.0, 0.0)
    graph.Root.value.Children.value.append(sun_light)

    floor = loader.create_geometry_from_file("floor", "data/objects/plane.obj",
                                             avango.gua.LoaderFlags.DEFAULTS)
    floor.Transform.value = avango.gua.make_scale_mat(
        20, 1, 20) * avango.gua.make_trans_mat(1, -0.2, 1)
    floor.ShadowMode.value = 0
    graph.Root.value.Children.value.append(floor)

    width = 1920
    height = int(width * 9.0 / 16.0)
    size = avango.gua.Vec2ui(width, height)

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=4.8, Height=2.7)

    screen.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, -2.5)

    camera = avango.gua.nodes.CameraNode(Name="cam",
                                         LeftScreenPath="/cam/screen",
                                         RightScreenPath="/cam/screen",
                                         SceneGraph="scene",
                                         Resolution=size,
                                         OutputWindowName="window",
                                         EyeDistance=0.2,
                                         EnableStereo=False,
                                         Children=[screen],
                                         Transform=avango.gua.make_trans_mat(
                                             0.0, 0.0, 7.0))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 3.0
    res_pass.SSAOFalloff.value = 20.0
    res_pass.SSAORadius.value = 10.0
    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundMode.value = avango.gua.BackgroundMode.CUBEMAP_TEXTURE
    res_pass.BackgroundTexture.value = "awesome_skymap"
    # res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)
    res_pass.VignetteColor.value = avango.gua.Vec4(0, 0, 0, 1)

    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.SkyMapPassDescription(
                OutputTextureName="awesome_skymap"),
            avango.gua.nodes.LightVisibilityPassDescription(), res_pass,
            avango.gua.nodes.BBoxPassDescription(),
            avango.gua.nodes.TexturedScreenSpaceQuadPassDescription()
            # avango.gua.nodes.DebugViewPassDescription()
        ],
        EnableABuffer=False)

    camera.PipelineDescription.value = pipeline_description

    graph.Root.value.Children.value.append(camera)

    window = avango.gua.nodes.Window(Size=size,
                                     Title="shadows",
                                     LeftResolution=size,
                                     RightResolution=size,
                                     EnableVsync=False,
                                     StereoMode=avango.gua.StereoMode.MONO)

    avango.gua.register_window("window", window)

    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = camera.Transform.value.get_translate()
    navigator.OutTransform.connect_from(camera.Transform)

    navigator.RotationSpeed.value = 0.2
    navigator.MotionSpeed.value = 0.04

    camera.Transform.connect_from(navigator.OutTransform)

    viewer = avango.gua.nodes.Viewer()
    # viewer.DesiredFPS.value = 200
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    timer = avango.nodes.TimeSensor()

    fps_updater = FPSUpdater(FPSResource=fps, Window=window, Viewer=viewer)
    fps_updater.TimeIn.connect_from(timer.Time)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #31
0
def start():

    graph = avango.gua.nodes.SceneGraph(Name="big_scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    root_node = avango.gua.nodes.TransformNode(
        Name="Root",
        Transform=avango.gua.make_scale_mat(0.5, 0.5, 0.5)
        )

    root_monkey = loader.create_geometry_from_file(
        "root_ape",
        "data/objects/monkey.obj",
        get_random_material()
        )

    root_node.Children.value = [root_monkey]
    graph.Root.value.Children.value.append(root_node)

    monkey_updater = TimedRotate()
    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)
    root_monkey.Transform.connect_from(monkey_updater.MatrixOut)

    add_lights(graph, 40)
    setup_scene(graph, root_monkey, 4)

    size = avango.gua.Vec2ui(1500, int(1500*9/16))

    camera = avango.gua.nodes.CameraNode(
        LeftScreenPath="/screen",
        SceneGraph="big_scenegraph",
        Resolution=size,
        OutputWindowName="window",
        Transform=avango.gua.make_trans_mat(0.0, 0.0, 2.5)
        )

    screen = avango.gua.nodes.ScreenNode(
        Name="screen",
        Width=1.6,
        Height=0.9,
        Children=[camera],
        Transform=avango.gua.make_trans_mat(0.0, 0.0, 0.5)
        )

    graph.Root.value.Children.value.append(screen)

    window = avango.gua.nodes.Window(
        Size=size,
        LeftResolution=size
        )

    avango.gua.register_window("window", window)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    viewer.run()
Example #32
0
            LeftScreen = "/sound/screen",
            RightScreen = "/sound/screen",
            SceneGraph = "scenegraph"),
          Window = avango.gua.nodes.Window(Size = size,
                                           LeftResolution = size),
          LeftResolution = size,
          BackgroundMode = avango.gua.BackgroundMode.COLOR
          )

pipe.Enabled.value = True

#setup viewer

viewer = avango.gua.nodes.Viewer()
viewer.Pipelines.value = [pipe]
viewer.SceneGraphs.value = [graph]

soundtraverser.RootNode.value = root_group
soundtraverser.Traverse.value = True

openal_renderer.ListenerPosition.connect_from(eye.Transform)

stereosound.Play.value = True
monosound.Play.value = True

#viewer.frame()

guaVE = GuaVE()
guaVE.start(locals(), globals())
viewer.run()
Example #33
0
def start():

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    #environment:
    tri_mesh_loader = avango.gua.nodes.TriMeshLoader()

    path_plane = "/opt/project_animation/demo/data/objects/cube2.obj"
    flags_plane = avango.gua.LoaderFlags.NORMALIZE_POSITION \
        | avango.gua.LoaderFlags.NORMALIZE_SCALE \
        | avango.gua.LoaderFlags.OPTIMIZE_GEOMETRY \
        | avango.gua.LoaderFlags.MAKE_PICKABLE \
        | avango.gua.LoaderFlags.LOAD_MATERIALS
    plane = tri_mesh_loader.create_geometry_from_file("cube", path_plane,
                                                      flags_plane)
    plane.Transform.value *= \
        avango.gua.make_scale_mat(10.0, 0.01, 10.0) * \
        avango.gua.make_trans_mat(0, -3, 0)

    path_normal = "/opt/project_animation/demo/data/objects/glass_2_3_nm.TGA"
    plane.Material.value.set_uniform("NormalMap", path_normal)

    sunlight = \
        avango.gua.nodes.LightNode(
            Type=avango.gua.LightType.SUN,
            Name="light",
            Color=avango.gua.Color(245.0/255.0, 246.0/255.0, 178.0/255.0),
            Brightness=5.0,
            Transform=(avango.gua.make_rot_mat(119.5, 0.0, 1.0, 0.0) *
                       avango.gua.make_rot_mat(-10, 1.0, 0.0, 0.0))
            )

    #view setup:
    size = avango.gua.Vec2ui(2560, 1440)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)
    window.CursorMode.value = 2
    window.EnableFullscreen.value = False

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window")

    #render pipeline
    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        avango.gua.skelanim.nodes.SkeletalAnimationPassDescription(),
        avango.gua.nodes.ResolvePassDescription(),
        avango.gua.nodes.SSAAPassDescription(),
    ])

    pipeline_description.Passes.value[3].EnableSSAO.value = True
    pipeline_description.Passes.value[3].SSAORadius.value = 2.0
    pipeline_description.Passes.value[3].SSAOIntensity.value = 2.0
    pipeline_description.Passes.value[3].BackgroundMode.value = 1
    pipeline_description.Passes.value[3].BackgroundTexture.value = \
        "/opt/guacamole/resources/skymaps/skymap.jpg"
    pipeline_description.Passes.value[3].ToneMappingMode.value = \
        avango.gua.ToneMappingMode.LINEAR
    #pipeline_description.EnableABuffer.value = True

    cam.PipelineDescription.value = pipeline_description
    cam.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 0.4)
    cam.FarClip.value = 300
    cam.NearClip.value = 0.01

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=0.8, Height=0.45)
    screen.Children.value = [cam]
    screen.Transform.value = avango.gua.make_trans_mat(0, 0.1, -2)

    graph.Root.value.Children.value = [screen, plane, sunlight]

    avango.gua.register_window("window", window)

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]
    window.CursorMode.value = avango.gua.CursorMode.DISABLED

    #XBOX Controller
    device_sensor = avango.daemon.nodes.DeviceSensor(
        DeviceService=avango.daemon.DeviceService())
    device_sensor.Station.value = "device-xbox-1"

    #mixamo character
    skel_mesh_loader = avango.gua.skelanim.nodes.SkeletalAnimationLoader()

    #scenegraph setup:
    #root    ->   kachujin_ground    ->   kachujin_nav    ->   kachujin
    #             ground following        character control    geometry
    kachujin_ground = avango.gua.nodes.TransformNode(Name="kachujin_ground")
    graph.Root.value.Children.value.append(kachujin_ground)
    kachujin_nav = avango.gua.nodes.TransformNode(Name="kachujin_nav")
    #set initial position of character here:
    #kachujin_nav.Transform.value =  avango.gua.make_trans_mat(0.0, 0.0, 0.0)

    kachujin = skel_mesh_loader.create_geometry_from_file(
        "kachujin",
        "/opt/project_animation/Assets/Mixamo/Kachujin/Kachujin_G_Rosales.FBX",
        avango.gua.LoaderFlags.LOAD_MATERIALS
        | avango.gua.LoaderFlags.NORMALIZE_SCALE)

    kachujin.Transform.value = \
        kachujin.Transform.value * \
        avango.gua.make_rot_mat(-90.0, 1.0, 0.0, 0.0) * \
        avango.gua.make_scale_mat(0.02, 0.02, 0.02)

    #load animations from character settings
    load_mixamo_animations_kachujin(kachujin)

    kachujin_ground.Children.value = [kachujin_nav]
    kachujin_nav.Children.value = [kachujin]

    #character control
    kachujin_character_control = CharacterControl()
    kachujin_character_control.my_constructor(kachujin, kachujin_nav,
                                              AnimationConfig("idle"), window)
    #override keyboard events with xbox controller events:
    #apply_character_control_settings_mixamo(kachujin_character_control,
    #                                        device_sensor)
    apply_character_control_settings_mixamo(kachujin_character_control)
    #wall detection
    kachujin_character_control.activate_wall_detection(0.0075, 0.009, "idle",
                                                       graph)

    #camera control
    kachujin_camera_control = CameraControl()
    kachujin_camera_control.my_constructor(kachujin, window, -17.0)
    screen.Transform.connect_from(kachujin_camera_control.OutTransform)
    #camera_control_xbox_connect(kachujin_camera_control, device_sensor)

    #ground following
    kachujin_ground_following = GroundFollowing(SceneGraph=graph,
                                                OffsetToGround=0.01,
                                                MaxDistanceToGround=100.0)
    kachujin_ground_following.my_constructor(gravity=-0.00005)
    kachujin_ground_following.InTransform.connect_from(kachujin.WorldTransform)
    kachujin_ground.Transform.connect_from(
        kachujin_ground_following.OutTransform)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #34
0
def start():

    graph = avango.gua.nodes.SceneGraph(Name="scene")
    loader = avango.gua.nodes.TriMeshLoader()

    for x in range(0, CUBE_COUNT_X):
        for y in range(0, CUBE_COUNT_Y):
            for z in range(0, CUBE_COUNT_Z):

                new_cube = loader.create_geometry_from_file(
                    "cube" + str(x) + str(y) + str(z),
                    "data/objects/sphere.obj", avango.gua.LoaderFlags.DEFAULTS
                    | avango.gua.LoaderFlags.MAKE_PICKABLE)

                new_cube.Transform.value = avango.gua.make_trans_mat(x, y, z) * \
                                           avango.gua.make_scale_mat(0.3, 0.3, 0.3)
                graph.Root.value.Children.value.append(new_cube)

    light = avango.gua.nodes.LightNode(Type=avango.gua.LightType.POINT,
                                       Name="sun",
                                       Color=avango.gua.Color(1.0, 1.0, 0.7),
                                       Brightness=10)

    light.Transform.value = avango.gua.make_trans_mat((CUBE_COUNT_X - 1.0) * 0.5, (CUBE_COUNT_Y - 1.0) * 0.5, (CUBE_COUNT_Z - 1.0) * 0.5) * \
                            avango.gua.make_scale_mat(100)

    pick_ray = avango.gua.nodes.RayNode(Name="pick_ray")
    pick_ray.Transform.value = avango.gua.make_trans_mat(0.0, -1.0, 0.0) * \
                               avango.gua.make_scale_mat(1.0, 1.0, 50.0)

    ray_geom = loader.create_geometry_from_file(
        "ray_geom", "data/objects/cylinder.obj",
        avango.gua.LoaderFlags.DEFAULTS)

    ray_geom.Transform.value = avango.gua.make_scale_mat(0.1, 0.1, 100)
    pick_ray.Children.value.append(ray_geom)

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=4.8, Height=2.7)

    screen.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, -2.5)

    graph.Root.value.Children.value.append(light)

    picker = Picker()
    picker.SceneGraph.value = graph
    picker.Ray.value = pick_ray

    material_updater = MaterialUpdater()
    material_updater.PickedNodes.connect_from(picker.Results)

    width = 1920
    height = int(width * 9.0 / 16.0)
    size = avango.gua.Vec2ui(width, height)

    camera = avango.gua.nodes.CameraNode(Name="cam",
                                         LeftScreenPath="/cam/screen",
                                         SceneGraph="scene",
                                         Resolution=size,
                                         OutputWindowName="window",
                                         Children=[screen, pick_ray],
                                         Transform=avango.gua.make_trans_mat(
                                             0.0, 0.0, 7.0))

    camera.PipelineDescription.value.EnableABuffer.value = True

    graph.Root.value.Children.value.append(camera)

    window = avango.gua.nodes.Window(Size=size,
                                     Title="picking",
                                     LeftResolution=size)

    avango.gua.register_window("window", window)

    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = camera.Transform.value.get_translate()
    navigator.OutTransform.connect_from(camera.Transform)

    navigator.RotationSpeed.value = 0.2
    navigator.MotionSpeed.value = 0.04

    camera.Transform.connect_from(navigator.OutTransform)

    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #35
0
def start(filename):

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    # init Projector
    projector = XML_Projector()
    projector.load_XML("data/orthoimage.d.xml", graph.Root.value)
    projector.Texture.value = "data/textures/segMask_small.jpg"


    # init point cloud
    plodloader = avango.gua.nodes.PLODLoader()
    plodloader.UploadBudget.value = 16
    plodloader.RenderBudget.value = 1024
    plodloader.OutOfCoreBudget.value = 1024 * 6
    
    # filename = "/home/yuqo8702/Desktop/Area-7_Rosa-Camuna_knn.kdn"
    plod_node = plodloader.create_geometry_from_file(
        filename,
        avango.gua.PLODLoaderFlags.DEFAULTS,
    )

    plod_node.RadiusScale.value = 1.0
    plod_node.ErrorThreshold.value = 2.5

    plod_node.Material.value = projector.Material.value

    # setup viewing
    size = avango.gua.Vec2ui(2560, 1440)

    window = avango.gua.nodes.GlfwWindow(
        Size=size,
        LeftResolution=size,
    )

    avango.gua.register_window("window", window)

    screen = avango.gua.nodes.ScreenNode(
        Name="screen",
        Width=0.64,
        Height=0.36,
        Transform=avango.gua.make_trans_mat(0.0, 0.0, -2.0),
    )

    cam = avango.gua.nodes.CameraNode(
        Name="cam",
        LeftScreenPath="/cam/screen",
        SceneGraph="scenegraph",
        Resolution=size,
        OutputWindowName="window",
        Children=[screen],
        Transform=avango.gua.make_trans_mat(
            499.211641143046,
            -1095.8880106695,
            133.737704808047,
        ),
    )

    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.PLODPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            avango.gua.nodes.ResolvePassDescription(),
        ])

    cam.PipelineDescription.value = pipeline_description

    graph.Root.value.Children.value = [cam, projector.group_node, plod_node]

    #navigation
    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = cam.Transform.value.get_translate()
    navigator.OutTransform.connect_from(cam.Transform)

    navigator.RotationSpeed.value = 0.1
    navigator.MotionSpeed.value = 0.01
    cam.Transform.connect_from(navigator.OutTransform)

    #toggling
    keyboard = examples_common.device.KeyboardDevice()
    toggler = Toggler()
    toggler.KeyIn.connect_from(keyboard.KeyT)
    projector.Enable.connect_from(toggler.EnableOut)

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #36
0
def start():

  graph  = avango.gua.nodes.SceneGraph(Name = "scene")
  mesh_loader = avango.gua.nodes.TriMeshLoader()
  
  #configure lod backend
  lod_loader = avango.gua.lod.nodes.LodLoader()
  lod_loader.UploadBudget.value = 64
  lod_loader.RenderBudget.value = 2048
  lod_loader.OutOfCoreBudget.value = 4096
  
  fallback_mat = avango.gua.create_material(avango.gua.MaterialCapabilities.COLOR_VALUE)


  
  plod_node = lod_loader.load_lod_pointcloud(
                  "/opt/3d_models/point_based/plod/pig_pr.bvh",
                  avango.gua.lod.LoaderFlags.NORMALIZE_SCALE |
                  avango.gua.lod.LoaderFlags.NORMALIZE_POSITION
                  )

  new_cube = mesh_loader.create_geometry_from_file(
    "cube",
    "data/objects/monkey.obj",
    fallback_mat,
    avango.gua.LoaderFlags.DEFAULTS
  )
  
  #plod_node.Material.value.set_uniform("Color", avango.gua.Vec4(1.0, 1.0, 1.0, 1.0))
  plod_node.Material.value.set_uniform("Emissivity", 1.0)

  new_cube.Transform.value = avango.gua.make_trans_mat(-1, 0.3, 0) * \
                             avango.gua.make_scale_mat(0.3, 0.3, 0.3)
  
  
  
  plod_node.Transform.value = avango.gua.make_trans_mat(0, 0.3, 0) * \
                              avango.gua.make_scale_mat(0.3, 0.3, 0.3)
  
  graph.Root.value.Children.value.append(plod_node)
  plod_node.ShadowMode.value = 1
  graph.Root.value.Children.value.append(new_cube)
  new_cube.ShadowMode.value = 1


  spot_light_1 = avango.gua.nodes.LightNode(Name = "spot_light_1",
                                         Type = avango.gua.LightType.SPOT,
                                         Color = avango.gua.Color(1.0, 1.0, 1.0),
                                         EnableShadows = True,
                                         ShadowMapSize = 1024,
                                         ShadowOffset = 0.002,
                                         ShadowMaxDistance = 10,
                                         Falloff = 1.5,
                                         ShadowNearClippingInSunDirection = 0.1,
                                         ShadowFarClippingInSunDirection = 10.0,
                                         Softness = 2,
                                         Brightness = 20)
  spot_light_1.Transform.value = avango.gua.make_trans_mat(0.0, 3.0, 0.0) * avango.gua.make_rot_mat(-90, 1, 0, 0) * avango.gua.make_scale_mat(4)
  graph.Root.value.Children.value.append(spot_light_1)

  point_light1 = avango.gua.nodes.LightNode(
                                         Type = avango.gua.LightType.POINT,
                                         Name = "point_light1",
                                         Color = avango.gua.Color(0.2, 1.0, 1.7),
                                         EnableShadows = True,
                                         ShadowMapSize = 1024,
                                         ShadowMaxDistance = 10,
                                         ShadowOffset = 0.03,
                                         Falloff = 0.5,
                                         ShadowNearClippingInSunDirection = 0.1,
                                         ShadowFarClippingInSunDirection = 10.0,
                                         Brightness = 20)
                                         
  point_light1.Transform.value = avango.gua.make_trans_mat(1.5, 1.0, 1.5) * avango.gua.make_scale_mat(4)
  graph.Root.value.Children.value.append(point_light1)

  sun_light = avango.gua.nodes.LightNode(Name = "sun_light",
                                         Type = avango.gua.LightType.SUN,
                                         Color = avango.gua.Color(1.0, 1.0, 0.7),
                                         EnableShadows = True,
                                         ShadowMapSize = 1024,
                                         ShadowOffset = 0.0005,
                                         ShadowCascadedSplits = [0.1, 4, 7, 20],
                                         ShadowMaxDistance = 30,
                                         ShadowNearClippingInSunDirection = 100,
                                         ShadowFarClippingInSunDirection = 100,
                                         Brightness = 2
                                         )
  sun_light.Transform.value = avango.gua.make_rot_mat(210, 0, 1, 0) * avango.gua.make_rot_mat(-50.0, 1.0, 0.0, 0.0)
  #graph.Root.value.Children.value.append(sun_light)

  floor = mesh_loader.create_geometry_from_file(
    "floor",
    "data/objects/plane.obj",
    avango.gua.LoaderFlags.DEFAULTS
  )
  
  floor.Transform.value = avango.gua.make_scale_mat(4, 1, 4) * avango.gua.make_trans_mat(0, -0.2, 0)
  floor.ShadowMode.value = 1
  graph.Root.value.Children.value.append(floor)

  width = 1920;
  height = int(width * 9.0 / 16.0)
  size = avango.gua.Vec2ui(width, height)

  screen = avango.gua.nodes.ScreenNode(Name = "screen",
                                       Width = 4.8,
                                       Height = 2.7)

  screen.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, -2.5)

  camera = avango.gua.nodes.CameraNode(
    Name = "cam",
    LeftScreenPath = "/cam/screen",
    RightScreenPath = "/cam/screen",
    SceneGraph = "scene",
    Resolution = size,
    OutputWindowName = "window",
    EyeDistance = 0.2,
    EnableStereo = False,
    Children = [screen],
    Transform = avango.gua.make_trans_mat(0.0, 0.0, 2.0)
  )

  res_pass = avango.gua.nodes.ResolvePassDescription()
  res_pass.EnableSSAO.value = False
  res_pass.SSAOIntensity.value = 3.0
  res_pass.SSAOFalloff.value = 20.0
  res_pass.SSAORadius.value = 10.0
  res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1,0.1,0.1)
  res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
  res_pass.Exposure.value = 1.0
  res_pass.BackgroundMode.value = avango.gua.BackgroundMode.CUBEMAP_TEXTURE
  res_pass.BackgroundTexture.value = "awesome_skymap"
  # res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)
  res_pass.VignetteColor.value = avango.gua.Vec4(0, 0, 0, 1)

  plod_pass = avango.gua.lod.nodes.PLodPassDescription()
  plod_pass.SurfelRenderMode.value = avango.gua.lod.RenderFlags.HQ_TWO_PASS
  #plod_pass.SurfelRenderMode.value = avango.gua.lod.RenderFlags.LQ_ONE_PASS

  pipeline_description = avango.gua.nodes.PipelineDescription(
    Passes = [
      avango.gua.nodes.TriMeshPassDescription(),
      plod_pass,
      avango.gua.nodes.SkyMapPassDescription(
        OutputTextureName="awesome_skymap"
      ),
      avango.gua.nodes.LightVisibilityPassDescription(),
      res_pass,
      avango.gua.nodes.DebugViewPassDescription()
    ],
    EnableABuffer = False
  )

  camera.PipelineDescription.value = pipeline_description

  graph.Root.value.Children.value.append(camera)

  window = avango.gua.nodes.Window(
    Size = size,
    Title = "shadows",
    LeftResolution = size,
    RightResolution = size,
    EnableVsync = False,
    StereoMode = avango.gua.StereoMode.MONO
  )

  avango.gua.register_window("window", window)

  navigator = examples_common.navigator.Navigator()
  navigator.StartLocation.value = camera.Transform.value.get_translate()
  navigator.OutTransform.connect_from(camera.Transform)

  navigator.RotationSpeed.value = 0.2
  navigator.MotionSpeed.value = 0.04

  camera.Transform.connect_from(navigator.OutTransform)

  viewer = avango.gua.nodes.Viewer()
  # viewer.DesiredFPS.value = 200
  viewer.SceneGraphs.value = [graph]
  viewer.Windows.value = [window]

  timer = avango.nodes.TimeSensor()

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #37
0
def start():

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    loader = avango.gua.nodes.TriMeshLoader()
    monkey = loader.create_geometry_from_file(
        "monkey", "/opt/3d_models/architecture/Venicer/venicer.obj")

    light = avango.gua.nodes.LightNode(Type=avango.gua.LightType.POINT,
                                       Name="light",
                                       Color=avango.gua.Color(1.0, 1.0, 1.0),
                                       Brightness=300)
    light.Transform.value = avango.gua.make_trans_mat(
        1, 2, 2) * avango.gua.make_scale_mat(15, 15, 15)

    # setup viewing
    width = 2560  #1024
    height = 1080  #768
    eye_size = avango.gua.Vec2ui(width, height)
    window_size = avango.gua.Vec2ui(width, height)
    left_pos = avango.gua.Vec2ui(0, 0)
    right_pos = avango.gua.Vec2ui(0, 0)

    if STEREO_MODE == avango.gua.StereoMode.SIDE_BY_SIDE:
        right_pos.x = width + 1
        window_size.x *= 2

    window_left = avango.gua.nodes.Window(
        Size=window_size,
        Display=":0.0",
        #SwapGroup = 1,
        #SwapBarrier = 1,
        LeftPosition=left_pos,
        LeftResolution=eye_size,
        RightPosition=right_pos,
        RightResolution=eye_size,
        StereoMode=STEREO_MODE)

    window_left.EnableVsync.value = False
    avango.gua.register_window("window_left", window_left)

    cam = avango.gua.nodes.CameraNode(Name="cam",
                                      LeftScreenPath="/screen",
                                      RightScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=eye_size,
                                      EyeDistance=0.06,
                                      EnableStereo=True,
                                      LeftOutputWindow="window_left",
                                      Transform=avango.gua.make_trans_mat(
                                          0.0, 0.0, 0.5)
                                      # NearClip =
                                      )

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        res_pass,
        anti_aliasing,
    ])
    cam.PipelineDescription.value = pipeline_description

    #cam.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 0.0)
    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=0.255,
                                         Height=0.285)
    screen.Transform.value = avango.gua.make_trans_mat(0.0, 1.0, 2.5)
    screen.Children.value = [cam]

    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = screen.Transform.value.get_translate()
    navigator.OutTransform.connect_from(screen.Transform)

    navigator.RotationSpeed.value = 0.02 / 3.0
    navigator.MotionSpeed.value = 0.01

    screen.Transform.connect_from(navigator.OutTransform)

    graph.Root.value.Children.value = [monkey, light, screen]
    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window_left]
    viewer.DesiredFPS.value = 500.0

    monkey_updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)

    monkey_updater.set_left_window(window_left)
    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #38
0
def start():

  graph  = avango.gua.nodes.SceneGraph(Name = "scene")
  loader = avango.gua.nodes.TriMeshLoader()

  for x in range(0, CUBE_COUNT_X):
    for y in range(0, CUBE_COUNT_Y):
      for z in range(0, CUBE_COUNT_Z):

        new_cube = loader.create_geometry_from_file("cube" + str(x) + str(y) + str(z),
                  "data/objects/sphere.obj",
                  avango.gua.LoaderFlags.DEFAULTS | avango.gua.LoaderFlags.MAKE_PICKABLE)

        new_cube.Transform.value = avango.gua.make_trans_mat(x, y, z) * \
                                   avango.gua.make_scale_mat(0.3, 0.3, 0.3)
        graph.Root.value.Children.value.append(new_cube)

  light = avango.gua.nodes.LightNode(
    Type=avango.gua.LightType.POINT,
    Name = "sun",
    Color = avango.gua.Color(1.0, 1.0, 0.7),
    Brightness = 10
  )

  light.Transform.value = avango.gua.make_trans_mat((CUBE_COUNT_X - 1.0) * 0.5, (CUBE_COUNT_Y - 1.0) * 0.5, (CUBE_COUNT_Z - 1.0) * 0.5) * \
                          avango.gua.make_scale_mat(100)



  pick_ray = avango.gua.nodes.RayNode(Name = "pick_ray")
  pick_ray.Transform.value = avango.gua.make_trans_mat(0.0, -1.0, 0.0) * \
                             avango.gua.make_scale_mat(1.0, 1.0, 50.0)

  ray_geom = loader.create_geometry_from_file(
    "ray_geom",
    "data/objects/cylinder.obj",
    avango.gua.LoaderFlags.DEFAULTS
  )

  ray_geom.Transform.value = avango.gua.make_scale_mat(0.1, 0.1, 100)
  pick_ray.Children.value.append(ray_geom)

  screen = avango.gua.nodes.ScreenNode(Name = "screen",
                                       Width = 4.8,
                                       Height = 2.7)


  screen.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, -2.5)

  graph.Root.value.Children.value.append(light)


  picker = Picker()
  picker.SceneGraph.value = graph
  picker.Ray.value = pick_ray

  material_updater = MaterialUpdater()
  material_updater.PickedNodes.connect_from(picker.Results)

  width = 1920;
  height = int(width * 9.0 / 16.0)
  size = avango.gua.Vec2ui(width, height)

  camera = avango.gua.nodes.CameraNode(
    Name = "cam",
    LeftScreenPath = "/cam/screen",
    SceneGraph = "scene",
    Resolution = size,
    OutputWindowName = "window",
    Children = [screen, pick_ray],
    Transform = avango.gua.make_trans_mat(0.0, 0.0, 7.0)
  )

  camera.PipelineDescription.value.EnableABuffer.value = True

  graph.Root.value.Children.value.append(camera)

  window = avango.gua.nodes.Window(
    Size = size,
    Title = "picking",
    LeftResolution = size
  )

  avango.gua.register_window("window", window)

  navigator = examples_common.navigator.Navigator()
  navigator.StartLocation.value = camera.Transform.value.get_translate()
  navigator.OutTransform.connect_from(camera.Transform)

  navigator.RotationSpeed.value = 0.2
  navigator.MotionSpeed.value = 0.04

  camera.Transform.connect_from(navigator.OutTransform)

  viewer = avango.gua.nodes.Viewer()
  viewer.SceneGraphs.value = [graph]
  viewer.Windows.value = [window]

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #39
0
def start():
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    left_monkey = loader.create_geometry_from_file(
        "monkey",
        "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    right_monkey = loader.create_geometry_from_file(
        "monkey",
        "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    left_monkey.Material.value.set_uniform(
        "Color", avango.gua.Vec4(1.0, 0.766, 0.336, 1.0))
    left_monkey.Material.value.set_uniform("Roughness", 0.3)
    left_monkey.Material.value.set_uniform("Metalness", 1.0)

    right_monkey.Material.value.set_uniform(
        "Color", avango.gua.Vec4(1.0, 0.266, 0.136, 1.0))
    right_monkey.Material.value.set_uniform("Roughness", 0.6)
    right_monkey.Material.value.set_uniform("Metalness", 0.0)

    left_rot_transform = avango.gua.nodes.TransformNode(
        Children=[left_monkey]
        )
    left_pos_transform = avango.gua.nodes.TransformNode(
        Transform=avango.gua.make_trans_mat(-0.5, 0.0, 0.0),
        Children=[left_rot_transform]
        )
    right_rot_transform = avango.gua.nodes.TransformNode(
        Children=[right_monkey]
        )
    right_pos_transform = avango.gua.nodes.TransformNode(
        Transform=avango.gua.make_trans_mat(0.5, 0.0, 0.0),
        Children=[right_rot_transform]
        )

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30))
        )

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(
        Size=size,
        LeftResolution=size
        )

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(
        LeftScreenPath="/screen",
        SceneGraph="scenegraph",
        Resolution=size,
        OutputWindowName="window",
        Transform=avango.gua.make_trans_mat(0.0, 0.0, 3.5)
        )

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            res_pass,
            anti_aliasing,
            ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(
        Name="screen",
        Width=2,
        Height=1.5,
        Children=[cam]
        )

    graph.Root.value.Children.value = [
        left_pos_transform,
        right_pos_transform,
        light,
        screen
        ]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    # device sensor listening to the daemon values
    device = avango.daemon.nodes.DeviceSensor(
        DeviceService=avango.daemon.DeviceService()
        )
    # station name determines which device is used
    device.Station.value = "gua-device-xbox-0"  # 0 for first xbox controller

    # field container to set rotation of left monkey
    left_rotation_updater = DeviceRotate()
    left_rotation_updater.RotY.connect_from(device.Value0)
    left_rotation_updater.RotX.connect_from(device.Value1)
    left_rot_transform.Transform.connect_from(left_rotation_updater.MatrixOut)

    # field container to set rotation of right monkey
    right_rotation = DeviceRotate()
    right_rotation.RotY.connect_from(device.Value2)
    right_rotation.RotX.connect_from(device.Value3)
    right_rot_transform.Transform.connect_from(right_rotation.MatrixOut)

    # all buttons change the background color
    bgcolor_updater = RandomColor()
    bgcolor_updater.Trigger.connect_from(device.Button0)
    bgcolor_updater.Trigger.connect_from(device.Button1)
    bgcolor_updater.Trigger.connect_from(device.Button2)
    bgcolor_updater.Trigger.connect_from(device.Button3)
    bgcolor_updater.Trigger.connect_from(device.Button4)
    bgcolor_updater.Trigger.connect_from(device.Button5)
    bgcolor_updater.Trigger.connect_from(device.Button6)
    bgcolor_updater.Trigger.connect_from(device.Button7)
    bgcolor_updater.Trigger.connect_from(device.Button8)
    bgcolor_updater.Trigger.connect_from(device.Button9)
    res_pass.BackgroundColor.connect_from(bgcolor_updater.ColorOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #40
0
def start():
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    monkey1 = loader.create_geometry_from_file(
        "monkey", "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    monkey2 = loader.create_geometry_from_file(
        "monkey", "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    monkey1.Material.value.set_uniform("Color",
                                       avango.gua.Vec4(1.0, 0.766, 0.336, 1.0))
    monkey1.Material.value.set_uniform("Roughness", 0.3)
    monkey1.Material.value.set_uniform("Metalness", 1.0)

    monkey2.Material.value.set_uniform("Color",
                                       avango.gua.Vec4(1.0, 0.266, 0.136, 1.0))
    monkey2.Material.value.set_uniform("Roughness", 0.6)
    monkey2.Material.value.set_uniform("Metalness", 0.0)

    transform1 = avango.gua.nodes.TransformNode(Children=[monkey1])
    transform2 = avango.gua.nodes.TransformNode(
        Transform=avango.gua.make_trans_mat(-0.5, 0.0, 0.0),
        Children=[monkey2])

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30)))

    window = avango.oculus.nodes.OculusWindow()

    #notice, that the oculus screen transforms and translations are automatically
    #computed by the oculus. do not try to enter them yourself, or you will
    #most likely get a wrong result due to influence of the lenses

    #accessible fields:
    #    SensorOrientation ##head pose (rotation and translation)
    #    Resolution ##window resolution
    #    EyeResolution ##recommended eye resolution (behaves strange so far)
    #    LeftScreenSize  ## size of left screen in meters
    #    RightScreenSize ## size of right screen in meters
    #    LeftScreenTranslation  ## translation of left screen in meters
    #    RightScreenTranslation ## translation of right screen in meters
    #    EyeDistance ## distance between both eyes in meters. for SDKs < v0.6, this is fixed to 0.064

    # start the window in fullscreen and with the oculus window as primary display in order to fit the
    # window nicely on the HMD

    window.Size.value = window.Resolution.value
    window.LeftResolution.value = window.Resolution.value
    window.RightResolution.value = window.Resolution.value
    window.EnableFullscreen.value = True

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/nav/head/left_screen",
                                      RightScreenPath="/nav/head/right_screen",
                                      SceneGraph="scenegraph",
                                      Resolution=window.LeftResolution.value,
                                      OutputWindowName="window",
                                      EyeDistance=window.EyeDistance.value,
                                      EnableStereo=True)

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        res_pass,
        anti_aliasing,
    ])

    cam.PipelineDescription.value = pipeline_description

    left_screen = avango.gua.nodes.ScreenNode(
        Name="left_screen",
        Width=window.LeftScreenSize.value.x,
        Height=window.LeftScreenSize.value.y,
        Transform=avango.gua.make_trans_mat(
            window.LeftScreenTranslation.value))

    right_screen = avango.gua.nodes.ScreenNode(
        Name="right_screen",
        Width=window.RightScreenSize.value.x,
        Height=window.RightScreenSize.value.y,
        Transform=avango.gua.make_trans_mat(
            window.RightScreenTranslation.value))

    head = avango.gua.nodes.TransformNode(
        Name="head",
        Children=[left_screen, right_screen, cam],
        Transform=avango.gua.make_identity_mat())

    nav = avango.gua.nodes.TransformNode(Name="nav",
                                         Transform=avango.gua.make_trans_mat(
                                             0.0, 0.0, 2.0),
                                         Children=[head])

    graph.Root.value.Children.value = [transform1, transform2, light, nav]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    monkey_updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)

    head.Transform.connect_from(window.SensorOrientation)
    transform1.Transform.connect_from(monkey_updater.MatrixOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #41
0
def start():
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    web = avango.gua.gui.nodes.GuiResourceNode(TextureName="google",
                                               URL="https://www.google.com",
                                               Size=avango.gua.Vec2(
                                                   1024, 1024))

    focused_element = web

    web_mat = avango.gua.nodes.Material()
    web_mat.set_uniform("ColorMap", "google")
    web_mat.set_uniform("Emissivity", 0.0)

    transform = avango.gua.nodes.TransformNode()
    transform.Transform.value = avango.gua.make_scale_mat(
        0.5) * avango.gua.make_rot_mat(40, 1, 0, 0)

    resolution = avango.gua.Vec2ui(1920, 1080)

    loader = avango.gua.nodes.TriMeshLoader()
    google_geom = loader.create_geometry_from_file(
        "google_geom", "data/objects/curved_plane.obj", web_mat,
        avango.gua.LoaderFlags.NORMALIZE_POSITION
        | avango.gua.LoaderFlags.NORMALIZE_SCALE
        | avango.gua.LoaderFlags.MAKE_PICKABLE)

    google_geom.Children.value.append(web)
    transform.Children.value.append(google_geom)

    fps_size = avango.gua.Vec2(170, 55)

    fps = avango.gua.gui.nodes.GuiResourceNode(
        TextureName="fps", URL="asset://gua/data/html/fps.html", Size=fps_size)

    fps_quad = avango.gua.nodes.TexturedScreenSpaceQuadNode(
        Name="fps_quad",
        Texture="fps",
        Width=int(fps_size.x),
        Height=int(fps_size.y),
        Anchor=avango.gua.Vec2(1.0, 1.0),
        Children=[fps])

    address_bar_size = avango.gua.Vec2(340, 55)

    address_bar = avango.gua.gui.nodes.GuiResourceNode(
        TextureName="address_bar",
        URL="asset://gua/data/html/address_bar.html",
        Size=address_bar_size)

    def address_bar_loaded():
        address_bar.add_javascript_callback("update_address")
        address_bar.add_javascript_callback("address_back")
        address_bar.add_javascript_callback("address_forward")

    def address_bar_handle_callback(callback, params):
        if callback == "update_address":
            web.URL.value = params[0]
        elif callback == "address_back":
            web.go_back()
        elif callback == "address_forward":
            web.go_forward()

    address_bar.on_loaded(address_bar_loaded)
    address_bar.on_javascript_callback(address_bar_handle_callback)

    address_bar_quad = avango.gua.nodes.TexturedScreenSpaceQuadNode(
        Name="address_bar_quad",
        Texture="address_bar",
        Width=int(address_bar_size.x),
        Height=int(address_bar_size.y),
        Anchor=avango.gua.Vec2(-1.0, 1.0),
        Children=[address_bar])

    google_geom.Children.value.append(address_bar_quad)
    google_geom.Children.value.append(fps_quad)

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=80,
        Transform=avango.gua.make_trans_mat(-2, 3, 5) *
        avango.gua.make_scale_mat(50))

    server_cam = avango.gua.nodes.CameraNode(
        ViewID=1,
        LeftScreenPath="/net/screen",
        SceneGraph="scenegraph",
        Resolution=resolution,
        OutputWindowName="server_window",
        Transform=avango.gua.make_trans_mat(0.0, 0.0, 1.5))

    client_cam = avango.gua.nodes.CameraNode(
        ViewID=2,
        LeftScreenPath="/net/screen",
        SceneGraph="scenegraph",
        Resolution=resolution,
        OutputWindowName="client_window",
        Transform=avango.gua.make_trans_mat(0.0, 0.0, 1.5))

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=1.92 * 0.25,
                                         Height=1.08 * 0.25,
                                         Transform=avango.gua.make_trans_mat(
                                             0.0, 0.0, 2.0),
                                         Children=[server_cam, client_cam])

    graph.Root.value.Children.value = [nettrans]

    make_node_distributable(transform)
    make_node_distributable(light)
    make_node_distributable(screen)

    nettrans.Children.value = [transform, light, screen]

    window = avango.gua.nodes.GlfwWindow(Size=resolution,
                                         LeftResolution=resolution,
                                         Title="server_window")

    avango.gua.register_window("server_window", window)

    def handle_char(c):
        nonlocal focused_element
        focused_element.inject_char_event(c)

    def handle_key(key, scancode, action, mods):
        nonlocal focused_element
        focused_element.inject_keyboard_event(key, scancode, action, mods)

    def handle_button(button, action, mods):
        nonlocal focused_element
        focused_element.inject_mouse_button(button, action, mods)

    def handle_cursor(pos):
        nonlocal focused_element
        hit_pos = avango.gua.Vec2()

        if (address_bar_quad.pixel_to_texcoords(pos, resolution, hit_pos)):
            address_bar.inject_mouse_position_relative(hit_pos)
            focused_element = address_bar

        else:
            res = avango.gua.Vec2(resolution.x, resolution.y)
            screen_space_pos = pos / res - 0.5

            origin = screen.ScaledWorldTransform.value * avango.gua.Vec4(
                screen_space_pos.x, screen_space_pos.y, 0, 1)
            direction = origin - server_cam.WorldTransform.value * avango.gua.Vec4(
                0, 0, 0, 1)

            ray = avango.gua.nodes.Ray(
                Origin=avango.gua.Vec3(origin.x, origin.y, origin.z),
                Direction=avango.gua.Vec3(direction.x, direction.y,
                                          direction.z) * 100.0,
                TMax=1.0)

            result = graph.ray_test(
                ray, avango.gua.PickingOptions.PICK_ONLY_FIRST_OBJECT
                | avango.gua.PickingOptions.PICK_ONLY_FIRST_FACE
                | avango.gua.PickingOptions.GET_TEXTURE_COORDS)

            for i in range(0, len(result.value)):
                if result.value[i].Object.value == google_geom:
                    web.inject_mouse_position_relative(
                        result.value[i].TextureCoords.value)
                    focused_element = web

    def handle_scroll(scroll):
        web.inject_mouse_wheel(scroll)

    window.on_char(handle_char)
    window.on_key_press(handle_key)
    window.on_button_press(handle_button)
    window.on_move_cursor(handle_cursor)
    window.on_scroll(handle_scroll)

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    timer = avango.nodes.TimeSensor()

    fps_updater = FPSUpdater(FPSResource=fps, Window=window, Viewer=viewer)
    fps_updater.TimeIn.connect_from(timer.Time)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #42
0
def launch():
    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #43
0
File: main.py Project: vrsys/avango
def start():

    graph = avango.gua.nodes.SceneGraph(Name="scene")
    mesh_loader = avango.gua.nodes.TriMeshLoader()

    #configure lod backend
    lod_loader = avango.gua.lod.nodes.LodLoader()
    lod_loader.UploadBudget.value = 64
    lod_loader.RenderBudget.value = 2048
    lod_loader.OutOfCoreBudget.value = 4096

    fallback_mat = avango.gua.create_material(
        avango.gua.MaterialCapabilities.COLOR_VALUE)

    #add (registered) fem model as reference coordinate system at normalized position and scale
    fem_model_geode = mesh_loader.create_geometry_from_file(
        "fem_model",
        "/mnt/pitoti/AISTec/FEM_simulation/Scherkondetal_Time_Series_20190822/FEM_OBJS/2020_01_23_Verbundtreffen_3_Demostate/Joined_Scherkonde_Geom_2020_01_23_registered.obj",
        avango.gua.LoaderFlags.NORMALIZE_POSITION
        | avango.gua.LoaderFlags.NORMALIZE_SCALE
        | avango.gua.LoaderFlags.LOAD_MATERIALS)

    #fem_model_geode.Transform.value = avango.gua.make_rot_mat(90.0, 1.0, 0.0, 0.0) * fem_model_geode.Transform.value
    fem_model_geode.RenderToGBuffer.value = False
    graph.Root.value.Children.value.append(fem_model_geode)

    #the vis file loader functions return MFNodes instead of a single Node
    plod_nodes = lod_loader.load_lod_pointclouds_from_vis_file(
        "/mnt/pitoti/AISTec/FEM_simulation/Scherkondetal_Time_Series_20190822/Scherkondetal_Pointclouds/2020_01_23_Verbundtreffen_3_Demostate/vis_files/train_simulation.vis",
        avango.gua.lod.LoaderFlags.MAKE_PICKABLE)

    #set the parameters for every node (I put the nodes under the fem_model to be in a meaningful reference coordinate system)
    for node in plod_nodes.value:
        fem_model_geode.Children.value.append(node)
        #node.Transform.value = avango.gua.make_trans_mat(0, 0.0, 1.5) * node.Transform.value
        node.ShadowMode.value = 1

        node.EnableTimeSeriesColoring.value = True
        node.EnableTimeSeriesDeformation.value = True

        #sets the mixin factor between fe coloring and original color (0.0 = full point cloud color, 1.0 = full FEM color)
        node.AttributeColorToMixInFactor.value = 0.7
        #exaggeration factor for the deformation
        node.TimeSeriesDeformFactor.value = 1000.0
        #playback speed for the time series (1.0 = real-time). setting the playback speed affects the FE simulation, so all nodes refer to the same model
        node.TimeSeriesPlaybackSpeed.value = 1.0

        #if this is set, the bridge keeps on playing back if the update_time_cursor function is called (see timer script)
        node.EnableAutomaticPlayback.value = True

        #index of the FE attribute to visualize. At least 4 are available, usually 10
        node.AttributeToVisualizeIndex.value = 3

    #ask one of the nodes (we just assume that we have at least one mode in the vis file) for the number of simulation positions (= train axes)
    arrow_geometry_list = []
    reference_node = plod_nodes.value[0]
    number_of_train_axes = reference_node.get_number_of_simulation_positions(
    ).value

    #load the right amount of arrows
    for arrow_index in range(number_of_train_axes):

        new_arrow_geometry_node = mesh_loader.create_geometry_from_file(
            "arrow_geometry_" + str(arrow_index),
            "/opt/3d_models/symbols/arrow.obj",
            avango.gua.LoaderFlags.LOAD_MATERIALS)

        arrow_geometry_list.append(new_arrow_geometry_node)
        fem_model_geode.Children.value.append(new_arrow_geometry_node)

    width = 1920
    height = int(width * 9.0 / 16.0)
    size = avango.gua.Vec2ui(width, height)

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=4.8, Height=2.7)

    screen.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, -2.5)

    camera = avango.gua.nodes.CameraNode(Name="cam",
                                         LeftScreenPath="/cam/screen",
                                         RightScreenPath="/cam/screen",
                                         SceneGraph="scene",
                                         Resolution=size,
                                         OutputWindowName="window",
                                         EyeDistance=0.06,
                                         EnableStereo=False,
                                         Children=[screen],
                                         Transform=avango.gua.make_trans_mat(
                                             0.0, 0.0, 2.0))

    if OPEN_2_WINDOWS:
        screen2 = avango.gua.nodes.ScreenNode(Name="screen2",
                                              Width=4.8,
                                              Height=2.7)

        screen2.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, -6.5)

        camera2 = avango.gua.nodes.CameraNode(
            Name="cam2",
            LeftScreenPath="/cam2/screen2",
            RightScreenPath="/cam2/screen2",
            SceneGraph="scene",
            Resolution=size,
            OutputWindowName="window2",
            EyeDistance=0.06,
            EnableStereo=False,
            Children=[screen2],
            Transform=avango.gua.make_trans_mat(0.0, 0.0, 2.0))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = False
    res_pass.SSAOIntensity.value = 3.0
    res_pass.SSAOFalloff.value = 20.0
    res_pass.SSAORadius.value = 10.0
    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundMode.value = avango.gua.BackgroundMode.CUBEMAP_TEXTURE
    res_pass.BackgroundTexture.value = "awesome_skymap"
    # res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)
    res_pass.VignetteColor.value = avango.gua.Vec4(0, 0, 0, 1)

    plod_pass = avango.gua.lod.nodes.PLodPassDescription()
    plod_pass.SurfelRenderMode.value = avango.gua.lod.RenderFlags.HQ_TWO_PASS
    #plod_pass.SurfelRenderMode.value = avango.gua.lod.RenderFlags.LQ_ONE_PASS

    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(), plod_pass,
            avango.gua.nodes.SkyMapPassDescription(
                OutputTextureName="awesome_skymap"),
            avango.gua.nodes.LightVisibilityPassDescription(), res_pass,
            avango.gua.nodes.DebugViewPassDescription()
        ],
        EnableABuffer=False)

    camera.PipelineDescription.value = pipeline_description
    graph.Root.value.Children.value.append(camera)

    if OPEN_2_WINDOWS:
        camera2.PipelineDescription.value = pipeline_description
        graph.Root.value.Children.value.append(camera2)

    window = avango.gua.nodes.Window(Size=size,
                                     Title="Programmable LOD",
                                     LeftResolution=size,
                                     RightResolution=size,
                                     EnableVsync=False,
                                     StereoMode=avango.gua.StereoMode.MONO)

    if OPEN_2_WINDOWS:
        window2 = avango.gua.nodes.Window(
            Size=size,
            Title="Programmable LOD",
            LeftResolution=size,
            RightResolution=size,
            EnableVsync=False,
            StereoMode=avango.gua.StereoMode.MONO
            #StereoMode = avango.gua.StereoMode.ANAGLYPH_RED_CYAN
        )

    avango.gua.register_window("window", window)

    if OPEN_2_WINDOWS:
        avango.gua.register_window("window2", window2)

    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = camera.Transform.value.get_translate()
    navigator.OutTransform.connect_from(camera.Transform)

    navigator.RotationSpeed.value = 0.2
    navigator.MotionSpeed.value = 0.04

    camera.Transform.connect_from(navigator.OutTransform)

    viewer = avango.gua.nodes.Viewer()
    # viewer.DesiredFPS.value = 200
    viewer.SceneGraphs.value = [graph]

    if OPEN_2_WINDOWS:
        viewer.Windows.value = [window, window2]
    else:
        viewer.Windows.value = [window]

    timer = avango.nodes.TimeSensor()
    timed_fem_updater = TimedFEMVisualizationUpdate()
    timed_fem_updater.TimeIn.connect_from(timer.Time)
    timed_fem_updater.set_reference_node(plod_nodes.value[0])
    timed_fem_updater.set_arrow_node_list(arrow_geometry_list)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #44
0
def start():

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    #environment:
    tri_mesh_loader = avango.gua.nodes.TriMeshLoader()

    path = "/opt/project_animation/demo/data/objects/cube2.obj"
    flags = avango.gua.LoaderFlags.NORMALIZE_POSITION \
        | avango.gua.LoaderFlags.NORMALIZE_SCALE \
        | avango.gua.LoaderFlags.OPTIMIZE_GEOMETRY \
        | avango.gua.LoaderFlags.MAKE_PICKABLE \
        | avango.gua.LoaderFlags.LOAD_MATERIALS
    plane = \
        tri_mesh_loader.create_geometry_from_file("cube",
                                                  path,
                                                  flags)

    plane.Transform.value *= \
        avango.gua.make_scale_mat(10.0, 0.01, 10.0) *\
        avango.gua.make_trans_mat(0, -3, 0)

    path2 = "/opt/project_animation/demo/data/objects/glass_2_3_nm.TGA"
    plane.Material.value.set_uniform("NormalMap",
                                     path2)

    sunlight = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.SUN,
        Name="light",
        Color=avango.gua.Color(245.0/255.0, 246.0/255.0, 178.0/255.0),
        Brightness=5.0,
        Transform=(avango.gua.make_rot_mat(119.5, 0.0, 1.0, 0.0) *
                   avango.gua.make_rot_mat(-10, 1.0, 0.0, 0.0))
    )

    #view setup:
    size = avango.gua.Vec2ui(2560, 1440)

    window = avango.gua.nodes.GlfwWindow(
        Size=size,
        LeftResolution=size
    )
    window.CursorMode.value = 2
    window.EnableFullscreen.value = True

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window")

    #render pipeline
    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            avango.gua.skelanim.nodes.SkeletalAnimationPassDescription(),
            avango.gua.nodes.ResolvePassDescription(),
            avango.gua.nodes.SSAAPassDescription(),
            ])

    pipeline_description.Passes.value[3].EnableSSAO.value = True
    pipeline_description.Passes.value[3].SSAORadius.value = 2.0
    pipeline_description.Passes.value[3].SSAOIntensity.value = 2.0
    pipeline_description.Passes.value[3].BackgroundMode.value = 1
    pipeline_description.Passes.value[3].BackgroundTexture.value = \
        "/opt/avango/master/examples/picking/data/textures/skymap.jpg"
    pipeline_description.Passes.value[3].ToneMappingMode.value = \
        avango.gua.ToneMappingMode.LINEAR
    #pipeline_description.EnableABuffer.value = True

    cam.PipelineDescription.value = pipeline_description
    cam.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 0.4)
    cam.FarClip.value = 300
    cam.NearClip.value = 0.01

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=0.8, Height=0.45)
    screen.Children.value = [cam]
    screen.Transform.value = avango.gua.make_trans_mat(0, 0.1, -2)

    graph.Root.value.Children.value = [screen, plane, sunlight]

    avango.gua.register_window("window", window)

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]
    window.CursorMode.value = avango.gua.CursorMode.DISABLED

    #navigation
    navigator = examples_common.navigator.Navigator()
    #navigator.StartLocation.value = screen.Transform.value.get_translate()
    navigator.StartRotation.value = avango.gua.Vec2(0, 790)
    navigator.OutTransform.connect_from(screen.Transform)
    navigator.RotationSpeed.value = 0.2
    navigator.MotionSpeed.value = 0.004
    # enable navigation
    screen.Transform.connect_from(navigator.OutTransform)

    #XBOX Controller
    device_sensor = avango.daemon.nodes.DeviceSensor(
        DeviceService=avango.daemon.DeviceService())
    device_sensor.Station.value = "device-xbox-1"

    #unreal tournament characters
    skel_mesh_loader = avango.gua.skelanim.nodes.SkeletalAnimationLoader()

    #LOOP MODE DEMO BOB
    path_bob = "/opt/project_animation/Assets/UnrealTournament/Characters/" +\
        "Necris_Male/necris_male_ut4_SKELMESH.FBX"
    flags_bob = avango.gua.LoaderFlags.LOAD_MATERIALS \
        | avango.gua.LoaderFlags.NORMALIZE_SCALE
    bob_loop = \
        skel_mesh_loader.create_geometry_from_file("bob_loop",
                                                   path_bob,
                                                   flags_bob)

    bob_loop.Transform.value = avango.gua.make_trans_mat(0.0, -0.01, 0.0) *\
        bob_loop.Transform.value *\
        avango.gua.make_rot_mat(-90.0, 1.0, 0.0, 0.0) *\
        avango.gua.make_scale_mat(0.2, 0.2, 0.2)

    graph.Root.value.Children.value.append(bob_loop)

    #load animations
    path_idle = "/opt/project_animation/Assets/" + \
        "UnrealTournament/UniversalAnimations/Idle_Ready_Rif.FBX"
    path_run = "/opt/project_animation/Assets/" + \
        "UnrealTournament/UniversalAnimations/Run_Fwd_Rif.FBX"
    bob_loop.load_animation(path_idle, "idle")
    bob_loop.load_animation(path_idle, "idle2")
    bob_loop.load_animation(path_run, "run_fwd")
    bob_loop.load_animation(path_run, "run_fwd2")

    #character control
    character_control_loop = CharacterControl()
    character_control_loop.my_constructor(bob_loop, bob_loop,
                                          AnimationConfig("idle"), window)
    character_control_loop.on_animation_end("idle",
                                            AnimationConfig("run_fwd",
                                                            loop=True,
                                                            speed=1.0,
                                                            duration=3.0))
    character_control_loop.on_animation_end("run_fwd",
                                            AnimationConfig("idle2",
                                                            loop=False,
                                                            speed=1.0,
                                                            duration=3.0))
    character_control_loop.on_animation_end("idle2",
                                            AnimationConfig("run_fwd2",
                                                            loop=False,
                                                            speed=1.0,
                                                            duration=3.0))
    character_control_loop.on_animation_end("run_fwd2",
                                            AnimationConfig("idle",
                                                            loop=True,
                                                            speed=1.0,
                                                            duration=3.0))

    #SPEED DEMO BOB
    bob_speed = skel_mesh_loader.create_geometry_from_file("bob_speed",
                                                           path_bob,
                                                           flags_bob)

    bob_speed.Transform.value = avango.gua.make_trans_mat(0.1, -0.01, 0.0) * \
        bob_speed.Transform.value * \
        avango.gua.make_rot_mat(-90.0, 1.0, 0.0, 0.0) * \
        avango.gua.make_scale_mat(0.2, 0.2, 0.2)

    graph.Root.value.Children.value.append(bob_speed)

    #load animations
    bob_speed.load_animation(path_idle, "idle")
    bob_speed.load_animation(path_idle, "idle2")
    bob_speed.load_animation(path_run, "run_fwd")
    bob_speed.load_animation(path_run, "run_fwd2")

    #character control
    character_control_speed = CharacterControl()
    character_control_speed.my_constructor(bob_speed, bob_speed,
                                           AnimationConfig("idle"), window)
    character_control_speed.on_animation_end("idle",
                                             AnimationConfig("run_fwd",
                                                             loop=True,
                                                             speed=1.0,
                                                             duration=3.0))
    character_control_speed.on_animation_end("run_fwd",
                                             AnimationConfig("idle2",
                                                             loop=True,
                                                             speed=1.5,
                                                             duration=3.0))
    character_control_speed.on_animation_end("idle2",
                                             AnimationConfig("run_fwd2",
                                                             loop=True,
                                                             speed=1.5,
                                                             duration=3.0))
    character_control_speed.on_animation_end("run_fwd2",
                                             AnimationConfig("idle",
                                                             loop=True,
                                                             speed=1.0,
                                                             duration=3.0))

    #DURATION DEMO BOB
    bob_duration = skel_mesh_loader.create_geometry_from_file("bob_duration",
                                                              path_bob,
                                                              flags_bob)

    bob_duration.Transform.value = \
        avango.gua.make_trans_mat(0.2, -0.01, 0.0) * \
        bob_duration.Transform.value * \
        avango.gua.make_rot_mat(-90.0, 1.0, 0.0, 0.0) * \
        avango.gua.make_scale_mat(0.2, 0.2, 0.2)

    graph.Root.value.Children.value.append(bob_duration)

    #load animations
    bob_duration.load_animation(path_idle, "idle")
    bob_duration.load_animation(path_idle, "idle2")
    bob_duration.load_animation(path_run, "run_fwd")
    bob_duration.load_animation(path_run, "run_fwd2")

    #character control
    character_control_duration = CharacterControl()
    character_control_duration.my_constructor(bob_duration, bob_duration,
                                              AnimationConfig("idle"), window)
    character_control_duration.on_animation_end("idle",
                                                AnimationConfig("run_fwd",
                                                                loop=True,
                                                                speed=1.0,
                                                                duration=1.0))
    character_control_duration.on_animation_end("run_fwd",
                                                AnimationConfig("idle2",
                                                                loop=True,
                                                                speed=1.0,
                                                                duration=2.0))
    character_control_duration.on_animation_end("idle2",
                                                AnimationConfig("run_fwd2",
                                                                loop=True,
                                                                speed=1.0,
                                                                duration=2.0))
    character_control_duration.on_animation_end("run_fwd2",
                                                AnimationConfig("idle",
                                                                loop=True,
                                                                speed=1.0,
                                                                duration=1.0))

    #start animation sequence
    character_control_loop.switch_animation(AnimationConfig("idle",
                                                            loop=False))
    character_control_speed.switch_animation(AnimationConfig("idle",
                                                             loop=False))
    character_control_duration.switch_animation(AnimationConfig("idle",
                                                                loop=False))

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #45
0
File: main.py Project: vrsys/avango
def start():
    graph = avango.gua.nodes.SceneGraph(Name="scene")
    loader = avango.gua.nodes.TriMeshLoader()

    fallback_mat = avango.gua.create_material(
        avango.gua.MaterialCapabilities.COLOR_VALUE
        | avango.gua.MaterialCapabilities.ROUGHNESS_VALUE)
    fallback_mat.set_uniform("Roughness", 0.6)

    for x in range(0, CUBE_COUNT_X):
        for y in range(0, CUBE_COUNT_Y):
            for z in range(0, CUBE_COUNT_Z):

                new_cube = loader.create_geometry_from_file(
                    "cube" + str(x) + str(y) + str(z),
                    "data/objects/monkey.obj",
                    fallback_mat,
                    #avango.gua.LoaderFlags.DEFAULTS
                )

                new_cube.Transform.value = avango.gua.make_trans_mat(x*2, y*2, z*2) * \
                                           avango.gua.make_scale_mat(0.3, 0.3, 0.3)
                graph.Root.value.Children.value.append(new_cube)
                new_cube.ShadowMode.value = 1

    sun_light = avango.gua.nodes.LightNode(
        Name="sun_light",
        Type=avango.gua.LightType.SUN,
        Color=avango.gua.Color(1.0, 1.0, 0.7),
        EnableShadows=True,
        ShadowMapSize=1024,
        ShadowOffset=0.0005,
        ShadowCascadedSplits=[0.1, 4, 7, 20],
        ShadowMaxDistance=30,
        ShadowNearClippingInSunDirection=100,
        ShadowFarClippingInSunDirection=100,
        Brightness=4)
    graph.Root.value.Children.value.append(sun_light)

    floor = loader.create_geometry_from_file("floor", "data/objects/plane.obj",
                                             fallback_mat,
                                             avango.gua.LoaderFlags.DEFAULTS)
    floor.Transform.value = avango.gua.make_scale_mat(
        200, 1, 200) * avango.gua.make_trans_mat(-0.5, -0.2, -0.5)
    floor.ShadowMode.value = 0
    graph.Root.value.Children.value.append(floor)

    width = 700
    height = int(width * 9.0 / 16.0)
    size4k = avango.gua.Vec2ui(3840, 2160)
    size = size4k  # avango.gua.Vec2ui(width, height)
    vsync = True

    screen_tl = avango.gua.nodes.ScreenNode(
        Name="screen_tl",
        Width=1.6,
        Height=0.9,
        Transform=avango.gua.make_trans_mat(-0.8, 0.45, -2.5))

    camera_tl = avango.gua.nodes.CameraNode(
        Name="cam_tl",
        BlackList=[],
        LeftScreenPath="/head/cam_tl/screen_tl",
        RightScreenPath="/head/cam_tl/screen_tl",
        SceneGraph="scene",
        Resolution=size,
        OutputWindowName="window_tl",
        EyeDistance=0.2,
        EnableStereo=False,
        Children=[screen_tl])

    screen_tr = avango.gua.nodes.ScreenNode(
        Name="screen_tr",
        Width=1.6,
        Height=0.9,
        Transform=avango.gua.make_trans_mat(0.8, 0.45, -2.5))

    camera_tr = avango.gua.nodes.CameraNode(
        Name="cam_tr",
        LeftScreenPath="/head/cam_tr/screen_tr",
        RightScreenPath="/head/cam_tr/screen_tr",
        SceneGraph="scene",
        Resolution=size,
        OutputWindowName="window_tr",
        EyeDistance=0.2,
        EnableStereo=False,
        Children=[screen_tr])

    screen_bl = avango.gua.nodes.ScreenNode(
        Name="screen_bl",
        Width=1.6,
        Height=0.9,
        Transform=avango.gua.make_trans_mat(-0.8, -0.45, -2.5))

    camera_bl = avango.gua.nodes.CameraNode(
        Name="cam_bl",
        BlackList=[],
        LeftScreenPath="/head/cam_bl/screen_bl",
        RightScreenPath="/head/cam_bl/screen_bl",
        SceneGraph="scene",
        Resolution=size,
        OutputWindowName="window_bl",
        EyeDistance=0.2,
        EnableStereo=False,
        Children=[screen_bl])

    screen_br = avango.gua.nodes.ScreenNode(
        Name="screen_br",
        Width=1.6,
        Height=0.9,
        Transform=avango.gua.make_trans_mat(0.8, -0.45, -2.5))

    camera_br = avango.gua.nodes.CameraNode(
        Name="cam_br",
        BlackList=[],
        LeftScreenPath="/head/cam_br/screen_br",
        RightScreenPath="/head/cam_br/screen_br",
        SceneGraph="scene",
        Resolution=size,
        OutputWindowName="window_br",
        EyeDistance=0.2,
        EnableStereo=False,
        Children=[screen_br])

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 3.0
    res_pass.SSAOFalloff.value = 20.0
    res_pass.SSAORadius.value = 10.0
    #res_pass.EnvironmentLightingTexture.value = "day_skymap"
    #res_pass.AlternativeEnvironmentLightingTexture.value = "night_skymap"
    #res_pass.EnvironmentLightingMode.value = avango.gua.EnvironmentLightingMode.CUBEMAP
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.VignetteColor.value = avango.gua.Vec4(0, 0, 0, 0.7)
    res_pass.VignetteCoverage.value = 0.0
    res_pass.EnableFog.value = True
    res_pass.FogStart.value = 30
    res_pass.FogEnd.value = 100
    #res_pass.BackgroundMode.value = avango.gua.BackgroundMode.CUBEMAP_TEXTURE
    #res_pass.BackgroundTexture.value = "day_skymap"
    #res_pass.AlternativeBackgroundTexture.value = "night_skymap"

    sky_pass = avango.gua.nodes.SkyMapPassDescription(
        OutputTextureName="day_skymap")

    avango.gua.create_texture_cube(
        "night_skymap",
        "data/textures/stars/purple-nebula/purple-nebula_right1.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_left2.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_bottom4.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_top3.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_front5.jpg",
        "data/textures/stars/purple-nebula/purple-nebula_back6.jpg")

    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        sky_pass,
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(), res_pass,
        avango.gua.nodes.TexturedScreenSpaceQuadPassDescription()
    ])

    camera_tl.PipelineDescription.value = pipeline_description
    camera_tr.PipelineDescription.value = pipeline_description
    camera_bl.PipelineDescription.value = pipeline_description
    camera_br.PipelineDescription.value = pipeline_description

    head = avango.gua.nodes.TransformNode(
        Name="head", Children=[camera_tl, camera_tr, camera_bl, camera_br])

    graph.Root.value.Children.value.append(head)

    window_tl = avango.gua.nodes.Window(Size=size,
                                        Display=":0.0",
                                        SwapGroup=1,
                                        SwapBarrier=1,
                                        Title="day cycle top left",
                                        LeftResolution=size,
                                        RightResolution=size,
                                        EnableVsync=vsync,
                                        StereoMode=avango.gua.StereoMode.MONO)

    window_tr = avango.gua.nodes.Window(Size=size,
                                        Display=":0.1",
                                        SwapGroup=1,
                                        SwapBarrier=1,
                                        Title="day cycle top right",
                                        LeftResolution=size,
                                        RightResolution=size,
                                        EnableVsync=vsync,
                                        StereoMode=avango.gua.StereoMode.MONO)

    window_bl = avango.gua.nodes.Window(Size=size,
                                        Display=":0.2",
                                        SwapGroup=1,
                                        SwapBarrier=1,
                                        Title="day cycle bottom left",
                                        LeftResolution=size,
                                        RightResolution=size,
                                        EnableVsync=vsync,
                                        StereoMode=avango.gua.StereoMode.MONO)

    window_br = avango.gua.nodes.Window(Size=size,
                                        Display=":0.3",
                                        SwapGroup=1,
                                        SwapBarrier=1,
                                        Title="day cycle bottom right",
                                        LeftResolution=size,
                                        RightResolution=size,
                                        EnableVsync=vsync,
                                        StereoMode=avango.gua.StereoMode.MONO)

    avango.gua.register_window("window_tl", window_tl)
    avango.gua.register_window("window_tr", window_tr)
    avango.gua.register_window("window_bl", window_bl)
    avango.gua.register_window("window_br", window_br)

    navigator = examples_common.navigator.Navigator()
    navigator.StartLocation.value = head.Transform.value.get_translate()
    navigator.OutTransform.connect_from(head.Transform)

    navigator.RotationSpeed.value = 0.2
    navigator.MotionSpeed.value = 0.04

    head.Transform.connect_from(navigator.OutTransform)

    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window_tl, window_tr, window_bl, window_br]

    timer = avango.nodes.TimeSensor()

    sun_updater = SunUpdater(TimeScale=3500)
    sun_updater.TimeIn.connect_from(timer.Time)
    sun_light.Transform.connect_from(sun_updater.MatrixOut)
    sun_light.Color.connect_from(sun_updater.SunColorOut)
    sky_pass.LightDirection.connect_from(sun_updater.DirectionOut)
    sky_pass.GroundColor.connect_from(sun_updater.GroundColorOut)
    res_pass.BackgroundTextureBlendFactor.connect_from(
        sun_updater.BlendFactorOut)
    res_pass.EnvironmentLightingTextureBlendFactor.connect_from(
        sun_updater.BlendFactorOut)

    def toggle_swap_barrier():
        window_tl.SwapGroup.value = (window_tl.SwapGroup.value + 1) % 2
        window_tr.SwapGroup.value = (window_tr.SwapGroup.value + 1) % 2
        window_bl.SwapGroup.value = (window_bl.SwapGroup.value + 1) % 2
        window_br.SwapGroup.value = (window_br.SwapGroup.value + 1) % 2
        window_tl.SwapBarrier.value = (window_tl.SwapBarrier.value + 1) % 2
        window_tr.SwapBarrier.value = (window_tr.SwapBarrier.value + 1) % 2
        window_bl.SwapBarrier.value = (window_bl.SwapBarrier.value + 1) % 2
        window_br.SwapBarrier.value = (window_br.SwapBarrier.value + 1) % 2

        print("window_tl.SwapGroup.value = ", window_tl.SwapGroup.value)
        print("window_tr.SwapGroup.value = ", window_tr.SwapGroup.value)
        print("window_bl.SwapGroup.value = ", window_bl.SwapGroup.value)
        print("window_br.SwapGroup.value = ", window_br.SwapGroup.value)
        print("window_tl.SwapBarrier.value = ", window_tl.SwapBarrier.value)
        print("window_tr.SwapBarrier.value = ", window_tr.SwapBarrier.value)
        print("window_bl.SwapBarrier.value = ", window_bl.SwapBarrier.value)
        print("window_br.SwapBarrier.value = ", window_br.SwapBarrier.value)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    avango.evaluate()
    print("sleep 5 seconds")
    time.sleep(5)
    viewer.run()
Example #46
0
File: main.py Project: vrsys/avango
def start():
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    monkey1 = loader.create_geometry_from_file(
        "monkey", "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    monkey2 = loader.create_geometry_from_file(
        "monkey", "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    monkey1.Material.value.set_uniform("Color",
                                       avango.gua.Vec4(1.0, 0.766, 0.336, 1.0))
    monkey1.Material.value.set_uniform("Roughness", 0.3)
    monkey1.Material.value.set_uniform("Metalness", 1.0)

    monkey2.Material.value.set_uniform("Color",
                                       avango.gua.Vec4(1.0, 0.266, 0.136, 1.0))
    monkey2.Material.value.set_uniform("Roughness", 0.6)
    monkey2.Material.value.set_uniform("Metalness", 0.0)

    transform1 = avango.gua.nodes.TransformNode(Children=[monkey1])
    transform2 = avango.gua.nodes.TransformNode(
        Transform=avango.gua.make_trans_mat(-0.5, 0.0, 0.0),
        Children=[monkey2])

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30)))

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(
        LeftScreenPath="/screen",
        SceneGraph="scenegraph",
        Resolution=size,
        OutputWindowName="window",
        Transform=avango.gua.make_trans_mat(0.0, 0.0, 3.5))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    shader_source = ""
    with open('effect3.frag') as f:
      shader_source = f.read()

    effect = avango.gua.nodes.FullscreenPassDescription(Source=shader_source)

    effect_updater = UpdateShaderTime()
    effect_updater.effect = effect

    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        res_pass,
        anti_aliasing,
        effect
    ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=2,
                                         Height=1.5,
                                         Children=[cam])

    graph.Root.value.Children.value = [transform1, transform2, light, screen]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    monkey_updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)
    effect_updater.TimeIn.connect_from(timer.Time)

    transform1.Transform.connect_from(monkey_updater.MatrixOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #47
0
File: main.py Project: vrsys/avango
def start():

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    loader = avango.gua.nodes.TriMeshLoader()
    monkey = loader.create_geometry_from_file("monkey",
                                              "data/objects/monkey.obj",
                                              avango.gua.LoaderFlags.DEFAULTS)

    light = avango.gua.nodes.LightNode(Type=avango.gua.LightType.POINT,
                                       Name="light",
                                       Color=avango.gua.Color(1.0, 1.0, 1.0),
                                       Brightness=10)
    light.Transform.value = avango.gua.make_trans_mat(
        1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

    # setup viewing
    width = 3840  #1024
    height = 2160  #768
    eye_size = avango.gua.Vec2ui(width, height)
    window_size = avango.gua.Vec2ui(width, height)
    left_pos = avango.gua.Vec2ui(0, 0)
    right_pos = avango.gua.Vec2ui(0, 0)

    if STEREO_MODE == avango.gua.StereoMode.SIDE_BY_SIDE:
        right_pos.x = width + 1
        window_size.x *= 2

    window_left = avango.gua.nodes.Window(
        Size=window_size,
        Display=":0.0",
        #SwapGroup = 1,
        #SwapBarrier = 1,
        LeftPosition=left_pos,
        LeftResolution=eye_size,
        RightPosition=right_pos,
        RightResolution=eye_size,
        StereoMode=STEREO_MODE)

    avango.gua.register_window("window_left", window_left)

    window_right = avango.gua.nodes.Window(
        Size=window_size,
        Display=":0.0",  # ":0.1",
        #SwapGroup = 1,
        #SwapBarrier = 1,
        LeftPosition=left_pos,
        LeftResolution=eye_size,
        RightPosition=right_pos,
        RightResolution=eye_size,
        StereoMode=STEREO_MODE)

    avango.gua.register_window("window_right", window_right)

    cam = avango.gua.nodes.CameraNode(Name="cam",
                                      LeftScreenPath="/screen",
                                      RightScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=eye_size,
                                      EyeDistance=0.06,
                                      EnableStereo=True,
                                      LeftOutputWindow="window_left",
                                      RightOutputWindow="window_right",
                                      Transform=avango.gua.make_trans_mat(
                                          0.0, 0.0, 0.5)
                                      # NearClip =
                                      )

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=0.5,
                                         Height=0.5 * 0.3 / 0.4)
    screen.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 2.5)
    screen.Children.value = [cam]

    graph.Root.value.Children.value = [monkey, light, screen]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window_left, window_right]
    viewer.DesiredFPS.value = 500.0

    monkey_updater = TimedRotate()

    timer = avango.nodes.TimeSensor()
    monkey_updater.TimeIn.connect_from(timer.Time)

    monkey.Transform.connect_from(monkey_updater.MatrixOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #48
0
def start():

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    #environment:
    tri_mesh_loader = avango.gua.nodes.TriMeshLoader()

    path = "/opt/project_animation/demo/data/objects/cube2.obj"
    flags = avango.gua.LoaderFlags.NORMALIZE_POSITION \
        | avango.gua.LoaderFlags.NORMALIZE_SCALE \
        | avango.gua.LoaderFlags.OPTIMIZE_GEOMETRY \
        | avango.gua.LoaderFlags.MAKE_PICKABLE \
        | avango.gua.LoaderFlags.LOAD_MATERIALS
    plane = \
        tri_mesh_loader.create_geometry_from_file("cube",
                                                  path,
                                                  flags)

    plane.Transform.value *= \
        avango.gua.make_scale_mat(10.0, 0.01, 10.0) *\
        avango.gua.make_trans_mat(0, -3, 0)

    path2 = "/opt/project_animation/demo/data/objects/glass_2_3_nm.TGA"
    plane.Material.value.set_uniform("NormalMap",
                                     path2)

    sunlight = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.SUN,
        Name="light",
        Color=avango.gua.Color(245.0/255.0, 246.0/255.0, 178.0/255.0),
        Brightness=5.0,
        Transform=(avango.gua.make_rot_mat(119.5, 0.0, 1.0, 0.0) *
                   avango.gua.make_rot_mat(-10, 1.0, 0.0, 0.0))
    )

    #view setup:
    size = avango.gua.Vec2ui(2560, 1440)

    window = avango.gua.nodes.GlfwWindow(
        Size=size,
        LeftResolution=size
    )
    window.CursorMode.value = 2
    window.EnableFullscreen.value = True

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window")

    #render pipeline
    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            avango.gua.skelanim.nodes.SkeletalAnimationPassDescription(),
            avango.gua.nodes.ResolvePassDescription(),
            avango.gua.nodes.SSAAPassDescription(),
            ])

    pipeline_description.Passes.value[3].EnableSSAO.value = True
    pipeline_description.Passes.value[3].SSAORadius.value = 2.0
    pipeline_description.Passes.value[3].SSAOIntensity.value = 2.0
    pipeline_description.Passes.value[3].BackgroundMode.value = 1
    pipeline_description.Passes.value[3].BackgroundTexture.value = \
        "../../../examples/shadows/data/textures/skymap.jpg"
    pipeline_description.Passes.value[3].ToneMappingMode.value = \
        avango.gua.ToneMappingMode.LINEAR
    #pipeline_description.EnableABuffer.value = True

    cam.PipelineDescription.value = pipeline_description
    cam.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 0.4)
    cam.FarClip.value = 300
    cam.NearClip.value = 0.01

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=0.8, Height=0.45)
    screen.Children.value = [cam]
    screen.Transform.value = avango.gua.make_trans_mat(0, 0.1, -2)

    graph.Root.value.Children.value = [screen, plane, sunlight]

    avango.gua.register_window("window", window)

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]
    window.CursorMode.value = avango.gua.CursorMode.DISABLED

    #navigation
    navigator = examples_common.navigator.Navigator()
    #navigator.StartLocation.value = screen.Transform.value.get_translate()
    navigator.StartRotation.value = avango.gua.Vec2(0, 790)
    navigator.OutTransform.connect_from(screen.Transform)
    navigator.RotationSpeed.value = 0.2
    navigator.MotionSpeed.value = 0.004
    # enable navigation
    screen.Transform.connect_from(navigator.OutTransform)

    #XBOX Controller
    device_sensor = avango.daemon.nodes.DeviceSensor(
        DeviceService=avango.daemon.DeviceService())
    device_sensor.Station.value = "device-xbox-1"

    #unreal tournament characters
    skel_mesh_loader = avango.gua.skelanim.nodes.SkeletalAnimationLoader()

    #LOOP MODE DEMO BOB
    path_bob = "/opt/project_animation/Assets/UnrealTournament/Characters/" +\
        "Necris_Male/necris_male_ut4_SKELMESH.FBX"
    flags_bob = avango.gua.LoaderFlags.LOAD_MATERIALS \
        | avango.gua.LoaderFlags.NORMALIZE_SCALE
    bob_loop = \
        skel_mesh_loader.create_geometry_from_file("bob_loop",
                                                   path_bob,
                                                   flags_bob)

    bob_loop.Transform.value = avango.gua.make_trans_mat(0.0, -0.01, 0.0) *\
        bob_loop.Transform.value *\
        avango.gua.make_rot_mat(-90.0, 1.0, 0.0, 0.0) *\
        avango.gua.make_scale_mat(0.2, 0.2, 0.2)

    graph.Root.value.Children.value.append(bob_loop)

    #load animations
    path_idle = "/opt/project_animation/Assets/" + \
        "UnrealTournament/UniversalAnimations/Idle_Ready_Rif.FBX"
    path_run = "/opt/project_animation/Assets/" + \
        "UnrealTournament/UniversalAnimations/Run_Fwd_Rif.FBX"
    bob_loop.load_animation(path_idle, "idle")
    bob_loop.load_animation(path_idle, "idle2")
    bob_loop.load_animation(path_run, "run_fwd")
    bob_loop.load_animation(path_run, "run_fwd2")

    #character control
    character_control_loop = CharacterControl()
    character_control_loop.my_constructor(bob_loop, bob_loop,
                                          AnimationConfig("idle"), window)
    character_control_loop.on_animation_end("idle",
                                            AnimationConfig("run_fwd",
                                                            loop=True,
                                                            speed=1.0,
                                                            duration=3.0))
    character_control_loop.on_animation_end("run_fwd",
                                            AnimationConfig("idle2",
                                                            loop=False,
                                                            speed=1.0,
                                                            duration=3.0))
    character_control_loop.on_animation_end("idle2",
                                            AnimationConfig("run_fwd2",
                                                            loop=False,
                                                            speed=1.0,
                                                            duration=3.0))
    character_control_loop.on_animation_end("run_fwd2",
                                            AnimationConfig("idle",
                                                            loop=True,
                                                            speed=1.0,
                                                            duration=3.0))

    #SPEED DEMO BOB
    bob_speed = skel_mesh_loader.create_geometry_from_file("bob_speed",
                                                           path_bob,
                                                           flags_bob)

    bob_speed.Transform.value = avango.gua.make_trans_mat(0.1, -0.01, 0.0) * \
        bob_speed.Transform.value * \
        avango.gua.make_rot_mat(-90.0, 1.0, 0.0, 0.0) * \
        avango.gua.make_scale_mat(0.2, 0.2, 0.2)

    graph.Root.value.Children.value.append(bob_speed)

    #load animations
    bob_speed.load_animation(path_idle, "idle")
    bob_speed.load_animation(path_idle, "idle2")
    bob_speed.load_animation(path_run, "run_fwd")
    bob_speed.load_animation(path_run, "run_fwd2")

    #character control
    character_control_speed = CharacterControl()
    character_control_speed.my_constructor(bob_speed, bob_speed,
                                           AnimationConfig("idle"), window)
    character_control_speed.on_animation_end("idle",
                                             AnimationConfig("run_fwd",
                                                             loop=True,
                                                             speed=1.0,
                                                             duration=3.0))
    character_control_speed.on_animation_end("run_fwd",
                                             AnimationConfig("idle2",
                                                             loop=True,
                                                             speed=1.5,
                                                             duration=3.0))
    character_control_speed.on_animation_end("idle2",
                                             AnimationConfig("run_fwd2",
                                                             loop=True,
                                                             speed=1.5,
                                                             duration=3.0))
    character_control_speed.on_animation_end("run_fwd2",
                                             AnimationConfig("idle",
                                                             loop=True,
                                                             speed=1.0,
                                                             duration=3.0))

    #DURATION DEMO BOB
    bob_duration = skel_mesh_loader.create_geometry_from_file("bob_duration",
                                                              path_bob,
                                                              flags_bob)

    bob_duration.Transform.value = \
        avango.gua.make_trans_mat(0.2, -0.01, 0.0) * \
        bob_duration.Transform.value * \
        avango.gua.make_rot_mat(-90.0, 1.0, 0.0, 0.0) * \
        avango.gua.make_scale_mat(0.2, 0.2, 0.2)

    graph.Root.value.Children.value.append(bob_duration)

    #load animations
    bob_duration.load_animation(path_idle, "idle")
    bob_duration.load_animation(path_idle, "idle2")
    bob_duration.load_animation(path_run, "run_fwd")
    bob_duration.load_animation(path_run, "run_fwd2")

    #character control
    character_control_duration = CharacterControl()
    character_control_duration.my_constructor(bob_duration, bob_duration,
                                              AnimationConfig("idle"), window)
    character_control_duration.on_animation_end("idle",
                                                AnimationConfig("run_fwd",
                                                                loop=True,
                                                                speed=1.0,
                                                                duration=1.0))
    character_control_duration.on_animation_end("run_fwd",
                                                AnimationConfig("idle2",
                                                                loop=True,
                                                                speed=1.0,
                                                                duration=2.0))
    character_control_duration.on_animation_end("idle2",
                                                AnimationConfig("run_fwd2",
                                                                loop=True,
                                                                speed=1.0,
                                                                duration=2.0))
    character_control_duration.on_animation_end("run_fwd2",
                                                AnimationConfig("idle",
                                                                loop=True,
                                                                speed=1.0,
                                                                duration=1.0))

    #start animation sequence
    character_control_loop.switch_animation(AnimationConfig("idle",
                                                            loop=False))
    character_control_speed.switch_animation(AnimationConfig("idle",
                                                             loop=False))
    character_control_duration.switch_animation(AnimationConfig("idle",
                                                                loop=False))

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #49
0
def start(filename):

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    plodloader = avango.gua.nodes.PLODLoader()
    plodloader.UploadBudget.value = 32
    plodloader.RenderBudget.value = 2048
    plodloader.OutOfCoreBudget.value = 4096
    plod_geode = plodloader.create_geometry_from_file(
        filename, avango.gua.PLODLoaderFlags.NORMALIZE_SCALE
        | avango.gua.PLODLoaderFlags.NORMALIZE_POSITION)
    #filename, avango.gua.PLODLoaderFlags.DEFAULTS)

    #light = avango.gua.nodes.LightNode(
    #     Type=avango.gua.LightType.POINT,
    #     Name = "light", Color = avango.gua.Color(1.0, 1.0, 1.0))
    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=50.0,
        Transform=avango.gua.make_trans_mat(1, 1, 5) *
        avango.gua.make_scale_mat(15, 15, 15))

    light.Transform.value = avango.gua.make_trans_mat(
        1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

    size = avango.gua.Vec2ui(1024, 768)

    eye = avango.gua.nodes.TransformNode(Name="eye")
    eye.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 3.5)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window",
                                      Transform=avango.gua.make_trans_mat(
                                          0.0, 0.0, 3.5))

    resolve_pass = avango.gua.nodes.ResolvePassDescription()
    resolve_pass.BackgroundMode.value = avango.gua.BackgroundMode.COLOR
    resolve_pass.BackgroundColor.value = avango.gua.Color(1, 0, 0)
    resolve_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.LINEAR

    pipeline_description = avango.gua.nodes.PipelineDescription()
    pipeline_description.Passes.value = [
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.TexturedQuadPassDescription(),
        avango.gua.nodes.PLODPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        avango.gua.nodes.BBoxPassDescription(), resolve_pass,
        avango.gua.nodes.TexturedScreenSpaceQuadPassDescription()
    ]

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(Name="screen", Width=4, Height=3)
    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=4,
                                         Height=3,
                                         Children=[cam])

    screen.Children.value = [eye]

    graph.Root.value.Children.value = [plod_geode, light, screen]

    # setup viewing
    size = avango.gua.Vec2ui(1024, 768)

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    timer = avango.nodes.TimeSensor()

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #50
0
def start():
    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")
    loader = avango.gua.nodes.TriMeshLoader()

    left_monkey = loader.create_geometry_from_file(
        "monkey", "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    right_monkey = loader.create_geometry_from_file(
        "monkey", "data/objects/monkey.obj",
        avango.gua.LoaderFlags.NORMALIZE_SCALE)

    left_monkey.Material.value.set_uniform(
        "Color", avango.gua.Vec4(1.0, 0.766, 0.336, 1.0))
    left_monkey.Material.value.set_uniform("Roughness", 0.3)
    left_monkey.Material.value.set_uniform("Metalness", 1.0)

    right_monkey.Material.value.set_uniform(
        "Color", avango.gua.Vec4(1.0, 0.266, 0.136, 1.0))
    right_monkey.Material.value.set_uniform("Roughness", 0.6)
    right_monkey.Material.value.set_uniform("Metalness", 0.0)

    left_rot_transform = avango.gua.nodes.TransformNode(Children=[left_monkey])
    left_pos_transform = avango.gua.nodes.TransformNode(
        Transform=avango.gua.make_trans_mat(-0.5, 0.0, 0.0),
        Children=[left_rot_transform])
    right_rot_transform = avango.gua.nodes.TransformNode(
        Children=[right_monkey])
    right_pos_transform = avango.gua.nodes.TransformNode(
        Transform=avango.gua.make_trans_mat(0.5, 0.0, 0.0),
        Children=[right_rot_transform])

    light = avango.gua.nodes.LightNode(
        Type=avango.gua.LightType.POINT,
        Name="light",
        Color=avango.gua.Color(1.0, 1.0, 1.0),
        Brightness=100.0,
        Transform=(avango.gua.make_trans_mat(1, 1, 5) *
                   avango.gua.make_scale_mat(30, 30, 30)))

    size = avango.gua.Vec2ui(1024, 768)

    window = avango.gua.nodes.GlfwWindow(Size=size, LeftResolution=size)

    avango.gua.register_window("window", window)

    cam = avango.gua.nodes.CameraNode(LeftScreenPath="/screen",
                                      SceneGraph="scenegraph",
                                      Resolution=size,
                                      OutputWindowName="window",
                                      Transform=avango.gua.make_trans_mat(
                                          0.0, 0.0, 3.5))

    res_pass = avango.gua.nodes.ResolvePassDescription()
    res_pass.EnableSSAO.value = True
    res_pass.SSAOIntensity.value = 4.0
    res_pass.SSAOFalloff.value = 10.0
    res_pass.SSAORadius.value = 7.0

    #res_pass.EnableScreenSpaceShadow.value = True

    res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1, 0.1, 0.1)
    res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
    res_pass.Exposure.value = 1.0
    res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)

    anti_aliasing = avango.gua.nodes.SSAAPassDescription()

    pipeline_description = avango.gua.nodes.PipelineDescription(Passes=[
        avango.gua.nodes.TriMeshPassDescription(),
        avango.gua.nodes.LightVisibilityPassDescription(),
        res_pass,
        anti_aliasing,
    ])

    cam.PipelineDescription.value = pipeline_description

    screen = avango.gua.nodes.ScreenNode(Name="screen",
                                         Width=2,
                                         Height=1.5,
                                         Children=[cam])

    graph.Root.value.Children.value = [
        left_pos_transform, right_pos_transform, light, screen
    ]

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]

    # device sensor listening to the daemon values
    device = avango.daemon.nodes.DeviceSensor(
        DeviceService=avango.daemon.DeviceService())
    # station name determines which device is used
    device.Station.value = "gua-device-xbox-0"  # 0 for first xbox controller

    # field container to set rotation of left monkey
    left_rotation_updater = DeviceRotate()
    left_rotation_updater.RotY.connect_from(device.Value0)
    left_rotation_updater.RotX.connect_from(device.Value1)
    left_rot_transform.Transform.connect_from(left_rotation_updater.MatrixOut)

    # field container to set rotation of right monkey
    right_rotation = DeviceRotate()
    right_rotation.RotY.connect_from(device.Value2)
    right_rotation.RotX.connect_from(device.Value3)
    right_rot_transform.Transform.connect_from(right_rotation.MatrixOut)

    # all buttons change the background color
    bgcolor_updater = RandomColor()
    bgcolor_updater.Trigger.connect_from(device.Button0)
    bgcolor_updater.Trigger.connect_from(device.Button1)
    bgcolor_updater.Trigger.connect_from(device.Button2)
    bgcolor_updater.Trigger.connect_from(device.Button3)
    bgcolor_updater.Trigger.connect_from(device.Button4)
    bgcolor_updater.Trigger.connect_from(device.Button5)
    bgcolor_updater.Trigger.connect_from(device.Button6)
    bgcolor_updater.Trigger.connect_from(device.Button7)
    bgcolor_updater.Trigger.connect_from(device.Button8)
    bgcolor_updater.Trigger.connect_from(device.Button9)
    res_pass.BackgroundColor.connect_from(bgcolor_updater.ColorOut)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
 def run(self):
     guaVE = GuaVE()
     guaVE.start(locals(), globals(), show_banner=False)
     self.viewer.run()
Example #52
0
def start():

    # setup scenegraph
    graph = avango.gua.nodes.SceneGraph(Name="scenegraph")

    #environment:
    tri_mesh_loader = avango.gua.nodes.TriMeshLoader()

    path_plane = "/opt/project_animation/demo/data/objects/cube2.obj"
    flags_plane = avango.gua.LoaderFlags.NORMALIZE_POSITION \
        | avango.gua.LoaderFlags.NORMALIZE_SCALE \
        | avango.gua.LoaderFlags.OPTIMIZE_GEOMETRY \
        | avango.gua.LoaderFlags.MAKE_PICKABLE \
        | avango.gua.LoaderFlags.LOAD_MATERIALS
    plane = tri_mesh_loader.create_geometry_from_file("cube",
                                                      path_plane,
                                                      flags_plane)
    plane.Transform.value *= \
        avango.gua.make_scale_mat(10.0, 0.01, 10.0) * \
        avango.gua.make_trans_mat(0, -3, 0)

    path_normal = "/opt/project_animation/demo/data/objects/glass_2_3_nm.TGA"
    plane.Material.value.set_uniform("NormalMap", path_normal)

    sunlight = \
        avango.gua.nodes.LightNode(
            Type=avango.gua.LightType.SUN,
            Name="light",
            Color=avango.gua.Color(245.0/255.0, 246.0/255.0, 178.0/255.0),
            Brightness=5.0,
            Transform=(avango.gua.make_rot_mat(119.5, 0.0, 1.0, 0.0) *
                       avango.gua.make_rot_mat(-10, 1.0, 0.0, 0.0))
            )

    #view setup:
    size = avango.gua.Vec2ui(2560, 1440)

    window = avango.gua.nodes.GlfwWindow(
        Size=size,
        LeftResolution=size
    )
    window.CursorMode.value = 2
    window.EnableFullscreen.value = False

    cam = avango.gua.nodes.CameraNode(
        LeftScreenPath="/screen",
        SceneGraph="scenegraph",
        Resolution=size,
        OutputWindowName="window")

    #render pipeline
    pipeline_description = avango.gua.nodes.PipelineDescription(
        Passes=[
            avango.gua.nodes.TriMeshPassDescription(),
            avango.gua.nodes.LightVisibilityPassDescription(),
            avango.gua.skelanim.nodes.SkeletalAnimationPassDescription(),
            avango.gua.nodes.ResolvePassDescription(),
            avango.gua.nodes.SSAAPassDescription(),
            ])

    pipeline_description.Passes.value[3].EnableSSAO.value = True
    pipeline_description.Passes.value[3].SSAORadius.value = 2.0
    pipeline_description.Passes.value[3].SSAOIntensity.value = 2.0
    pipeline_description.Passes.value[3].BackgroundMode.value = 1
    pipeline_description.Passes.value[3].BackgroundTexture.value = \
        "/opt/avango/master/examples/picking/data/textures/skymap.jpg"
    pipeline_description.Passes.value[3].ToneMappingMode.value = \
        avango.gua.ToneMappingMode.LINEAR
    #pipeline_description.EnableABuffer.value = True

    cam.PipelineDescription.value = pipeline_description
    cam.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, 0.4)
    cam.FarClip.value = 300
    cam.NearClip.value = 0.01

    screen = avango.gua.nodes.ScreenNode(
        Name="screen",
        Width=0.8,
        Height=0.45)
    screen.Children.value = [cam]
    screen.Transform.value = avango.gua.make_trans_mat(0, 0.1, -2)

    graph.Root.value.Children.value = [screen, plane, sunlight]

    avango.gua.register_window("window", window)

    #setup viewer
    viewer = avango.gua.nodes.Viewer()
    viewer.SceneGraphs.value = [graph]
    viewer.Windows.value = [window]
    window.CursorMode.value = avango.gua.CursorMode.DISABLED

    #XBOX Controller
    device_sensor = avango.daemon.nodes.DeviceSensor(
        DeviceService=avango.daemon.DeviceService())
    device_sensor.Station.value = "device-xbox-1"

    #mixamo character
    skel_mesh_loader = avango.gua.skelanim.nodes.SkeletalAnimationLoader()

    #scenegraph setup:
    #root    ->   kachujin_ground    ->   kachujin_nav    ->   kachujin
    #             ground following        character control    geometry
    kachujin_ground = avango.gua.nodes.TransformNode(Name="kachujin_ground")
    graph.Root.value.Children.value.append(kachujin_ground)
    kachujin_nav = avango.gua.nodes.TransformNode(Name="kachujin_nav")
    #set initial position of character here:
    #kachujin_nav.Transform.value =  avango.gua.make_trans_mat(0.0, 0.0, 0.0)

    kachujin = skel_mesh_loader.create_geometry_from_file(
        "kachujin",
        "/opt/project_animation/Assets/Mixamo/Kachujin/Kachujin_G_Rosales.FBX",
        avango.gua.LoaderFlags.LOAD_MATERIALS
        | avango.gua.LoaderFlags.NORMALIZE_SCALE)

    kachujin.Transform.value = \
        kachujin.Transform.value * \
        avango.gua.make_rot_mat(-90.0, 1.0, 0.0, 0.0) * \
        avango.gua.make_scale_mat(0.02, 0.02, 0.02)

    #load animations from character settings
    load_mixamo_animations_kachujin(kachujin)

    kachujin_ground.Children.value = [kachujin_nav]
    kachujin_nav.Children.value = [kachujin]

    #character control
    kachujin_character_control = CharacterControl()
    kachujin_character_control.my_constructor(kachujin, kachujin_nav,
                                              AnimationConfig("idle"), window)
    #override keyboard events with xbox controller events:
    #apply_character_control_settings_mixamo(kachujin_character_control,
    #                                        device_sensor)
    apply_character_control_settings_mixamo(kachujin_character_control)
    #wall detection
    kachujin_character_control.activate_wall_detection(0.0075, 0.009, "idle",
                                                       graph)

    #camera control
    kachujin_camera_control = CameraControl()
    kachujin_camera_control.my_constructor(kachujin, window, -17.0)
    screen.Transform.connect_from(kachujin_camera_control.OutTransform)
    #camera_control_xbox_connect(kachujin_camera_control, device_sensor)

    #ground following
    kachujin_ground_following = GroundFollowing(
        SceneGraph=graph,
        OffsetToGround=0.01,
        MaxDistanceToGround=100.0
    )
    kachujin_ground_following.my_constructor(gravity=-0.00005)
    kachujin_ground_following.InTransform.connect_from(kachujin.WorldTransform)
    kachujin_ground.Transform.connect_from(
        kachujin_ground_following.OutTransform)

    guaVE = GuaVE()
    guaVE.start(locals(), globals())

    viewer.run()
Example #53
0
sphere_geometry = loader.create_geometry_from_file("sphere_geometry",
                                                   "data/objects/sphere.obj")

sphere_geometry.Transform.value = avango.gua.make_scale_mat(0.5, 0.5, 0.5)

sphere_geometry.Material.value.set_uniform(
    #"Color", av.Vec4(0.08, 0.08, 0.09, 1.0))
    "Color",
    av.Vec4(0.9, 0.266, 0.136, 1.0))
sphere_geometry.Material.value.set_uniform("Roughness", 0.75)
sphere_geometry.Material.value.set_uniform("Metalness", 0.0)

transform1 = avango.gua.nodes.TransformNode(Children=[sphere_geometry])
transform1.Transform.connect_from(sphere_body.Transform)

graph.Root.value.Children.value = [
    light, screen, floor, sphere_body, transform1
]

timer = avango.nodes.TimeSensor()

#setup viewer
viewer = av.nodes.Viewer()
viewer.Physics.value = physics
viewer.SceneGraphs.value = [graph]
viewer.Windows.value = [window]

guaVE = GuaVE()
guaVE.start(locals(), globals())
viewer.run()
Example #54
0
File: main.py Project: Nyran/avango
def start():

  # setup scenegraph
  graph = avango.gua.nodes.SceneGraph(Name = "scenegraph")

  loader = avango.gua.nodes.TriMeshLoader()
  monkey = loader.create_geometry_from_file("monkey", "data/objects/monkey.obj", avango.gua.LoaderFlags.DEFAULTS)

  light = avango.gua.nodes.LightNode(
    Type=avango.gua.LightType.POINT,
    Name = "light",
    Color = avango.gua.Color(1.0, 1.0, 1.0),
    Brightness = 10
  )
  light.Transform.value = avango.gua.make_trans_mat(1, 1, 2) * avango.gua.make_scale_mat(15, 15, 15)

  # setup viewing
  width = 1024
  height = 768
  eye_size = avango.gua.Vec2ui(width, height)
  window_size = avango.gua.Vec2ui(width, height)
  left_pos = avango.gua.Vec2ui(0, 0)
  right_pos = avango.gua.Vec2ui(0, 0)

  if STEREO_MODE == avango.gua.StereoMode.SIDE_BY_SIDE:
    right_pos.x = width + 1
    window_size.x *= 2

  window = avango.gua.nodes.GlfwWindow(Size = window_size,
                                       LeftPosition = left_pos,
                                       LeftResolution = eye_size,
                                       RightPosition = right_pos,
                                       RightResolution = eye_size,
                                       StereoMode = STEREO_MODE)

  avango.gua.register_window("window", window)

  cam = avango.gua.nodes.CameraNode(
    Name = "cam",
    LeftScreenPath = "/screen",
    RightScreenPath = "/screen",
    SceneGraph = "scenegraph",
    Resolution = eye_size,
    EyeDistance = 1.2,
    EnableStereo = True,
    OutputWindowName = "window",
    Transform = avango.gua.make_trans_mat(0.0, 0.0, 3.5)
  )

  screen = avango.gua.nodes.ScreenNode(Name = "screen", Width = 4, Height = 3)
  screen.Children.value = [cam]

  graph.Root.value.Children.value = [monkey, light, screen]

  #setup viewer
  viewer = avango.gua.nodes.Viewer()
  viewer.SceneGraphs.value = [graph]
  viewer.Windows.value = [window]

  monkey_updater = TimedRotate()

  timer = avango.nodes.TimeSensor()
  monkey_updater.TimeIn.connect_from(timer.Time)

  monkey.Transform.connect_from(monkey_updater.MatrixOut)

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #55
0
def start():

  graph  = avango.gua.nodes.SceneGraph(Name = "scene")
  loader = avango.gua.nodes.TriMeshLoader()

  fps_size = avango.gua.Vec2(170, 55)

  fps = avango.gua.gui.nodes.GuiResourceNode()
  fps.TextureName.value = "fps"
  fps.URL.value = "asset://gua/data/html/fps.html"
  fps.Size.value = fps_size

  fps_quad = avango.gua.nodes.TexturedScreenSpaceQuadNode(
    Name = "fps_quad",
    Texture = "fps",
    Width = int(fps_size.x),
    Height = int(fps_size.y),
    Anchor = avango.gua.Vec2(1.0, 1.0)
  )
  graph.Root.value.Children.value.append(fps_quad)

  fallback_mat = avango.gua.create_material(avango.gua.MaterialCapabilities.COLOR_VALUE)


  for x in range(0, CUBE_COUNT_X):
    for y in range(0, CUBE_COUNT_Y):
      for z in range(0, CUBE_COUNT_Z):

        new_cube = loader.create_geometry_from_file(
          "cube" + str(x) + str(y) + str(z),
          "data/objects/monkey.obj",
          fallback_mat,
          avango.gua.LoaderFlags.DEFAULTS
        )
        # new_cube.Material.value.set_uniform("Color", avango.gua.Vec4(1, 1, 1, 0.6))

        new_cube.Transform.value = avango.gua.make_trans_mat(x*2, y*2, z*2) * \
                                   avango.gua.make_scale_mat(0.3, 0.3, 0.3)
        graph.Root.value.Children.value.append(new_cube)
        new_cube.ShadowMode.value = 1


  spot_light_1 = avango.gua.nodes.LightNode(Name = "spot_light_1",
                                         Type = avango.gua.LightType.SPOT,
                                         Color = avango.gua.Color(1.0, 0.0, 0.7),
                                         EnableShadows = True,
                                         ShadowMapSize = 512,
                                         ShadowOffset = 0.002,
                                         ShadowMaxDistance = 10,
                                         Falloff = 1.5,
                                         Softness = 2,
                                         Brightness = 10)
  spot_light_1.Transform.value = avango.gua.make_trans_mat(14.0, 3.0, 18.0) * avango.gua.make_rot_mat(-20, 1, 0, 0) * avango.gua.make_scale_mat(20)
  graph.Root.value.Children.value.append(spot_light_1)

  point_light1 = avango.gua.nodes.LightNode(
                                         Type = avango.gua.LightType.POINT,
                                         Name = "point_light1",
                                         Color = avango.gua.Color(0.2, 1.0, 1.7),
                                         EnableShadows = True,
                                         ShadowMapSize = 128,
                                         ShadowMaxDistance = 10,
                                         ShadowOffset = 0.03,
                                         Falloff = 0.5,
                                         Brightness = 20)
  point_light1.Transform.value = avango.gua.make_trans_mat(4.5, 1.0, 4.5) * avango.gua.make_scale_mat(4)
  graph.Root.value.Children.value.append(point_light1)

  sun_light = avango.gua.nodes.LightNode(Name = "sun_light",
                                         Type = avango.gua.LightType.SUN,
                                         Color = avango.gua.Color(1.0, 1.0, 0.7),
                                         EnableShadows = True,
                                         ShadowMapSize = 1024,
                                         ShadowOffset = 0.0005,
                                         ShadowCascadedSplits = [0.1, 4, 7, 20],
                                         ShadowMaxDistance = 30,
                                         ShadowNearClippingInSunDirection = 100,
                                         ShadowFarClippingInSunDirection = 100,
                                         Brightness = 2
                                         )
  sun_light.Transform.value = avango.gua.make_rot_mat(210, 0, 1, 0) * avango.gua.make_rot_mat(-50.0, 1.0, 0.0, 0.0)
  graph.Root.value.Children.value.append(sun_light)

  floor = loader.create_geometry_from_file(
    "floor",
    "data/objects/plane.obj",
    avango.gua.LoaderFlags.DEFAULTS
  )
  floor.Transform.value = avango.gua.make_scale_mat(20, 1, 20) * avango.gua.make_trans_mat(1, -0.2, 1)
  floor.ShadowMode.value = 0
  graph.Root.value.Children.value.append(floor)

  width = 1920;
  height = int(width * 9.0 / 16.0)
  size = avango.gua.Vec2ui(width, height)

  screen = avango.gua.nodes.ScreenNode(Name = "screen",
                                       Width = 4.8,
                                       Height = 2.7)

  screen.Transform.value = avango.gua.make_trans_mat(0.0, 0.0, -2.5)

  camera = avango.gua.nodes.CameraNode(
    Name = "cam",
    LeftScreenPath = "/cam/screen",
    RightScreenPath = "/cam/screen",
    SceneGraph = "scene",
    Resolution = size,
    OutputWindowName = "window",
    EyeDistance = 0.2,
    EnableStereo = False,
    Children = [screen],
    Transform = avango.gua.make_trans_mat(0.0, 0.0, 7.0)
  )

  res_pass = avango.gua.nodes.ResolvePassDescription()
  res_pass.EnableSSAO.value = True
  res_pass.SSAOIntensity.value = 3.0
  res_pass.SSAOFalloff.value = 20.0
  res_pass.SSAORadius.value = 10.0
  res_pass.EnvironmentLightingColor.value = avango.gua.Color(0.1,0.1,0.1)
  res_pass.ToneMappingMode.value = avango.gua.ToneMappingMode.UNCHARTED
  res_pass.Exposure.value = 1.0
  res_pass.BackgroundMode.value = avango.gua.BackgroundMode.CUBEMAP_TEXTURE
  res_pass.BackgroundTexture.value = "awesome_skymap"
  # res_pass.BackgroundColor.value = avango.gua.Color(0.45, 0.5, 0.6)
  res_pass.VignetteColor.value = avango.gua.Vec4(0, 0, 0, 1)

  pipeline_description = avango.gua.nodes.PipelineDescription(
    Passes = [
      avango.gua.nodes.TriMeshPassDescription(),
      avango.gua.nodes.SkyMapPassDescription(
        OutputTextureName="awesome_skymap"
      ),
      avango.gua.nodes.LightVisibilityPassDescription(),
      res_pass,
      avango.gua.nodes.BBoxPassDescription(),
      avango.gua.nodes.TexturedScreenSpaceQuadPassDescription()
      # avango.gua.nodes.DebugViewPassDescription()
    ],
    EnableABuffer = False
  )

  camera.PipelineDescription.value = pipeline_description

  graph.Root.value.Children.value.append(camera)

  window = avango.gua.nodes.Window(
    Size = size,
    Title = "shadows",
    LeftResolution = size,
    RightResolution = size,
    EnableVsync = False,
    StereoMode = avango.gua.StereoMode.MONO
  )

  avango.gua.register_window("window", window)

  navigator = examples_common.navigator.Navigator()
  navigator.StartLocation.value = camera.Transform.value.get_translate()
  navigator.OutTransform.connect_from(camera.Transform)

  navigator.RotationSpeed.value = 0.2
  navigator.MotionSpeed.value = 0.04

  camera.Transform.connect_from(navigator.OutTransform)

  viewer = avango.gua.nodes.Viewer()
  # viewer.DesiredFPS.value = 200
  viewer.SceneGraphs.value = [graph]
  viewer.Windows.value = [window]

  timer = avango.nodes.TimeSensor()

  fps_updater = FPSUpdater(
    FPSResource=fps,
    Window=window,
    Viewer=viewer
  )
  fps_updater.TimeIn.connect_from(timer.Time)

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()
Example #56
0
def start():

  physics = avango.gua.nodes.Physics()

  avango.gua.create_sphere_shape("sphere", 0.1)
  # setup scenegraph
  graph = avango.gua.nodes.SceneGraph(Name = "scenegraph")

  teapot_rb = avango.gua.nodes.RigidBodyNode(
    Name = "teapot_rb",
    Mass = 0.0
  )

  physics.add_rigid_body(teapot_rb)

  teapot_cs = avango.gua.create_triangle_mesh_shape_from_geometry_file(
    "teapot_cs",
    "data/objects/teapot.obj",
    True,
    False,
    avango.gua.LoaderFlags.DEFAULTS
  )

  teapot_cs.Scaling.value = avango.gua.Vec3(0.5, 0.5, 0.5)

  teapot_csn = avango.gua.nodes.CollisionShapeNode(
    Name = "teapot_csn",
    ShapeName = "teapot_cs"
  )

  loader = avango.gua.nodes.TriMeshLoader()
  teapot_geometry = loader.create_geometry_from_file(
    "teapot_geometry",
    "data/objects/teapot.obj",
    avango.gua.LoaderFlags.OPTIMIZE_GEOMETRY
  )

  teapot_geometry.Material.value.set_uniform("Color", avango.gua.Vec4(1.0, 0.766, 0.336, 1.0))
  teapot_geometry.Material.value.set_uniform("Roughness", 0.3)
  teapot_geometry.Material.value.set_uniform("Metalness", 1.0)
  teapot_geometry.Transform.value = avango.gua.make_scale_mat(0.5, 0.5, 0.5)

  teapot_csn.Children.value.append(teapot_geometry)
  teapot_rb.Children.value.append(teapot_csn)

  light = avango.gua.nodes.LightNode(
    Type=avango.gua.LightType.POINT,
    Name = "light",
    Color = avango.gua.Color(1.0, 1.0, 1.0),
    Brightness = 50.0,
    Transform = avango.gua.make_trans_mat(2, 1, 3) * avango.gua.make_scale_mat(5, 5, 5)
  )

  size = avango.gua.Vec2ui(1920, 1080)

  window = avango.gua.nodes.GlfwWindow(
    Size = size,
    LeftResolution = size
  )

  avango.gua.register_window("window", window)

  cam = avango.gua.nodes.CameraNode(
    Transform = avango.gua.make_trans_mat(0.0, 0.0, 1.5),
    LeftScreenPath = "/screen",
    SceneGraph = "scenegraph",
    Resolution = size,
    OutputWindowName = "window"
  )

  screen = avango.gua.nodes.ScreenNode(
    Name = "screen",
    Width = 1.6,
    Height = 0.9,
    Transform = avango.gua.make_trans_mat(0.0, 0.5, 2.0),
    Children = [cam]
  )

  graph.Root.value.Children.value = [teapot_rb, light, screen]

  #setup viewer
  viewer = avango.gua.nodes.Viewer()
  viewer.SceneGraphs.value = [graph]
  viewer.Physics.value = physics
  viewer.Windows.value = [window]

  timer = avango.nodes.TimeSensor()
  spawner = BallSpawner()
  spawner.TimeIn.connect_from(timer.Time)
  spawner.SceneGraph.value = graph
  spawner.Physics.value = physics

  guaVE = GuaVE()
  guaVE.start(locals(), globals())

  viewer.run()