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
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)
Target: a static view of multiple models in a single scene
Scenes
Camera [sensors] -- SHOULD define, ????? clients support?
Lighting [emitters]
Models
Precedence of cameras and lights from multiple models/scenes
DirectionTransform -- details
Produce a huge manifest that demonstrates all the possibilities