Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • depth (how far away from pinhole camera this plane should exist in space) 
  • alpha gain or other "image attributes"
  • more attributes to fine tune fit

Pinhole Camera Diagram

This proposal will follow the same nomenclature from the Cooke site. Here is a reproduced CG Camera diagram. (from https://cookeoptics.com/i-technology/ > "Cooke Camera Lens Definitions for VFX" > CG Camera diagram 2.1.)

Image Added

UsdGeomImagePlaneAPI Schema

...

  • asset image = @@
    • Path to image file
      • can be time sampled per frame
      • This will have to be per frame, as USD/Hydra do not at this time support a $F substitution for image/texture asset paths.
  • double depth = 0
    • distance, in scene units, from the pinhole to the point on the optical axis where the image plane sits
      • lo in CG Camera diagram 2.1 in https://cookeoptics.com/i-technology/ > "Cooke Camera Lens Definitions for VFX"above pinhole camera diagram

      • alternative name: "distance" (Autodesk Maya used "depth")
      • A nice default could be -1 or "infinite" so that it would always be behind CG. That might be hard to coexist with a physically placed in scene camera depth that exists in front of and behind cg elements.
  • uniform token fit = "vertical"
    • How the image plane is fit to the filmback. Possible values:
      • "horizontal" - fit image width to filmback and keep image aspect ratio
      • "vertical"- fit image height to filmback and keep image aspect ratio
      • "best" - from Maya, but maybe this behavior is too ambiguous
      • "fill" - stretched to filmback
      • "to size" - constant size, centered on filmback, and requiring more data to define "image size"
  • float[2] offset
    • in same units as camera filmback - tenth of scene unit
  • bool enabled
    • Control image plane visibility.
      • alternate name: "visible"
      • regardless of this value, if the (camera) prim itself is invisible, the image plane will not be visible in the viewport/render

Why a Multi-Apply API Schema?

If we implement a Multi-Apply API Schema for Image Planes we can:

  • author attributes directly to camera
  • author multiple image planes to camera, since multi-apply schemas can be applied several times to the same prim    
    • This multiple image planes could be used to view CG elements in context with foreground or and background plates.

API Methods

TODO:

  • CreateImagePlane(imagePlaneName)
  • SetImagePlane*Attr(imagePlaneName, value)
  • GetImagePlane*Attr(imagePlaneName, attribute)
  • SetImagePlanes([])
  • GetImagePlanes()

...

  • Requires relationships between camera + plane prims
  • Requires an extra API schema to encode the relationship on the Camera.
  • There's the possibility that someone targets something other than an ImagePlane with the relationship, so there are more ways to "get stuff wrong".

...