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
Exemple #4
0
  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)
Exemple #5
0
  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)