IIIF / api

Source for API and model specifications documents (api and model)

Home Page:http://iiif.io/api

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How to target a `Scene`?

tomcrane opened this issue · comments

Given a Scene (#2251) and its coordinate system (#2252), what do annotation target properties look like (both painting and other kinds of annotation)?

An annotation or Range that targets a particular region of a Scene could use a PointSelector with floating point x, y and z properties, as well as a time point for Scenes with duration:

    "target": [
        {
            "type": "SpecificResource",
            "source": [
                {
                    "id": "https://example.org/iiif/scene1/page/p1/1",
                    "type": "Scene"
                }
            ],
            "selector": [
                {
                    "type": "PointSelector",
                    "x": 100.0,
                    "y": 100.0,
                    "z": 0.0,
                    "t": 180.0
                }
            ]
        }
    ]

For painting

This selector would place a model at 100,100,0 - but the model is not a point; what part of the model gets placed at that point?

Suggestion from 3D TSG and Napoli workshop (from IIIF/3d#11 (comment)) is that

“the 0-point "local" origin of the model should align with the "global" position coordinate specified.”

What does the selector look like if the target is a particular time interval (on a Scene with a duration property?) The above example targets a time point but what’s the syntax for removing the annotation at 240 seconds?

What about annotation targets that are NOT POINTS? (this may be a separate issue)

See IIIF/3d#14 (comment)
Do we want to tackle that now?

Agree that the point selector selects a particular point in space and time. I think we need a point+duration selector to paint the model at that point, with a start and end time.

Propose that the defaults for x,y and z are 0 if not specified, and thus a PointSelector without any of them is just the origin.

Propose that the default for t is the entire duration of the canvas, rather than t=0.

Just to clarify, the missing example would be a duration, which uses the same media fragment syntax as current Presentation 3:

NB this example is wrong for t, see below

                "selector": [
                {
                    "type": "PointSelector",
                    "x": 100.0,
                    "y": 100.0,
                    "z": 0.0,
                    "t": 10.5,37.0
                }

Default t=0 seems preferable to me. I'm also unsure what meaning t has with scene in scene annotation. Especially if t differs.

t=0 would mean that the annotation targeted only the very first instant of the Scene (or Canvas), and as soon as the duration started playing, it would disappear as no longer in scope.

Got it. So how is the starting time point for the annotation defined? Say I want to annotate a model at 0.5s of its 1s duration and then play the remainder of the duration.

t in the PointSelector would only be valid if the Scene has a duration property.

I think my example is wrong, I will update it. t does not conform to the Media Fragments spec here? My t above is a duration not a Point.

The class is PointSelector not DurationSelector (or more generally ExtentSelector) but how would you combine a spatial point with a time duration ?

Let's kick the semantics of t out to a separate issue, I think we all agree on the generalities.

This is the way to say "At 100,100,0 from 45 seconds to 90 seconds"

"selector": {
      "type": "PointSelector",
      "x": 100.0,
      "y": 100.0,
      "z": 0.0
      "refinedBy": {
        "type": "FragmentSelector",
        "value": "t=45,90"
      }
    }