Exemplo n.º 1
0
    def _pipeline_default(self):
        sqrt2 = numpy.sqrt(2)
        x = -sqrt2 * numpy.cos(numpy.pi * 2. / 3)
        y = sqrt2 * numpy.sin(numpy.pi * 2. / 3)
        p1 = tvtk.PlaneSource(origin=(0,0,0), \
                              point1=(-sqrt2,0,1), point2=(x,y,1))
        p2 = tvtk.PlaneSource(origin=(0,0,0), \
                               point1=(x,y,1), point2=(x,-y,1))
        p3 = tvtk.PlaneSource(origin=(0,0,0), \
                               point1=(x,-y,1), point2=(-sqrt2,0,1))
        for p in (p1, p2, p3):
            p.set_resolution(32, 32)
        append = tvtk.AppendPolyData()
        append.add_input_connection(p1.output_port)
        append.add_input_connection(p2.output_port)
        append.add_input_connection(p3.output_port)

        scale_f = tvtk.TransformFilter(input_connection=append.output_port,
                                       transform=self.scale)

        trans = tvtk.Transform()
        trans.rotate_x(90.0)
        self.imp_cyl.transform = trans

        clip = tvtk.ClipPolyData(input_connection=scale_f.output_port,
                                 clip_function=self.imp_cyl,
                                 inside_out=True)

        transF2 = tvtk.TransformFilter(input_connection=clip.output_port,
                                       transform=self.transform)
        self.config_pipeline()
        return transF2
Exemplo n.º 2
0
def endEffectorBody(X_s, size, color):
    """
  Return a end effector reprsented by a plane
  and the appropriate static transform.
  """
    apd = tvtk.AppendPolyData()

    ls = tvtk.LineSource(point1=(0., 0., 0.), point2=tuple(X_s.translation()))

    p1 = (sva.PTransformd(e.Vector3d.UnitX() * size) * X_s).translation()
    p2 = (sva.PTransformd(e.Vector3d.UnitY() * size) * X_s).translation()
    ps = tvtk.PlaneSource(origin=tuple(X_s.translation()),
                          point1=tuple(p1),
                          point2=tuple(p2),
                          center=tuple(X_s.translation()))

    apd.add_input(ls.output)
    apd.add_input(ps.output)

    pdm = tvtk.PolyDataMapper(input=apd.output)
    actor = tvtk.Actor(mapper=pdm)
    actor.property.color = color
    actor.user_transform = tvtk.Transform()

    return actor, sva.PTransformd.Identity()
Exemplo n.º 3
0
def get_actor_from_models(models):
    actors = []
    scene_obj = {}

    m = models.keys()[randint(len(models))]
    mapper = models[m]

    scene_obj['model'] = m

    p = tvtk.Property(color=(1.0, 1.0, 1.0), lighting=False)
    actor = tvtk.Actor(mapper=mapper, property=p)

    x = (rand() - 0.5) * 2 * model_center_square
    y = (rand() - 0.5) * 2 * model_center_square
    theta = rand() * 360
    actor.position = [x, y, 0]
    actor.rotate_z(theta)

    #scene_obj['x'] = actor.position[0]
    #scene_obj['y'] = actor.position[1]
    #scene_obj['theta'] = actor.orientation[2]
    scene_obj['actor_matrix'] = actor.matrix.to_array().tolist()

    actors.append(actor)

    plane = tvtk.PlaneSource()
    plane_mapper = tvtk.PolyDataMapper(input=plane.output)

    p = tvtk.Property(color=(1.0, 0, 0), lighting=False)
    floor_actor = tvtk.Actor(mapper=plane_mapper, property=p)

    p = tvtk.Property(color=(0, 1.0, 0), lighting=False)
    wall_actor = tvtk.Actor(mapper=plane_mapper, property=p)

    wall_actor.rotate_x(90)
    wall_actor.scale = [10, 6, 1]
    wall_actor.position = [0, 3, 2]
    floor_actor.scale = [10, 6, 1]

    actors.append(wall_actor)
    actors.append(floor_actor)

    return actors, scene_obj
Exemplo n.º 4
0
 def __source_dict_default(self):
     """Default value for source dict."""
     sd = {
         'arrow': tvtk.ArrowSource(),
         'cone': tvtk.ConeSource(),
         'cube': tvtk.CubeSource(),
         'cylinder': tvtk.CylinderSource(),
         'disk': tvtk.DiskSource(),
         'earth': tvtk.EarthSource(),
         'line': tvtk.LineSource(),
         'outline': tvtk.OutlineSource(),
         'plane': tvtk.PlaneSource(),
         'point': tvtk.PointSource(),
         'polygon': tvtk.RegularPolygonSource(),
         'sphere': tvtk.SphereSource(),
         'superquadric': tvtk.SuperquadricSource(),
         'textured sphere': tvtk.TexturedSphereSource(),
         'glyph2d': tvtk.GlyphSource2D()
     }
     return sd
Exemplo n.º 5
0
def endEffectorBody(X_s, size, color):
  """
  Return a end effector reprsented by a plane
  and the appropriate static transform.
  """
  apd = tvtk.AppendPolyData()

  ls = tvtk.LineSource(point1=(0., 0., 0.),
                       point2=tuple(X_s.translation()))

  p1 = (sva.PTransformd(e.Vector3d.UnitX()*size)*X_s).translation()
  p2 = (sva.PTransformd(e.Vector3d.UnitY()*size)*X_s).translation()
  ps = tvtk.PlaneSource(origin=tuple(X_s.translation()),
                        point1=tuple(p1),
                        point2=tuple(p2),
                        center=tuple(X_s.translation()))

  # apd.add_input(ls.output)
  # apd.add_input(ps.output)
  # https://github.com/enthought/mayavi/blob/ac5c8e316335078c25461a0bce4a724ae86f1836/tvtk/tests/test_tvtk.py#L586
  apd.add_input_data(ls.output)
  apd.add_input_data(ps.output)

  # pdm = tvtk.PolyDataMapper(input=apd.output)
  # arcPdm = tvtk.PolyDataMapper(input=arcSource.output)
  pdm = tvtk.PolyDataMapper()

  # https://stackoverflow.com/questions/35089379/how-to-fix-traiterror-the-input-trait-of-a-instance-is-read-only
  # configure_input_data(textPdm, textSource)# https://github.com/enthought/mayavi/issues/521
  pdm.input_connection = apd.output_port

  prop = tvtk.Property(color=color)
  # https://github.com/enthought/mayavi/issues/521
  # arcPdm.input_connection = arcSource.output_port
  actor = tvtk.Actor(mapper=pdm, property=prop)
  actor.property.color = color
  actor.user_transform = tvtk.Transform()

  return actor, sva.PTransformd.Identity()
Exemplo n.º 6
0
def draw_bilboard(fig, texture_name, pos=(0, 0, 0), scale=1.0):
    plane = tvtk.PlaneSource(center=pos)
    # pdb.set_trace()
    # plane = resize(plane, scale)

    reader = tvtk.PNGReader()
    reader.set_data_scalar_type_to_unsigned_char()
    reader.set(file_name=texture_name)

    plane_texture = tvtk.Texture()
    plane_texture.set_input(reader.get_output())
    plane_texture.set(interpolate=0)
    # pdb.set_trace()

    map = tvtk.TextureMapToPlane()
    map.set_input(plane.get_output())

    plane_mapper = tvtk.PolyDataMapper()
    plane_mapper.set(input=map.get_output())

    p = tvtk.Property(opacity=1.0, color=(1, 0, 0))
    plane_actor = tvtk.Actor(mapper=plane_mapper, texture=plane_texture)
    fig.scene.add_actor(plane_actor)