# Which package to use for 3d interactive graphics of complex geometries

**URL:** <https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667>\
**Category:** New to Julia\
**Tags:** package, plotting\
**Created:** [August 27, 2024, 2:34pm UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667 "2024-08-27T14:34:07Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![goulas](https://avatars.discourse-cdn.com/v4/letter/g/439d5e/32.png) [@goulas](https://discourse.julialang.org/u/goulas)\
**Post date:** [August 27, 2024, 2:34pm UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/1 "2024-08-27T14:34:07Z")

</div>

Hello,  
I would like to use Julia, among others, for 3d graphic interactive display of complex geometries. More specifically I want to display High Energy Physics detectors. I have used ThreeJS in the past which was fast and efficient. I have also seen that there is also a package [ThreeJS.jl](https://www.juliapackages.com/p/threejs) available but probably not supported any more by Julia.  
Can anyone suggest the best package to use for this purpose?

---

<div class="post-metadata">

**Author:** ![asinghvi17](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asinghvi17/32/8272_2.png) [@asinghvi17](https://discourse.julialang.org/u/asinghvi17)\
**Post date:** [August 27, 2024, 5:25pm UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/2 "2024-08-27T17:25:18Z")

</div>

People have used [Makie.jl](https://docs.makie.org) for this before, and Makie can display in the browser (via Three.js, actually :D) via its WGLMakie backend.

---

<div class="post-metadata">

**Author:** ![goulas](https://avatars.discourse-cdn.com/v4/letter/g/439d5e/32.png) [@goulas](https://discourse.julialang.org/u/goulas)\
**Post date:** [August 28, 2024, 9:15am UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/3 "2024-08-28T09:15:37Z")

</div>

Thank you Anshul,  
I will use Makie then  
Cheers,  
ilias

---

<div class="post-metadata">

**Author:** ![sdanisch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdanisch/32/1406_2.png) [@sdanisch](https://discourse.julialang.org/u/sdanisch)\
**Post date:** [August 28, 2024, 9:58am UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/4 "2024-08-28T09:58:30Z")

</div>

@tamasgal was pretty successful in using Makie for visualizing neutrino events:

> **[Tamas Gal / RainbowAlga.jl · GitLab](https://git.km3net.de/tgal/RainbowAlga.jl)**
>
> GitLab Enterprise Edition

The discussion is all I can find for some background: [Makie as a framework for an interactive 3D event display · MakieOrg/Makie.jl · Discussion #2386 · GitHub](https://github.com/MakieOrg/Makie.jl/discussions/2386)

 ![image](https://global.discourse-cdn.com/julialang/original/3X/9/8/98017f0e1118d392e263e8f1c7e5ed7fb746dabc.jpeg)

---

<div class="post-metadata">

**Author:** ![goulas](https://avatars.discourse-cdn.com/v4/letter/g/439d5e/32.png) [@goulas](https://discourse.julialang.org/u/goulas)\
**Post date:** [August 28, 2024, 10:25am UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/5 "2024-08-28T10:25:14Z")

</div>

Sure, I had seen the presentation I could not recall the package used for this purpose. Thank you.  
I believe I have enough elements to start working.  
Cheers

---

<div class="post-metadata">

**Author:** ![asinghvi17](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asinghvi17/32/8272_2.png) [@asinghvi17](https://discourse.julialang.org/u/asinghvi17)\
**Post date:** [August 28, 2024, 6:25pm UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/6 "2024-08-28T18:25:31Z")

</div>

Would love to see what you come up with! (If it’s not sensitive / classified 😃 )

---

<div class="post-metadata">

**Author:** ![mike.ingold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mike.ingold/32/203749_2.png) [@mike.ingold](https://discourse.julialang.org/u/mike.ingold)\
**Post date:** [August 28, 2024, 7:20pm UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/7 "2024-08-28T19:20:07Z")

</div>

Depending on what exactly you’re trying to accomplish, maybe consider using Meshes.jl to model geometries, which has built-in extensions for visualizing them with interative Makie.jl tools.

---

<div class="post-metadata">

**Author:** ![asinghvi17](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asinghvi17/32/8272_2.png) [@asinghvi17](https://discourse.julialang.org/u/asinghvi17)\
**Post date:** [August 28, 2024, 9:14pm UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/8 "2024-08-28T21:14:41Z")

</div>

Just be warned that `Meshes.viz` isn’t guaranteed to work well with Observables (though it is great for single use plotting). Meshes.jl geometry tools are pretty good though!

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [August 29, 2024, 12:20am UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/9 "2024-08-29T00:20:26Z")

</div>

That is not true. All `Meshes.viz` options should work well with Observables.jl

If an option is not working, it is a bug.

---

<div class="post-metadata">

**Author:** ![goulas](https://avatars.discourse-cdn.com/v4/letter/g/439d5e/32.png) [@goulas](https://discourse.julialang.org/u/goulas)\
**Post date:** [August 29, 2024, 7:39am UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/10 "2024-08-29T07:39:54Z")

</div>

Thank you for the suggestion Mike.  
Maybe it is the best solution to use the Meshes.jl to define the volumes and that can be then visualized by Makie.jl tools or as they are defined: backends. I imagine this includes also WGLMakie. It is not very clear for me yet how to use Makie backend but I guess something like “using WGLMakie” or “using CairoMakie” etc

---

<div class="post-metadata">

**Author:** ![tamasgal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamasgal/32/27946_2.png) [@tamasgal](https://discourse.julialang.org/u/tamasgal)\
**Post date:** [August 29, 2024, 8:02pm UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/11 "2024-08-29T20:02:30Z")

</div>

I can fully recommend GLMakie.jl with GeometryBasics.jl

As @sdanisch already mentioned, I successfully created a fully interactive application to display neutrino events in the KM3NeT detector in an interactive way including full real-time control from the Julia REPL. Makie has an extremely mature toolset to make all this possible and it’s running very will (hundreds of thousands of objects with \>30FPS).

---

<div class="post-metadata">

**Author:** ![tamasgal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamasgal/32/27946_2.png) [@tamasgal](https://discourse.julialang.org/u/tamasgal)\
**Post date:** [September 9, 2024, 11:36am UTC](https://discourse.julialang.org/t/which-package-to-use-for-3d-interactive-graphics-of-complex-geometries/118667/12 "2024-09-09T11:36:09Z")

</div>

I just realised I did not post a link to the repository of my 3D display. In case you need some inspiration:

> **[Tamas Gal / RainbowAlga.jl · GitLab](https://git.km3net.de/tgal/RainbowAlga.jl)**
>
> GitLab Enterprise Edition
