|
1 | 1 | # ImmersivePoints |
2 | 2 |
|
3 | | -## What is it? |
4 | | -ImmersivePoints is a web-application for virtual reality devices to explore 3D data in the most natural way possible. <br> |
5 | | -To view the data you need to either attach a virtual reality device attached to your PC, or a stand-alone one, such as the oculus quest. |
6 | | - |
7 | | -## Explore examples |
8 | | -Take a look at the following already uploaded examples: |
9 | | -* [A frame from the AEV dataset](https://immersivepoints.com/oculus.html?name=e2652aab-4ace-4a09-86f4-374b23cb677b.xyzi) |
10 | | -* [A frame from the AEV dataset with semantic information](https://immersivepoints.com/oculus.html?name=816ca9a5-1eec-4e23-a34e-f409dbed1ff0.xyzi) |
11 | | -* [A brain with some information of a clustering algorithm](https://immersivepoints.com/oculus.html?name=77b04781-5d7c-445f-9e6a-65956758d644.xyzi) |
12 | | -* [The notre dame](https://immersivepoints.com/oculus.html?name=d6263c4a-7121-432f-8712-b0de530a78ff.xyzrgb) |
13 | | - |
14 | | -## Upload your own |
15 | | -Want to see your own pointcloud in virtual reality? Upload your binary file [here](https://immersivepoints.com/upload.html)! |
16 | | -The binary file is expected to be in float32, and consist of XYZH values. |
17 | | -X, Y, and Z are floating point numbers in any range, but it's wise to position them around the point of origin of the virtual reality environment. |
18 | | -The H-value signifies the hue of that point, which should be between 0.0 and 1.0 according to [this specification](https://threejs.org/docs/#api/en/math/Color.setHSL>this specification). |
19 | | -Note that saturation and lightness are currently always set to 1.0. |
20 | | - |
21 | | -## Export examples |
22 | | -Want to see some examples on how to export pointclouds? Take a look at: |
23 | | -* [this subsampling example](https://github.com/rmeertens/ImmersivePoints/blob/master/export_subsample.ipynb) |
24 | | -* [this example to export a CSV file](https://github.com/rmeertens/ImmersivePoints/blob/master/export_csv.ipynb) |
25 | | -* [this export of a PLY file](https://github.com/rmeertens/ImmersivePoints/blob/master/export_ply.ipynb) |
26 | | -* [this export of self driving car data](https://github.com/rmeertens/ImmersivePoints/blob/master/export_AEV_data.ipynb) |
27 | | - |
28 | | -## All rights reserved. |
| 3 | +**Explore point clouds in 3D, including in VR and in Python** |
| 4 | + |
| 5 | +ImmersivePoints is a Python package and web application that lets you visualize 3D point clouds in VR and Jupyter notebooks. Whether you're working with LiDAR data, 3D scans, ML embeddings, or any spatial data, ImmersivePoints makes it easy to see your data in an immersive, natural way. |
| 6 | + |
| 7 | +[](https://opensource.org/licenses/MIT) |
| 8 | +[](https://www.python.org/downloads/) |
| 9 | + |
| 10 | +--- |
| 11 | + |
| 12 | +## Features |
| 13 | + |
| 14 | +- **🎮 VR Visualization**: View point clouds in virtual reality (Oculus Quest, PC VR headsets) |
| 15 | +- **📊 Jupyter Integration**: Render point clouds inline in notebooks with a single function call |
| 16 | +- **🎨 Flexible Formats**: Support for XYZ, XYZI (with hue coloring), and XYZRGB point clouds |
| 17 | +- **⚡ Fast**: Efficient binary format and Three.js renderer for smooth performance |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +## Gallery |
| 22 | + |
| 23 | +<table> |
| 24 | + <tr> |
| 25 | + <td align="center"> |
| 26 | + <img src="images/astyx_lidar_radar.gif" width="250"/><br/> |
| 27 | + <b>Astyx LiDAR + Radar</b><br/> |
| 28 | + Automotive sensor fusion data |
| 29 | + </td> |
| 30 | + <td align="center"> |
| 31 | + <img src="images/pandaset_rgb.gif" width="250"/><br/> |
| 32 | + <b>PandaSet RGB</b><br/> |
| 33 | + Full-color urban scene |
| 34 | + </td> |
| 35 | + <td align="center"> |
| 36 | + <img src="images/pandaset_semantic.gif" width="250"/><br/> |
| 37 | + <b>Semantic Segmentation</b><br/> |
| 38 | + Labeled autonomous driving data |
| 39 | + </td> |
| 40 | + </tr> |
| 41 | +</table> |
| 42 | + |
| 43 | +[**→ View more examples on immersivepoints.com**](https://immersivepoints.com/) |
| 44 | + |
| 45 | +## Examples |
| 46 | + |
| 47 | +The [`examples/`](examples/) directory contains comprehensive tutorials: |
| 48 | + |
| 49 | +### 📚 Tutorial Notebooks |
| 50 | +- **[`inline_visualization.ipynb`](examples/inline_visualization.ipynb)** - Complete guide to Jupyter rendering |
| 51 | +- **[`export_subsample.ipynb`](examples/export_subsample.ipynb)** - Subsample large point clouds |
| 52 | +- **[`export_csv.ipynb`](examples/export_csv.ipynb)** - Load and export CSV data |
| 53 | +- **[`export_ply.ipynb`](examples/export_ply.ipynb)** - Work with PLY 3D scan files |
| 54 | +- **[`export_embeddings.ipynb`](examples/export_embeddings.ipynb)** - Visualize neural network embeddings |
| 55 | + |
| 56 | +### 🚗 Autonomous Driving Examples |
| 57 | +- **[`export_AEV_data.ipynb`](examples/export_AEV_data.ipynb)** - AEV self-driving car dataset |
| 58 | +- **[`Astyx dataset lidar and radar.ipynb`](examples/Astyx%20dataset%20lidar%20and%20radar.ipynb)** - Sensor fusion visualization |
| 59 | +- **[`Export PandaSet.ipynb`](examples/Export%20PandaSet.ipynb)** - PandaSet with semantic labels |
| 60 | + |
| 61 | +--- |
| 62 | + |
| 63 | +## Supported Data Formats |
| 64 | + |
| 65 | +ImmersivePoints supports three point cloud formats: |
| 66 | + |
| 67 | +| Format | Columns | Description | |
| 68 | +|--------|---------|-------------| |
| 69 | +| **XYZ** | 3 | `[x, y, z]` - Positions only (auto-colored) | |
| 70 | +| **XYZI** | 4 | `[x, y, z, hue]` - Positions + hue (0.0-1.0) | |
| 71 | +| **XYZRGB** | 6 | `[x, y, z, r, g, b]` - Positions + RGB (0.0-1.0) | |
| 72 | + |
| 73 | +All coordinates should be `float32` numpy arrays. |
| 74 | + |
| 75 | + |
| 76 | +## Live Examples |
| 77 | + |
| 78 | +Explore pre-loaded datasets: |
| 79 | + |
| 80 | +- [Astyx LiDAR + Radar Fusion](https://immersivepoints.com/oculus.html?jsonb64=eyJwb2ludHMiOiBbeyJzb3VyY2UiOiAidXJsIiwgInVybCI6ICJodHRwczovL3BvaW50Y2xvdWR2aXN1YWxpemF0aW9uLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tL2FzdHl4L2FzdHl4MDAwMDAwLnR4dC54eXpyZ2IiLCAidHlwZSI6ICJYWVpSR0IifV0sICJiYm94ZXMiOiBbeyJzb3VyY2UiOiAidXJsIiwgInVybCI6ICJodHRwczovL3BvaW50Y2xvdWR2aXN1YWxpemF0aW9uLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tL2FzdHl4L2FzdHl4YmJveDAwMDAwMC50eHQuYmJveCJ9XX0=) |
| 81 | +- [PandaSet RGB Point Cloud](https://immersivepoints.com/oculus.html?jsonb64=eyJwb2ludHMiOiBbeyJzb3VyY2UiOiAidXJsIiwgInVybCI6ICJodHRwczovL3BvaW50Y2xvdWR2aXN1YWxpemF0aW9uLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tL3BhbmRhLWV4cG9ydC8wMjRfeHl6cmdiLm5weSIsICJ0eXBlIjogIlhZWlJHQiJ9XX0=) |
| 82 | +- [PandaSet Semantic Segmentation](https://immersivepoints.com/oculus.html?jsonb64=eyJwb2ludHMiOiBbeyJzb3VyY2UiOiAidXJsIiwgInVybCI6ICJodHRwczovL3BvaW50Y2xvdWR2aXN1YWxpemF0aW9uLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tL3BhbmRhLWV4cG9ydC8wMjRfeHl6aS5ucHkiLCAidHlwZSI6ICJYWVpJIn1dLCAiYmJveGVzIjogW3sic291cmNlIjogInVybCIsICJ1cmwiOiAiaHR0cHM6Ly9wb2ludGNsb3VkdmlzdWFsaXphdGlvbi5zMy5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbS9wYW5kYS1leHBvcnQvMDI0X2Jib3gubnB5In1dfQ==) |
| 83 | +- [AEV Autonomous Driving](https://immersivepoints.com/oculus.html?name=e2652aab-4ace-4a09-86f4-374b23cb677b.xyzi) |
| 84 | +- [Notre Dame 3D Scan](https://immersivepoints.com/oculus.html?name=d6263c4a-7121-432f-8712-b0de530a78ff.xyzrgb) |
| 85 | +- [Brain Clustering Visualization](https://immersivepoints.com/oculus.html?name=77b04781-5d7c-445f-9e6a-65956758d644.xyzi) |
| 86 | + |
| 87 | +--- |
| 88 | + |
| 89 | +## Documentation |
| 90 | + |
| 91 | +For detailed documentation, see: (https://immersivepoints.com/)** - Live demos and upload tool |
| 92 | + |
| 93 | +--- |
| 94 | + |
| 95 | +## VR Headset Support |
| 96 | + |
| 97 | +ImmersivePoints works with: |
| 98 | +- **Oculus Quest 1/2/3** (standalone) |
| 99 | +- **Meta Quest Pro** |
| 100 | +- **PC VR headsets** (Valve Index, HTC Vive, Oculus Rift, etc.) |
| 101 | +- **Any WebXR-compatible browser** |
| 102 | + |
| 103 | +--- |
| 104 | + |
| 105 | +## About the Creator |
| 106 | + |
| 107 | +**Roland Meertens** is a robotics engineer and machine learning researcher with a passion for making data exploration more intuitive and accessible. |
| 108 | + |
| 109 | +The story of ImmersivePoints began ~10 years ago when Roland was working on clustering algorithms for 3D brain data. Existing visualization tools were slow and uninformative, so he learned JavaScript to build better 3D visualizations. When Google launched Cardboard, he added VR support. Years later, when the Oculus Quest made untethered VR accessible, he finally realized his vision: walking freely through data in virtual reality. |
| 110 | + |
| 111 | +**Website**: [pinchofintelligence.com](https://www.pinchofintelligence.com/) |
| 112 | + |
| 113 | +--- |
| 114 | + |
| 115 | +## License |
| 116 | + |
| 117 | +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
| 118 | + |
| 119 | +--- |
| 120 | + |
| 121 | +## Citation |
| 122 | + |
| 123 | +If you use ImmersivePoints in your research, please cite: |
| 124 | + |
| 125 | +```bibtex |
| 126 | +@software{immersivepoints2024, |
| 127 | + author = {Meertens, Roland}, |
| 128 | + title = {ImmersivePoints: 3D Point Cloud Visualization in VR}, |
| 129 | + year = {2024}, |
| 130 | + url = {https://github.com/rmeertens/ImmersivePoints} |
| 131 | +} |
| 132 | +``` |
0 commit comments