mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-12-20 22:30:35 +08:00
Fix softmax_rgb_blend() when mesh is outside zfar
Summary: This fixes two small issues with blending.py:softmax_rgb_blend(): 1) zfar and znear attributes are propagated from the camera settings instead of just using default settings of znear=1.0 and zfar=100.0 2) A check is added to prevent arithmetic overflow in softmax_rgb_blend() This is a fix in response to https://github.com/facebookresearch/pytorch3d/issues/334 where meshes rendererd using a SoftPhongShader with faces_per_pixel=1 appear black. This only occurs when the scale of the mesh is large (vertex values > 100, where 100 is the default value of zfar). This fix allows the caller to increase the value of cameras.zfar to match the scale of her/his mesh. Reviewed By: nikhilaravi Differential Revision: D23517541 fbshipit-source-id: ab8631ce9e5f2149f140b67b13eff857771b8807
This commit is contained in:
committed by
Facebook GitHub Bot
parent
6eb158e548
commit
f8ea5906c0
@@ -186,7 +186,7 @@ def softmax_rgb_blend(
|
||||
z_inv = (zfar - fragments.zbuf) / (zfar - znear) * mask
|
||||
# pyre-fixme[16]: `Tuple` has no attribute `values`.
|
||||
# pyre-fixme[6]: Expected `Tensor` for 1st param but got `float`.
|
||||
z_inv_max = torch.max(z_inv, dim=-1).values[..., None]
|
||||
z_inv_max = torch.max(z_inv, dim=-1).values[..., None].clamp(min=eps)
|
||||
# pyre-fixme[6]: Expected `Tensor` for 1st param but got `float`.
|
||||
weights_num = prob_map * torch.exp((z_inv - z_inv_max) / blend_params.gamma)
|
||||
|
||||
|
||||
@@ -117,7 +117,11 @@ class SoftPhongShader(nn.Module):
|
||||
cameras=cameras,
|
||||
materials=materials,
|
||||
)
|
||||
images = softmax_rgb_blend(colors, fragments, blend_params)
|
||||
znear = kwargs.get("znear", getattr(cameras, "znear", 1.0))
|
||||
zfar = kwargs.get("zfar", getattr(cameras, "zfar", 100.0))
|
||||
images = softmax_rgb_blend(
|
||||
colors, fragments, blend_params, znear=znear, zfar=zfar
|
||||
)
|
||||
return images
|
||||
|
||||
|
||||
@@ -214,7 +218,11 @@ class SoftGouraudShader(nn.Module):
|
||||
cameras=cameras,
|
||||
materials=materials,
|
||||
)
|
||||
images = softmax_rgb_blend(pixel_colors, fragments, self.blend_params)
|
||||
znear = kwargs.get("znear", getattr(cameras, "znear", 1.0))
|
||||
zfar = kwargs.get("zfar", getattr(cameras, "zfar", 100.0))
|
||||
images = softmax_rgb_blend(
|
||||
pixel_colors, fragments, self.blend_params, znear=znear, zfar=zfar
|
||||
)
|
||||
return images
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user