graphdeco-inria / hierarchical-3d-gaussians

Official implementation of the SIGGRAPH 2024 paper "A Hierarchical 3D Gaussian Representation for Real-Time Rendering of Very Large Datasets"
Other
935 stars 87 forks source link

question about the different between render and viewer #37

Closed Linkersem closed 2 months ago

Linkersem commented 3 months ago

Hi, @Snosixtyboo,thank you for your excellent work and previous responses ! I'm reading the code of sibr_viewer, and I noticed that in the function(file:HierarchyView.cpp) onRenderIBR(sibr::IRenderTarget& dst, const sibr::Camera& eye), after calling Switching::getTsIndexed(),CudaRasterizer::Rasterizer::forward() is called directly, but in render_hierarchy.py, after calling get_interpolation_weights(), the new Gaussian and its properties are first interpolated and calculated. I'm confused about the difference between the two. Could you please explain it? Looking forward to your reply.

Snosixtyboo commented 2 months ago

Sure.

The interpolation is, in the one path, done via Python so that we can have autodiff take care of correct gradients. In that case, no interpolation weights are sent to the rasterizer, and it does not do any interpolation itself (except on the blending weights). In the real-time viewer, we don't need gradients, but we still need correct interpolation, so the rasterizer gets the actual interpolation weights and performs interpolation itself.

Hth! Bernhard