def rotate(self, theta, axis_normal): if self._inverse: self._transformation = matrix.compose( self._transformation, matrix.rotation_h(-theta, axis_normal)) else: self._transformation = matrix.compose( matrix.rotation_h(theta, axis_normal), self._transformation) # Return self for convenience. return self
def translate(self, vec): if self._inverse: self._transformation = matrix.compose( self._transformation, matrix.translation_h(vector.negate(vec))) else: self._transformation = matrix.compose(matrix.translation_h(vec), self._transformation) # Return self for convenience. return self
def scale(self, scalar): if self._inverse: self._transformation = matrix.compose( self._transformation, matrix.scaling_h(1.0 / scalar)) else: self._transformation = matrix.compose(matrix.scaling_h(scalar), self._transformation) # Return self for convenience. return self
def _seed_model_instances(self, camera): # Initialize output data. out_vertex_data = [] out_polygon_data = [] # Create model instances. for instance in self._model_instances: if not instance._hidden: # Transformation from model to clip space. full_transformation = matrix.compose( camera._projection, matrix.compose( camera._transformation, instance._transformation ) ) colormap = self._colormaps[instance._colormap_name] # Unpack model data. ( vertices, polygons, colors ) = self._models[instance._resource_name] vert_offset = len(out_vertex_data) # Pack vertex data. out_vertex_data += [ ( vertex, full_transformation, ) for vertex in vertices ] # Pack polygon data. out_polygon_data += [ ( ( polygons[polygon][0] + vert_offset, polygons[polygon][1] + vert_offset, polygons[polygon][2] + vert_offset, ), colormap[colors[polygon]], camera._view_frustum, ) for polygon in range(len(polygons)) ] return tuple(out_vertex_data), tuple(out_polygon_data)
def _seed_sprite_instances(self, camera): # Initialize output data. out_sprite_data = [] # Create sprite instances. for instance in self._sprite_instances: if not instance._hidden: # Transformation from sprite to camera space. part_transformation = matrix.compose( camera._transformation, instance._transformation ) colormap = self._colormaps[instance._colormap_name] # Unpack sprite data. ( sprite ) = self._sprites[instance._resource_name] # Colormap sprite. mapped_sprite = tuple( tuple( colormap[pixel] for pixel in row ) for row in sprite ) # Pack sprite data. out_sprite_data += [ ( mapped_sprite, (0.0, 0.0, 0.0,), (0.0, 0.5, 0.0,), part_transformation, camera._projection, camera._ratio, camera._view_frustum[:2], ), ] return tuple(out_sprite_data)