Пример #1
0
    def _prepare_scene(self, cpo_path, floor_path, rec_names):
        """Sets up the current scene."""
        def get_name(cpo):
            return cpo.getName()

        floor = load_cpo(floor_path)
        PSOStyler().apply(floor, "floor")
        floor.reparentTo(self.scene)

        cpo = load_cpo(cpo_path)
        cpo.reparentTo(self.scene)

        self.cache = self.scene.store_tree()
        self.floor = floor
        self.cpo = cpo

        self.scene.init_tree(tags=())
        pcpos = self.scene.descendants(type_=PSO)
        for pcpo in pcpos:
            pcpo.setCollideMask(BitMask32.allOn())
            pcpo.node().setDeactivationEnabled(False)

        cpos_rec = self._order_cpos(cpo.descendants(type_=PSO,
                                                    names=rec_names))

        return pcpos, cpos_rec
Пример #2
0
 def attach_physics(self):
     # Attach `self.scene` to the physics world.
     self.scene.init_tree(tags=("shape", ))
     bnodes = self.scene.descendants(type_=PSO)
     for bnode in bnodes:
         bnode.setCollideMask(BitMask32.allOn())
         bnode.node().setDeactivationEnabled(False)
     self.bbase.attach(bnodes)
Пример #3
0
 def attach_physics(self):
     # Attach `self.scene` to the physics world.
     self.scene.init_tree(tags=("shape",))
     bnodes = self.scene.descendants(type_=PSO)
     for bnode in bnodes:
         bnode.setCollideMask(BitMask32.allOn())
         bnode.node().setDeactivationEnabled(False)
     self.bbase.attach(bnodes)
Пример #4
0
 def attach_physics(self):
     # Attach `self.scene` to the physics world.
     try:
         exclude = zip(*self.compound_components)[0]
     except IndexError:
         exclude = []
     bnodes = [bnode for bnode in self.scene.descendants(type_=PSO)
               if bnode not in exclude]
     for bnode in bnodes:
         bnode.init_resources(tags=("shape",))
         bnode.setCollideMask(BitMask32.allOn())
         bnode.node().setDeactivationEnabled(False)
     self.bbase.attach(bnodes)
Пример #5
0
 def attach_physics(self):
     # Attach `self.scene` to the physics world.
     try:
         exclude = zip(*self.compound_components)[0]
     except IndexError:
         exclude = []
     bnodes = [
         bnode for bnode in self.scene.descendants(type_=PSO)
         if bnode not in exclude
     ]
     for bnode in bnodes:
         bnode.init_resources(tags=("shape", ))
         bnode.setCollideMask(BitMask32.allOn())
         bnode.node().setDeactivationEnabled(False)
     self.bbase.attach(bnodes)
Пример #6
0
 def __init__(self):
     super(SimViewer, self).__init__()
     # Make a window.
     size = (700, 520)
     self.create_output(size, "SimViewer")
     self.output.setClearColor((0.0, 0.0, 0.0, 1.0))
     # Lights node
     self.lights = NodePath('lights')
     # Create a spotlight
     slight = Spotlight('slight')
     slight.setScene(self.root)
     slight.setShadowCaster(True, 2**11, 2**11)
     # Set shadow mask, so we can exclude objects from casting shadows
     self.shadow_mask = BitMask32.bit(2)
     slight.setCameraMask(self.shadow_mask)
     c = 1.4
     slight.setColor((c, c, c, 1.0))
     slight.getLens().setNearFar(4, 100)
     slight.getLens().setFov(45)
     slnp = self.lights.attachNewNode(slight)
     slnp.setPos((7, 10, 40))
     slnp.lookAt(2, 0, 1.5)
     self.root.setLight(slnp)
     # Create an ambient light.
     alight = AmbientLight('alight')
     c = 0.6
     alight.setColor((c, c, c, 1.0))
     alnp = self.lights.attachNewNode(alight)
     self.root.setLight(alnp)
     self.lights.reparentTo(self.root)
     # Set auto shading for shadows.
     self.root.setShaderAuto()
     # Set antialiasing on.
     self.root.setAntialias(AntialiasAttrib.MAuto)
     # Camera.
     lens = PerspectiveLens()
     self.lens = lens
     self.lens.setNearFar(0.1, 1000.)
     self.lens.setFov((40, 30))
     self.cameras = self.root.attachNewNode('cameras')
     self.camera = self.make_camera(self.output, lens=self.lens)
     self.camera.setPos(15, 44, 3.)
     self.camera.setPos(15, 35, 15.)
     self.camera.lookAt(0, 0, 1.)
Пример #7
0
 def __init__(self):
     ShowBase.__init__(self)
     resize_window = ConfigVariableBool('viewer-resize-window', '#t')
     if resize_window.getValue():
         self.win_size = (800, 800)
     # Black background
     self.win.setClearColor((0.0, 0.0, 0.0, 1.0))
     # Set up lights.
     self.lights = NodePath("lights")
     # Spotlight. Casts shadows.
     slight = Spotlight("slight")
     slight.setScene(self.render)
     slight.setShadowCaster(True, 2**11, 2**11)
     # Set shadow mask, so we can exclude objects from casting shadows
     self.shadow_mask = BitMask32.bit(2)
     slight.setCameraMask(self.shadow_mask)
     slight.setColor((1.2, 1.2, 1.2, 1.))
     slight.getLens().setFov(45)
     slight.getLens().setNearFar(1, 100)
     slnp = self.lights.attachNewNode(slight)
     slnp.setPos((6, 8, 20))
     slnp.lookAt(0, 0, 0)
     self.render.setLight(slnp)
     # Ambient light.
     alight = AmbientLight("alight")
     a = 0.75
     alight.setColor((a, a, a, 1.0))
     #alight.setColor((0.8, 0.8, 0.8, 1.0))
     alnp = self.lights.attachNewNode(alight)
     self.render.setLight(alnp)
     self.lights.reparentTo(self.render)
     # Set auto shading for shadows
     use_shaders = ConfigVariableBool('viewer-use-shaders', '#t')
     if use_shaders.getValue():
         self.render.setShaderAuto()
     # Set antialiasing on
     self.render.setAntialias(AntialiasAttrib.MAuto)
     # Camera
     self.camera_rot = self.render.attachNewNode("camera_rot")
     self.cameras = self.camera_rot.attachNewNode("cameras")
     self.cameras.setPos(14, 32, 9.)
     self.look_at = self.render.attachNewNode("look_at")
     self.look_at.setPos(Point3(2, 0, 1))
     self.cameras.lookAt(self.look_at)
     self.camera.reparentTo(self.cameras)
     # Adjust the camera's lens
     lens = PerspectiveLens()
     self.camLens = lens
     self.camLens.setNearFar(0.01, 1000.0)
     setlens = ConfigVariableBool('viewer-set-cam-lens', '#t')
     if setlens:
         self.cam.node().setLens(self.camLens)
     #
     # Initialize / set variables
     self.sso = None
     self.ssos = []
     self.cache = None
     self.scene = SSO("scene")
     self.scene.reparentTo(self.render)
     # Key callbacks.
     self.accept("shift-control-escape", self.exit)
     self.accept("escape", self.exit)
     self.accept("0", self.reset_sso)
     self.accept("arrow_left", self.prev)
     self.accept("arrow_right", self.next)
     self.accept("page_down", self.prev, [100])
     self.accept("page_up", self.next, [100])
     self.accept("f1", self.toggle_debug)
     self.accept("o", self.physics_once, extraArgs=[1. / 10])
     self.accept("i", self.physics_once, extraArgs=[1. / 10000])
     # Remove existing keyboard tasks.
     self.mandatory_events = ("window-event", "async_loader_0",
                              "render-texture-targets-changed",
                              "shift-control-escape")
     # Task list: name: (key, args)
     events = {
         "physics": ("p", ),
         "repel": ("t", ),
         "bump": ("f", ),
         "rotate": ("r", 20),
         "rotate90": ("h", ),
         "ss_task": ("s", ),
         "ssa_task": ("w", ),
         "bp": ("b", )
     }
     # Add events
     for key, val in events.iteritems():
         call = [key] + list(val[1:])
         self.accept(val[0], self.toggle_task, call)
     # These are the key events that we will never ignore
     self.permanent_events = self.getAllAccepting()
     # These are the key events that we will never ignore
     self.permanent_tasks = [
         task.getName() for task in self.taskMgr.getAllTasks()
     ]
     self.start_time = -1
     self.old_elapsed = 0
Пример #8
0
 def __init__(self):
     ShowBase.__init__(self)
     resize_window = ConfigVariableBool('viewer-resize-window', '#t')
     if resize_window.getValue():
         self.win_size = (800, 800)
     # Black background
     self.win.setClearColor((0.0, 0.0, 0.0, 1.0))
     # Set up lights.
     self.lights = NodePath("lights")
     # Spotlight. Casts shadows.
     slight = Spotlight("slight")
     slight.setScene(self.render)
     slight.setShadowCaster(True, 2 ** 11, 2 ** 11)
     # Set shadow mask, so we can exclude objects from casting shadows
     self.shadow_mask = BitMask32.bit(2)
     slight.setCameraMask(self.shadow_mask)
     slight.setColor((1.2, 1.2, 1.2, 1.))
     slight.getLens().setFov(45)
     slight.getLens().setNearFar(1, 100)
     slnp = self.lights.attachNewNode(slight)
     slnp.setPos((6, 8, 20))
     slnp.lookAt(0, 0, 0)
     self.render.setLight(slnp)
     # Ambient light.
     alight = AmbientLight("alight")
     a = 0.75
     alight.setColor((a, a, a, 1.0))
     #alight.setColor((0.8, 0.8, 0.8, 1.0))
     alnp = self.lights.attachNewNode(alight)
     self.render.setLight(alnp)
     self.lights.reparentTo(self.render)
     # Set auto shading for shadows
     use_shaders = ConfigVariableBool('viewer-use-shaders', '#t')
     if use_shaders.getValue():
         self.render.setShaderAuto()
     # Set antialiasing on
     self.render.setAntialias(AntialiasAttrib.MAuto)
     # Camera
     self.camera_rot = self.render.attachNewNode("camera_rot")
     self.cameras = self.camera_rot.attachNewNode("cameras")
     self.cameras.setPos(14, 32, 9.)
     self.look_at = self.render.attachNewNode("look_at")
     self.look_at.setPos(Point3(2, 0, 1))
     self.cameras.lookAt(self.look_at)
     self.camera.reparentTo(self.cameras)
     # Adjust the camera's lens
     lens = PerspectiveLens()
     self.camLens = lens
     self.camLens.setNearFar(0.01, 1000.0)
     setlens = ConfigVariableBool('viewer-set-cam-lens', '#t')
     if setlens:
         self.cam.node().setLens(self.camLens)
     #
     # Initialize / set variables
     self.sso = None
     self.ssos = []
     self.cache = None
     self.scene = SSO("scene")
     self.scene.reparentTo(self.render)
     # Key callbacks.
     self.accept("shift-control-escape", self.exit)
     self.accept("escape", self.exit)
     self.accept("0", self.reset_sso)
     self.accept("arrow_left", self.prev)
     self.accept("arrow_right", self.next)
     self.accept("page_down", self.prev, [100])
     self.accept("page_up", self.next, [100])
     self.accept("f1", self.toggle_debug)
     self.accept("o", self.physics_once, extraArgs=[1. / 10])
     self.accept("i", self.physics_once, extraArgs=[1. / 10000])
     # Remove existing keyboard tasks.
     self.mandatory_events = ("window-event", "async_loader_0",
                              "render-texture-targets-changed",
                              "shift-control-escape")
     # Task list: name: (key, args)
     events = {"physics": ("p",),
               "repel": ("t",),
               "bump": ("f",),
               "rotate": ("r", 20),
               "rotate90": ("h",),
               "ss_task": ("s",),
               "ssa_task": ("w",),
               "bp": ("b",)}
     # Add events
     for key, val in events.iteritems():
         call = [key] + list(val[1:])
         self.accept(val[0], self.toggle_task, call)
     # These are the key events that we will never ignore
     self.permanent_events = self.getAllAccepting()
     # These are the key events that we will never ignore
     self.permanent_tasks = [task.getName()
                             for task in self.taskMgr.getAllTasks()]
     self.start_time = -1
     self.old_elapsed = 0