MCPcopy
hub / github.com/nerfstudio-project/gsplat / viewer_render_fn

Function viewer_render_fn

examples/simple_viewer.py:124–203  ·  view source on GitHub ↗
(camera_state: CameraState, render_tab_state: RenderTabState)

Source from the content-addressed store, hash-verified

122 # register and open viewer
123 @torch.no_grad()
124 def viewer_render_fn(camera_state: CameraState, render_tab_state: RenderTabState):
125 assert isinstance(render_tab_state, GsplatRenderTabState)
126 if render_tab_state.preview_render:
127 width = render_tab_state.render_width
128 height = render_tab_state.render_height
129 else:
130 width = render_tab_state.viewer_width
131 height = render_tab_state.viewer_height
132 c2w = camera_state.c2w
133 K = camera_state.get_K((width, height))
134 c2w = torch.from_numpy(c2w).float().to(device)
135 K = torch.from_numpy(K).float().to(device)
136 viewmat = c2w.inverse()
137
138 RENDER_MODE_MAP = {
139 "rgb": "RGB",
140 "depth(accumulated)": "D",
141 "depth(expected)": "ED",
142 "alpha": "RGB",
143 }
144
145 render_colors, render_alphas, info = rasterization(
146 means, # [N, 3]
147 quats, # [N, 4]
148 scales, # [N, 3]
149 opacities, # [N]
150 colors, # [N, S, 3]
151 viewmat[None], # [1, 4, 4]
152 K[None], # [1, 3, 3]
153 width,
154 height,
155 sh_degree=(
156 min(render_tab_state.max_sh_degree, sh_degree)
157 if sh_degree is not None
158 else None
159 ),
160 near_plane=render_tab_state.near_plane,
161 far_plane=render_tab_state.far_plane,
162 radius_clip=render_tab_state.radius_clip,
163 eps2d=render_tab_state.eps2d,
164 backgrounds=torch.tensor([render_tab_state.backgrounds], device=device)
165 / 255.0,
166 render_mode=RENDER_MODE_MAP[render_tab_state.render_mode],
167 rasterize_mode=render_tab_state.rasterize_mode,
168 camera_model=render_tab_state.camera_model,
169 packed=False,
170 with_ut=args.with_ut,
171 with_eval3d=args.with_eval3d,
172 )
173 render_tab_state.total_gs_count = len(means)
174 render_tab_state.rendered_gs_count = (info["radii"] > 0).all(-1).sum().item()
175
176 if render_tab_state.render_mode == "rgb":
177 # colors represented with sh are not guranteed to be in [0, 1]
178 render_colors = render_colors[0, ..., 0:3].clamp(0, 1)
179 renders = render_colors.cpu().numpy()
180 elif render_tab_state.render_mode in ["depth(accumulated)", "depth(expected)"]:
181 # normalize depth to [0, 1]

Callers

nothing calls this directly

Calls 2

rasterizationFunction · 0.90
apply_float_colormapFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…