This document describes the ways the MorphoSource 3D Data Repository supports IIIF Presentation version 4. Presentation 4 enables flexible and powerful presentation of 3D assets with cameras, lights, and commenting annotations. If you are already using MorphoSource to upload 3D models, we also have documentation showing how to put this IIIF support into action by creating and saving annotations and setting initial model rotation.
This table shows what IIIF 3D features are currently supported in MorphoSource's 3D viewer using the IIIF 3D TSG list of example 3D manifests. The manifest link will take you to the manifest JSON. The example link will take you to MorphoSource's 3D viewer and will display the content described by the manifest.
| Manifest | Supported? | Example |
|---|---|---|
| 1. Basic model in scene | ||
| Single Model | ✅ | View |
| Single Model with background color | ❌ | View |
| 4. Transform and position | ||
| Single Positioned Model | ✅ | View |
| Rotated Model | ✅ | View |
| Rotated Translated Model | ✅ | View |
| Translated Rotated Model | ✅ | View |
| Two Models with Scaling and Positioning | ✅ | View |
| Two Models with Translation, Scaling, and Positioning | ✅ | View |
| Two Models with Scaling, Translation, and Positioning | ✅ | View |
| Two Models with Left-Right Mirroring and Positioning | ✅ | View |
| Whale Cranium and Mandible Positioned | ✅ | View |
| 9. Commenting Annotations | ||
| Single Model with Comment Annotations | ✅ | View |
| 10. Content State | ||
| Single Model with Comment Annotations and Custom Views Per Annotation | ✅ | View |
| Whale Cranium and Mandible with Manifest-Level Comment Annotations | ❌ | View |
✅ Works fully! 🟡 Some relevant features work ❌ Relevant feature(s) not yet supported
The full list of IIIF 3D TSG draft manifests is here. Groups of manifests not listed here aren't supported yet - for example, our viewer only supports cameras specified as part of custom annotation views and not for scenes overall. Some manifests have been excluded because they are malformed and need some improvements (see this GitHub issue).
You can view any IIIF 4 Presentation manifest with a URL in MorphoSource's viewer environment, which uses Universal Viewer and the 3D viewer Aleph-R3F. In other words, you can use MorphoSource's viewer as a test sandbox to view your own IIIF 3D content.
The MorphoSource viewer is publicly available at the URL:
https://www.morphosource.org/uv/uv.html
Viewing a manifest in the viewer is accomplished by appending a query parameter #?manifest= to the viewer URL above where the query parameter value is your manifest URL. As an example, if you have IIIF 3D content located at manifest URL:
Then the combined URL to view this manifest in the MorphoSource viewer environment is:
Clicking the above link will display the specified manifest content in MorphoSource's UV environment. If 3D content is detected, the Aleph-R3F viewer within UV will be loaded automatically.
If you experience any issues, let us know by filing an issue or creating a discussion post. We are also active in the IIIF Slack, so reach out to us!
MorphoSource serves IIIF Presentation 4 manifests for all preview content (3D models, CT scan volumes, 2D images, and video) hosted by the repository. For 3D content, MorphoSource supports saving comment annotations for 3D models, with comment annotations included in the IIIF manifest for the 3D model.
Example MorphoSource media with comment annotations and interactive preview
IIIF Presentation 4 manifest for media and comment annotations
For more detail, see our documentation on on how MorphoSource mobilizes preview content using IIIF.
MorphoSource uses the open source 3D viewer Aleph-R3F wrapped in Universal Viewer as a UV extension. Our support for IIIF 4 is in beta state, and we're using a few different experimental code branches to get there. Here are the relevant packages with links to GitHub code branches and experimental NPM package pages.
Aleph-R3F: morphosource-prezi-4-beta branch on GitHub
Universal Viewer: aleph-r3f-prezi-4-beta branch on GitHub
Manifesto.js: get_more_content_and_transform_helpers branch on GitHub and experimental 3d-manifesto-dev-test NPM package
Manifold: experimental manifold-3d-dev NPM package