Hello from Houdini Engine

152 views
Skip to first unread message

Pavlo Penenko

unread,
Apr 10, 2015, 11:20:55 AM4/10/15
to cort...@googlegroups.com
Hi guys,

I'm working on Houdini Engine here at SideFX and I have previously happily used Cortex in production. I guess the two frameworks are similar in that they embed procedural functionality in a variety of hosts.

So I've been thinking if it would make sense to implement a Houdini Engine integration with Cortex (with Cortex as the host). This integration would basically go in the opposite direction to IECoreHoudini and expose the core of Houdini to all the current Cortex hosts. There are currently Houdini Engine plugins developed by us for Maya, Unity and Unreal but a Cortex integration would bring Houdini Engine to Nuke, RenderMan/3delight (HDA procedurals!) etc.

Just wanted to hear opinions of Cortex devs and users on this idea. The Houdini Engine API is public and documented here: http://www.sidefx.com/docs/hengine1.9/

Thanks in advance,
Pavlo

Andrew Kaufman

unread,
Apr 10, 2015, 3:49:57 PM4/10/15
to cort...@googlegroups.com
Hi Pavlo,

That sounds like a pretty interesting project. It's nice to hear that you've had previous positive experiences with Cortex in production. If you don't mind my asking, whereabouts were you using it? I'm only aware of a few studio use cases outside of Image Engine, and I'm always keen to hear about more.

At Image Engine, we're certainly interested in Houdini Engine and seeing where it can fit into our pipeline. The idea of running HDAs at render time has come up in several cases for us really. We'd probably be more keen to see them exposed in Gaffer directly rather than as Cortex Ops/Procedurals I think. That would make them usable for RenderMan/3delight, Arnold, and Appleseed, using the graph based lighting workflows that we have transitioned to lately. It'd also let us take advantage of Gaffer's multithreaded scene processing (assuming Houdini Engine can support that) and context based caching. We've even had ideas of embedding Gaffer graphs inside the Cortex nodes in the various DCCs, so going the Gaffer route could still potentially get Houdini Engine into Nuke as well.

Let us know what you think about that approach, and feel free to ask any questions as you get on with your investigations and implementation.

Cheers,
Andrew

--
--
You received this message because you are subscribed to the "cortexdev" group.
To post to this group, send email to cort...@googlegroups.com
To unsubscribe from this group, send email to cortexdev-...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cortexdev?hl=en
---
You received this message because you are subscribed to the Google Groups "cortexdev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cortexdev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Pavlo Penenko

unread,
Apr 10, 2015, 6:04:15 PM4/10/15
to cort...@googlegroups.com, and...@image-engine.com
Hey Andrew, thanks for your feedback.

I was using Cortex at Toonbox in Toronto, together with a couple other guys who I believe read this group. It proved very handy for providing a host-agnostic interface for our procedurals written in Python.

We're primarily interested in extending the reach of Houdini Engine as much as possible, and a Cortex procedural looks like a great candidate to create a thin wrapper around Houdini Engine compatible with multiple hosts. Can you elaborate on the benefits of direct integration with Gaffer? I have to say I'm much less familiar with Gaffer but it looks rather like a stand-alone application. Can Gaffer be used to write a simple RenderMan procedural, for example?

Regarding multithreaded execution, while Houdini Engine uses the same multithreaded optimizations under the hood as Houdini, it only currently supports one scene context per process. We're currently looking into improvements in this area.

Lastly, I have to say we're only exploring the possibilities at this stage. Houdini Engine proper is just a public API to a closed-source library. SideFX has also developed and open-sourced HE plugins for Maya, Unity and Unreal and this list can grow in the future however we have limited resources...

Cheers,
Pavlo

Andrew Kaufman

unread,
Apr 10, 2015, 7:12:36 PM4/10/15
to cort...@googlegroups.com
Cool, I didn't realize that Toonbox had been using Cortex. Thanks for the update.

From a purely Image Engine point of view, direct Gaffer integration would benefit us the most because that's where we do our lighting now (embed inside Maya still, but via a Gaffer graph rather than a Cortex ProceduralHolder). Here's an older demo video on that idea. That was a little prototype, but we presented a much more full featured version at Siggraph last year, which we've been using in production for about a year or two now (sorry, still working on processing the videos for that).

The term Gaffer may be a bit confusing, because it refers to both a general purpose node graph API and UI toolkit, and to a standalone application. The later is called "gaffer gui" really. But the former can be used in many ways, even for graphs that have nothing todo with 3d data processing. We use gaffer for many things at Image Engine, including asset management, departmental workflow graphs, shader development, 3d scene building, and as a render-time procedural. There are a few more demos here.

So yes, to answer your question, you can use Gaffer to create a simple RenderMan procedural (or for any renderer supported by Cortex), but rather than "write" your procedural, you can also build it interactively via a UI. At render-time, there is a very thin rib file which basically says "here are the global options, and here is a
DynamicLoad Procedural that describes the entire scene". That procedural is called a Gaffer ScriptProcedural (and yes, it does derive from the Cortex Procedural you've used in the past). It loads up the gaffer script in question, builds the 3d scene from one of the output nodes on the fly, and hands that data to the renderer.

The idea I was hoping for with Houdini Engine is for it to be used as a single node (or many nodes) in that gaffer scene. So at render time, RenderMan/3delight/Arnold/Appleseed would load up the Gaffer ScriptProcedural and evaluate the output node, which would in turn evaluate the upstream HoudiniEngine nodes, and voila, Houdini Engine is creating on-demand geometry inside any renderer that Cortex supports. But it can also be used in non-rendering contexts to create on-demand geometry for any other use of Gaffer we may have, such as post-processing models and streaming them live to Maya or Nuke, or writing them to disk as Alembics.

Anyways, hope that all clarifies things rather than confuses. And fair enough, you're just exploring possibilities. I just wanted to pipe up and say, that possibility sounds cool to us here at IE, and this other possibility sounds even cooler to us, and we're happy to help advise on implementation details if anyone at SideFx or elsewhere wants to take on either of those projects.

Cheers,
Andrew
Reply all
Reply to author
Forward
0 new messages