You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: source/presentation/4.0/index.md
+61-45Lines changed: 61 additions & 45 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2170,9 +2170,9 @@ A resource with the `behavior` value "hidden" is not rendered by the client. A r
2170
2170
2171
2171
Sometimes a model file has inbuilt animations. While a description of these is outside the scope of IIIF, because it is 3D-implementation-specific, as long as there is a way to refer to a model's animation(s) by name, we can connect the animation to IIIF resources.
2172
2172
2173
-
This pattern is also achieved with activating annotations, except that the body of the activating annotation references a _named animation_ in the model. The `body`MUST be a SpecificResource, where the `source` is the Painting Annotation that paints the model, and the `selector` is of type `AnimationSelector` with the `value` being a string that corresponds to the animation in the model.
2173
+
This pattern is also achieved with activating annotations, except that the body of the activating annotation references a _named animation_ in the model. The `body`is a Specific Resource, where the `source` is the Painting Annotation that paints the model, and the `selector` is of type `AnimationSelector` with the `value` being a string that corresponds to the name of the animation in the model.
2174
2174
2175
-
The format of the `value` string is implementation-specific, and will depend on how different 3D formats support addressing of animations within models. The same model can be painted multiple times into the scene, and you might want to activate only one model's animation, thus we need to refer to the annotation that paints the model, not the model directly.
2175
+
The format of the `value` string is implementation-specific, and will depend on how different 3D formats support addressing of animations within models. The same model can be painted multiple times into the scene, and you might want to activate only one painted instance of the model's animation, thus we need to refer to the annotation that paints the model, not the model directly.
2176
2176
2177
2177
2178
2178
```jsonc
@@ -2215,7 +2215,7 @@ The format of the `value` string is implementation-specific, and will depend on
2215
2215
"body": [
2216
2216
{
2217
2217
"type":"TextualBody",
2218
-
"value":"Click the box to open the lid"
2218
+
"value":"Click me to open the lid"
2219
2219
}
2220
2220
],
2221
2221
"target": [
@@ -2262,7 +2262,7 @@ The format of the `value` string is implementation-specific, and will depend on
2262
2262
2263
2263
### 3D Comments with Cameras
2264
2264
2265
-
In many complex 3D Scenes, it may not be clear what or how to look at a particular point of interest even when the commenting annotation targets a particular point. The view may be occluded by parts of the model, or other models in the Scene. In the following example, the user can explore the Scene freely, but when they select a particular comment, a specific Camera that was previously hidden (unavailable to the user) is activated, moving the user (i.e., setting the viewport) to a chosen position suitable for looking at the point of interest:
2265
+
It is possible to associate a particular camera with a particular commenting annotation. In many complex 3D Scenes, it may not be clear from where to look at a particular point of interest. The view may be occluded by parts of the model, or other models in the Scene. In the following example, the user can explore the Scene freely, but when they select a particular comment, a specific Camera that was previously hidden (unavailable to the user) is activated, moving the user (i.e., setting the viewport) to a chosen position suitable for looking at the point of interest:
2266
2266
2267
2267
2268
2268
```jsonc
@@ -2441,27 +2441,11 @@ This only works for cameras.
2441
2441
Repeat full example? no, link to external.
2442
2442
2443
2443
2444
+
### Interactivity, Guided Viewing and Storytelling
2444
2445
2445
-
# Integration
2446
-
2447
-
seeAlso, service(s), extensions
2448
-
mention search, image api, auth
2449
-
2450
-
profile for seeAlso
2451
-
2452
-
partOf -
2446
+
Activating annotations add explicit mechanisms for interactive user experiences such as guided viewing and storytelling. A narrative might comprise an Annotation Page of `commenting` annotations that target different parts of the Container, for example a guided tour of a painting or a map. For a Canvas or Timeline it is usually sufficient to leave the interactivity to the client; the fact that comments target different extents implies the client must offer some affordance for those comments (typically the user can click each one), and in response the client will move the current play point of the Timeline to the commenting annotation target, or pan and zoom the viewport to show the relevant part of an image. For 3D this may not be enough; a particular comment may only make sense from a certain viewpoint (i.e., Camera), or different steps of the story require different Lights to be active.
2453
2447
2454
-
Talk about Content State and use the phrase "Content State Annotations"
2455
-
(we think we now _don't_ need to write a content state 2 spec ???)
2456
-
2457
-
2458
-
2459
-
# Interactivity, Guided Viewing and Storytelling
2460
-
2461
-
2462
-
A narrative might comprise an AnnotationPage of `commenting` annotations that target different parts of the Container, for example a guided tour of a painting or a map. For a Canvas or Timeline it is usually sufficient to leave the interactivity to the client; the fact that comments target different extents implies the client must offer some affordance for those comments (typically the user can click each one), and in response the client will move the current play point of the Timeline to the commenting annotation target, or pan and zoom the viewport to show the relevant part of an image. For 3D this may not be enough; a particular comment may only make sense from a certain viewpoint (i.e., Camera), or different steps of the story require different Lights to be active.
2463
-
2464
-
In a storytelling or exhibition scenario, the non-painting `annotations` might be carrying informative text, or even rich HTML bodies. They can be considered to be _steps_ in the story. The use of activating annotations (back ref) allows a precise storytelling experience to be specified, including:
2448
+
In a storytelling or exhibition scenario, the non-painting `annotations` might be carrying informative text, or even rich HTML bodies. They can be considered to be _steps_ in the story. The use of activating annotations allows a precise storytelling experience to be specified, including:
2465
2449
2466
2450
- providing a specific viewpoint for each step of the narrative (or even a choice of viewpoints)
2467
2451
- modifying the lighting of the Scene for each step, for example shining a spotlight on a point of interest
@@ -2470,25 +2454,13 @@ In a storytelling or exhibition scenario, the non-painting `annotations` might b
2470
2454
2471
2455
All the annotations referred to by the activating annotations' `target` and `body` properties are already present in the Scene from the beginning. Initially, many of them may have the behavior `hidden`, invisible until activated.
2472
2456
2457
+
Interactive examples are provided as recipes in the [IIIF Cookbook](link).
2473
2458
2474
-
## The `sequence` behavior
2475
-
2476
-
While all AnnotationPage `items` are inherently ordered, an Annotation Page with the `behavior` "sequence" is explicitly a narrative, and clients should prevent (dissuade) users from jumping about - the annotations, and the effects of them _activating_ other contents of the Container, are intended to be experienced in order and individually. Normally, a client might display all the comments in an AnnotationPage in a sidebar so they are all visible in the UI, but for an AnnotationPage with `behavior` "sequence" only show the currently active annotation text, and next and previous UI.
2477
2459
2460
+
#### The `sequence` behavior
2478
2461
2479
-
## Chains of activation
2462
+
While all Annotation Page `items` are inherently ordered, an Annotation Page with the `behavior` "sequence" is explicitly a narrative, and clients should prevent (dissuade) users from jumping about - the annotations, and the effects of them _activating_ other contents of the Container, are intended to be experienced in order and individually. Normally, a client might display all the comments in an Annotation Page in a sidebar so they are all visible in the UI, but for an Annotation Page with `behavior` "sequence" only show the currently active annotation text, and next and previous UI.
2480
2463
2481
-
Chaining together activating annotations can then allow the implementation of, at least:
2482
-
2483
-
* Specific camera position to look at an Annotation
2484
-
* Multi-step linear stories
2485
-
* Animations, including as part of stories without disrupting the flow, and looping animations (they activate themselves)
2486
-
* Interactive components such as light switches (enable/disable a light), jukeboxes (enable/disable Audio Emitter)
2487
-
2488
-
2489
-
## Storytelling example
2490
-
2491
-
* Something really cool that brings a lot of things together!
2492
2464
2493
2465
2494
2466
# Conveying Physical Dimensions
@@ -2505,17 +2477,65 @@ An extreme example of both physical dimension properties together is a Canvas sh
2505
2477
2506
2478
2507
2479
2508
-
# Other stuff
2480
+
# Integration
2481
+
2482
+
seeAlso, service(s), extensions
2483
+
mention search, image api, auth
2509
2484
2510
-
## Embedded Content
2485
+
profile for seeAlso
2511
2486
2512
-
e.g., painting TextualBody on Canvas
2487
+
partOf -
2513
2488
2489
+
Talk about Content State and use the phrase "Content State Annotations" - how you transmit IIIF from software to software.
2490
+
2491
+
## Authentication
2492
+
2493
+
It is possible to include Image API service descriptions within the Manifest, and within those it is also possible to include links to the Authentication API's services that are needed to interact with the image content. The first time an Authentication API service is included within a Manifest, it _MUST_ be the complete description. Subsequent references _SHOULD_ be just the URI of the service, and clients are expected to look up the details from the full description by matching the URI. Clients _MUST_ anticipate situations where the Authentication service description in the Manifest is out of date: the source of truth is the Image Information document, or other system that references the Authentication API services.
2494
+
2495
+
2496
+
2497
+
2498
+
# Other stuff
2514
2499
2515
2500
## Style
2516
2501
2517
2502
### Rotation
2518
2503
2504
+
An image might not be correctly aligned with the Canvas, and require rotation as it is painted. In the following example, the image is painted with a 90-degree rotation. This example uses the ImageApiSelector to convey the number of degrees of the rotation. As this particular image has an image service, the client can use the Image API to request an image that has already been rotated on the server, or it can use the information in the ImageApiSelector to rotate the image itself.
@@ -2568,11 +2588,7 @@ The HTTP server _MUST_ follow the [CORS requirements][org-w3c-cors] to enable br
2568
2588
2569
2589
Responses _SHOULD_ be compressed by the server as there are significant performance gains to be made for very repetitive data structures.
2570
2590
2571
-
## Authentication
2572
-
2573
-
It may be necessary to restrict access to the descriptions made available via the Presentation API. As the primary means of interaction with the descriptions is by web browsers using XmlHttpRequests across domains, there are some considerations regarding the most appropriate methods for authenticating users and authorizing their access. The approach taken is described in the [Authentication][iiif-auth] specification, and requires requesting a token to add to the requests to identify the user. This token might also be used for other requests defined by other APIs.
2574
2591
2575
-
It is possible to include Image API service descriptions within the Manifest, and within those it is also possible to include links to the Authentication API's services that are needed to interact with the image content. The first time an Authentication API service is included within a Manifest, it _MUST_ be the complete description. Subsequent references _SHOULD_ be just the URI of the service, and clients are expected to look up the details from the full description by matching the URI. Clients _MUST_ anticipate situations where the Authentication service description in the Manifest is out of date: the source of truth is the Image Information document, or other system that references the Authentication API services.
Copy file name to clipboardExpand all lines: source/presentation/4.0/scratch.md
+20Lines changed: 20 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -196,6 +196,26 @@ What to do about activating annos in the introduced content?
196
196
197
197
198
198
199
+
## Chains of activation
200
+
201
+
Chaining together activating annotations can then allow the implementation of, at least:
202
+
203
+
* Specific camera position to look at an Annotation
204
+
* Multi-step linear stories
205
+
* Animations, including as part of stories without disrupting the flow, and looping animations (they activate themselves)
206
+
* Interactive components such as light switches (enable/disable a light), jukeboxes (enable/disable Audio Emitter)
207
+
208
+
209
+
## Storytelling example
210
+
211
+
* Something really cool that brings a lot of things together!
212
+
213
+
214
+
# Auth of Presentation API resources
215
+
216
+
It may be necessary to restrict access to the descriptions made available via the Presentation API. As the primary means of interaction with the descriptions is by web browsers using XmlHttpRequests across domains, there are some considerations regarding the most appropriate methods for authenticating users and authorizing their access. The approach taken is described in the [Authentication][iiif-auth] specification, and requires requesting a token to add to the requests to identify the user. This token might also be used for other requests defined by other APIs.
0 commit comments