• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..11-Sep-2021-

OPalembic/H11-Sep-2021-874780

Makefile.hcustomH A D11-Sep-2021893 3324

READMEH A D11-Sep-20213.9 KiB7536

SOP_AlembicIn.CH A D11-Sep-202190.5 KiB2,9602,368

SOP_AlembicIn.hH A D11-Sep-20218.1 KiB228139

README

1--------------------------------------------------------------------------------
2OVERVIEW
3
4The reference implementation for reading Alembic data into Houdini contains three nodes:
5
61) A SOP named Alembic_In
72) A python object node named "Alembic Archive"
83) A python object node named "Alembic Xform"
9
10The Alembic_In SOP can read an entire Alembic archive or a subtree of an Alembic archive with the option of baking in transformations. As such, it can serve as the leaf node for geometric primitives while recreating the transformation hierarchy as Houdini objects. It supports loading arbitrary geometry parameters (AbcGeom::GeomParams) as attributes and provides options to remap attribute names on load. The SOP recognizes when data or topology is constant in order to do as little work as necessary upon frame changes.
11
12The "Alembic Archive" node constructs and contains the hierarchy of object, SOP and camera nodes used to represent an Alembic scene. Its "Build or Update Hierachy" button reads the archive hierarchy (or specified subtree) and expressions the matching parameters of its internal nodes for convenience.
13
14The "Alembic Xform" node queries the local transformation for a specified path within an archive during its cook. It recognizes and caches when transformations are not animated in order to do as little work as necessary on frame changes.
15
16--------------------------------------------------------------------------------
17AVAILABLE PYTHON FUNCTIONS
18
19Both "Alembic Archive" and "Alembic Xform" are dependent upon python functions made available by the Alembic_In SOP. These functions may be of use for other pipeline integration tools. They are available by importing the "_alembic_hom_extensions" module. Here is a quick summary of each:
20
211) alembicGetLocalXform(archiveFilePath, objectPath, alembicSampleTime)
22
23This returns a tuple in this form:
24(tupleOf16FloatsFor4x4Matrix, boolIsConstant)
25
26The second value lets you know whether there is any animated transformation within the archive at that level.
27
282) alembicGetSceneHierarchy(archiveFilePath, subtreePath)
29
30This returns a tuple of values in this form:
31(name, typeString, tupleOfChildrenInThisForm)
32
33This allows you to query the structure of the scene without loading any sampled data.
34
353) alembicClearArchiveCache()
36
37The SOP maintains a cache of Alembic archive handles to avoid reopening the file during multiple cooks across different nodes.
38
394) alembicSetArchiveMaxCacheSize( maxArchiveHandles )
40
41This allows you to configure the maximum number of archive handles kept open by the SOP at any time. When this limit is exceeded, it will discard handles at random to maintain the limit.
42
435) alembicGetArchiveMaxCacheSize()
44
45Returns the maximum number of archive handles kept open. The default value is currently 50.
46
476) alembicGetCameraDict(archiveFilePath, cameraPath, alembicSampleTime)
48
49This returns a dictionary containing keys matching the relevant "View" parameters on the houdini Camera node. Conversion from Alembic's representation to houdini's representation is done within the function.
50
51--------------------------------------------------------------------------------
52BUILDING:
53
54Due to the use of hcustom, the SOP is not yet integrated into Alembic's CMake setup. Makefile.hcustom has targets for building the SOP and compressing the OPalembic directory into an OTL defining the "Alembic Archive" and "Alemic Xform" nodes.
55
56--------------------------------------------------------------------------------
57TASKS LEFT TO DO:
58
591) Of the geometric primitives, only AbcGeom::IPolyMesh and AbcGeom::ISubD mesh are currently supported. AbcGeom::INuPatch, AbcGeom::ICurves and AbcGeom::IPoints remain to be implemented.
60
612) Overscan and 2D translation of the camera filmback are not yet fully represented. There's enough information available for this, it's just not fully implemented yet.
62
633) Subdivision surface creases, corners and holes are not yet represented.
64
65
66
67
68
69
70
71
72
73
74
75