[](https://github.com/scijava/scijava-java3d/actions/workflows/build.yml)
# SciJava Java 3D
This project is a wrapper around Java 3D which adds back needed
JogAmp dependencies Gluegen and JOGL.
The reason these dependencies are missing by default when depending on
java3d-core from the pom-scijava BOM is because they normally bring in the
"main" artifacts (gluegen-rt-main and jogl-all-main) which in turn bring in
native classifier artifacts for all prebuilt platforms.
This is undesirable for a number of reasons:
* Bloats the dependency graph with binaries irrelevant to the running platform.
* Breaks JPMS automatic module support by introducing multiple JAR files
resolving to the same module name, something which JPMS disallows.
To work around this, SciJava-based projects can add a dependency on this
scijava-java3d project to inherit all the needed dependencies transitively:
```xml
org.scijava
scijava-java3d
```
## About java3d-utils and joal
This scijava-java3d component does not bring in java3d-utils, since you may
or may not need the features provided by that library. Furthermore, although
java3d-utils depends on joal-main, which has an analogous issue with the joal
native classifier artifacts, it is not clear (to me) that joal is ever really
used by java3d-utils; excluding it completely by default is maybe preferable.
If your project needs joal, you can add the following dependencies manually:
```xml
org.jogamp.joal
joal
org.jogamp.joal
joal
${scijava.natives.classifier.joal}
```