You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
3D Gaussian splatting is a novel 3D representation that enables fast scene reconstruction and real time photorealistic rendering. We are adding support for rendering 3DGS point clouds in Open3D.
Steps [filament renderer]:
Study the Open3D filament based visualizer cpp/open3d/visualization/rendering/filament and the filament material format.
We want to port the Python code to C++17 and the CUDA kernels to GLSL vertex and fragment shaders. At the moment, we will only port the Python code and use mock-ups for the GLSL shaders. To enable the mock-ups to be functional, we will provide sample returned data. We will load this data to the GPU as buffer objects and the mock-up shaders will simply return them. The result should be a correct rendering of the 3DGS scene, but from a fixed viewpoint.
Create a new filament material "3dgs" with mock vertex and fragment shaders in ESSL 3.0 (OpenGL ES variant of GLSL) to render 3DGS point clouds. ESSL 3.0 is a filament limitation.
Add the new material to Open3D, update O3DVisualizer to use the 3dgs material. Provide all required point cloud attributes to the GPU when 3DGS attributes are detected. See the folder cpp/open3d/visualization/rendering/ for the rendering implementation. For now, also create buffers for the intermediate data returned by the shaders.
Use it to render 3DGS point clouds.
Tests:
Load these Numpy files and display scene from a few different viewpoints. Compare with provided reference images.
Open3D Tensor point cloud representation:
pcd.point[‘positions’] (N,3) – (x,y,z) for each splat.
pcd.point[‘opacity’] – (N,) opacity
pcd.point[‘rot’] (N, 4) - quaternion rotation of Gaussian.
pcd.point[‘scale'] (N, 3) - x, y, z scales for Gaussian.
pcd.point[‘f_dc’] (N, 3) – DC components for RGB colors.
pcd.point[‘f_rest’] (N, Nc, 3) – SH coeffs for RGB colors. (Nc = 3, 8 or 15)
The text was updated successfully, but these errors were encountered:
3D Gaussian splatting is a novel 3D representation that enables fast scene reconstruction and real time photorealistic rendering. We are adding support for rendering 3DGS point clouds in Open3D.
Steps [filament renderer]:
Study the Open3D filament based visualizer
cpp/open3d/visualization/rendering/filament
and the filament material format.O3DVisualizer
to use the 3dgs material. Provide all required point cloud attributes to the GPU when 3DGS attributes are detected. See the foldercpp/open3d/visualization/rendering/
for the rendering implementation. For now, also create buffers for the intermediate data returned by the shaders.Tests:
Open3D Tensor point cloud representation:
pcd.point[‘positions’]
(N,3) – (x,y,z) for each splat.pcd.point[‘opacity’]
– (N,) opacitypcd.point[‘rot’]
(N, 4) - quaternion rotation of Gaussian.pcd.point[‘scale']
(N, 3) - x, y, z scales for Gaussian.pcd.point[‘f_dc’]
(N, 3) – DC components for RGB colors.pcd.point[‘f_rest’]
(N, Nc, 3) – SH coeffs for RGB colors. (Nc = 3, 8 or 15)The text was updated successfully, but these errors were encountered: