Archived post by mestela

someone shared this in the cgwiki discord, an incredible collection of hips and stuff: https://twitter.com/WhiteDo27114277/status/1726265090117406728

the google doc that explains all the setups is wild, i think half the tricky questions that have been posted here, or interesting papers i’ve seen and thought ‘a houdini implementation would be sexy’, he’s done them all: docs.google.com/document/d/1HBQ6CwiDX0MbK7-nBrLU8hF8H08uPbewZF1z8ybdRw0/edit

Archived post by sniperjake945

yeah i mean the problem itself is slightly underdefined because there are two possible solves, one where you rotate down and one where u rotate up

but it’s actually solved with a quadratic equation so u end up with both points of intersection

here are all the intersections visualized

here’s the file that has all the math for u

and like sure this could all be done with trig but this seemed cooler

🙂

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20232312/15/23/image.png
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20232312/15/23/Calculate_When_It_Connects_JR.hiplc

Archived post by bonsain

Yep, precisely:
PythonModule (or external module to be reused). It’s quite simple, really. Most of the below is just the docstring 😛 “` def fix_inputs(node): “””Shifts inputs of node to remove gaps This function is to be called from an onInputChanged Event Handler inside of the Operator Type Properties’ Script section. To avoid triggering further onInputChanged callbacks while running, a temporary cachedUserData gets added that exits this function early until it is complete. Args: node (:class:`hou.Node`): node to remove empty inputs from. “”” if node.cachedUserData(“skip_onInputChanged”): return if not all(node.inputs()): node.setCachedUserData(“skip_onInputChanged”, True) for i, input_connection in enumerate(node.inputConnections()): node.setInput(input_connection.inputIndex(), None) node.setInput(i, input_connection.inputItem()) node.destroyCachedUserData(“skip_onInputChanged”) “`
onInputChanged: “` node = kwargs[“node”] node.hdaModule().fix_inputs(node) “`

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20233812/14/23/custom_merge_vs_naive_01.gif

Archived post by nwxo

ok friends i have ported this to ocl, one last step is missing, someone smarter than me needs to solve this…

only updating normals within Ocl is missing, then we could run it on the gpu without the sop loop but with the iterations on the ocl node..

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20234012/07/23/intersectionPeak_v9_ocl.hipnc
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20234012/07/23/c93002ec7958c654252d3a8743583938.mp4