コード例 #1
0
    def setup_geometry(self, env):
        """ create geoms and transforms for basic agents and landmarks
        """ 
        # lazy import 
        from multiagent import rendering

        if getattr(env, "render_dict", None) is not None:
            return 
        env.render_dict = {}

        # make geometries and transforms
        for entity in env.world.entities:
            name = entity.name
            geom = rendering.make_circle(entity.size)
            xform = rendering.Transform()

            # agent on top, other entity to background 
            alpha = 0.6 if "agent" in name else 0.5
            geom.set_color(*entity.color, alpha=alpha)   

            geom.add_attr(xform)
            env.render_dict[name] = {
                "geom": geom, 
                "xform": xform, 
                "attach_ent": entity
            }

            # VIS: show visual range/receptor field
            if 'agent' in entity.name and env.show_visual_range:
                vis_geom = rendering.make_circle(entity.vision_range)
                vis_geom.set_color(*entity.color, alpha=0.2)
                vis_xform = rendering.Transform()
                vis_geom.add_attr(vis_xform)
                env.render_dict[name+"_vis"] = {
                    "geom": vis_geom, 
                    "xform": vis_xform, 
                    "attach_ent": entity
                }

            # LABEL: display type & numbering 
            prefix = "A" if "agent" in entity.name else "L"
            idx = int(name.split(" ")[-1])
            x = entity.state.p_pos[0] 
            y = entity.state.p_pos[1] 
            label_geom = rendering.Text("{}{}".format(prefix,idx), position=(x,y), font_size=30)
            label_xform = rendering.Transform()
            label_geom.add_attr(label_xform)
            env.render_dict[name+"_label"] = {
                "geom": label_geom, 
                "xform": label_xform, 
                "attach_ent": entity
            }
                    
        
        # add geoms to viewer
        for viewer in env.viewers:
            viewer.geoms = []
            for k, d in env.render_dict.items():
                viewer.add_geom(d["geom"])
コード例 #2
0
    def setup_geometry(self):
        # lazy import
        from multiagent import rendering
        if self.render_dict is not None:
            return
        self.render_dict = {}

        # make geometries and transforms
        for entity in self.world.entities:
            name = entity.name
            geom = rendering.make_circle(entity.size)
            xform = rendering.Transform()

            # agent on top, other entity to background
            alpha = 1.0 if "agent" in name else 0.5
            geom.set_color(*entity.color, alpha=alpha)

            geom.add_attr(xform)
            self.render_dict[name] = {
                "geom": geom,
                "xform": xform,
                "attach_ent": entity
            }

            # LABEL: display type & numbering
            prefix = "A" if "agent" in entity.name else "L"
            idx = int(name.split(" ")[-1])
            x = entity.state.p_pos[0]
            y = entity.state.p_pos[1]
            label_geom = rendering.Text("{}{}".format(prefix, idx),
                                        position=(x, y),
                                        font_size=30)
            label_xform = rendering.Transform()
            label_geom.add_attr(label_xform)
            self.render_dict[name + "_label"] = {
                "geom": label_geom,
                "xform": label_xform,
                "attach_ent": entity
            }

        # add geoms to viewer
        for viewer in self.viewers:
            viewer.geoms = []
            for k, d in self.render_dict.items():
                viewer.add_geom(d["geom"])
コード例 #3
0
    def setup_geometry(self, env):
        """ create geoms and transforms for basic agents and landmarks
        """
        # lazy import
        from multiagent import rendering

        if getattr(env, "render_dict", None) is not None:
            return
        env.render_dict = {}

        # make geometries and transforms
        for entity in env.world.entities:
            name = entity.name
            geom = rendering.make_circle(entity.size)
            xform = rendering.Transform()

            # agent on top, other entity to background
            alpha = 0.6 if "agent" in name else 0.5
            geom.set_color(*entity.color, alpha=alpha)

            geom.add_attr(xform)
            env.render_dict[name] = {
                "geom": geom,
                "xform": xform,
                "attach_ent": entity
            }

            # VIS: show visual range/receptor field
            if 'agent' in entity.name and env.show_visual_range:
                vis_geom = rendering.make_circle(entity.vision_range)
                vis_geom.set_color(*entity.color, alpha=0.2)
                vis_xform = rendering.Transform()
                vis_geom.add_attr(vis_xform)
                env.render_dict[name + "_vis"] = {
                    "geom": vis_geom,
                    "xform": vis_xform,
                    "attach_ent": entity
                }

            # GOAL: highlight goal entities
            if "agent" in entity.name and entity.goal_b is not None:
                for goal in [entity.goal_a, entity.goal_b]:
                    goal_geom = rendering.make_circle(goal.size * 1.5)
                    goal_geom.set_color(*goal.color, alpha=0.2)
                    goal_xform = rendering.Transform()
                    goal_geom.add_attr(goal_xform)
                    env.render_dict[goal.name + "_highlight"] = {
                        "geom": goal_geom,
                        "xform": goal_xform,
                        "attach_ent": goal
                    }

            # LABEL: display comm message
            if "agent" in entity.name and entity.goal_b is not None:
                # if "agent" in entity.name and entity.goal_b is None:
                x = entity.state.p_pos[0] + 50
                y = entity.state.p_pos[1] + 50
                comm_geom = rendering.Text("_", position=(x, y), font_size=36)
                comm_xform = rendering.Transform()
                comm_geom.add_attr(comm_xform)
                env.render_dict[name + "_comm"] = {
                    "geom": comm_geom,
                    "xform": comm_xform,
                    "attach_ent": entity
                }

        # add geoms to viewer
        for viewer in env.viewers:
            viewer.geoms = []
            for k, d in env.render_dict.items():
                viewer.add_geom(d["geom"])