Matt Estela


About Me

Matt Estela is a Senior Houdini Artist at Google. Previously he was VFX Lead in Residence at the UTS Animal Logic. Academy, and before that at Animal Logic he's been a VR Supervisor, Lighting Lead, Fx Lead, CG Supervisor, and is one of those annoying Houdini evangelists you don't want to sit next to...  more


Not Specified

Houdini Skills


Not Specified

My Tutorials

obj-image Beginner
Solaris LOPS
obj-image Intermediate
The Joy of VEX
obj-image Quickstart
Building Generator
obj-image Beginner
CG Wiki | Maya to Houdini
obj-image Beginner
CG Wiki | Quick Tips
obj-image Beginner
CG Wiki | Houdini 長いチュートリアル

My Talks

obj-image ILLUME Webinar
“Non-VFX” VFX | Matt Estela
obj-image Houdini HIVE
Hypercubes for VR Noobs
obj-image Houdini HIVE
Learning Houdini: You're Doing It Wrong and How to do it Right
obj-image Houdini HIVE
Houdini: You're learning it wrong (no really this time)
obj-image Houdini HIVE
Just the Tip(s)
obj-image Houdini HIVE
Great Kinefxpectations - KineFX in production

Recent Forum Posts

Import USDZ character with animation 2024年2月13日17:40

Very much a team effort, I'm just the person writing things down.

Shortly after I tried that Omniverse method, Cameron White posted a native Houdini solution. Again not guaranteed to work in all cases, but fixes this particular thing.

My understanding is the drag-n-drop in Omniverse is doing 2 things, getting the skeleton configured for animation (which Sketchfab should be doing), and then binding the animation (which Sketchfab should also be doing). Houdini can do this but there's a few more steps involved (ideally you'd just put these nodes on a shelf or make an HDA, so you don't have to do all these steps every time):

First, prep the skeleton for animation:

  • In lops, create a file (or sublayer) node, load in the original sketchfab usdz
  • Append a confgure primitive lop
  • Set the primitive path, you can drag and drop it from the scene graph tree, or ctrl-click on the selector to bring up a floating outliner. Point it to the skeleton, which is at /scene/SkinnedMeshes/Sketchfab_model/root/GLTF_SceneRootNode/RootNode_0_0/skeletal_3_3/GLTF_created_0/GLTF_created_0_rootJoint/shark_root_4_4/skin0/skeleton
  • Enable 'Apply API Schema', set it to SkelBindingAPI

Next, bind the animation to the skeleton:

  • Append a edit properties lop
  • Click edit properties
  • In the filter at the bottom of the first column, search for animationSource
  • The column will find skel:AnimationSource in Schemas/SkelBindingAPI. Select it, click the arrow between the columns to add it, click accept
  • Set the primitives path to the same skeleton you set earlier
  • Set the skel:AnimationSource value to the 'swimming' skelAnimation prim. Easiest to drag and drop it from the scene graph tree, the path should be /scene/SkinnedMeshes/Sketchfab_model/root/GLTF_SceneRootNode/RootNode_0_0/skeletal_3_3/GLTF_created_0/GLTF_created_0_rootJoint/shark_root_4_4/skin0/swimming

The shark should now play its animation. To get this over to sops, you use the same usd character import sop, but this time point to lops instead of a usd on disk:

  • In sops, create a usd character animation sop
  • Set the lop path (in my case /obj/lopnet1/editproperties2 )
  • That will bring in the mesh and animated skeleton
  • Append a joint deform which will move the mesh using the joints.

Import USDZ character with animation 2024年2月13日16:17

There's been a few issues with sketchfab and their usdz output. Ultimately they're doing some weird stuff that makes most 3d apps unhappy. For the record Houdini won't load them, OSX preview won't load them, Blender won't load them, USDView won't load them.

The only apps that do load them are OSX quicklook (but you can't edit), and omniverse with some tweaking. Some clever folk found ways to help Houdini using code, but the fixes aren't consistent, every sketchfab animation seems broken in different weird ways.

I did have success saving the file from omniverse, and loading that into Houdini. This might be the answer in the short term until Sketchfab make changes their end.

  • Download omniverse, from their launcher, install composer
  • File -> Open, load the usdz
  • Switch to the animation layout
  • Expand the outliner to find the skeleton, its buried a few levels down in the SkinnedMeshes group
  • Find the 'Scene' node underneath that
  • Drag the scene node onto the shark mesh in the viewport
  • This binds the animation to the mesh, scrub the timeline to see it play
  • File -> Save, save it next to your usdz file with a new name

Now to load that into houdini and see it animate:

  • In houdini, create a usd character import node in sops
  • Point it to the new usd file
  • Set the skelroot to the skeleton in the usd file ( /scene/SkinnedMeshes/Sketchfab_model/root/GLTF_SceneRootNode/RootNode_0_0/skeletal_3_3/GLTF_created_0/GLTF_created_0_rootJoint/shark_root_4_4/skin0 )
  • Attach a joint deform node, you should see the shark swimming.

How to desaturate image in Houdini (COP2 Network)? 2024年1月25日1:40

HSV node, turn saturation scale down.