Your files
Host your own pointcloud files and view them in virtual reality using ImmersivePoints.
How to host your own pointcloud files
To view your pointcloud in VR, you need to host your binary file on a web server and pass its URL to the viewer. Here's how:
1 Prepare your pointcloud file
Export your pointcloud as a binary file in one of the supported formats (see file format specifications below).
2 Host your file
Upload your binary file to any web hosting service that supports CORS. Some options include:
- GitHub Pages - Free hosting for static files. Simply add your file to a repository and enable GitHub Pages.
- Amazon S3 - Create a public bucket or configure CORS for your bucket.
- Google Cloud Storage - Upload to a bucket with public access or CORS configured.
- Your own web server - Ensure CORS headers are set to allow requests from immersivepoints.com
Important: The hosting server must allow cross-origin requests (CORS) from immersivepoints.com for the viewer to load your file.
3 View in VR
Enter your hosted file URL below and we'll generate the viewer link for you:
File format specifications
All binary files must be in float32 format. ImmersivePoints supports two formats:
XYZI Format 4 values per point
Position with hue-based coloring.
| Field | Type | Description |
|---|---|---|
| X | float32 | Position forwards |
| Y | float32 | Position upwards |
| Z | float32 | Position left |
| Hue | float32 | Color hue (0.0 – 1.0) |
XYZRGB Format 6 values per point
Position with full RGB color control.
| Field | Type | Description |
|---|---|---|
| X | float32 | Position forwards |
| Y | float32 | Position upwards |
| Z | float32 | Position left |
| Red | float32 | Red channel (0.0 – 1.0) |
| Green | float32 | Green channel (0.0 – 1.0) |
| Blue | float32 | Blue channel (0.0 – 1.0) |
Bounding Boxes Coming Soon
Support for 3D bounding boxes is planned.
| Field | Type | Description |
|---|---|---|
| Center X | float32 | Center position forwards |
| Center Y | float32 | Center position upwards |
| Center Z | float32 | Center position left |
| Size X | float32 | Box width |
| Size Y | float32 | Box height |
| Size Z | float32 | Box depth |
| Rotation X | float32 | Rotation around X axis |
| Rotation Y | float32 | Rotation around Y axis |
| Rotation Z | float32 | Rotation around Z axis |
| Red | float32 | Red channel (0.0 – 1.0) |
| Green | float32 | Green channel (0.0 – 1.0) |
| Blue | float32 | Blue channel (0.0 – 1.0) |
| Opacity | float32 | Transparency (0.0 – 1.0) |
Advanced: URL Parameters
The viewer supports several URL parameters for different use cases:
Simple file URL Recommended
Pass a URL to your hosted binary file. The file extension determines the format.
oculus.html?name=https://example.com/mycloud.xyzi
Use .xyzi or .xyzrgb file extension to auto-detect format.
Inline Base64 Points No hosting required
Embed small pointclouds directly in the URL as base64-encoded data. Great for sharing without hosting.
oculus.html?base64=YOUR_BASE64_ENCODED_DATA
Encode your binary float32 data as base64. Works for XYZI format.
JSON Configuration Advanced
For complex scenes with multiple pointclouds, lines, bounding boxes, and 3D objects, use a base64-encoded JSON configuration.
oculus.html?jsonb64=BASE64_ENCODED_JSON
Example JSON structure:
{
"points": [
{
"source": "url",
"url": "https://example.com/cloud1.xyzi",
"type": "XYZI",
"pointSize": 0.04
},
{
"source": "base64",
"base64": "BASE64_DATA_HERE",
"type": "XYZRGB"
}
],
"lines": [
{
"source": "url",
"url": "https://example.com/lines.bin"
}
],
"bboxes": [
{
"source": "url",
"url": "https://example.com/boxes.bbox"
}
],
"objects": [
{
"source": "url",
"url": "https://example.com/model.glb",
"position": [1.0, 2.0, 3.0],
"rotation": [0.0, 0.0, 0.0],
"scale": [1.0, 1.0, 1.0]
}
]
}
Additional Options
| Parameter | Values | Description |
|---|---|---|
| mode | xyzi, xyzrgb | Specify format when using name parameter |
| showAxes | true, false | Show XYZ axis helper in the scene |
| autoRotate | true, false | Auto-rotate the camera around the scene |
Lines Format
Lines are defined as pairs of 3D points. Each line segment uses 6 float32 values:
| Field | Type | Description |
|---|---|---|
| X1, Y1, Z1 | float32 × 3 | Start point of the line |
| X2, Y2, Z2 | float32 × 3 | End point of the line |
Example export scripts
Need help exporting your pointcloud data? Check out these example notebooks: