-
Notifications
You must be signed in to change notification settings - Fork 254
Alembic Conventions and Schema Types
- Right handed coordinate system.
- clockwise polygon winding order.
- Positive Y axis is up.
- Camera (and lights when applicable) looks down the negative Z axis.
The AbcGeom Transform class (OXform/IXform) has these properties:
- ops - One or more operations of translation, scale, rotation, or 4x4 Rotation is angle in degrees and axis of rotation. Operations can optionally indicate a hint (e.g. for Maya to record hinting for pivot behavior).
- inherits - Does this transform concatenate or ignore the transforms of its parents.
- childBounds - (optional) The bounding volume, including all sub objects.
The AbcGeom Points class has these properties:
- P - the positions of each point
- ids - for each P a 64bit unsigned integer that can be used to identify a Point.
- selfBounds - The bounding volume for just this object
- childBounds - The bounding volume, including all subobjects
- velocities - (optional) per point value is in units/second
The AbcGeom Curves class has these properties:
- type - linear, cubic or variable order (for all curves in object)
- wrap - periodic or non-periodic (for all curves in object)
- basis - none, bezier, bspline, catmull-rom, hermite, power
- P - vertices
- nVertices - for each curve the number of vertices in the curve
- Pw (optional) - the position weight for each point, if this doesn't exist, assume 1 per point.
- knots (optional)
- orders (if type is variable order) - the order of each curve
- width (optional) - can be constant or varying, expressed as a diameter
- N - (optional) Normals
- uv - (optional) u-v coordinates
- velocities - (optional) per point value is in units/second
- selfBounds - The bounding volume for just this object
- childBounds - (optional) The bounding volume, including all subobjects
The AbcGeom PolyMesh class has these properties:
- faceCounts - for each face the count of vertices that make up the face
- faceIndices - for each vertex of each face the slot in P for the vertex
- P - vertices
- N - (optional) Normals
- uv - (optional) u-v coordinates
- selfBounds - The bounding volume for just this object
- childBounds - (optional) The bounding volume, including all sub-objects
- facesets - (optional) named sets of faces from this mesh
- velocities - (optional) per point value is in units/second
The AbcGeom SubD class has these properties:
- faceCounts - for each face, the count of vertices that make up the face
- faceIndices - for each vertex the slot in P for the vertex's coordinates
- P - vertex coordinates
- creases - (optional) creased edges
- corners - (optional) vertexes that are corners
- holes - (optional) regions to remove from the surface
- uv - (optional) u-v coordinates
- selfBounds - The bounding volume for just this object
- childBounds - (optional) The bounding volume, including all sub-objects
- facesets - (optional) named sets of faces from this subd
- velocities - (optional) value is in units/second
- scheme - (optional) subdivision scheme used, defaults to catmull-clark
The AbcGeom FaceSet class can be created as part of a SubD or PolyMesh and has these properties:
- faceNumbers - the faces from the SubD or PolyMesh that are in this faceset
- selfBounds - (optional) The bounding volume representing all faces for this object.
The AbcGeom NuPatch class has these properties:
- nucvs - the number of CVs in the u direction
- nvcvs - the number of CVs in the v direction
- uorder - the order of the patch in the u direction
- vorder - the order of the patch in the v direction
- uknot - floating point array containing the number of knots in the u direction. The number of knots in u should be (nucvs - uorder) + 2 * uorder
- vknot - floating point array containing the number of knots in the v direction. The number of knots in v should be: (nvcvs - vorder) + 2 * vorder
- P - vertices
- N - (optional) Normals
- uv - (optional) u-v coordinates
- Pw (optional) - the position weight for each point, if this doesn't exist, assume 1 per point.
- selfBounds - The bounding volume for just this object
- childBounds - (optional) The bounding volume, including all subobjects
- velocities - (optional) per point value is in units/second
Additionally, the NURBS objects will contain TrimCurves which may contain zero or more trim curves. The path is composed of segments in the u direction and then the v direction.
The AbcGeom Camera class has these properties:
- focalLength (mm)
- horizontalAperture/verticalAperture dimensions (cm)
- horizontalFilmOffset/verticalFilmOffset (cm)
- lenseSqueezeRatio: to handle anamorphic lenses, among other things. (width / height)
- 2D transform stack (translate/scale only) for expressing additional 2D translate/scale filmback operations
- overscan stored as 4 percentage values for independent left/right/top/bottom values (to support fractional extension of screen window)
- non-symmetrical overscan, which we've come across)
- fStop (focal length divided by "effective" lens diameter)
- focusDistance (cm)
- shutterOpen/shutterClose: these would be frame-relative values, in seconds (secs.)
- near/far clipping planes (cm)
The AbcMaterial Material class doesn't define a specific material, or set of materials. Instead it's a container that can be used to define the properties for a specific target ("prman", "opengl", etc) and shader type ("light", "displacement", etc). Multiple targets and shader types can live within the same material, in fact a whole material network can be described within a single Material class.
The properties of the AbcGeom Light class are to be expressed via an attached AbcMaterial. The other optional properties on the light include:
- childBounds - (optional) The bounding volume, including all subobjects
- camera - (optional) An Abc Camera.