Need help with MeshCat.jl?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

rdeits
171 Stars 34 Forks MIT License 507 Commits 26 Opened issues

Description

WebGL-based 3D visualizer in Julia

Services available

!
?

Need anything else?

Contributors list

# 101,675
The Jul...
julia-l...
Sublime...
sed
297 commits
# 111,818
The Jul...
robotic...
multipr...
Jupyter...
47 commits
# 57,923
The Jul...
webrtc
bittorr...
webtorr...
6 commits
# 622,802
Jupyter...
julia-l...
3d-grap...
TeX
5 commits
# 609,008
The Jul...
robotic...
kinemat...
Jupyter...
3 commits
# 435,070
C
Robotic...
Shell
Jupyter...
3 commits
# 88,258
The Jul...
Linux
React
juliala...
2 commits
# 92,514
React
repl
resolve...
graphql...
2 commits
# 452,916
The Jul...
katex
website...
julia-l...
1 commit
# 552,220
Jupyter...
julia-l...
3d-grap...
gnuplot
1 commit
# 267,329
julia-l...
markov-...
juliala...
evoluti...
1 commit
# 32,082
Windows
cpluspl...
Jupyter...
julia-l...
1 commit
# 492,005
The Jul...
partial...
Shell
ordinar...
1 commit

MeshCat.jl: Julia bindings to the MeshCat WebGL viewer

Build Status codecov.io

MeshCat is a remotely-controllable 3D viewer, built on top of three.js. The viewer contains a tree of objects and transformations (i.e. a scene graph) and allows those objects and transformations to be added and manipulated with simple commands. This makes it easy to create 3D visualizations of geometries, mechanisms, and robots. MeshCat.jl runs on macOS, Linux, and Windows.

The MeshCat viewer runs entirely in the browser, with no external dependencies. All files are served locally, so no internet connection is required. Communication between the browser and your Julia code is managed by HTTP.jl. That means that MeshCat should work:

As much as possible, MeshCat.jl tries to use existing implementations of its fundamental types. In particular, we use:

That means that MeshCat should play well with other tools in the JuliaGeometry ecosystem like MeshIO.jl, Meshing.jl, etc.

Demos

Basic Usage

For detailed examples of usage, check out demo.ipynb.

Animation

To learn about the animation system (introduced in MeshCat.jl v0.2.0), see animation.ipynb.

Related Projects

MeshCat.jl is a successor to DrakeVisualizer.jl, and the interface is quite similar (with the exception that we use

setobject!
instead of
setgeometry!
). The primary difference is that DrakeVisualizer required Director, LCM, and VTK, all of which could be difficult to install, while MeshCat just needs a web browser. MeshCat also has better support for materials, textures, point clouds, and complex meshes.

You may also want to check out:

Examples

Create a visualizer and open it

using MeshCat
vis = Visualizer()
open(vis)

In an IJulia/Jupyter notebook, you can also do:

IJuliaCell(vis)

Cube

using GeometryTypes
using CoordinateTransformations

setobject!(vis, HyperRectangle(Vec(0., 0, 0), Vec(1., 1, 1))) settransform!(vis, Translation(-0.5, -0.5, 0))

demo-cube

Point Clouds

using ColorTypes
verts = rand(Point3f0, 100_000)
colors = [RGB(p...) for p in verts]
setobject!(vis, PointCloud(verts, colors))

demo-points

Contours

# Visualize a mesh from the level set of a function
using Meshing
f = x -> sum(sin, 5 * x)
sdf = SignedDistanceField(f, HyperRectangle(Vec(-1, -1, -1), Vec(2, 2, 2)))
mesh = HomogenousMesh(sdf, MarchingTetrahedra())
setobject!(vis, mesh,
           MeshPhongMaterial(color=RGBA{Float32}(1, 0, 0, 0.5)))

demo-contour

Polyhedra

See here for a notebook with the example.

# Visualize the permutahedron of order 4 using Polyhedra.jl
using Combinatorics, Polyhedra
v = vrep(collect(permutations([0, 1, 2, 3])))
using CDDLib
p4 = polyhedron(v, CDDLib.Library())

Project that polyhedron down to 3 dimensions for visualization

v1 = [1, -1, 0, 0] v2 = [1, 1, -2, 0] v3 = [1, 1, 1, -3] p3 = project(p4, [v1 v2 v3])

Show the result

setobject!(vis, Polyhedra.Mesh(p3))

polyhedron

Mechanisms

Using https://github.com/rdeits/MeshCatMechanisms.jl

demo-valkyrie

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.