Hi Welcome, This short video is going to be an ultra-crash
course in advanced CG production workflow using Alembic. We will export a simple model Hierarchy from
Industry-standard Maya Animate it in Blender Add Procedural Geometry FX in Houdini and
finally assemble the scene back in Maya, using Arnold Alembic standins leveraging alembic’s
powerful feature called Layers. Effective exchange of the geometry and animation
data between different 3d softwares can be tricky. I’m Gaurav Mathur, let's get started. So here we are in Maya. In its classic outliner, we can inspect the
simple teapot model Hierarchy with Lid and Body. Pivots are in right place as well. The scene unit for length is centimeters. Let’s turn off the helper objects and we
have uvs going on as well. Now to export this model for animating in
blender. Select the teaPot go to Cache>Alembic>Export
Selected Give it descriptive name teapot model.abc Let's just import it back to validate. Imports perfectly fine and the model hierarchy
is as expected. Very simple. This is Blender. In the interest of time and simplicity, I
have prepped a rather silly teaPot bouncing animation looping over 24 frames. An important point to note that there is no
deformation just animating the transform controls available on parent and child objects. Let’s say this is animation needs to be
handed over to FX so that we can add some procedural decimation to the teaPot model. Right-click on the teaPot select Hierarchy. go to file >Export Alembic. Let's give it a descriptive name. Check Start and End frames are 1 -24 and make
sure selected objects are checked mark. So here we are in Houdini. If you are new to sop networks watching Part
2 of this video series is recommended. A Sample Houdini file is attached in the video
description for your later reference. There are two ways of importing Alembic scenes. The first one is to use the Alembic Archive
object to create an object-level hierarchy representing the Alembic scene. We can turn on the operator tree view to inspect
it. The second is to use the Alembic SOP and load
the entire scene into a single piece of geometry which is what we currently have here. At the Top, we have Alembic sop which is reading
the alembic archive from the disk. Here we can choose to load the geometry as
demand or delayed loaded Alembic primitive. What it means that the geometry loading is
deferred until the rendering. As a result Alembic primitive uses very little
memory and can be transformed but can’t be edited without converting it to Houdini
Geometry representation. Alembic primitives store some special properties. These are called Intrinsic values in Houdini
which are very similar to attributes, but are computed on-demand by Houdini rather than
stored. We are going to be using packed transform
prim intrinsic data to fetch the move, rotate and scale values from the exported archive. Transformation is encoded in a 4x4 Matrix. In this subnetwork, we are extracting it. This little code is fetching and inverting
the full 4x4 transform matrix and storing it as an attribute on the primitive. Next, is the name sop creating a primitve
attribute called “name” for lid and body. And promoting it from primitive to point. Next in the chain is where we are undoing
the transform to send the teapot to the origin. Using the time shift node holding the frame
1 After that, we have transformby attribute
using inverted transform matrix which was created in the wrangle node up in the chain. Further down is unpacking alembic primitive,
converting to polygons and subdividing it. Moving down we are breaking the lid geometry
using standard boolean fracture node. Giving lid and newly created faces some color. Deleting random pieces and packing the geometry
at the end of the chain. The next chain is breaking the body using
standard Voronoi fracture. Deleting the random pieces and packing the
geometry at the end of the chain-like we did with the lid. This stream is keeping the teaPot clean as
is. Further down we have a switch node allowing
easy pick between clean and broken teaPot. Rightmost is deleting all the incoming alembic
primitives keeping only the point representation. And finally, down here we are applying the
transformation getting the original animation back. Copying transform Matrix attribute on the
packed primitives and using transform by attribute. Using a clean sop at the end keeping only
the path attribute for the hierarchy generation. Before we export the cache for Maya it needs
to be scaled 100 times coz we are working in Meters inside Houdini and Maya scene defaults
are in centimeters. At the end of the chain, we have 3 alembics
rops. The first 2 rops have alembic layering turned
on. With replace set as the type of layer. This particular rop is writing the body layer. In the hierarchy tab we have build hierarchy
from path attribute turned on. Packed transform is set to merge with parent. In the layering tab we have it turned on keeping
the full path to the bodyShape with layer operation type is set to replace. This rop is doing exactly the same for the
lidShape layer. For the last Alembic Rop we need to pick the
cleanTeaPot. Layering is disabled and other checkboxes
are the same as above We are back in Maya. To assemble the scene using Arnold Alembic
Standin. Let’s go to Arnold menu and drop in a standin. Point the file path to the original TeaPot
animation cache. Change the viewport draw mode to shaded view. Turn on the use file sequence and we can see
the teaPot updating in the viewport. We can also inspect the hierarchy in the file
contents outliner. Further down we have an area for adding Arnold
operators. Operators allow users to modify any part of
the Arnold scene at render time. We will cover more on operators in upcoming
videos. For now, lets scroll up and to layers section
of the alembic settings. Hit add a layer, select lidLayer.abc to replace
the lid with the broken one. We can add another layer which replaces the
body with broken model. As a result we have broken teapot animating. A point to remember Operations that a layer
perform is encoded in the alambic itself at the time of exporting. We chose to have the “replace” option
on while exporting from Houdini. Geometry attributes can be read directly by
arnold. Graph the shader, and pipe in aiuserdata color to the base color name it Cd Throw in a light and hit render. We can turn on the motion blur and bump up
the samples to get a cleaner result. And that’s pretty much it. Hope you have learnt something new. Do provide your feedback in the comments section
and don’t forget to share this video with someone who think can benefit from it. Thanks for watching until next time...