{"id":31632790,"url":"https://github.com/j3soon/omni-3dgs-streaming","last_synced_at":"2026-03-07T06:02:31.372Z","repository":{"id":292358531,"uuid":"979166269","full_name":"j3soon/omni-3dgs-streaming","owner":"j3soon","description":"3D Gaussian Splatting (3DGS) streaming example for Omniverse","archived":false,"fork":false,"pushed_at":"2025-06-02T08:08:28.000Z","size":6386,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-06T23:12:41.065Z","etag":null,"topics":["3d","3d-gaussian-splatting","3d-reconstruction","3dgs","computer-graphics","gaussian-splatting","isaac-sim","nerfstudio","omniverse","omniverse-kit-extension","robotics"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/j3soon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-07T05:17:51.000Z","updated_at":"2025-09-20T17:38:42.000Z","dependencies_parsed_at":"2025-05-09T14:57:20.282Z","dependency_job_id":null,"html_url":"https://github.com/j3soon/omni-3dgs-streaming","commit_stats":null,"previous_names":["j3soon/omni-3dgs-streaming"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/j3soon/omni-3dgs-streaming","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j3soon%2Fomni-3dgs-streaming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j3soon%2Fomni-3dgs-streaming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j3soon%2Fomni-3dgs-streaming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j3soon%2Fomni-3dgs-streaming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/j3soon","download_url":"https://codeload.github.com/j3soon/omni-3dgs-streaming/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j3soon%2Fomni-3dgs-streaming/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30208801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T05:23:27.321Z","status":"ssl_error","status_checked_at":"2026-03-07T05:00:17.256Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","3d-gaussian-splatting","3d-reconstruction","3dgs","computer-graphics","gaussian-splatting","isaac-sim","nerfstudio","omniverse","omniverse-kit-extension","robotics"],"created_at":"2025-10-06T23:05:10.429Z","updated_at":"2026-03-07T06:02:31.356Z","avatar_url":"https://github.com/j3soon.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Omniverse 3D Gaussian Splatting Streaming Example\n\nJust a simple example using the non-official 3DGS extension ([j3soon/omni-3dgs-extension](https://github.com/j3soon/omni-3dgs-extension)) with [kit-app-template](https://github.com/NVIDIA-Omniverse/kit-app-template) and [web-viewer-sample](https://github.com/NVIDIA-Omniverse/web-viewer-sample) for web streaming.\n\n## Prerequisites\n\nWe assume you have already ran the [Embedded Web Viewer](https://docs.omniverse.nvidia.com/embedded-web-viewer/latest/index.html) example on your machine and confirm that it works.\n\nPreferably, you should have also ran the [Omniverse 3DGS Extension](https://github.com/j3soon/omni-3dgs-extension) to test the 3DGS renderer.\n\n## Instructions\n\n1. Clone the repo:\n\n   ```sh\n   git clone --recursive https://github.com/j3soon/omni-3dgs-streaming.git\n   cd omni-3dgs-streaming\n   ```\n\n2. Set up 3DGS extension.\n\n   Download sample 3DGS assets by following the instructions in the [3DGS extension repo](https://github.com/j3soon/omni-3dgs-extension?tab=readme-ov-file#setup). Specifically:\n\n   \u003e ```sh\n   \u003e cd omni-3dgs-extension\n   \u003e\n   \u003e wget https://github.com/j3soon/omni-3dgs-extension/releases/download/v0.0.2/assets.zip\n   \u003e unzip assets.zip\n   \u003e\n   \u003e # change the DATE_TIME to the name of the placeholder\n   \u003e DATE_TIME=2025-02-19_105311\n   \u003e cp -r ./assets/exports/poster/splatfacto/$DATE_TIME ./assets/exports/poster/splatfacto/DATE_TIME\n   \u003e DATE_TIME=2025-02-19_121606\n   \u003e cp -r ./assets/exports/poster/nerfacto/$DATE_TIME ./assets/exports/poster/nerfacto/DATE_TIME\n   \u003e\n   \u003e ls ./assets/exports/poster/splatfacto/DATE_TIME/splat/splat.ply\n   \u003e ls ./assets/exports/poster/nerfacto/DATE_TIME/tsdf/mesh.obj\n   \u003e ```\n\n3. Run the VanillaGS renderer:\n\n   ```sh\n   cd omni-3dgs-extension\n   xhost +local:docker\n   docker compose build\n   docker compose up\n   # in a new terminal\n   docker exec -it vanillags-renderer bash -ic \"python /src/main.py\"\n   ```\n\n   Wait for the renderer to start (seeing the `Gaussian Splatting renderer ready for requests...` message), and then run the following on host:\n\n   ```sh\n   sudo chown -R $(id -u):$(id -g) /tmp/omni-3dgs-extension\n   ```\n\n4. Build and run the Omniverse Kit app (backend):\n\n   ```sh\n   cd kit-app-template\n\n   # Link extension\n   ln -s \"${PWD}/../omni-3dgs-extension/extension/exts/omni.gsplat.viewport\" \"${PWD}/source/extensions/omni.gsplat.viewport\"\n\n   ./repo.sh build\n\n   mkdir -p _build/linux-x86_64/release/samples\n   # Link assets\n   ln -s \"${PWD}/../omni-3dgs-extension/assets\" \"${PWD}/_build/linux-x86_64/release/samples/gsplat_assets\"\n\n   # Install dependencies\n   sudo apt-get update \u0026\u0026 sudo apt-get install -y libglu1-mesa\n\n   # Run the app\n   ./repo.sh launch -- --no-window\n   # and press down to select `my_company.my_usd_viewer_streaming.kit` and press enter\n   ```\n\n5. Build and run the web viewer (frontend):\n\n   (Optional) If you want to run the web viewer on a different machine within the same local network, you can modify the `\"server\": \"127.0.0.1\"` line in the [web-viewer-sample/stream.config.json](web-viewer-sample/stream.config.json#L18) to the IP address of the machine running the Omniverse Kit app.\n\n   ```sh\n   cd web-viewer-sample\n   npm install\n   npm run dev -- --host\n   ```\n   \n   \u003e Or use docker if you don't want to install `npm` on host.\n   \u003e\n   \u003e ```sh\n   \u003e docker run --rm -it --network=host -v $PWD:/workspace node bash\n   \u003e cd /workspace\n   \u003e npm install\n   \u003e npm run dev -- --host\n   \u003e ```\n   \n   Open \u003chttp://localhost:5173/\u003e and connect to the viewer.\n\n   ![](./docs/media/web-streaming-screenshot.png)\n\n## Known Issues\n\nThe Replicator still reports some errors, which breaks the alpha blending feature, but I haven't have time to investigate them yet. The error message is:\n\n```\nKeyError: '/Render/PostProcess/SDGPipeline/Replicator_DistanceToCameraSDbuffPtr'\n```\n\nwhich could be observed by removing the `try-except` block in the [omni.gsplat.viewport/omni/gsplat/viewport/extension.py](./omni-3dgs-extension/extension/exts/omni.gsplat.viewport/omni/gsplat/viewport/extension.py#L374-L378).\n\n## Debugging\n\n```sh\ncd isaacsim-app-template\n./repo.sh build\n\nuv venv --python 3.10\nsource .venv/bin/activate\nuv pip install pyzmq\n\n./repo.sh launch -- --ext-folder /src/exts --enable omni.gsplat.viewport\n```\n\nEnable the `Script Editor` extension and run the following python code:\n\n```py\nfrom omni.gsplat.viewport import OmniGSplatViewportExtension\nOmniGSplatViewportExtension._instance.init_streaming()\n```\n\n## License\n\nTo ensure reproducibility, we have pinned specific versions of dependencies. The licenses, versions, and commit hashes of these dependencies are listed below:\n\n- [NVIDIA-Omniverse/kit-app-template](https://github.com/NVIDIA-Omniverse/kit-app-template) (at commit [fa73fe6](https://github.com/NVIDIA-Omniverse/kit-app-template/tree/fa73fe640e33f952ebdaebf23119c4c4d8fae169)) is released under the [NVIDIA Software License Agreement](https://github.com/NVIDIA-Omniverse/kit-app-template/blob/main/LICENSE).\n\n  This is basically Omniverse Kit (106.5), which is the Omniverse rendering and streaming backend. This version corresponds to the Kit version used in Isaac Sim 4.5.0.\n\n- (Unused) [Isaac Sim App Template](https://github.com/isaac-sim/isaacsim-app-template) (at commit [08187a4](https://github.com/isaac-sim/isaacsim-app-template/tree/08187a419862cf15e6758f699ab26046a2325c85)) is released under the [NVIDIA Software License Agreement](https://github.com/isaac-sim/isaacsim-app-template/blob/main/LICENSE).\n\n  This is basically Isaac Sim 4.5.0. But isn't used in the instructions above.\n\n- [NVIDIA-Omniverse/web-viewer-sample](https://github.com/NVIDIA-Omniverse/web-viewer-sample) (at commit [433062f](https://github.com/NVIDIA-Omniverse/web-viewer-sample/tree/433062f504e261bb9771359fe5c3831de368ddd9)) is released under the [NVIDIA Omniverse License Agreement](https://github.com/NVIDIA-Omniverse/web-viewer-sample/blob/main/LICENSE).\n\n  This is a sample app (v1.4.1) built with React along with Vite, which is the frontend for web streaming.\n\nFurther changes based on the packages above are released under the [Apache-2.0 License](LICENSE).\n\n## Acknowledgement\n\nThis project has been made possible through the support of [CGV Lab][cgvlab], [VMLab][vmlab], and [NVIDIA AI Technology Center (NVAITC)][nvaitc].\n\nSpecial thanks to [@tigerpaws01](https://github.com/tigerpaws01) for the initial implementation of the PyGame viewer.\n\nI would also like to thank the large-scale 3DGS Study Group members, [@Joshimello](https://github.com/Joshimello), [@Sunnyhong0326](https://github.com/Sunnyhong0326), and Ting-Yu Yan for discussions.\n\nFor a complete list of contributors to the code of this repository, please visit the [contributor list](https://github.com/j3soon/omni-3dgs-streaming/graphs/contributors).\n\n[cgvlab]: https://cgv.cs.nthu.edu.tw\n[vmlab]: https://vmlab-nthu.notion.site/NTHU-VMLab-143b8d611ddc8071ab0ede97aacfc403?pvs=4\n[nvaitc]: https://github.com/NVAITC\n\nDisclaimer: this is not an official NVIDIA product.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fj3soon%2Fomni-3dgs-streaming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fj3soon%2Fomni-3dgs-streaming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fj3soon%2Fomni-3dgs-streaming/lists"}