Source code for plato.draw.pythreejs.Mesh

import numpy as np

from ... import draw
from ... import mesh
from .internal import ThreeJSPrimitive

[docs]class Mesh(draw.Mesh, ThreeJSPrimitive): __doc__ = draw.Mesh.__doc__ def update_arrays(self): if not self._dirty_attributes: return normals = mesh.computeNormals_(self.vertices, self.indices) vertex_colors = self.colors if len(vertex_colors) < len(self.vertices): vertex_colors = np.tile( vertex_colors, (len(self.vertices)//len(vertex_colors), 1)) shape_colors = self.shape_colors if len(shape_colors) < len(self.positions): shape_colors = np.tile( shape_colors, (len(self.positions)//len(shape_colors), 1)) (positions, orientations, shape_colors, images, normals, vertex_colors) = mesh.unfoldProperties( [self.positions, self.orientations, shape_colors], [self.vertices, normals, vertex_colors]) mix = self.shape_color_fraction colors = shape_colors*mix + vertex_colors*(1 - mix) self._finalize_primitive_arrays( positions, orientations, colors, images, normals, self.indices)