diff --git a/src/c3nav/mapdata/render/engines/base3d.py b/src/c3nav/mapdata/render/engines/base3d.py index 80089006..32c82cc0 100644 --- a/src/c3nav/mapdata/render/engines/base3d.py +++ b/src/c3nav/mapdata/render/engines/base3d.py @@ -18,9 +18,11 @@ class Base3DEngine(RenderEngine): self._current_group = None self.groups = OrderedDict() self.vertices = OrderedDict() + self.colors = OrderedDict() self.np_scale = np.array((self.scale, self.scale, self.scale)) self.np_offset = np.array((-self.minx * self.scale, -self.miny * self.scale, 0)) + if center: self.np_offset -= np.array(((self.maxx - self.minx) * self.scale / 2, (self.maxy - self.miny) * self.scale / 2, @@ -37,6 +39,7 @@ class Base3DEngine(RenderEngine): if key not in self.vertices: self.groups[self._current_group].append(key) self.vertices.setdefault(key, []).append(self._place_geometry(geometry)) + self.colors.setdefault(key, self.color_to_rgb(fill.color)) @staticmethod def _append_to_vertices(vertices, append=None): diff --git a/src/c3nav/mapdata/render/engines/openscad.py b/src/c3nav/mapdata/render/engines/openscad.py index c0a6bf9c..464d2c89 100644 --- a/src/c3nav/mapdata/render/engines/openscad.py +++ b/src/c3nav/mapdata/render/engines/openscad.py @@ -34,7 +34,8 @@ class OpenSCADEngine(Base3DEngine): b'}\n\n') for group, subgroups in self.groups.items(): result += (b'module ' + group.replace('-', 'minus').encode() + b'() {\n' + - b'\n'.join((b' %s();' % subgroup.replace('-', 'minus').encode()) + b'\n'.join((b' color([%.2f, %.2f, %.2f]) %s();' % + (*self.colors[subgroup][:3], subgroup.replace('-', 'minus').encode())) for subgroup in subgroups) + b'\n' + b'}\n') result += b'\n' diff --git a/src/c3nav/mapdata/render/renderer.py b/src/c3nav/mapdata/render/renderer.py index 43724c43..ec4ea88c 100644 --- a/src/c3nav/mapdata/render/renderer.py +++ b/src/c3nav/mapdata/render/renderer.py @@ -111,7 +111,7 @@ class MapRenderer: scale = (bottom - min_altitude) / int(0.7 * 1000) offset = min_altitude - bottom * scale engine.add_geometry(altitudearea.geometry.fit(scale=scale, offset=offset).filter(top=False), - fill=FillAttribs('#aaaaaa'), category='ground') + fill=FillAttribs('#eeeeee'), category='ground') # render altitude areas in default ground color and add ground colors to each one afterwards # shadows are directly calculated and added by the engine