Client and server utility library to support draft 3D extensions to to the IIIF Presentation API client and server utility library.
Forked from IIIF-Commons/manifesto.
Goal of implementing the Draft API under development by the IIIF 3D Technical Study Group.
This included in package.json
"dependencies": {
"manifesto.js": "IIIF-Commons/manifesto#draft3dapi",
},
will install manifesto modules into node_modules.
Example manifests conforming to the Draft API .
Prototype Viewers rendering the example manifests.
From start point of the version distributed from JulieWinchester/manifesto
distributed from vincentmarchetti/manifesto#3dtsg-main there were these changes:
-
This test is no longer useful for the Target of an Annotation:
if ( typeof(target) === "string" ){ // handle case where target is a Scene }
Draft manifest 3_lights/direction_light_transform uses two ways of encoding the value of a target property for an Annotation: with a json string value of the IRI, or with an object with
id
property of the IRI for the Scene. To avoid exponential expansion of if-else code when combined with target property which can also beSpecificResource
resources, the parsing code was changed so tha the value returned fromgetTarget()
is always an object.Since the Target property will always be an object referencing a
Scene
, or aSpecificResource
whosesource
property is aScene
, the code for handling either would beif (target.isSpecificResource){ // handle a SpecificResource, with selector property // and whose source property is the Scene } else{ // handle a Scene directly }
-
Annotation.getBody3D() is deprecated.
The
Annotation.getBody()
from the Presentation 3 code has been extended to support the resources that can be included in a 3d Annotation body property. An important difference is that thegetBody()
function returns an array of objects, while thegetBody3D()
returns a single object. The deprecated functiongetBody3D()
should be replaced withgetBody()[0]
- Fixed a bug that occurred in determining the 'source' property of a SpecificResource resource that is the "target" property of an Annotation. This bug escaped detection previously because in the 3D case this 'source' property has always been a Scene resource, and the value is not needed for visualization.
- Added isSpecificResource and isAnnotationBody properties to the SpecificResource and AnnotationBody classes, in response to developer suggestion. (Slack, Apr 24 2024)
- Implemented Perspective Camera properties in the Camera class.
- Implement lookAt property of Camera class and of Light class.