pytorch3d.renderer.blending

blending

class pytorch3d.renderer.blending.BlendParams(sigma: float = 0.0001, gamma: float = 0.0001, background_color: Tensor | Sequence[float] = (1.0, 1.0, 1.0))[source]

Bases: NamedTuple

Data class to store blending params with defaults

Members:
sigma (float): For SoftmaxPhong, controls the width of the sigmoid

function used to calculate the 2D distance based probability. Determines the sharpness of the edges of the shape. Higher => faces have less defined edges. For SplatterPhong, this is the standard deviation of the Gaussian kernel. Higher => splats have a stronger effect and the rendered image is more blurry.

gamma (float): Controls the scaling of the exponential function used

to set the opacity of the color. Higher => faces are more transparent.

background_color: RGB values for the background color as a tuple or

as a tensor of three floats.

sigma: float

Alias for field number 0

gamma: float

Alias for field number 1

background_color: Tensor | Sequence[float]

Alias for field number 2

pytorch3d.renderer.blending.hard_rgb_blend(colors: Tensor, fragments, blend_params: BlendParams) Tensor[source]
Naive blending of top K faces to return an RGBA image
  • RGB - choose color of the closest point i.e. K=0

  • A - 1.0

Parameters:
  • colors – (N, H, W, K, 3) RGB color for each of the top K faces per pixel.

  • fragments

    the outputs of rasterization. From this we use - pix_to_face: LongTensor of shape (N, H, W, K) specifying the indices

    of the faces (in the packed representation) which overlap each pixel in the image. This is used to determine the output shape.

  • blend_params – BlendParams instance that contains a background_color

  • background (field specifying the color for the) –

Returns:

RGBA pixel_colors – (N, H, W, 4)

pytorch3d.renderer.blending.sigmoid_alpha_blend(colors, fragments, blend_params: BlendParams) Tensor[source]
Silhouette blending to return an RGBA image
  • RGB - choose color of the closest point.

  • A - blend based on the 2D distance based probability map [1].

Parameters:
  • colors – (N, H, W, K, 3) RGB color for each of the top K faces per pixel.

  • fragments

    the outputs of rasterization. From this we use - pix_to_face: LongTensor of shape (N, H, W, K) specifying the indices

    of the faces (in the packed representation) which overlap each pixel in the image.

    • dists: FloatTensor of shape (N, H, W, K) specifying the 2D euclidean distance from the center of each pixel to each of the top K overlapping faces.

Returns:

RGBA pixel_colors – (N, H, W, 4)

[1] Liu et al, ‘Soft Rasterizer: A Differentiable Renderer for Image-based

3D Reasoning’, ICCV 2019

pytorch3d.renderer.blending.softmax_rgb_blend(colors: Tensor, fragments, blend_params: BlendParams, znear: float | Tensor = 1.0, zfar: float | Tensor = 100) Tensor[source]

RGB and alpha channel blending to return an RGBA image based on the method proposed in [1]

  • RGB - blend the colors based on the 2D distance based probability map and relative z distances.

  • A - blend based on the 2D distance based probability map.

Parameters:
  • colors – (N, H, W, K, 3) RGB color for each of the top K faces per pixel.

  • fragments

    namedtuple with outputs of rasterization. We use properties - pix_to_face: LongTensor of shape (N, H, W, K) specifying the indices

    of the faces (in the packed representation) which overlap each pixel in the image.

    • dists: FloatTensor of shape (N, H, W, K) specifying the 2D euclidean distance from the center of each pixel to each of the top K overlapping faces.

    • zbuf: FloatTensor of shape (N, H, W, K) specifying the interpolated depth from each pixel to to each of the top K overlapping faces.

  • blend_params

    instance of BlendParams dataclass containing properties - sigma: float, parameter which controls the width of the sigmoid

    function used to calculate the 2D distance based probability. Sigma controls the sharpness of the edges of the shape.

    • gamma: float, parameter which controls the scaling of the exponential function used to control the opacity of the color.

    • background_color: (3) element list/tuple/torch.Tensor specifying the RGB values for the background color.

  • znear – float, near clipping plane in the z direction

  • zfar – float, far clipping plane in the z direction

Returns:

RGBA pixel_colors – (N, H, W, 4)

[0] Shichen Liu et al, ‘Soft Rasterizer: A Differentiable Renderer for Image-based 3D Reasoning’