Archived post by remipierre

By the way, I will go back to the **quadrangulate **discussion we had a while, my geometry comes triangulated as it comes from a game engine and doesn’t keep quads.
In the end, I replaced the dissolve node by a wrangle in the node and it runs way faster, I basically recreate polygons myself. I will put it there if someone needs it
It might not work with all cases, works in mine, though

“` int ordered_poly[]; int shared_pts[]; int vtx_tmp[];
// Get the edge group from the first input int pts[] = expandedgegroup(0, “long_edge”);
// Loop through the point pairs making up the edges for (int i = 0; i < len(pts); i += 2) { // Get positions of the two points for the current edge int first_hedge = pointedge(0, pts[i], pts[i+1]); int first_prim = hedge_prim(0, first_hedge); int second_hedge = hedge_nextequiv(0, first_hedge); int second_prim = hedge_prim(0, second_hedge); int vtx1[] = primpoints(0, first_prim); int vtx2[] = primpoints(0, second_prim); shared_pts = array(pts[i], pts[i+1]); // get unique points int p_shared_a = shared_pts[0]; int p_shared_b = shared_pts[1]; vtx_tmp = vtx1; removevalue(vtx_tmp, shared_pts[0]); removevalue(vtx_tmp, shared_pts[1]); int p_unique_0 = vtx_tmp[0]; vtx_tmp = vtx2; removevalue(vtx_tmp, shared_pts[0]); removevalue(vtx_tmp, shared_pts[1]); int p_unique_1 = vtx_tmp[0]; // Find winding int idx_a = find(vtx1, p_shared_a); int idx_b = find(vtx1, p_shared_b); if((idx_a + 1) % 3 == idx_b){ ordered_poly = array(p_unique_0, p_shared_a, p_unique_1, p_shared_b); } else { ordered_poly = array(p_unique_0, p_shared_b, p_unique_1, p_shared_a); } // put prims to delete in a group setprimgroup(0, "__to_del", first_prim, 1); setprimgroup(0, "__to_del", second_prim, 1); // Create polygon int new_poly = addprim(0, "poly"); foreach(int p; ordered_poly){ addvertex(0, new_poly, p); } } “`

Archived post by blacknye

APEX Bike Chain idea. Someone on the sidefx forums was looking for a solution and this was a quick solution I came up with and shared it. Also, sharing it here. When I get more time, I’m going to rebuild a more practical setup and share it as well.

basically deconstructing/reconstructing a setup @mestela shared on the forums about 8 years ago

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20263006/12/26/apex_chain_concept_v001.mp4
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20263006/12/26/apex_chain_v002.hiplc

Archived post by lwwwwwws

I found if you sop import packed disk VDBs it happily does the right thing and you get instances referencing the original .vdb files, no extra caching required… so if you’ve got packed (non-disk) VDBs as .bgeo you should be able to turn that into a packed disk equivalent: – unpack 1 prim with Apply Transform disabled to get the original VDB – save it as a .vdb, load it back in as a packed disk with a File SOP – use Pack Inject to turn the packed VDB setup into packed disk VDBs – change or delete the path attrib, because packed disks have the file path in there and LOPs will use it to create a transform hierarchy from your on-disk folder structure which is just insanely confusing the first time you see it lmao

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20264106/10/26/Screenshot_2026-06-10_at_11.41.14.png

Archived post by blacknye

I’m reading through this now, I’ll share some of my insights/experiences too in a bit. We’ll struggle together haha.

> plug the skeleton into the autobilder – says that left side does not match the right but doesn’t tell me what exactly is different * For this particular warning, you can probably ignore it. I agree with you though, it would be really nice to have more details. This warning even pops up when testing the autorig builder on Electra and Otto.
* Since you’re using a mixamo skeleton. I’d make sure to clean up some of the transforms and naming. On the fbx import nodes, make sure to check ‘Normalize Joint Scales’ and ‘Remove Namespaces from Joint Names’. I’d also do a string replace for names containing ‘Left’ and ‘Right’ and replace them with` ‘L_’ and ‘R_’`. Remove the fbx attribs. It probably has a bunch of ‘end’ joints too, I’d blast those or tag them so you can easily hide them later when configuring controls
> takes a couple of seconds to enter the rigbuilder state and then even the state feels a bit sluggish (wasn’t apex supposed to be fast?) * There could be several causes for this, some apex, some viewport, vulkan, opengel, etc. Hi-poly geo, viewport lighting, scene antialias samples. Resetting the viewport can help too.
> dropping components feels nice and powerful but the worldspace controls are finnicky // ie can’t toggle on a click, have to drag, and you eventually drag away from the toggle and the controls close…. * For the ik/fk toggles, you should be able to just left-click on it instead of click+drag, click+drag brings up the on/off switch but that action isn’t needed when switching between ik/fk.
> names of those controls are also not helping * You can rename the controls using a the post process tab in the configure controls sop. If your controls have long names with the mixamo: namespaces, I’d recommend cleaning those up before you even get to the apex stuff.
> and some random things here and there – ie I drop the foot component and the hole rig collapses…. * I’d have to see the skel/hierarchy in your file, I haven’t experienced that behavior.

Just wanted to show the affect polycount still has on viewport performance. I think it’s important to be mindful of this and still use good practices. Also, I find opengl to have better performance over vulkan in this particular case.

@nikolad8022 I’m posting a video below and a scene file that might help you so you can see once you do the setup and cleanup on the mixamo skel before diving into apex, it’s pretty stable:

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20265605/31/26/apex_polycount_opengl.mp4
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20265605/31/26/mixamo_prep_for_apex.mp4
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20265605/31/26/mixamo_prep_for_apex_v001.hiplc

Archived post by mysterypancake

added some info about a method i posted earlier to make a coordinate system along curves: github.com/MysteryPancake/Houdini-Fun/tree/main#coordinate-system-along-curves

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20265405/31/26/curve_frame_planes.png
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20265405/31/26/noise_along_curve_volume.webp
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20265405/31/26/pig_along_curve.webp
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20265405/31/26/curve_unroll.webp

Archived post by mikael00794

Hehe yep. This is the painful part of working with the Sdf API. Sdf only works on individual layers, not the composed stage. Since you referenced in the .usd file to the /ROOT prim, technically the only defined primitive in the active layer is the /ROOT prim. The child primitives lives in the referenced usd file. So the steps to get the child prims is roughly: Get the /ROOT prim. Check the reference list for the primitive. Compute the absolute path to the reference usd file. Open the reference usd layer. Get the primitive from this layer instead. Something like this ish:
“`python from pxr import Sdf, Usd
node = hou.pwd()
layer = node.editableLayer() print(‘Editable Layer’, layer)
# This prim is defined on the active editable layer root_sdf_path = Sdf.Path(‘/ROOT’) root_prim = layer.GetPrimAtPath(root_sdf_path) print(‘Root Prim’, root_prim)
# Get reference list from prim on active layer root_prim_ref = root_prim.referenceList.GetAddedOrExplicitItems()[0] ref_layer_path = layer.ComputeAbsolutePath(root_prim_ref.assetPath) print(‘Reference Layer Path’, ref_layer_path) # Open reference ref_layer = Sdf.Layer.FindOrOpen(ref_layer_path)
# Get prim from reference usd. This will use the Sdf.Path from the reference usd layer ctrl_prim = ref_layer.GetPrimAtPath(‘/RIG_Main/carBody_CTRL’) print(‘ctrl_prim’, ctrl_prim) “` Fun times