Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Display a 3D model, specifying position, orientation, and scale #11

Open
JulieWinchester opened this issue Sep 6, 2022 · 6 comments
Open

Comments

@JulieWinchester
Copy link
Contributor

As an Online Exhibit Curator

I want to display a single 3D model, specifying the initial position, rotation, and scale

So that I can draw attention to a particular point of interest

This is a copy of IIIF/iiif-3d-stories#9

@JulieWinchester
Copy link
Contributor Author

Notes from IIIF Extra Technical Meeting 3/29/2023

Requirements:

  • MUST be able to specify the 3D model to be used
  • MUST be able to specify initial position of the model. Position must be specified as a 3D point coordinate. As Three.js operates, the 0-point "local" origin of the model should align with the "global" position coordinate specified.
  • MUST be able to specify the rotation of the model. Rotation can be specified as rotationX/rotationY/rotationZ with floating point degree-unit values. Without rotation values, no rotation is assumed in any axis. 0 is the "no operation" value here.
  • MUST be able to specify the scale of the model. Scale is specified as scaleX/scaleY/scaleZ with floating-point ratio values, 1.0 is the "no operation" value.
  • COULD specify the bounding box for a model as well.

Notes:

  • This story presupposes some choice of a 3D space, that a 3D space already exists
  • Drawing attention refers to placing the model in an initial position and orientation so that viewers are guided toward looking at a point of interest, NOT that an additional annotation of any kind has been made
  • Talking about initial position, rotating, and scale, not to do with an initial viewport. This scope does not include properties of the camera, viewport, etc. Though pre-supposes some camera, some viewport, with their own positionality.
  • The assumption here is that "initial position, rotation, and scale" refer to transformations/translations on the object itself, NOT the viewpoint or viewpoint.

@JulieWinchester
Copy link
Contributor Author

In the 3D TSG Workshop and subsequent discussions at the IIIF Annual Conference the week of June 5, 2023, progress was made on this issue in multiple ways. I will add a series of comments describing different items separately.

@JulieWinchester
Copy link
Contributor Author

Compared to the post from the IIIF Extra Technical Meeting on 3/29/2023, the list of requirements for this story was expanded and refined:

  • MUST be able to specify the 3D model to be used
  • MUST be able to specify initial position of the model. Position must be specified as a 3D point coordinate. As Three.js operates, the 0-point "local" origin of the model should align with the "global" position coordinate specified.
  • MUST be able to specify the rotation of the model. Rotation can be specified as rotationX/rotationY/rotationZ with floating point degree-unit values. Without rotation values, no rotation is assumed in any axis. 0 is the "no operation" value here.
  • MUST be able to specify the scale of the model. Scale is specified as scaleX/scaleY/scaleZ with floating-point ratio values, 1.0 is the "no operation" value.
  • MUST carry out transformations in order of scale, rotation, and translation. All transformations occur on the "local coordinate space" of the 3D model, or in other words, all transformations happen relative to local coordinate origin.
  • Scale and rotation are specified as transformations to the annotation, but position is specified via targeting into the 3D scene.
  • MUST be able to specify duration
  • Specification of bounding box is considered out of scope for work at present
  • This explicitly does not include shearing as a transformation type
  • COULD disable included lighting accompanying 3D model (if any present)

@JulieWinchester
Copy link
Contributor Author

An initial draft of properties for Scenes has been created: https://docs.google.com/spreadsheets/d/1JIlgH9VIsdIiQInqWYMm-OgMMs5-_JKDgQfB5m2SvIM/edit?usp=sharing

@JulieWinchester
Copy link
Contributor Author

Drafts of IIIF Presentation API JSON reflecting 3D TSG Workshop and subsequent discussion work:

"Full" version: https://gist.github.com/azaroth42/e3c6fc982cec1beb35627595697ade7e
Streamlined "99% use-case" version, placing a single model at Scene origin: https://gist.github.com/tomcrane/51feab0b5931897c06c7af9ea2382965

@JulieWinchester
Copy link
Contributor Author

Progress and more group consensus was achieved on this topic at the Basel working meeting on October 26, 2023. Relevant information can be found in the following IIIF API issues:

IIIF/api#2256
IIIF/api#2253
IIIF/api#2254
IIIF/api#2266

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant