api icon indicating copy to clipboard operation
api copied to clipboard

How to target a `Scene`?

Open tomcrane opened this issue 2 years ago • 10 comments
trafficstars

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 https://github.com/IIIF/3d/issues/11#issuecomment-1589966361) 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 https://github.com/IIIF/3d/issues/14#issuecomment-1589926820 Do we want to tackle that now?

tomcrane avatar Jul 14 '23 15:07 tomcrane

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.

azaroth42 avatar Jul 14 '23 16:07 azaroth42

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.

azaroth42 avatar Jan 30 '24 13:01 azaroth42

Some examples: https://github.com/IIIF/3d/tree/demo_milestones/demo/json/manifests

tomcrane avatar Jan 30 '24 16:01 tomcrane

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
                }

tomcrane avatar Jan 30 '24 17:01 tomcrane

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

gjcope avatar Jan 30 '24 17:01 gjcope

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.

azaroth42 avatar Jan 30 '24 18:01 azaroth42

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.

gjcope avatar Jan 30 '24 18:01 gjcope

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 ?

tomcrane avatar Jan 30 '24 18:01 tomcrane

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

azaroth42 avatar Jan 30 '24 18:01 azaroth42

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"
      }
    }

tomcrane avatar Jan 30 '24 19:01 tomcrane