@@ -112,24 +112,33 @@ def meshApplyTextures(self, params):
112112            params , self .mesh_schemas_dict ["apply_textures" ], self .mesh_prefix 
113113        )
114114        data_id , textures_info  =  params ["id" ], params ["textures" ]
115-         textures_data  =  []
115+         self .applyTextures (data_id , textures_info )
116+ 
117+     def  applyTextures (self , mesh_id : str , textures_info : list ):
116118        for  tex_info  in  textures_info :
117119            texture_id  =  tex_info ["id" ]
118120            texture_name  =  tex_info ["texture_name" ]
119121            texture_data  =  Data .get (texture_id )
120-             if  texture_data  and  texture_data .geode_object  ==  "RasterImage2D" :
121-                 textures_data .append (
122-                     {"texture_name" : texture_name , "texture_data" : texture_data }
123-                 )
124-         self .applyTextures (data_id , textures_data )
125- 
126-     def  applyTextures (self , mesh_id : str , textures_data : list ):
127-         for  tex_info  in  textures_data :
128-             texture_name  =  tex_info ["texture_name" ]
129-             texture_data  =  tex_info ["texture_data" ]
130-             self .apply_single_texture (
131-                 mesh_id , texture_data .viewable_file_name , texture_name 
132-             )
122+             if  not  texture_data  or  texture_data .geode_object  !=  "RasterImage2D" :
123+                 continue 
124+             texture_file_path  =  self .get_data_file_path (texture_id )
125+             texture_reader  =  vtk .vtkXMLImageDataReader ()
126+             texture_reader .SetFileName (texture_file_path )
127+             texture_reader .Update ()
128+             texture  =  vtk .vtkTexture ()
129+             texture .SetInputConnection (texture_reader .GetOutputPort ())
130+             texture .InterpolateOn ()
131+             reader  =  self .get_object (mesh_id )["reader" ]
132+             output  =  reader .GetOutput ()
133+             point_data  =  output .GetPointData ()
134+             for  i  in  range (point_data .GetNumberOfArrays ()):
135+                 array  =  point_data .GetArray (i )
136+                 if  array .GetName () ==  texture_name :
137+                     point_data .SetTCoords (array )
138+                     break 
139+             actor  =  self .get_object (mesh_id )["actor" ]
140+             actor .SetTexture (texture )
141+         self .render ()
133142
134143    def  displayAttributeOnVertices (self , data_id , name ):
135144        reader  =  self .get_object (data_id )["reader" ]
0 commit comments