Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3D Gaussian splatting IO #7153

Open
ssheorey opened this issue Jan 30, 2025 · 0 comments
Open

3D Gaussian splatting IO #7153

ssheorey opened this issue Jan 30, 2025 · 0 comments
Milestone

Comments

@ssheorey
Copy link
Member

ssheorey commented Jan 30, 2025

3D Gaussian splatting is a novel 3D representation that enables fast scene reconstruction and real time photorealistic rendering. We are adding support for 3DGS in Open3D. As part of that, we want to add the ability to read and write 3DGS to files. 3DGS files are commonly stored as [ply format](https://paulbourke.net/dataformats/ply/) files. An alternate more compact representation (without support for view dependent effects) is the [.splat](https://github.com/antimatter15/splat) file format.

Sub-tasks:

Study Open3D point cloud IO code for reading / writing ply files. 3DGS is a point cloud with additional properties.

  1. Add code to support reading / writing ply files with additional vertex properties. Add C++ unit test with very small toy data.
  2. Add code to support reading / writing .splat files. Add C++ unit test with very small toy data.
  3. Convert a 3DGS point cloud to a normal dense point cloud by sampling multiple points with colors from each Gaussian. See this reference implementation. Add C++ unit test with very small toy data.
  4. Add documentation - tutorial Python notebook showing reading a 3DGS, converting it to a point cloud, visualizing it, converting to a mesh, adding albedo texture using the calibrated images and saving the point cloud and mesh. Also crop the original 3DGS point cloud and save it to disk.

Test: Open each of these files and save them back. Open the saved files in the reference viewer and ensure that the original and saved files look indistinguishable.

Reference:

3DGS 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 = 4, 9 or 16)
@ssheorey ssheorey converted this from a draft issue Jan 30, 2025
@ssheorey ssheorey added this to the v0.20 milestone Jan 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Backlog
Development

No branches or pull requests

1 participant