{
  "markdown": "# 3D Visualizer\n\nView, compare and inspect point clouds, meshes, gaussian splats, depth maps and\ndisparity images in your editor or browser — with Rust and WebAssembly doing the\nheavy decoding, so files with millions of points open in seconds.\n\n![Depth image converted to a point cloud](https://github.com/kleinicke/ply-visualizer/releases/download/v1.0.0/disp2pc.gif)\n\n## Highlights\n\n- Open large point clouds quickly, including files with millions of points\n- Decode the demanding formats in Rust/WebAssembly — LAS, LAZ, E57 and TIFF —\n  alongside Rust geometry kernels for camera models and scan registration\n- Compare multiple point clouds in one view and toggle them independently\n- Convert depth and disparity images into point clouds\n- Render gaussian splat reconstructions as sorted splats or center point clouds\n- Inspect meshes as surfaces, wireframes, points and normals\n- Use Eye-Dome Lighting and brightness correction for clearer uncolored geometry\n- Measure distances and adjust camera, rotation center and view parameters\n- Use the shared viewer on the [website](https://3d.f-kleinicke.de)\n- Try the local\n  [Python package and command-line viewer](packages/python/README.md) for 3D\n  files, NumPy/PyTorch arrays and inline local notebooks\n  (`uv add 3d-visualizer`)\n- Connect AI agents through the [local MCP server](packages/python/MCP.md) to\n  open scenes, control the camera and inspect rendered screenshots\n\n## Supported formats\n\n| Type                   | Formats                                                                                        |\n| ---------------------- | ---------------------------------------------------------------------------------------------- |\n| Point clouds           | PLY, XYZ, XYZN, XYZRGB, PCD, PTS, NPY, LAS, LAZ, E57, KITTI BIN, Stonex X3A/X3R (experimental) |\n| Meshes                 | PLY, OBJ, STL, OFF, GLTF, GLB, FBX, DAE (Collada), 3DS                                         |\n| Gaussian splats        | 3DGS PLY, SPZ, SPLAT, KSPLAT, SOG                                                              |\n| Depth/disparity images | TIFF, PNG, PFM, NPY, NPZ                                                                       |\n| 3D Body Poses          | JSON pose data (experimental)                                                                  |\n| Camera Profiles        | JSON pose data (experimental)                                                                  |\n\nModel animation playback and remote URL loading are supported; see\n[model details](docs/models-and-animations.md) and\n[remote files](docs/remote-files.md).\n\nBecause `.bin` and `.json` are generic extensions, neither is opened with the 3D\nVisualizer by default. For KITTI BIN, use **Open With...** or right-click and\nchoose **Open with 3D Visualizer**. For a supported JSON pose, right-click and\nchoose **Load JSON as 3D Pose**.\n\n## Features\n\n### Depth and Disparity to Point Cloud\n\nConvert depth or disparity images into point clouds. Projection settings include\n`fx`, `fy`, `cx`, `cy`, camera distortion models, mono depth scale and bias, PNG\nint16 scale and disparity offset.\n\n### Eye-Dome Lighting\n\nUse Eye-Dome Lighting to improve depth perception, especially for uncolored\npoint clouds.\n\n![Eye-Dome Lighting](https://github.com/kleinicke/ply-visualizer/releases/download/v1.0.0/EyeDome.gif)\n\n### Multiple Point Clouds\n\nLoad multiple point clouds into the same view, toggle them independently and\nswitch between them with Shift-click.\n\n![Multiple point clouds](https://github.com/kleinicke/ply-visualizer/releases/download/v0.0.14/load2.gif)\n\n### Mesh Inspection\n\nInspect mesh files with controls for surface, wireframe, points and normals.\nThis is useful when checking geometry, topology or exported reconstruction\nresults without leaving the editor.\n\n### Gaussian Splatting\n\nOpen 3D Gaussian Splatting reconstructions (3DGS PLY, SPZ, SPLAT, KSPLAT, SOG)\nand render them as real sorted splats via [Spark](https://sparkjs.dev), or as a\npoint cloud of the gaussian centers with colors derived from the\nspherical-harmonics coefficients. Switch per file with the **✨ Splats** button\nin the Files panel. Measurement and picking keep working on the gaussian centers\nin splat mode. Oversized background gaussians can be reduced with the\nlogarithmic **Max splat size** control, while coloring center points by the\n`opacity` scalar field in Points mode helps with spotting floaters.\n\n### Point Cloud Attributes\n\nPoint cloud files can include positions, RGB colors, normals and scalar fields.\nThe viewer uses positions for geometry, original RGB values when available,\nnormals for inspection, and intensity/reflectivity fields for optional scalar\ncoloring. The recognized property names are `x/y/z`, `red/green/blue`,\n`nx/ny/nz` and `intensity`/`reflectivity`/`reflectance`/`remission`. Any other\nnumeric per-vertex PLY property (e.g. `confidence`, `error`, `curvature`) also\nappears in the Color dropdown for Viridis or grayscale colormap coloring.\nLAS/LAZ attributes such as classification, returns, scan angle and GPS time are\nexposed through the same scalar-field color controls. E57 containers load each\nscan as a separate, independently visible entry.\n\n### Distance Measurement Tools and Camera Manipulation\n\nBuild multiple measurement paths with **Shift-double-click**. See control\nsettings for options.\n\n### Camera Recording\n\nCreate smooth camera paths from keyframes and export them as configurable video\nrecordings.\n\n### Navigation\n\n**Double-click** a point to change the rotation center. This allows for easy\nnavigation using a mouse or a trackpad. You can also manually enter the camera\nposition, rotation center and viewing angle.\n\n### Performance-Aware Rendering\n\nThe viewer shows the current frame rate. When the point cloud is not moving, no\nmore frames are generated, which helps reduce power usage.\n\n## NPY file structure options\n\n- As a depth image: `[X,Y]`\n- As a point cloud: `[...,3]` with the three values `X,Y,Z`\n\n## Feature requests and issues\n\nIf you have a workflow that would benefit from new features or file formats,\nplease open an issue on the\n[GitHub repository](https://github.com/kleinicke/ply-visualizer/issues). Example\nfiles are especially helpful when adding support for new formats.\n\n## Roadmap\n\n- Add support for more file formats\n- Improve dataset support with example images from Middlebury stereo and ETH3D\n- Use calibration files next to depth images automatically when available\n  (example files needed)\n- Accept 3d body pose files (example files needed)\n\n## Links\n\n- **VS Code Marketplace:**\n  [Install extension](https://marketplace.visualstudio.com/items?itemName=kleinicke.ply-visualizer)\n- **Open VSX:**\n  [Install extension](https://open-vsx.org/extension/kleinicke/ply-visualizer)\n- **JetBrains:** [Signed preview and installation](jetbrains/README.md)\n- **Website:** [3d.f-kleinicke.de](https://3d.f-kleinicke.de/)\n- **Documentation:** [User guides and MCP reference](docs/README.md)\n- **Standalone app:** [Tauri desktop preview](apps/desktop/README.md)\n- **PyPI (Python and CLI):**\n  [3d-visualizer](https://pypi.org/project/3d-visualizer/)\n- **MCP:** Supported — [Agent setup and usage](packages/python/MCP.md)\n- **More platforms:** Coming soon\n- **Blog:** Coming soon\n- **Videos:** Coming soon\n",
  "bytes": 7289,
  "sha": "0bc75d7a8ca1555ce4651058ed5684de12afe76345811ac0ff049531e6dc9f0b",
  "repo_slug": "kleinicke/ply-visualizer",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_kleinicke_3d_visualizer_cee32666/readme"
}