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
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()
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
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
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()
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)