api
api copied to clipboard
Fundamentals to decide on for 1/31
Target: a static view of multiple models in a single scene
-
Scenes
- Properties (including defaults)
- Transform model
-
Camera [sensors] -- SHOULD define, ????? clients support?
- Types / Properties (echo-locator sensor? infrared? stereoscopic?)
- Transform model
- default camera details -- which way is default "forwards"? positive z?
-
Lighting [emitters]
- Types / Properties
- Transform model
- default lighting details
-
Models
- Multi-file models (is this an issue?)
-
Precedence of cameras and lights from multiple models/scenes
- ignore by models/manifest? behavior / annotation feature to specify? x3d default? gltf has no default?
- scene in scene complications
- options for ignore imported
-
DirectionTransform -- details
-
Produce a huge manifest that demonstrates all the possibilities
Properties of Scenes:
- General: Turning on and off features of different entities; possibly via behaviors
- Camera constraints sensible -- don't zoom into the middle of a model; don't look at the back/bottom of an incomplete model
- What should be possible/impossible to describe/define?
- navigationMode as a (synthetic?) property
- collision detection? model to look at vs space to move through
- Difference between publisher saying "don't show this scene other than from this point" vs "this camera can only do this"
- "inheritance" on/off
- Scene with duration can't go into non-duration scene
- +Z is front
Transform model:
- Transform model okay
- No need to move pivot point
- Can't have multiple pivots without multiple scenes/models
Cameras
- Types: Perspective, Orthographic/Orthogonal
- Camera is optional ; the first camera found in order in the manifest, then that is the default camera
- Multiple cameras are choices
- Cannot scale a camera
- Initial state: at the origin, looking at -INF in Z
- (Question: orbit of camera / interaction)
- Properties: field of view - angle in degrees, bottom to top
- Properties: near and far, each floating point value in units of scene's dimensional space, optional
General Notes: Orthographic camera isn't "in" the scene, like directional light.
- +Y is up for scenes
- follow and orbit are similar but distinct
- Scale on cameras does make sense, as you're scaling the local coordinate space (an otherwise empty scene apart from the camera) to then map into the target scene's coordinate space
- lookAt on camera object -- value is a reference to a point, either by a point selector or an annotation that has a target in the scene (not a model)
- Question about multiple target painting annotations -- disallow or not?
- Order of operations -- lookAt is the last thing, so cannot rotate/translate after looking at something
- Origin or Centroid -- behavior on camera to swap between
Lights
- Properties: color, RGB space
- Properties: intensity, array of construct {"value": float, "unit": "relative"} (or "lumens" or "whatever"), multiple equivalents possible
- Directional Light default is straight down. Then rotate from there with a RotateTransform. Don't use explicit vector, yes to lookAt with a pointSelector to calculate the vector from.
- Position is ignored for Ambient or Directional, so annotate the scene.
- Don't specify decay (at least for now)
- Spotlights - no decay, no penumbra, angle property on the light with degrees. maximum of 180 degrees.
- Lights are optional, viewer should make sure there's some way to see the scene.
- behavior around objects casting shadows -- light has casting flag, annotation has a 'receives shadows' flag for whether it should show shadows from objects.
- Note about hidden
- default color is white and intensity is viewer dependent (reasonable)
Turning on/off:
- Flag on annotation of whether to include the cameras or lights that are in the scene or model in the body, e.g. no-cameras, no-lights
- Note that you can't selectively import lights or cameras from within a model/scene