# \[Ann\] MeshCat.jl for 3D visualization in the browser

**URL:** <https://discourse.julialang.org/t/ann-meshcat-jl-for-3d-visualization-in-the-browser/9521>\
**Category:** Community\
**Tags:** package, announcement, visualization\
**Created:** [March 5, 2018, 10:01pm UTC](https://discourse.julialang.org/t/ann-meshcat-jl-for-3d-visualization-in-the-browser/9521 "2018-03-05T22:01:18Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)\
**Post date:** [March 5, 2018, 10:01pm UTC](https://discourse.julialang.org/t/ann-meshcat-jl-for-3d-visualization-in-the-browser/9521/1 "2018-03-05T22:01:18Z")

</div>

I’m happy to announce the release of `MeshCat.jl` v0.0.1: [https://github.com/rdeits/MeshCat.jl](https://github.com/rdeits/MeshCat.jl)

MeshCat.jl is a relatively small package that tries to make it easy to visualize a tree of 3D objects and transforms. All of the actual 3D rendering happens in the browser, using the excellent [https://threejs.org/](https://threejs.org/) , but I’ve tried to put a nice Julian interface on top of that.

MeshCat.jl uses:

- [GeometryTypes.jl](https://github.com/JuliaGeometry/GeometryTypes.jl) to represent geometries
- [CoordinateTransformations.jl](https://github.com/FugroRoames/CoordinateTransformations.jl/) to represent transformations
- [ZMQ.jl](https://github.com/JuliaInterop/ZMQ.jl), [MsgPack.jl](https://github.com/JuliaIO/MsgPack.jl) and [WebSockets.jl](https://github.com/JuliaWeb/WebSockets.jl) for messaging

Multiple browser windows can show the same MeshCat scene, and multiple clients can draw into the same window. There is also a parallel Python implementation at [https://github.com/rdeits/meshcat-python](https://github.com/rdeits/meshcat-python) and Julia and Python clients can both draw into the same window.

MeshCat is designed as a 3D robotics visualizer, but I’m hoping it will be generally useful. For robotics-specific extensions to MeshCat (including parsing URDF files), check out [https://github.com/rdeits/MeshCatMechanisms.jl](https://github.com/rdeits/MeshCatMechanisms.jl)

I’m intending for MeshCat.jl to eventually replace [DrakeVisualizer.jl](https://github.com/rdeits/DrakeVisualizer.jl) which has similar features but requires a substantial binary dependency (MeshCat essentially replaces all the binary dependencies of DrakeVisualizer with the browser you already have).

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [March 5, 2018, 10:08pm UTC](https://discourse.julialang.org/t/ann-meshcat-jl-for-3d-visualization-in-the-browser/9521/2 "2018-03-05T22:08:46Z")

</div>

Clicked for a robo picture. Wasn’t disappointed.

---

<div class="post-metadata">

**Author:** ![davibarreira](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davibarreira/32/20270_2.png) [@davibarreira](https://discourse.julialang.org/u/davibarreira)\
**Post date:** [April 10, 2024, 9:05pm UTC](https://discourse.julialang.org/t/ann-meshcat-jl-for-3d-visualization-in-the-browser/9521/3 "2024-04-10T21:05:06Z")

</div>

@rdeits , is there a way to use curves such as Bezier or NURBS? I see that it is possible natively within three.js. I was wondering if it was possible within MeshCat.jl.

BTW, amazing package! I’m having a lot of fun playing with it. By far the easiest way of doing 3D stuff.
