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


  • 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 199 results

  1. Houdini to Magicavoxel

    Hi All, I've been working on the .vox exporter for a while. After some improvements I decided to publish it on github. The HDA generates .VOX Magicavoxel file from given inputs. If interested you can get it from here; https://github.com/caglarcomez/Houdini_to_Magicavoxel
  2. hi everyone , im trying to create a dynamic multiparm in my hda. i know how to access multiparm block's parameter and set the menu item from attribute. but i cant find a way to set the menu item dynamiclly inside the nested multparm. please help. is there any way i can do this ? for example ,the grey box only has 3 sizes, but it listed up other box's size. here its how i make the menu item. im not sure i explained well enough. but please take a look into my files. Thanks. test_dynamic_ui.hdanc test_hda.hipnc
  3. Hello, newbie here, I'm trying to check about Texel. Everything works fine, except in Unreal.. TexelDensity is correct in houdini, but it's different in "unreal". Is it supposed to be like this? And is this affect to UV scale? Becuase When i change AssetResolution in houdini, UV size exactly reduce 1/4 size. But in "unreal", UV size is weird. Change Project Resoultion in Houdini,and Unreal. Texel Density is Different. Change Asset Resolution in Houdini. Change Asset Resolution in Unreal. it's weird size..
  4. Tools for layout

    Custom importer for Quixel Megascans Bridge inside Houdini Sop. These videos shows an example of working with 3D Scans and Surfaces https://github.com/andrey214/aa_tools https://vimeo.com/638435887 https://vimeo.com/638435845
  5. Jerry's things

    Involute gears. 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
  6. 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
  7. 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
  8. 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
  9. 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)
  10. 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.
  11. 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?
  12. 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
  13. 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
  14. 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 ?
  15. 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.
  16. 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?
  17. 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
  18. 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?
  19. 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/
  20. 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
  21. 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
  22. 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!
  23. 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.
  24. 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
  25. 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.