keep triangles together in base 3d engine
This commit is contained in:
parent
37e9dcc1f6
commit
b2da4df1c4
2 changed files with 8 additions and 7 deletions
|
@ -1,9 +1,10 @@
|
|||
from itertools import chain
|
||||
from typing import Optional
|
||||
|
||||
import numpy as np
|
||||
|
||||
from c3nav.mapdata.render.data import HybridGeometry
|
||||
from c3nav.mapdata.render.engines.base import RenderEngine
|
||||
from c3nav.mapdata.render.engines.base import FillAttribs, RenderEngine, StrokeAttribs
|
||||
|
||||
|
||||
class Base3DEngine(RenderEngine):
|
||||
|
@ -22,13 +23,13 @@ class Base3DEngine(RenderEngine):
|
|||
def _append_to_vertices(self, vertices, append=None):
|
||||
if append is not None:
|
||||
append = np.array(append, dtype=np.float32).flatten()
|
||||
vertices = np.hstack((
|
||||
vertices = np.dstack((
|
||||
vertices,
|
||||
append.reshape(1, append.size).repeat(vertices.shape[0], 0)
|
||||
append.reshape(1, append.size).repeat(vertices.shape[0]*3, 0).reshape((-1, 3, append.size))
|
||||
))
|
||||
return vertices
|
||||
|
||||
def _place_geometry(self, geometry: HybridGeometry, append=None):
|
||||
faces = np.vstack(tuple(chain(geometry.faces, *geometry.add_faces.values())))
|
||||
vertices = faces.reshape(-1, 3) * self.np_scale + self.np_offset
|
||||
vertices = faces * self.np_scale + self.np_offset
|
||||
return self._append_to_vertices(vertices, append).flatten()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue