44# Third party imports 
55import  vtk 
66from  wslink  import  register  as  exportRpc 
7+ from  opengeodeweb_microservice .database .data  import  Data 
78
89# Local application imports 
910from  opengeodeweb_viewer .utils_functions  import  get_schemas_dict , validate_schema 
@@ -37,15 +38,15 @@ def registerMesh(self, params):
3738                reader .SetFileName (file_path )
3839                mapper  =  vtk .vtkPolyDataMapper ()
3940                mapper .SetInputConnection (reader .GetOutputPort ())
40-              
41+ 
4142            actor  =  vtk .vtkActor ()
4243            actor .SetMapper (mapper )
43-              
44+ 
4445            renderer  =  self .get_renderer ()
4546            renderer .AddActor (actor )
46-              
47+ 
4748            self .register_object (data_id , reader , None , actor , mapper , {})
48-              
49+ 
4950            reader .Update ()
5051            data_object  =  reader .GetOutput ()
5152            data_set  =  vtk .vtkDataSet .SafeDownCast (data_object )
@@ -67,7 +68,7 @@ def registerMesh(self, params):
6768            elif  max_id  >=  7 :
6869                max_dimension  =  "polyhedra" 
6970            self .get_object (data_id )["max_dimension" ] =  max_dimension 
70-              
71+ 
7172            renderWindow  =  self .getView ("-1" )
7273            renderer .ResetCamera ()
7374            renderWindow .Render ()
@@ -110,8 +111,25 @@ def meshApplyTextures(self, params):
110111        validate_schema (
111112            params , self .mesh_schemas_dict ["apply_textures" ], self .mesh_prefix 
112113        )
113-         data_id , textures  =  params ["id" ], params ["textures" ]
114-         self .applyTextures (data_id , textures )
114+         data_id , textures_info  =  params ["id" ], params ["textures" ]
115+         textures_data  =  []
116+         for  tex_info  in  textures_info :
117+             texture_id  =  tex_info ["id" ]
118+             texture_name  =  tex_info ["texture_name" ]
119+             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+             )
115133
116134    def  displayAttributeOnVertices (self , data_id , name ):
117135        reader  =  self .get_object (data_id )["reader" ]
0 commit comments