WIP: Houdini Engine for Blender

   18684   8   4
User Avatar
Member
6 posts
Joined: Jan. 2016
Offline
Hello,

I'd like to present my work for embedding the Houdini Engine within Blender:



For legal issues regarding the GPL license used by Blender, I had to split this project in three:

  • Open Mesh Effect [openmesheffect.org]: An open source standard a bit like the Houdini Engine API in a way, based on OpenFX (the API for 2D compositing nodes developed by Foundry)
  • Open Mesh Effect For Blender [github.com]: A branch of Blender 2.83 LTS that implements this API, which means it can load arbitrary C-based plugins as modifiers (the non-destructive effect stack in Blender, similar to a chain of nodes in Houdini)
  • MfxHoudini [github.com], an Open Mesh Effect plugin that wraps the Houdini Engine and give access to the content of an HDA

It was not possible to just make a branch of Blender with support for Houdini Engine because the later not being open source was conflicting with the GPL, but split like this the non open source part is distributed separately and loaded only at runtime.

Any feedback about either the usage or the code is welcome!
Edited by eliemichel - June 22, 2020 03:37:43
User Avatar
Member
642 posts
Joined: June 2006
Offline
nice Job!

i think with Thrift it could be possible to get a open source Houdini Engine integration because the communication to Houdini Engine would be over IPC. like this there is no SESI source code required for blender.

https://www.sidefx.com/docs/hengine/_h_a_p_i__sessions.html#HAPI_Sessions_Thrift_Server [www.sidefx.com]

https://www.sidefx.com/tutorials/houdini-engine-2-masterclass-thin-client/ [www.sidefx.com]

BTW: i just realized you are the person who made the awesome Google Maps Importer. nice 2.0 !!!!
Edited by mandrake0 - June 23, 2020 19:38:57
User Avatar
Member
6 posts
Joined: Jan. 2016
Offline
Indeed, I didn't know much about Thrift (actually I just realized with the video that this is a thing beyond Houdini) but is there a specification of the RPC endpoints used by Houdini? Or is it the very same API except in Thrift's “language”?

Actually I'm already using Thrift in MfxHoudini because with my plug-in based architecture I couldn't find a way to share the same HAPI session between all Blender objects and Thrift was the only way to maintain more than one session afaik.

If starting know, I'd clearly look at how to make an open source drop in replacement to libHARC, but know that I've been in the process of thinking about an Open Mesh Effect API, I got attached to it and started believing that it is something interesting beyond this Houdini-Blender project. Here is a blogpost where I present the intention: https://blog.exppad.com/article/the-need-for-open-mesh-effect [blog.exppad.com]

For instance I am planning on doing it the other way around too: a Houdini node that loads an Open Mesh Effect plugin, so that a developper could write C++ plugins once for both Blender and Houdini. The inspiration and basis is OpenFX, which allows plugins developpers to write once for Nuke+After+Fusion+Natron+… because they all implement this same plugin architecture.

PS: Yeah it's me for the Google Maps importer, though it's a completely different project. ^^
Edited by eliemichel - June 25, 2020 06:11:40
User Avatar
Member
642 posts
Joined: June 2006
Offline
eliemichel
Indeed, I did kno much about Thrift (actually I just realized with the video that this is a thing beyond Houdini) but is there a specification of the RPC endpoints used by Houdini? Or is it the very same API except in Thrift's “language”?

the files are under the installation folder: engine/thrift
Windows: C:\Program Files\Side Effects Software\Houdini 18.0.xxx\engine\thrift

the idea to have a universal plugin system is surly not a easy task and OpenFX is a nice concept to over come the hurdles for the plugin developers.

on the end of your nice blogpost you also mentioned USD schema. what if the data format would be USD and Open Mesh Effect is just a data flow manager that can start program's (DCC, custom program, background processes) and offer a Parameter definition for DCC GUI(JSON schema).
Or even better you can define the file format/pipe/protocol that should be the inter communication format for the program's. like that it could be image, 3d or what ever type of data.

Someting like Verse: https://www.quelsolaar.com/verse/ [www.quelsolaar.com]
Nvidia does something in that direction: https://www.youtube.com/watch?v=rVsp6o9t5nY [www.youtube.com]
Edited by mandrake0 - June 24, 2020 07:21:43
User Avatar
Member
6 posts
Joined: Jan. 2016
Offline
the files are under the installation folder: engine/thrift
Windows: C:\Program Files\Side Effects Software\Houdini 18.0.xxx\engine\thrift

Thanks I found the thrift files, they are very interesting for retroengineering but I think the "This software is proprietary and is not to be reproduced" prevents me from using it for my own implementation. Though it's basically a header file/API and the jurisprudence about the possibility to license APIs is a bit blurry iirc. Anyway, I'll stick with Open Mesh Effect to be sure.

what if the data format would be USD and Open Mesh Effect is just a data flow manager that can start program's (DCC, custom program, background processes)

I am not sure about what you call data flow manager, but the goal of an mfx plugin in general is to be a kind of dll loaded at runtime. The case of bridges with other DCCs is possible, but is only one use case among others. I mentioned USD indeed to be the file format used to share graphes of mfx plugins and have a unified format to share modifiers stacks among DCCs.

I did not know Verse, what is its status? The fact that it features a screenshot of Blender 2.4 in the homepage makes it feel… a bit old. ^^
User Avatar
Member
43 posts
Joined: Nov. 2013
Offline
Can you elaborate on the step “Ensure Houdini Engine is in your PATH.”?

I have tried adding C:\Program Files\Side Effects Software\Houdini 18.0.499\engine to the windows path. The Modifier shows the message “Could not load ofx plugins!”

Also, the file extension for indie users is hdalc, will this cause issues?
User Avatar
Member
6 posts
Joined: Jan. 2016
Offline
It is C:\Program Files\Side Effects Software\Houdini 18.0.499\binthat must be in PATH. I am not sure for hdalc, let me know. Afaik the Houdini Engine has a more restrictive license when used outside of authorized vendors like Unreal/Unity/etc. :/
User Avatar
Member
642 posts
Joined: June 2006
Offline
eliemichel
I did not know Verse, what is its status? The fact that it features a screenshot of Blender 2.4 in the homepage makes it feel… a bit old. ^^

it is no more active even there was a EU funding for it. the target was that verse is a server where you can store the project and assets and you can edit the data with any type of DCC software.
User Avatar
Member
14 posts
Joined: March 2019
Offline
I`m really waiting release this addon!

honestly i don`t know how to compile with c# extra so, i hope it will be access easily next release
  • Quick Links