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
+1-1
Original file line number
Diff line number
Diff line change
@@ -1289,7 +1289,7 @@ If you go backwards from step n in a linear-nav, **and** you have applied one or
1289
1289
1290
1290
Before applying the content state to the Scene, the client should reset the Scene to its original state as provided by the Manifest.
1291
1291
1292
-
// I am assuming reset is always true except in `sequence` - otherwise it's completely unpredictable!! or is it... arbitrary navigation, state provided by initialization content states, etc...
1292
+
// I am assuming reset is always true except in `linear-nav` - otherwise it's completely unpredictable!! or is it... arbitrary navigation, state provided by initialization content states, etc...
1293
1293
1294
1294
#### Contribute additional information permanently
Copy file name to clipboardExpand all lines: source/presentation/4.0/model.md
+77-43
Original file line number
Diff line number
Diff line change
@@ -245,16 +245,22 @@ FIXME: It is an error to select a temporal region of a Scene that does not have
245
245
246
246
#### Timeline
247
247
248
+
`"type": "Timeline"`
249
+
248
250
A Timeline is a Container that represents only a temporal duration, measured in seconds. Timelines allow audio content to be presented, but do not allow anything with a height or width like an image or video. The duration of the Timeline is given in the `duration` property.
249
251
250
252
#### Canvas
251
253
254
+
`"type": "Canvas"`
255
+
252
256
A Canvas is a Container that represents a particular rectangular 2 dimensional view of the object and has content resources associated with it or with parts of it. This aspect ratio is defined by the `height` and `width` properties. A Canvas _MAY_ also have a duration, given in the `duration` property, allowing audio and video to be correctly positioned in time as well as the 2 dimensional space.
253
257
254
258
FIXME: arbitrary units
255
259
256
260
#### Scene
257
261
262
+
`"type": "Scene"`
263
+
258
264
A Scene is a Container that represents an infinitely large three-dimensional space, with an optional `duration` property. Scenes have infinite height (y axis), width (x axis) and depth (z axis), where 0 on each axis (the origin of the coordinate system) is treated as the center of the scene's space. From a perspective looking along the z axis towards negative infinity, the positive y axis points upwards and the positive x axis points to the right (a [right-handed Cartesian coordinate system](https://en.wikipedia.org/wiki/Right-hand_rule)).
259
265
260
266
<imgsrc="https://raw.githubusercontent.com/IIIF/3d/eds/assets/images/right-handed-cartesian.png"title="Right handed cartesian coordinate system"alt="diagram of Right handed cartesian coordinate system"width=200 />
@@ -274,6 +280,8 @@ The following set of classes are defined by the W3C's [Web Annotation Data Model
274
280
275
281
#### Annotation
276
282
283
+
`"type": "Annotation"`
284
+
277
285
Annotations are used to associate content resources with Containers, as well as for transcriptions, commentary, tags and the association of other content. This provides a single, unified method for aligning information, and provides a standards-based framework for distinguishing parts of resources and parts of Canvases.
278
286
279
287
Annotations _MUST_ have their own HTTP(S) URIs, conveyed in the `id` property. The JSON-LD description of the Annotation _SHOULD_ be returned if the URI is dereferenced, according to the [Web Annotation Protocol][org-w3c-webanno-protocol].
@@ -287,6 +295,8 @@ Note that the Web Annotation data model defines different patterns for the `valu
287
295
288
296
#### Annotation Collection
289
297
298
+
`"type": "AnnotationCollection"`
299
+
290
300
Annotation Collections allow groups of Annotations to be recorded. For example, all of the English translation Annotations of a medieval French document could be kept separate from the transcription or an edition in modern French, or the director's commentary on a film can be separated from the script.
291
301
292
302
Annotation Collections _MUST_ have a URI, and it _SHOULD_ be an HTTP(S) URI. They _SHOULD_ have a `label` and _MAY_ have any of the other descriptive, linking or rights properties.
@@ -296,6 +306,8 @@ Annotation Collections are paged rather than enumerated. The first page of items
296
306
297
307
#### Annotation Page
298
308
309
+
`"type": "AnnotationPage"`
310
+
299
311
An ordered list of Annotations, typically associated with a Container, but may be referenced from other types of resource as well. Annotation Pages enumerate and order lists of Annotations, in the same way that Collection Pages order lists of Manifests and Collections within the containing Collection.
300
312
301
313
An Annotation Page _MUST_ have an HTTP(S) URI given in `id`, and _MAY_ have any of the other properties defined in this specification or the Web Annotation specification. The Annotations are listed in the `items` property of the Annotation Page.
@@ -309,14 +321,20 @@ The definition of `label` in the Web Annotation specification does not produce J
309
321
310
322
#### Specific Resource
311
323
324
+
`"type": "SpecificResource"`
325
+
312
326
A Specific Resource is a resource in the context of an Annotation. They are used to record further properties or relationships needed to understand the particular contextual use, such as which part of the resource is used or how it should be rendered. In IIIF, the Specific Resource model from the Web Annotation Data Model has some additional properties beyond those defined by the W3C, such as `transform`.
313
327
314
328
#### Textual Body
315
329
330
+
`"type": "TextualBody"`
331
+
316
332
A Textual Body is an embedded resource within an Annotation that carries, as the name suggests, a text as the body of the Annotation. It is defined by the Web Annotation Data Model, and this specification defines a new property for `position` that allows it to be positioned within a Container.
317
333
318
334
#### Choice
319
335
336
+
`"type": "Choice"`
337
+
320
338
A Choice is a Web Annotation construction that allows one entry from a list to be selected for processing or display. This specification allows `behavior` to be added to a Choice to influence how it is processed.
321
339
322
340
@@ -370,15 +388,11 @@ There are common use cases in which a point, rather than a range or area, is the
370
388
371
389
#### WKT Selector
372
390
373
-
Well-known text, or WKT, is an ISO standard method for describing 2 and 3 dimensional geometries. This selector thus goes beyond what the Web Annotation's SvgSelector enables by incorporating the z axis, as well as additional types of selection such as MultiPolygon. Additional types, such as CIRCULARSTRING may also be supported.
391
+
`"type": "WktSelector"`
374
392
375
-
WKT Selectors have the following properties:
393
+
Well-known text, or WKT, is an ISO standard method for describing 2 and 3 dimensional geometries. This selector thus goes beyond what the Web Annotation's SvgSelector enables by incorporating the z axis, as well as additional types of selection such as MultiPolygon. Additional types, such as CIRCULARSTRING may also be supported.
376
394
377
-
| Name | Description |
378
-
|-------|-------------|
379
-
| id | The HTTP(S) URI of the selector |
380
-
| type | The class of the selector, which must be "WktSelector" |
381
-
| value | The WKT string that defines the geometry to be selected |
395
+
WKT Selectors _MUST_ have a `value` property, which is the WKT string that defines the geometry to be selected.
382
396
383
397
```json
384
398
{
@@ -393,14 +407,9 @@ WKT Selectors have the following properties:
393
407
394
408
#### Audio Content Selector
395
409
396
-
Video content resources consist of both visual and audio content within the same bit-level representation. There are situations when it is useful to refer to only one aspect of the content – either the visual or the audio, but not both. For example, an Annotation might associate only the visual content of a video that has spoken English in the audio, and an audio file that has the translation of that content in Spanish. The Audio Content Selector selects all of the audio content from an A/V content resource, and may be further refined with subsequent selectors to select a segment of it.
397
-
398
-
Audio Content Selectors have the following properties:
410
+
`"type": "AudioContentSelector"`
399
411
400
-
| Name | Description |
401
-
|------|-------------|
402
-
| id | The HTTP(S) URI of the selector |
403
-
| type | The class of the selector, which must be "AudioContentSelector" |
412
+
Video content resources consist of both visual and audio content within the same bit-level representation. There are situations when it is useful to refer to only one aspect of the content – either the visual or the audio, but not both. For example, an Annotation might associate only the visual content of a video that has spoken English in the audio, and an audio file that has the translation of that content in Spanish. The Audio Content Selector selects all of the audio content from an A/V content resource, and may be further refined with subsequent selectors to select a segment of it.
404
413
405
414
406
415
```json
@@ -413,14 +422,9 @@ Audio Content Selectors have the following properties:
413
422
414
423
#### Visual Content Selector
415
424
416
-
Similar to Audio Content Selectors, Visual Content Selectors select the visual aspects of the content of an A/V content resource. They may be further refined by subsequent selectors that select an area or temporal segment of it.
417
-
418
-
Visual Content Selectors have the following properties:
425
+
`"type": "VisualContentSelector"`
419
426
420
-
| Name | Description |
421
-
|------|-------------|
422
-
| id | The HTTP(S) URI of the selector |
423
-
| type | The class of the selector, which must be "VisualContentSelector" |
427
+
Similar to Audio Content Selectors, Visual Content Selectors select the visual aspects of the content of an A/V content resource. They may be further refined by subsequent selectors that select an area or temporal segment of it.
424
428
425
429
```json
426
430
{
@@ -432,16 +436,11 @@ Visual Content Selectors have the following properties:
432
436
433
437
#### Animation Selector
434
438
435
-
More interactive content resources, such as 3d models, may have activatable animations or similar features. For example, a model of a box might have an animation that opens the lid and a second animation that closes the lid. In order to activate those animations, they need to be selectable, and thus the specification defines an Animation Selector.
436
-
437
-
Animation Selectors have the following properties:
439
+
`"type": "AnimationSelector"`
438
440
439
-
| Name | Description |
440
-
|-------|-------------|
441
-
| id | The HTTP(S) URI of the selector |
442
-
| type | The class of the selector, which must be "AnimationSelector" |
443
-
| value | The identity of the animation in whichever form is used by the source resource |
441
+
More interactive content resources, such as 3D models, may have animations or similar features that can be _activated_ by user interaction. For example, a model of a box might have an animation that opens the lid and a second animation that closes the lid. In order to activate those animations, they need to be selectable, and thus the specification defines an Animation Selector.
444
442
443
+
Animation Selectors _MUST_ have a `value` property, which is the identity of the animation in whichever form is used by the source resource.
445
444
446
445
```json
447
446
{
@@ -451,7 +450,9 @@ Animation Selectors have the following properties:
451
450
}
452
451
```
453
452
454
-
#### ImageApiSelector
453
+
#### IIIF Image API Selector
454
+
455
+
`"type": "ImageApiSelector"`
455
456
456
457
FIXME: write this
457
458
@@ -460,6 +461,8 @@ FIXME: write this
460
461
461
462
### Range
462
463
464
+
`"type": "Range"`
465
+
463
466
Ranges are used to represent structure within a Manifest beyond the default order of the Containers in the `items` property.
464
467
465
468
Ranges _MUST_ have URIs and they _SHOULD_ be HTTP(S) URIs. Top level Ranges are [embedded][prezi30-terminology] or externally [referenced][prezi30-terminology] within the Manifest in a `structures` property. These top level Ranges then embed or reference other Ranges, Containers or parts of Containers in the `items` property. Each entry in the `items` property _MUST_ be a JSON object, and it _MUST_ have the `id` and `type` properties. If a top level Range needs to be dereferenced by the client, then it _MUST NOT_ have the `items` property, such that clients are able to recognize that it should be retrieved in order to be processed.
@@ -480,17 +483,20 @@ FIXME: If either the position or direction is not specified, then the position d
480
483
The region of the Scene's space that is observable by the camera is bounded by two planes orthogonal to the direction the camera is facing, given in the `near` and `far` properties, (PERSPECTIVE) and a vertical projection angle that provides the top and bottom planes of the region. (viewHeight?)
481
484
482
485
483
-
##### OrthographicCamera
486
+
##### Orthographic Camera
487
+
488
+
`"type": "OrthographicCamera"`
484
489
485
490
`OrthographicCamera` removes visual perspective, resulting in object size remaining constant regardless of its distance from the camera
486
491
487
492
488
-
##### PerspectiveCamera
493
+
##### Perspective Camera
494
+
495
+
`"type": "PerspectiveCamera"`
489
496
490
497
`PerspectiveCamera` mimics the way the human eye sees, in that objects further from the camera are smaller
491
498
492
-
!!! Properties
493
-
...
499
+
Properties...
494
500
495
501
496
502
```json
@@ -519,29 +525,37 @@ The region of the Scene's space that is observable by the camera is bounded by t
519
525
520
526
##### Ambient Light
521
527
528
+
`"type": "AmbientLight"`
529
+
522
530
Ambient Lights evenly illuminates all objects in the scene, and does not have a direction or position.
523
531
524
532
525
533
##### Directional Light
526
534
527
-
Directional Lights emits in a specific direction as if it is infinitely far away and the rays produced from it are all parallel. It does not have a specific position.
535
+
`"type": "DirectionalLight"`
528
536
529
-
If a DirectionalLight does not have an explicit direction, then the default is in the negative y direction (downwards).
537
+
Directional Lights emits in a specific direction as if it is infinitely far away and the rays produced from it are all parallel. It does not have a specific position.
530
538
539
+
If a DirectionalLight does not have an explicit direction, then the default is in the negative y direction (downwards).
531
540
532
-
this is really that the light always has a direction of (-y) and is rotated from there. So no rotation = "default" direction.
541
+
This is really that the light always has a direction of (-y) and is rotated from there. So no rotation = "default" direction.
533
542
534
543
535
544
536
545
##### Point Light
537
546
538
-
Point Lights emits from a single point within the scene in all directions.
547
+
`"type": "PointLight"`
548
+
549
+
Point Lights emits from a single point within the scene in all directions.
550
+
539
551
540
552
##### Spot Light
541
553
554
+
`"type": "SpotLight"`
555
+
542
556
Spot Lights emit a cone of light from a single point in a given direction.
543
557
544
-
If a SpotLight does not have an explicit direction, then the default is in the negative y direction (downwards).
558
+
If a SpotLight does not have an explicit direction, then the default is in the negative y direction (downwards).
545
559
546
560
547
561
@@ -551,12 +565,16 @@ All have `source`, `volume`
551
565
552
566
##### Ambient Audio
553
567
568
+
`"type": "AmbientAudio"`
569
+
554
570
555
571
##### Point Audio
556
572
573
+
`"type": "PointAudio"`
557
574
558
575
##### Spot Audio
559
576
577
+
`"type": "SpotAudio"`
560
578
561
579
```json
562
580
{
@@ -582,24 +600,39 @@ here are the rules about transforms?
582
600
583
601
584
602
585
-
##### RotateTransform
603
+
##### Rotate Transform
604
+
605
+
`"type": "RotateTransform"`
586
606
587
607
A RotateTransform rotates the local coordinate space around the given axis in a counter-clockwise direction around the axis itself (e.g. around a pivot point of 0 on the axis). A point that was at x=1,y=1 and was rotated 90 degrees around the x axis would be at x=1,y=0,z=1. If an axis value is not specified, then it is not changed, resulting in a default of 0.0
588
608
589
609
590
-
##### ScaleTransform
610
+
##### Scale Transform
611
+
612
+
`"type": "ScaleTransform"`
591
613
592
614
A ScaleTransform applies a multiplier to one or more axes in the local coordinate space. A point that was at 3.5, after applying a ScaleTransform of 2.0 would then be at 7.0. If an axis value is not specified, then it is not changed, resulting in a default of 1.0
593
615
594
-
##### TranslateTransform
616
+
##### Translate Transform
617
+
618
+
`"type": "TranslateTransform"`
595
619
596
620
A TranslateTransform moves all of the objects in the local coordinate space the given distance along the axis. A point that was at x=1.0, after applying a TranslateTransform of x=1.0 would be at x=2.0. If an axis value is not specified then it is not changed, resulting in a default of 0.0
597
621
598
622
599
623
### Utility Classes
624
+
600
625
#### Agent
626
+
627
+
`"type": "Agent"`
628
+
601
629
#### Service
602
-
#### UnitValue
630
+
631
+
`"type": "Service"`
632
+
633
+
#### Unit Value
634
+
635
+
`"type": "UnitValue"`
603
636
604
637
605
638
@@ -650,6 +683,7 @@ The value _MUST_ be a floating point number greater than 0 and less than 90, and
0 commit comments