Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Community Reputation

4 Neutral

About p2or

  • Rank

Personal Information

  • Name
  • Location
  1. Thanks @Atom. Unfortunately too much detail is getting lost when using VDB smooth. However, decreasing the volume step rate in mantra (to 0.2 and below) seems appropriate and gives finer control to blur the voxels visually without loosing too much detail.
  2. Hi everyone, did a pyro sim along with a collision object. When I up the density from 1 to 4 in the pyro shader, the voxels are getting visible (attached an image to the post showing the issue). Is there any way to prevent that or soften the voxels on the outside in a post process or something? Cheers, Christian
  3. Many thanks @jrockstad. Fixed some minor issues to make it work for h18+. For convenience I also created a gist here. # Houdini Python shelf tool for comparing node networks # Prints changes in networks followed by changes in parameters # Original Author: @jrockstad # https://forums.odforce.net/topic/24410-compare-difference-between-two-networks/ # Usage: Select first network, shift-select second network, launch tool # ----------------------------------------------- # Network comparison functions # ----------------------------------------------- def get_node_names(networks): node_lists = () for network in networks: nodes = network.children() node_lists += (set([node.name() for node in nodes]),) return node_lists def print_added_or_removed_nodes(a_or_r): message = '' if a_or_r == 'added': nodes = list(network_b.difference(network_a)) message = "Nodes added to '{}': \n\n".format(net_b_name) else: nodes = list(network_a.difference(network_b)) message = "Nodes removed in '{}': \n\n".format(net_b_name) if nodes != []: nodes.sort() for node in nodes: message += " {}".format(node) return message def print_added_and_removed_nodes(): message = print_added_or_removed_nodes(a) + '\n' + \ print_added_or_removed_nodes(r) return message # ----------------------------------------------- # Parameter comparison functions # ----------------------------------------------- def get_parms(networks, shared_nodes): parm_dicts = () for network in networks: node_parms = {} nodes = network.children() for node in nodes: if node.name() in shared_nodes: parm_tuple = [(node.name(), node.parmTuples())] node_parms.update(parm_tuple) parm_dicts += (node_parms,) return parm_dicts def compare_parms(parm_dicts, shared_nodes): message = '' a_parms, b_parms = parm_dicts for node in shared_nodes: a_parm_vals = [] b_parm_vals = [] parm_labels = [] for parm_tuple in a_parms[node]: for parm in parm_tuple: a_parm_vals.append(parm.evalAsString()) parm_labels.append(parm.name()) for parm_tuple in b_parms[node]: for parm in parm_tuple: b_parm_vals.append(parm.evalAsString()) if a_parm_vals != b_parm_vals: message += "Changed parameters in node {}:".format(node) + '\n\n' for val in range(0, len(parm_labels) - 1): if a_parm_vals[val] != b_parm_vals[val]: message += " Value in '{}' for '{}': {}".format \ (net_a_name, parm_labels[val], a_parm_vals[val]) + \ '\n' + \ " Value in '{}' for '{}': {}".format \ (net_b_name, parm_labels[val], b_parm_vals[val]) + \ '\n\n' return message # ----------------------------------------------- # Init # ----------------------------------------------- networks = hou.selectedNodes() net_a_name = networks[0].name() net_b_name = networks[1].name() network_a, network_b = get_node_names(networks) nodes_added = network_b.issuperset(network_a) nodes_removed = network_a.issuperset(network_b) shared_nodes = list(network_a.intersection(network_b)) parm_dicts = get_parms(networks, shared_nodes) a = 'added' r = 'removed' if nodes_added: hou.ui.displayMessage(print_added_or_removed_nodes(a)) elif nodes_removed: hou.ui.displayMessage(print_added_or_removed_nodes(r)) else: hou.ui.displayMessage(print_added_and_removed_nodes()) hou.ui.displayMessage(compare_parms(parm_dicts, shared_nodes))
  4. Hi @Damn_daniel. At a first glance looks like fireflies to me. If you have access to Nuke, there is a great gizmo: http://muellerstefan.de/?p=20. Do you mind sharing the file so we can have a look? Cheers, Christian
  5. upres solver and collision?

    Many thanks @bunker, it helps cleaning up the volume on the collision areas a bit, but as mentioned doesn't work in this case. I try to sim it again using a higher voxel count. Cheers!
  6. upres solver and collision?

    Too bad, makes sense however. Many thanks @bunker. Remaining question is where to put the wrangle...? I tried to add it to the post solve stream of the upres solver but it doesn't seem to effect the sim. What I'm doing wrong? Is there anything else to consider? Thanks again, Christian
  7. upres solver and collision?

    Hi @bunker. Why setting the density to zero help and where to put the wrangle to get proper collisions for the upres solver? I don't get your idea. If you have the time, I'd appreciate any explanation. Attached an upres-file to play with in case. Thanks, Christian upres-collision.hiplc
  8. Hi @ameyer, one last (probably stupid but simple) idea: How about using vnc getting the viewport stream for a temporary solution? Have you already tried that? Cheers, Christian
  9. Hey @ameyer, aha, ok . Streaming the viewport doesn't seem easy, I think you have to dig into pyqt (not sure about that though). However, rendering flipbooks is pretty straight forward via python: custom_range = (0,10) filename = "~/tmp/flipbook_$F4.png" cur_desktop = hou.ui.curDesktop() scene = cur_desktop.paneTabOfType(hou.paneTabType.SceneViewer) flip_options = scene.flipbookSettings().stash() flip_options.frameRange(custom_range) flip_options.output(filename) scene.flipbook(scene.curViewport(), flip_options) API: https://www.sidefx.com/docs/houdini/hom/hou/FlipbookSettings.html Cheers, Christian
  10. Hi @ameyer, does this help? Cheers ...
  11. Hi @Masoud, just detach the POP Solver from the Multi Solver within the DOP Network to make it work. Also I'd suggest using a Rigid Body Solver:
  12. Houdini or Katana

    Recently discovered Lookbox by Oliver Hilbert, which I think shows the potential and freedom of Houdini's UI, building a custom lookdev environment as well as all other kinds of workspaces. For now it only supports Mantra, it is still in a beta stage and unfortunately throws an error message on the supplied (old) mantra node within the setup on H17.5 because of some newly introduced 'cryptomatte' variables in recent versions of Houdini. However, it's just an 'hda' so you can always dive into the network, replace the old mantra node and also modify the 'hda' according to your requirements. For the record: There is also Gaffer, an open source lookdev application with full support for Arnold developed on github by John Haddon and Image Engine. Cheers, Christian
  13. H16 missing checkerboard

    You can use the Checkered node (Patterns > Checkered) in combination with a Color Mix (Combine > Color Mix) and plug the result into the diffuse color input of any shader. To get the tiling right, you can either adjust the Frequency parameter of Checkered node or edit your UV-Coords via e.g a UV Transform node or beforehand: Frequency: 1,1 | Frequency: 2,2 | Frequency: 4,4 Note: The IOR value of the Principled Shader is set to 1 in order to avoid extra reflections on the floor.
  14. Many thanks for sharing your approach @mestela, it helps a lot understanding the basic idea. Since siming takes ages on my machine, is there any way to visualize the velocity streamers properly? I already tried adding a 'Volume Trail' to the current setup, but I don't get the streamers to display correctly. Why that's not built into the node itself?
  15. Agree with @marty. In case there are multiple assignments per variable (HOUDINI_PATH, PATH, etc.) only the entries of last one will registered properly (variable shadowing). If HOUDINI_PATH already has an entry, you can concatenate the paths separated by a semicolon(;) on Windows. Please note that even on a Windows machine forward slashes are required. Also make sure that all paths are valid and there is no white space between each path and the separator(;). Arnold, Redshift & Renderman example: # # Houdini Environment Settings - houdini.env # # ... PATH = "$PATH;C:/ProgramData/Redshift/bin;C:/Users/<USER_NAME>/htoa/htoa-2.1.3_rcca6014_houdini-16.0.705/htoa-2.1.3_rcca6014_houdini-16.0.705/scripts/bin;C:/Program Files/Pixar/RenderManProServer-21.5/bin;&" HOUDINI_PATH = "C:/ProgramData/Redshift/Plugins/Houdini/16.0.557;C:/Users/<USER_NAME>/htoa/htoa-2.1.3_rcca6014_houdini-16.0.705/htoa-2.1.3_rcca6014_houdini-16.0.705;&"