Jump to content

p2or

Members
  • Content count

    19
  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won

    1

p2or last won the day on July 22

p2or had the most liked content!

Community Reputation

6 Neutral

About p2or

  • Rank
    Peon

Personal Information

  • Name
    Christian
  • Location
    Germany
  1. Redshift render view

    Hi! Click the little plus sign to add a new Pane Tab and set the type to Redshift RenderView.
  2. Hey guys, new to kinefx. I added a skeleton to the upper part of a body geometry, corrected some of the bad deformations and especially straightened the fingers, works great. However, I don't get how I can set this pose as the new rest pose in order to export it properly or even re-target an animation using that pose. What am I missing here? Thanks, Christian
  3. 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.
  4. 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
  5. 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))
  6. 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
  7. 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!
  8. 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
  9. 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
  10. 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
  11. 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
  12. Hi @ameyer, does this help? Cheers ...
  13. 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:
  14. 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
  15. 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.
×