Exporting from Houdini

   25366   9   2
User Avatar
Member
11 posts
Joined: June 2014
Offline
Where is a tutorial that actually SHOWS YOU how to properly “render/export” DOP sims (whitewater_ hairgroom_ hairgen_ETC) out of Houdini and into other softwares? I am extremely frustrated as I have done at least 50 tutorials on different facets of this software but no one seems to actually go through the motions of exporting and importing.(MIX training latest game dev live traning was great for that stuff) I need to get these sims into C4D/Maya for rendering.


When I export from the file tab either certain things don't work in my FBX file

Or if I export alembic I get this .file that isn't even .abc


This is 3D jargon that I obviously don't understand but where the hell do I learn? These Houdini General overviews DONT explain this stuff. I have done Lynda.com and Digital Tutors. SHOW ME a tutorial that is about preparing everything in the network for export.

Thank you.
User Avatar
Member
4189 posts
Joined: June 2012
Offline
Well, it's not simple - you have to check the file formats to see what can be sent across - i.e. sim data can be vdb, or points with attributes. In H16, hair should be points with attributes I think. .abc might be fine for hair but not flip sims as it is deforming point caches.

You've hit the problem of tutorials, that they only address a specific linear chain of events.

NB Filmbox format is a joke in general as it's highly unreliable.
Edited by anon_user_37409885 - March 26, 2017 16:06:13
User Avatar
Member
11 posts
Joined: June 2014
Offline
Thank you for that terminology I can further explore what it all means haha.

If someone could list just the necessary nodes I should be looking to connect my auto dop networks to an output node that would be amazing.
Edited by Sam Rolfes - March 26, 2017 17:22:03
User Avatar
Member
11 posts
Joined: Oct. 2008
Offline
At the risk of giving you some bad info because I am just learning Houdini…

I found that you have to put the “.abc” with the file name when you specify the output path. At least the default settings produced an alembic file that was readable in Blender.

Try something simple first.
Set up the animation of an object (translating or rotating).
In the timeline, set the start and end times.
In the Output Network, add an Alembic node.
In the parameters of this node, set the output to render the complete animation (not the current frame).
Set the path for the the output with a file name that includes “.abc” (test.abc)
Click render to disk
Now try importing that file into your other program.

If that works try it with the animation of a simulation.

BTW, alembic files can be large. For my project, I am leaning toward using a workflow in which the Houdini stuff is rendered in Mantra and composited with the output from Blender.
User Avatar
Member
11 posts
Joined: June 2014
Offline
jrboddie

Thank you I am trying this out. I would just get a .file from exporting alembic under the file tab, so that kinda makes sense. fingers crossed.
User Avatar
Staff
2540 posts
Joined: July 2005
Offline
It can be confusing when to cache and what file formats to generate. And getting the correct file extension is critical to success.

Houdini is very different from other apps in that you invariably use a Node of type ROP for Render Output Driver to export geometry.
The only exception is the File > Export > Alembic or FBX options from the menu but I would recommend not to use this option and to learn to use either an Alembic ROP or an FBX ROP to export parts or all of your scene. The various SOPs used for exporting invariably are wrappers around various ROP types. Only exception is the File SOP wrapped up in the very useful File Cache SOP.

Caching Simulations for re-working:
When you are doing a large simulation, it is common to cache the raw results of the simulation in geometry SOPs using the File Cache SOP. This File Cache SOP is used in many shelf tool set-up. It can both write and read geometry to disk. Or it can pass the geometry through. It tries it's best in Automatic mode to make sure files on disk remain up to date and not overwritten if not necessary. But this node isn't generally intended to create geometry to transfer over to other applications. You “could” absolutely use a File Cache SOP to generate export geometry for use in other software packages but that is not the intention. You have to be very careful to make sure only the primitives that are supported are contained in the geometry. At least that is the strategy I try to use.

Caching Geometry/Simulations for export to other applications or to Houdini/Mantra:
It's up to you to determine where in the SOP geometry chain you wish to export from. That is why you have a Display and Render flag on SOPs. You can separate them if you wish using Ctrl-Click to set the Render flag.
You can have as many export locations as you want. You also have a choice as to whether you cache with nodes in the SOP geometry context or from the /out Output context. It's just packaging and approach. If you are not utilizing a farm to process scenes you can safely export your scene date directly from SOPs. Only caveat is that FBX is only accessible from /out using the FBX ROP Render OutPut node.


SOP level geometry exports
Geometry Exports:
Use the ROP Output Driver SOP for formally exporting geometry to 3rd party applications. Just wire it in the network, select the appropriate file extension and go.

Common file extensions:
.bgeo > Houdini's native geometry format. All primitive types are supported.

.vdb > OpenVDB volume format export extension. Note that this ONLY supports VDB grids/volumes. Please remove any and all other primitive types from the target SOP you wish to output from. If you do have a mixed bag of geometry in your SOP chain, use a Delete SOP and set Geometry Type to “VDB” and set Operation to “Delete Non-Selected” to keep any and all VDB type geometry.

.obj > Wavefront's ancient obj format but it is still widely supported. Only polygon data is supported so make sure you delete everything but polygons. You can use the Delete SOP as it has a menu to choose polygons only and then enable delete non-selected to keep the polygons but trash everything else.

.iges > an ancient cad format that still keeps on going. It is a bastardized extended format with hundreds of different variants. It's best to strip out everything and keep only polygons and NURBs surfaces for this export type.

.lw > Lightwave's polygon format. As with .obj, only polygons are supported.

.eps and .ai > Yes you can save geometry as .eps 2D vector lifework or .ai for Adobe Illustrator but this variant has limited geometry support. Keep things to Bezier and NURBs closed faces and simple polygon shapes. Best if you flatten everything to the XY plane as well. I personally don't use this export option. It is very limited.

.dxf > AutoCAD's default Data eXchange Format. This supports polygons, open and closed curves, NURBs curves and surfaces along with Bezier curves and surfaces.

.abc > Alembic geometry can be cached directly from a SOP. Careful as this is NOT how you support round-tripping of alembic archives. Better to use the Alembic Output Driver SOP imho. Use this to export your geometry as a single flat alembic archive. Use the Name SOP along with partitioning of the geometry to add archive information. This supports a limited subset of geometry from polygons and even better polysoup type primitives, Catmul-Clark Rendderman type subdivided meshes, points, open curves such as hair wires. It does not support volumes, NURBs, Beziers or anything else for that matter.


Scene Level Exports:
Use the ROP Alembic Output Driver SOP.
Extension to use is .abc
As we all know, Alembic archives are a complete scene level format used to capture the entire scene to be lit and rendered out. It can contain lights, cameras, and entire geometry hierarchies. You can create an alembic archive that only contains geometry. This is why it is a scene level output driver inside SOPs. This is also why in the Hierarchy tab, you can specify a root object which can be the object that contains the geometry in this object you wish to export.
Alembic format does not support all the available primitive types in Houdini. To repeat the above list:

.abc > Use this to export your geometry as a single flat alembic archive. Use the Name SOP along with partitioning of the geometry to add archive information.
This supports a limited subset of geometry from polygons and even better polysoup type primitives, Catmul-Clark Rendderman type subdivided meshes, points, open curves such as hair wires. It does NOT support volumes, VDB grids, NURBs, Beziers or anything else for that matter.

Alembic archives are quite unique in that they support deforming geometry such as characters. As such it requires you to input a frame range to capture any deforming geometry. Just output a single frame if there is no deforming geometry.
The Alembic data format doesn't take too kindly to meshes that change topology such as a flip fluid surface. Instead of using an efficient archive method where transform deltas on top of a mesh are kept, a copy of the mesh at every frame is inserted in to the alembic archive with no benefits of motion blur.
Oh well…



/out level geometry exports
For a more organized and formalized approach to exporting geometry out to other applications, you can go to the /out directory and add specialized geometry type ROP Render OutPut drivers. They do exactly what is listed above in SOPs but in /out where you can chain several of these ROPs together to create a dependency output graph where you can render all of them out at the same time.


Geometry Export ROPs:

Use the Geometry ROP for formally exporting geometry to 3rd party applications
Scene Export ROPs:
ROP Alembic Output Driver SOP > See the ROP Alembic Output Driver SOP above.

Filmbox FBX ROP:
File extension is .fbx
As with the Alembic Output Driver, this is a scene export filetype that contains scene data intended to be lit and rendered. It is also a file type that is good for containing performance motion captured rig data. Houdini uses .fbx as a standard transfer data format for character agents and as input for crowds. You can also use it to export scene data such as cameras, lights, materials and geometry.
FBX also has geometry limitations (surprise surprise): It supports, polygons, NURBs, Beziers, and that's pretty much it. It doesn't support geometry that changes in topology.


—-

Houdini's own native formats support all primitive types. Too bad all the other software evolved in a way that this simply doesn't exist and to make matters worse, many 3rd party file types were created to work around deficiencies around these other applications which never considered Houdini's vast array of data types. I'm looking at you Alembic! One fear is that USD may be evolving in a similar fashion pointing to the lowest common denominator…

OpenVDB on the other hand is a fantastic archive format for Volumetric data. No wonder that Arnold supports direct rendering of OpenVDB grids.

Because of all this you need to develop a strategy to export your geometry out to other applications. Trial and error. It's just the way it is. Or you can use the super open File SOP, Alembic SOP and FBX import from the File > Import menu and add Houdini geometry then keep everything in Houdini and render with Mantra.


Or there are for purchase 3rd party options as well to help you get data from app to app.

As well, it is worth a Google search to see if there are some enterprising users that have written small wrapper apps to import and export geometry about. You never know what is out there until you look.
There's at least one school like the old school!
User Avatar
Member
15 posts
Joined: March 2017
Offline
I made a simple simulation with breaking glass and liquid. I trieв to export liquid mesh and broken glass mesh to obj format and import them to 3rd party software to render. Both meshes are ok, but their mutual position is wrong. How iss possible to keep meshes position during export?
User Avatar
Member
7727 posts
Joined: Sept. 2011
Online
glmr
I made a simple simulation with breaking glass and liquid. I trieв to export liquid mesh and broken glass mesh to obj format and import them to 3rd party software to render. Both meshes are ok, but their mutual position is wrong. How iss possible to keep meshes position during export?

It's hard to say what happened without a scene file, but a guess is that that the objects being exported from contain scene transformations. To apply scene transformations so that exported geometry is in world space, switch the “Transform” dropdown on the geometry rop from “None” to “Into World Space.”

Alternatively, export the objects into a scene format that supports transformations such as alembic, or fbx.
User Avatar
Member
15 posts
Joined: March 2017
Offline
Thanks. I tried also to do not check “Preserve World space positions”. It looks wrong but works correct
User Avatar
Member
60 posts
Joined: Nov. 2019
Offline
Quote from Old Staff:

"SOP level geometry exports
Geometry Exports:
Use the ROP Output Driver SOP for formally exporting geometry to 3rd party applications. Just wire it in the network, select the appropriate file extension and go."

Where can i find the ROP Output Driver SOP node? …… does it have a different name now?
Edited by Dazzer123 - Nov. 29, 2019 18:50:03
  • Quick Links