Website URL

Skype

Name

Location

Interests

I want to start working on a short film next month and my plan is to create as much of it as I can in Houdini. If my film has characters with, hair, and clothing dynamics, what is the best workflow to handle this?
Is it possible to have all the dynamics inside the character asset with a switch that turns them on and off? like an animation mode, and then a simulation/rendering mode?

Hi everyone,
this is my first time writing tools with python, so maybe I got something completely wrong here. I want to built a HDA to setup the houdini scene by selecting project, sequence and shot number. For that I created a HDA with a ordered menu and a drop down listing all available projects. The menu is created by a python function in the python module and then called in the menu script area. I then have another ordered menu to select from all the available sequences based on the selected project. A callback script on the project drop down is triggering the create menu function for the sequence drop down. I then need to know the currently selected project in the project drop down. I tried getting this information with the node eval parm, but this is only kind of working. It returns the right token, but as an integer and multiple times for each menu item causing a long loop. I also tried using the menu parm template, but I cannot access the data correctly.
What would be the best way to geht the menu label as a string for the currently selected item in the drop down menu?
Thanks
Here is some of the code I used:
#ProjectMenuDropDown
def projectMenu():
import os
projectPath = 'H:/'
projectList = os.listdir(projectPath)
projectMenu=[]
for i, item in enumerate(projectList):
projectMenu.append(i)
projectMenu.append(item)
return projectMenu
#Call function in menu script
hou.pwd().hdaModule().projectMenu()
#Callback function to trigger sequence menu in python module
hou.phm().sequenceMenu(kwargs)
#SequenceMenuDropDown
#SequenceMenu
def sequenceMenu(kwargs):
import os
node = kwargs['node']
projSelect = node.parm('project').eval()

Hi , I am building currently building an HDA with an important interface (lots of tabs and multiParm list inside multiParm list .. ) so I wanted to use python in "Menu Script" to list a string array stored in the detail attribute to populate on of my ordered menu, after I finally got it to work on a null to experiment then I tried to replace my previous ordered menu with manually typed string with the new one using python script and houdini crashes each time I try. What's weird is that I am able to read the channel and access the value with no problem outside the HDA. Does anyone knows why this is happening, am I missing something here ?
Edit : It seems that when I try to return the string inside the HDA, it gives me -1, but even if I just print that value, houdini still crashes and why it return that value only inside the HDA ? Also when I enable "Use Menu Item Token as Value" I am able to return the corresponding ID of my selection without crash, but I want the string value of course.
The python script I use :
node = hou.pwd()
geo = node.geometry()
menu = []
data_list = geo.stringListAttribValue("data_list")
for data in data_list:
menu.append(data)
menu.append(data)
return menu

Hello odforce!
So I wanted to share the 1st version of a HDA I created. I really love the power of digital assets and I'm trying to improve my skills at creating them. Although this isn't the most useful asset, I'm hoping that some people can get enjoyment out of it and thought it was a fun exercise. I'd appreciate any feedback or critiques to help improve it! The download link for the NC HDA is the description of the vimeo video. Happy donuting!
Video & Link

Houdini tool that expands on the functionality of polyexpand2d.
Allows you to create detailed bevel profiles from polylines with clean, non-intersecting topology.
I built it while trying to create a procedural gothic tracery system. I liked the topology created by polyexpand2d, but the divisions parameter and edgedist attribute just wouldn't let me get detailed enough bevel profiles.
It would be great if sidefx could wrap something like this up into the polyexpand2d node itself as a third output option (eg. offset curves | offset surfaces | bevelled).
I hope someone finds it useful
mt_polyExpandPlus_1.0.hda

Hi
I'm trying to create a boundingbox handle in my hda much like the boundingbox handle in the new uvlayout SOP. And exactly like in the uvlayout sop I want to modify it in the uv viewport.
I did a simple rightclick and "export handle to digital asset" and it creates the handle but only in 3d viewport.
so my question is if there's a easy way to tell the handle in what viewport it should operate?

Notice that i am not well at English, thanks to you guys to look my topic...
I made a digital assets that need to show the inside geo but not the output one.
I know that appoint the target geo use Guide Geometry at the node tab of type properties will work, but it only works if the hda is selected, like bend sop (or others) do
so I have to add another output to hda, and connected with a null node and template it to always show the target geo.
But I really do not want to achieve the aim use this method.
Does anybody knows other way to always show geo guide whether the hda is or not selected?
Thank you.

Im currently using multiple geometry inputs from Unreal into an HDA via the + symbol on the HDA rollout. It works fine for passing the separate assets into the HDA, but I'm trying to separate the geometry so I can randomize which object I use at different parts of the HDA.
The documentation states:
“When there is more than one geometry set as input, the geometries can be differentiated in the Digital Asset with the Unreal to Houdini attribute unreal_input_mesh_name which is created on the input geometry primitives.”
This is great, except that I'm trying to make the HDA procedural in that I dont want to have to manually separate the inputs inside of houdini based on an exact mesh string attribute value because the tool could have infinite amounts of inputs. Ideally the marshalling from Unreal to Houdini would include an index of the asset as a primitive attribute as well but currently it doesnt. I was trying to figure out a way to compare strings in such a way that I dont have to specify exact values as that defeats the purpose of being able to change the inputs in Unreal on the fly, but I cant really come up with clean way to convert the unique string attributes into a usable format. Connectivity SOP would work except that some of the input assets are made of multiple subobjects so that doesnt work in this case. The only attribute differentiating the input assets from Unreal is that prim string attribute 'unreal_input_mesh_name' which is an exact reference of the mesh in the content browser in Unreal.
Any ideas on how to split primitives into a group or assign an attribute based solely on a unique string value?

Hello all,
I have a question that apparently has been asked a few times in here and in the side fx forums but i still couldn't find the answer that i'm looking for and maybe some expert can help. So, i created an asset in houdini to use in Maya through the "houdini engine" plugin and it works perfectly, Side FX nailed the connection between the softwares. However, after closing Houdini, turning the machine off, going home, comeback to work and turn everything on again, it seems that i lost the ability to edit the asset throught the "type properties" window.
First, the "type properties" window doesn't accept anything that i drag and drop in it. Second, even if i manually create parameters in the window, nothing is saved. Does anyone know if i can edit an asset after the Houdini scene is closed? If so, what would be the procedure? I'm using Houdini 16.5.405.
Any help would be appreciated. Thanks!

Hi there,
I have a python script which traverses a subnetworks GEO nodes and adds a new node (which is a HDA) via createOutputNode. The added node itself is bypassed, so it should not cook (yet). The problem I'm having is that the creation of the HDA nodes takes 0.5 seconds each and the subnetwork (created from a CAD file in another step before) can have several thousand GEO nodes. This results in extreme loading times and very slugish UI performance even with 64 GB of memory.
If I leave out the creation of the HDA at each GEO node of the subnetwork, the issues with performance and crashiness are gone. (Please note, that the HDA node is bypassed in the above case and will not cook).
The reason why I'm adding the HDA into the GEO nodes of the subnetwork is that I need to export the subnetwork later on via a FBX ROP for example with all the NULL nodes (e.g. transform hierarchy) still intact. Adding the HDA at the "end" of the GEOs node pipeline allows me to do this. Basically the HDA processed incoming geo and adds UVs, polyreduces and bakes textures for the individual GEO nodes of the network.
I already tried to rewrite/rewire the HDA to be able to iterate over primitive attributes such as "path" and have the whole content of the subnetwork processed from a single HDA instance. This works, but I'm loosing the link to the subnetwork and have to write out many individual FBX files etc.
Now my question: Is it possible to speed up the creation of the HDA node somehow? I already tried setting the updatemode to manual, which did not change the creation time. Copying instead of creating maybe?

i am creating a new HDA with python and unfurtunally doesnt use the parms that are in the subnet, so how can i create a blank new parmTemplate so later on i can add the spare parameters to it?
thanks guys.

Hi, bit confused how I would go about setting a conditional statement (like you do in the 'Hide When' field) but for my default value? Anyone done this?
edit: yea i was overthinking that, just needed to type a normal if statement expression in for the default.

Hello,
I am currently working on a digital asset and I seem to have hit a wall. I would like the user to be able to select the points (to be used within the hda) from the viewport. Similar to what you can do with a delete operator using the arrow. However I am not able to implement this particle interface element (see pictured…arrow circled) and was wondering if anyone has any ideas on how to make this happen.
Thanks,
Rushil

Hello all,
I'm currently working on a digital asset that creates sections from a given model. Each of these sections will have different values for different sections (the attribute values of all points within a section remain the same). Since the number of sections can vary, I've decided to go with the multiparm list to handle input.
Since I've never used the multiparm before, I'm not sure how I can use these values within the HDA. From what I've been able to find here and on odforce, python seems like a good way to go. I've never used python in houdini so I'm a bit lost. How would I use python to accept the user values and set it for the points of the corresponding sections?
Any help or leads will be extremely helpful.
Pictures attached.
Thanks,
Rushil

Hello,
I was having trouble generating my autorig, getting the message “autorig failed to generate”. But what was worse was that if I opened my previous file and attempted to either; load autorig from current session, create new autorig from current session, or create new autorig from hda file on disk, the autorig was not aligned or labelled correctly.I'm attaching my file, any advice would be greatly appreciated, thank you.
ToastGuy_b_rig_asset
ToastGuy_b.json
ToastRig8.hip

Hey all.
I've built quite a few Houdini assets for use in UE4. Some of them involve using curves as inputs, whereas I have the Curve node set as Editable in the asset, so you can move the points in unreal. I'm having an issue where I can use the assets as they're intended to be upon opening the project, but if I switch to working with regular meshes then come back to the HDAs, the curve handles are gone.
In the documentation, it is mentioned that you just have to select an object with curve controls enabled in order to be able to select the curve points and transform them individually. There is a warning about items that have multiple components besides a curve component being difficult to select (i.e. things with mesh, collision, etc). The recommended solution is using the world outliner to select the curve objects, but obviously that doesn't work for Houdini assets as they are just one item in the outline.
Am I missing something about component selection modes in UE4? It's fixable by reopening the project, but that's a little bit excessive to close and reopen projects just to have functionality with my curves on HDAs. Should I switch over to actual curve input from unreal using an object merge? Is that input method more dependable to re-select the asset and adjust curves after the initial drop-in?
I can provide HDAs or video demonstrations if needed.

Hello, we built an asset to cache and version our sims/caches
I extended it to be able to use the renderfarm to sim things out. To do this I added a ROP in the asset, with the HQueue simulation node. I then use the topmost interface/parameters to 'click' on the 'Submit Job' button on that HQueue Simulation node down below.
However, unless I do a 'allow editing of contents' on my HDA, it fails on the farm with the following code:
.........................
ImportError: No module named sgtk
Traceback (most recent call last):
File "/our-hou-path/scripts/hqueue/hq_run_sim_without_slices.py", line 4, in <module>
hqlib.callFunctionWithHQParms(hqlib.runSimulationWithoutSlices)
File "/our-hou-path/linux/houdini/scripts/hqueue/hqlib.py", line 1862, in callFunctionWithHQParms
return function(**kwargs)
File "/our-hou-path/linux/houdini/scripts/hqueue/hqlib.py", line 1575, in runSimulationWithoutSlices
alf_prog_parm.set(1)
File "/hou-shared-path/shared/houdini_distros/hfs.linux-x86_64/houdini/python2.7libs/hou.py", line 34294, in set
return _hou.Parm_set(*args)
hou.PermissionError: Failed to modify node or parameter because of a permission error. Possible causes include locked assets, takes, product permissions or user specified permissions
It seems that unless I don't unlock the asset, the submit job can't be clicked.
Here's how i linked the interface button to the submit button
Thanks for your input.

Hey everyone
I have an ordered menu in my HDA that gets populated by a python script based on an attribute. The name of the menu is data_source:
if (geo.attribValue('nHDU') > 1):
return ("0", "Primary", "1", "Extension")
else:
return ("0", "Primary")
I'm trying to access this token value from an internal python node using this:
value = hou.evalParm("../data_source")
Now I know for sure that the nHDU value is >1 and the two menu items are being populated. Problem is, no matter what I select on the menu, I always get a value 0. It works if I add it directly to the ordered menu without using a script. But that defeats the purpose because it should depend on the attribute nHDU. Could someone tell me what's happening here? Thanks.