Skip to content

Commit 308eb97

Browse files
committed
update applyTextures with texture_id from database entry
1 parent 836d5af commit 308eb97

File tree

3 files changed

+39
-17
lines changed

3 files changed

+39
-17
lines changed

src/opengeodeweb_viewer/config.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ def dev_config():
1919
if platform == "linux":
2020
os.environ["DATA_FOLDER_PATH"] = "/temp/OpenGeodeWeb_Data/"
2121
elif platform == "win32":
22-
os.environ["DATA_FOLDER_PATH"] = os.path.join("OpenGeodeWeb_Data")
22+
os.environ["DATA_FOLDER_PATH"] = os.path.join(
23+
"C:/Users", os.getlogin(), "OpenGeodeWeb_Data"
24+
)
2325
if not os.path.exists(os.environ.get("DATA_FOLDER_PATH")):
2426
os.mkdir(os.environ.get("DATA_FOLDER_PATH"))
2527

src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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"]

src/opengeodeweb_viewer/rpc/model/model_protocols.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,22 @@ def registerModel(self, params):
4242
_ = self.get_data(data_id)
4343
file_path = self.get_data_file_path(data_id)
4444

45-
reader, geometry, mapper, actor = self._build_model_pipeline(file_path)
45+
reader = vtk.vtkXMLMultiBlockDataReader()
46+
reader.SetFileName(file_path)
47+
filter = vtk.vtkGeometryFilter()
48+
filter.SetInputConnection(reader.GetOutputPort())
49+
mapper = vtk.vtkCompositePolyDataMapper()
50+
mapper.SetInputConnection(filter.GetOutputPort())
51+
attributes = vtkCompositeDataDisplayAttributes()
52+
mapper.SetCompositeDataDisplayAttributes(attributes)
53+
54+
actor = vtk.vtkActor()
55+
actor.SetMapper(mapper)
56+
4657
renderer = self.get_renderer()
4758
renderer.AddActor(actor)
4859

49-
self.register_object(data_id, reader, geometry, actor, mapper, {})
60+
self.register_object(data_id, reader, filter, actor, mapper, {})
5061
self.get_object(data_id)["max_dimension"] = "default"
5162
renderWindow = self.getView("-1")
5263
renderer.ResetCamera()

0 commit comments

Comments
 (0)