mirror of
https://github.com/nerfstudio-project/nerfstudio.git
synced 2026-11-13 03:14:00 +08:00
Merge remote-tracking branch 'origin' into generative
This commit is contained in:
commit
47fc0a570c
2 files changed
+35
-1
No files matched your search
@@ -332,3 +332,37 @@ class NormalsRenderer(nn.Module):
|
||||
"""Calculate normals along the ray."""
|
||||
n = torch.sum(weights * normals, dim=-2)
|
||||
return n
|
||||
|
||||
|
||||
class LambertianShadingRenderer(nn.Module):
|
||||
"""Calculate Lambertian shading."""
|
||||
|
||||
@classmethod
|
||||
def forward(
|
||||
cls,
|
||||
rgb: TensorType["bs":..., 3],
|
||||
normals: TensorType["bs":..., 3],
|
||||
light_direction: TensorType["bs":..., 3],
|
||||
shading_weight: float = 1.0,
|
||||
detach_normals=True,
|
||||
):
|
||||
"""Calculate Lambertian shading.
|
||||
|
||||
Args:
|
||||
rgb: Accumulated rgb along a ray.
|
||||
normals: Accumulated normals along a ray.
|
||||
light_direction: Direction of light source.
|
||||
shading_weight: Lambertian shading (1.0) vs. ambient lighting (0.0) ratio
|
||||
detach_normals: Detach normals from the computation graph when computing shading.
|
||||
|
||||
Returns:
|
||||
Textureless Lambertian shading, Lambertian shading
|
||||
"""
|
||||
if detach_normals:
|
||||
normals = normals.detach()
|
||||
|
||||
lambertian = (1 - shading_weight) + shading_weight * (normals @ light_direction).clamp(min=0)
|
||||
shaded = lambertian.unsqueeze(-1).repeat(1, 3)
|
||||
shaded_albedo = rgb * lambertian.unsqueeze(-1)
|
||||
|
||||
return shaded, shaded_albedo
|
||||
@@ -826,7 +826,7 @@ class ViewerState:
|
||||
else:
|
||||
image_height = (num_vis_rays / aspect_ratio) ** 0.5
|
||||
image_height = int(round(image_height, -1))
|
||||
image_height = min(self.max_resolution, image_height)
|
||||
image_height = max(min(self.max_resolution, image_height), 30)
|
||||
image_width = int(image_height * aspect_ratio)
|
||||
if image_width > self.max_resolution:
|
||||
image_width = self.max_resolution
|
||||
|
||||
Reference in new issue
Block a user