Jump to content

Search the Community

Showing results for tags 'hda'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Lounge/General chat
    • Education
    • Jobs
    • Marketplace
  • Houdini
    • General Houdini Questions
    • Effects
    • Modeling
    • Animation & Rigging
    • Lighting & Rendering
    • Compositing
    • Games
    • Tools (HDA's etc.)
  • Coders Corner
    • HDK : Houdini Development Kit
    • Scripting
    • Shaders
  • Art and Challenges
    • Finished Work
    • Work in Progress
    • VFX Challenge
    • Effects Challenge Archive
  • Systems and Other Applications
    • Other 3d Packages
    • Operating Systems
    • Hardware
    • Pipeline
  • od|force
    • Feedback, Suggestions, Bugs

Found 195 results

  1. Involute Gear HDA

    There are probably easier ways to get gear models but hey. Spur and helix only because if I have to look at more math I only barely grasp I'll cry. I'll maybe come back for bevel/hypoid/planetary/worm some other time. I'm a hobbyist and this marks the first time I've shared anything with anyone so... my horn, toot, etc. Not blackboxed or anything if you want to have a gander. Peace. buildgear.hdalc
  2. HDA Module double evaluates

    i am using on Update script to test a function, it was working fine until it started double printing data. i replaced everything with just a print function and still the problem remains. is there a fix for this? i tried the same in a python sop and it only evaluates once as it should
  3. HDA based on another HDA

    Hi I want to create an HDA based in another HDA as started point, I want to have the same structure (node tree) and same parameters, but different HDA name of course. Thanks for your help
  4. how can i delete/create nodes in a locked hda from the python module? i am using a button with a callback script that runs a delete() function for n in node.children(): n.destroy(True) i get an error message that i don't have permissions because the asset is locked. Is there a way around this? callback_parm_kwargs_hda_node.hip
  5. Hi there, I have been making a HDA that contains a python script in the 'python module' section. The goal is to wire multiple mantra nodes into this single HDA and then correctly generate multiple setups inside the HDA that configure the rendering setup to be handled by our farm running Afanacy. The tool is working pretty nicely on its own, but once I put multiple nodes in the OUT network and generate a second one it also affects the other nodes. I thought this was because I had global variables in my python script, so I got rid of them and made a 'dataObject' class that is generated on the single nodes and passed down to all functions. however, this did not solve the issue. I figure it has something to do with scope but can't figure out what it is. I'll put the code down here below. Feel free to give any tips, I don't have much experience with Houdini python in particular. import hou import os import re from os import path alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] class dataObject: renderasset = hou.Node base_ifd_generator = hou.Node base_distributed_renderer = hou.Node base_afanacy_merger = hou.Node master_merger = hou.Node mantra_duplicates = [] # List of all mantra nodes that will be compied from inputs. Ordered by input index ifd_generators = [] # List of all Afanacy nodes that are configured as IFD generators distributed_renderers = [] # List of all afanacy nodes that are configured as renderers afanacy_mergers = [] # List of all afanacy nodes that are only used for merging the different stages. def reset(data): for mantra in data.mantra_duplicates: mantra.destroy() for ifd in data.ifd_generators: ifd.destroy() for renderer in data.distributed_renderers: renderer.destroy() for merger in data.afanacy_mergers: merger.destroy() del data.mantra_duplicates[:] del data.ifd_generators[:] del data.distributed_renderers[:] del data.afanacy_mergers[:] def getOptions(data): autoversioning = data.renderasset.parm('autoversion').eval() print("automatic versioning set to; " + str(autoversioning)) def generate(thisnode): data = dataObject() data.renderasset = hou.node(thisnode.path()) print(data.renderasset.name()) data.base_ifd_generator = hou.node(thisnode.path()).glob("ifd_generator_SETUP") data.base_distributed_renderer = hou.node(thisnode.path()).glob("distributed_renderer_SETUP") data.base_afanacy_merger = hou.node(thisnode.path()).glob("afanasy_merge_SETUP") data.master_merger = hou.node(thisnode.path()).glob("*MASTER_MERGE*") reset(data) getOptions(data) configureRenderers(data) print("Internal network for node '" + data.renderasset.name() + "' has been generated.") def submit(): getOptions() size = len(data.mantra_duplicates) if size < 1: print("WARNING: render asset should first generate an internal network before submitting.") else: checkVersions() data.master_merger[0].parm('submit').pressButton() def configureRenderers(data): data.master_merger[0].setParms({ "job_name" : data.renderasset.parm('jobname').eval() }) inputs = data.renderasset.inputs() print("name: " + str(data.renderasset.name())) for idx,value in enumerate(inputs): configureRenderSetup(data,idx, value) connectRenderSetup(data,idx) setIfdSettings(data,idx) setRendererSettings(data,idx) setMergerSettings(data,idx) layoutNetwork(data,idx) connectMasterRenderer(data) data.renderasset.layoutChildren() def computeVersion(outputPath, patternName): if path.exists(outputPath): ifd_directories = os.listdir(outputPath) pattern = re.compile(patternName) version = 0 for dir in ifd_directories: if pattern.search(dir): version += 1 return alphabet[version] def checkVersions(data): for idx, mantra in enumerate(data.mantra_duplicates): render_version = computeVersion(data.renderasset.parm('renderroot').eval(), data.renderasset.inputs()[idx].name()) ifd_version = render_version ifd_destination = data.renderasset.parm('ifdroot').eval() + "/" + "ifd_" + data.renderasset.inputs()[idx].name() + "_" + ifd_version + "/" + data.renderasset.inputs()[idx].name() + "_ifd.$F4.ifd" img_destination = data.renderasset.parm('renderroot').eval() + data.renderasset.inputs()[idx].name() + "_" + render_version + "/" + data.renderasset.inputs()[idx].name() + ".$F4.exr" mantra.setParms( { "soho_diskfile" : ifd_destination, "vm_picture" : img_destination }) def configureRenderSetup(data,inputIndex, node): data.mantra_duplicates.append(node.copyTo(data.renderasset)) data.mantra_duplicates[inputIndex].setName("MantraInput_" + str(inputIndex)) render_version = "_" + str(computeVersion(data.renderasset.parm('renderroot').eval(), data.renderasset.inputs()[inputIndex].name())) ifd_version = render_version ifd_destination = data.renderasset.parm('ifdroot').eval() + "/" + "ifd_" + data.renderasset.inputs()[inputIndex].name() + "/" + data.renderasset.inputs()[inputIndex].name() + "_ifd.$F4.ifd" img_destination = data.renderasset.parm('renderroot').eval() + data.renderasset.inputs()[inputIndex].name() + "/" + data.renderasset.inputs()[inputIndex].name() + ".$F4.exr" if bool(data.renderasset.parm('autoversion').eval()): print("autoversioning") ifd_destination = data.renderasset.parm('ifdroot').eval() + "/" + "ifd_" + data.renderasset.inputs()[inputIndex].name() + ifd_version + "/" + data.renderasset.inputs()[inputIndex].name() + "_ifd.$F4.ifd" img_destination = data.renderasset.parm('renderroot').eval() + data.renderasset.inputs()[inputIndex].name() + render_version + "/" + data.renderasset.inputs()[inputIndex].name() + ".$F4.exr" data.mantra_duplicates[inputIndex].setParms( { "soho_outputmode":1, "soho_diskfile" : ifd_destination, "vm_inlinestorage" : 1, "vm_writecheckpoint" : 0, "vm_picture" : img_destination }) data.ifd_generators.append(data.base_ifd_generator[0].copyTo(data.renderasset)) data.distributed_renderers.append(data.base_distributed_renderer[0].copyTo(data.renderasset)) data.afanacy_mergers.append(data.base_afanacy_merger[0].copyTo(data.renderasset)) def connectRenderSetup(data, inputIndex): data.ifd_generators[inputIndex].setInput(0,data.mantra_duplicates[inputIndex]) data.afanacy_mergers[inputIndex].setInput(0,data.ifd_generators[inputIndex]) data.afanacy_mergers[inputIndex].setInput(1,data.distributed_renderers[inputIndex]) def setIfdSettings(data, inputIndex): data.ifd_generators[inputIndex].setParms( { "f1" : data.mantra_duplicates[inputIndex].parm('f1'), "f2" : data.mantra_duplicates[inputIndex].parm('f2'), "enable_extended_parameters" : 1, "hosts_mask" : data.renderasset.parm('ifdhosts').eval(), "priority" : data.renderasset.parm('priority').eval() }) def setRendererSettings(data, inputIndex): data.distributed_renderers[inputIndex].setParms( { "f1" : data.mantra_duplicates[inputIndex].parm('f1'), "f2" : data.mantra_duplicates[inputIndex].parm('f2'), "cmd_files" : data.mantra_duplicates[inputIndex].parm('soho_diskfile'), "enable_extended_parameters" : 1, "hosts_mask" : data.renderasset.parm('renderhostmask').eval(), "priority" : data.renderasset.parm('priority').eval() }) def setMergerSettings(data, inputIndex): data.afanacy_mergers[inputIndex].setParms( { "f1" : data.mantra_duplicates[inputIndex].parm('f1'), "f2" : data.mantra_duplicates[inputIndex].parm('f2'), "enable_extended_parameters" : 1, "hosts_mask" : data.renderasset.parm('renderhostmask').eval(), "priority" : data.renderasset.parm('priority').eval(), "job_name" : data.renderasset.inputs()[inputIndex].name() + "_afanacy_renderer" }) def layoutNetwork(data, inputIndex): data.mantra_duplicates[inputIndex].moveToGoodPosition() data.renderasset.layoutChildren() def connectMasterRenderer(data): for i,v in enumerate(data.afanacy_mergers): print("i: " + str(i)) print("v: " + str(v.name())) print("mm: " + str(data.master_merger[0].name())) data.master_merger[0].setInput(i,v)
  6. Hello, I wrote a little python snippet which load a preset of an HDA when conditions are met. The only thing I haven't succeed is to get the HDA path without writing it exactly (if I copy paste the HDA the path need to change automatically or if I change the name of the HDA). My python node is inside the HDA so maybe there's an expression for something like this. Thank you ! EDIT : a very simple work around is just to use the opfullpath in vex and read the path back in Python.
  7. i would like to have a button to trigger a cook from my HDA. How can i go about that? Do i need a python script?
  8. Blue Text Under Node

    Hey friends quick question for you. I've searched far and wide without any success - I'm trying to add the blue text under a sop, like the mantra node has: How on earth does one go about this? It's driving me up a wall over here. Thanks fellas, mavencolby
  9. Hi! I'm using object merge (objpath) to have a default mesh in UE4 (HE2.0) and that works fine. But I'm wondering if it's possible to read UE4 datatable or a json file to fill a list of object to use with a random. And also being able to change the mesh used by select the "index" of the mesh in the list. cheers
  10. i want to call a method when OTL's parameters are updated . that is easily done with the callback script . this works ... hou.node('.').hdaModule().blah() but i want the same method to be called when there is an event. in my case when the (input) connection is changed. the problem is the even doesnt recognize hou.node('.').. after a trying a few different things... kwargs seem to work. but now the method now needs to take in the kwarg arguments to work .. dummy.hdanc scene.hipnc here is a test scene & hda for reference ... can this be done cleaner / better ?
  11. Hi all, I have a question about exporting collision using V2 of the unreal plugin: How do I process simple collision from Unreal in an HDA? I have 2 scene objects that I import using Object Merge. I have ticked "Export Colliders" in Unreal. I want to take those colliders and do something with them like transform or delete and then replace the results. I only want to make the change to the collision, not the rendered polys. (Is this even possible?) I assume I need to get the collision group name like "collision_geo_simple_sphere" and loop over the contents but I'm not sure how to do that. Any help is greatly appreciated.
  12. Hi. I'm making a tool that uses alot of instancing to assemble a level in Unity. I've come up against some issues with the way Houdini engine overrides lots of properties on each instance that you may not want. You can control a few overrides via the Unity attributes but lots of other attributes will also be overridden. Instead I found it better to revert all the overrides that occur with the instancing so that each prefab can be set correctly upfront. To do this I attach a script via the Unity script attribute which looks a bit like this: private void GetInstancedOverrides() { InstancedObjs.Clear(); foreach (var childTransform in GetComponentsInChildren<Transform>()) { if (childTransform.gameObject.name.Contains("Instance")) { InstancedObjs.Add(childTransform); } } FixedInstancedOverrides(); } private void FixedInstancedOverrides() { foreach (var childTransform in InstancedObjs) { #if UNITY_EDITOR PrefabUtility.RevertPrefabInstance(childTransform.gameObject, InteractionMode.UserAction); #endif } Debug.Log("Fixup fired"); } The issue is this fires to early and breaks rebuilds or recooking of the HDA. i used editor coroutines to delay running these functions which does work but I wanted to ask if there was a good way to latch onto the event of the HDA to say the cook or rebuild had finished?
  13. Hello evryone, I am looking for a hython command in order to list all the Operators Type Libraries as "Current HIP File", "FallBack hda definitions" or "Scanned Asset Library Directories" ... Thanks for your attention. Best regards Mathieu
  14. On one stream I have points scattered with a unity_instance attribute. On the second stream i have geo - for example a cube When i load the hda into unity the instances are not working - they dont get created at all and i only see the geo. If i load the hda with the geo (cube) disconnected from the hda output in Houdini, and rebuild in Unity then the instancing works but ofcourse i dont have my geo Why is this happening?! Any tips i have missed in the documentation?
  15. Asset Handler

    Hi, i released my first Tool for Houdini. Asset Handler is a Python Panel for SideFX Houdini that allows easy creation and access HDAs from a Library. 00:07 HDAs General Handling 01:57 HDRI 02:30 RS-Proxies 03:30 Aixterior Assets & Scattering 09:15 Megascans Assets 11:23 Examples https://www.enoni.de/wp/asset-handler/
  16. Unity HDA output curve

    I have an HDA that i am using in Unity that outputs some meshes. How can i output a curve together with the meshes as its own gameobject? even if i put the curve in its own group (points or prims) it does not appear in the Unity editor
  17. Use filecache in Houdini Engine

    Hi forum, I am trying to get the File Cache working in Houdini Engine(using Maya). It works perfectly in Houdini but when tried to use it in Maya 2020 it doesn't cache anything. I also tried caching out ROP Alembic Output Node(just for test), but it makes a file but not caching properly. Also tried ROP Geometry Output but the same problem as the File Cache node. Anyone successfully made the file cache working using Houdini Engine? I really appreciate your advice if anyone knows how to accomplish this. I attached the HDA below, please look if anyone has time for this. Thank you in advance. seed_animation_exporter.hda
  18. Houdini Engine 2.0 Blueprinting

    Hello everyone, I've just installed that juicy FRESH houdini engine 2.0 for unreal. There is obviously a lack of information as it is so new, and I'm struggling to figure out how to edit my HDA's parameters within a blueprint - If anybody has any tutorials or information about this they could point me to, would be much appreciated!
  19. I have Subnet node name is "subnet1". In "subnet1" i have ROP node.The same name as subnet is "subnet1". When i change my subnet name change the my ROP name too. How to write in "On Name Change" python ? Thank you.
  20. Hi, I'm looking for a way to fine-tune exactly what visible OBJ nodes appear in a certain camera. I'm working on a Wrap-like tool similar to what Pixar show here: In terms of having the two camera views side by side, they have two separate obj networks for the source and destination meshes. I would like to contain the process in one network. If I have a simple OBJ network like so : And two cameras pointing to it, is there a way for Camera_A to only show sphere1 in the viewport, and hide box1, despite the fact that both are marked visible? I don't believe it's an option to collect the specific obj nodes together in a Geometry node via obj merges or similar, and just point the camera to that, since the OBJ transforms need to be directly interactible from the camera. Thanks for your help
  21. Callback script error

    Hello everyone, I'm new to python and perhaps learning it in combination with Houdini may not be the perfect way to go for a newbie but here I am. So I get this error when trying to execute my code from a button: Traceback (most recent call last): File "Sop/STEGG_TEST/bt_execute", line 1, in <module> File "Sop/STEGG_TEST, PythonModule", line 135, in main File "Sop/STEGG_TEST, PythonModule", line 98, in encode File "Sop/STEGG_TEST, PythonModule", line 71, in encode_enc File "Sop/STEGG_TEST, PythonModule", line 31, in modPix AttributeError: 'iterator' object has no attribute '__next__' I'm not sure what this error means. I tried running the code outside Houdini, and the only difference was that as a standalone, it's not getting the input from the input fields I have in the UI so I had to type them myself. The rest all worked fine. I'm not exactly sure how to go about this, should I upload the code I'm trying to run, as well as a version of the HDA I'm trying to make? I'm mainly interested in what this error means and why it only pops up in Houdini but not when I run externally.
  22. How to get a callback event on cook?

    I been coding the callback event in a HDA with Python, the goal is to call every time the node is cooked(after the cook); But it seem not such event type in hou.nodeEventType and hou.hdaEventType. I was write the hou.Node.addEventCallback() in OnCreate event handler section to setup different event type callback. Is there any way to write a callback in HDA for something like "OnCook" event?
  23. Help: Instancer and Label

    is this normal of creating hda that you have (Mesh Instancer) + Main_Geo on the bottom? 1. Is there a way to just hide or delete the Main_Geo. 2. Is there a way to be able to changed the label of (Mesh Instancer) to your custom Label? Regards
  24. Hi, I am having trouble having my custom HDA group selection to behave the same way as existing nodes to work with group selections. For exemple, if I select certain edges of my object and create the node "Normal", it will automatically assign those edges to the node group, however, If I do the same with a HDA the result is not the same. I can add the "selectGroupParm" script to the group action button so I can create the group after the node creation, but I was wondering what extra steps I need to make in order to make it automatic when summoning the HDA. Thanks!!
  25. I look at here. I want do color parameter How to do this sir Thanks https://www.sidefx.com/forum/topic/50408/?page=1#post-227213 How to do it ???? Create Color this text vvvvvvvvvvvv vvvvvvvv vvvvvv vv v
×