Yeah I had some back and forth with sidefx on this a while ago; when I first wrote up that method it was fast, then it got slow with later builds. The 'correct' answer is to swap over to the rbd destruction lop.
I've not used it on a project, but diving inside it just now, the hda seems designed to be tweaked and hacked. I'd assume if you have enough time and are confident in your skills, it shouldn't be too much effort to port an existing setup over.
Rob Pieke explains some of the thinking, why other methods are slow, why the new workflow is as it is here:
https://youtu.be/R4SLw5EdzQ8?t=1319 [youtu.be]
Found 898 posts.
Search results Show results as topic list.
Solaris and Karma » Solaris RBD production workflow
- mestela
- 1746 posts
- Offline
Technical Discussion » Attribute Flow --> Solver SOP
- mestela
- 1746 posts
- Offline
i mean the other way probably works too, but usually with vex its better to think 'can i sample the points around me and then set a value on myself' vs 'can i sample the points around me and set their values'.
Technical Discussion » Attribute Flow --> Solver SOP
- mestela
- 1746 posts
- Offline
pccone maybe? i used that to art direct particles to check for collisions, move on paths. thinking out loud, you should be able to do that to just lookup in a specific direction and then ask 'should i be infected?'
https://www.tokeru.com/cgwiki/PopsSplitAvoid.html#pccone [www.tokeru.com]
https://www.tokeru.com/cgwiki/PopsSplitAvoid.html#pccone [www.tokeru.com]
Rigging » Import USDZ character with animation
- mestela
- 1746 posts
- Offline
Very much a team effort, I'm just the person writing things down.
Shortly after I tried that Omniverse method, Cameron White posted a native Houdini solution. Again not guaranteed to work in all cases, but fixes this particular thing.
My understanding is the drag-n-drop in Omniverse is doing 2 things, getting the skeleton configured for animation (which Sketchfab should be doing), and then binding the animation (which Sketchfab should also be doing). Houdini can do this but there's a few more steps involved (ideally you'd just put these nodes on a shelf or make an HDA, so you don't have to do all these steps every time):
First, prep the skeleton for animation:
Next, bind the animation to the skeleton:
The shark should now play its animation. To get this over to sops, you use the same usd character import sop, but this time point to lops instead of a usd on disk:
Shortly after I tried that Omniverse method, Cameron White posted a native Houdini solution. Again not guaranteed to work in all cases, but fixes this particular thing.
My understanding is the drag-n-drop in Omniverse is doing 2 things, getting the skeleton configured for animation (which Sketchfab should be doing), and then binding the animation (which Sketchfab should also be doing). Houdini can do this but there's a few more steps involved (ideally you'd just put these nodes on a shelf or make an HDA, so you don't have to do all these steps every time):
First, prep the skeleton for animation:
- In lops, create a file (or sublayer) node, load in the original sketchfab usdz
- Append a confgure primitive lop
- Set the primitive path, you can drag and drop it from the scene graph tree, or ctrl-click on the selector to bring up a floating outliner. Point it to the skeleton, which is at /scene/SkinnedMeshes/Sketchfab_model/root/GLTF_SceneRootNode/RootNode_0_0/skeletal_3_3/GLTF_created_0/GLTF_created_0_rootJoint/shark_root_4_4/skin0/skeleton
- Enable 'Apply API Schema', set it to SkelBindingAPI
Next, bind the animation to the skeleton:
- Append a edit properties lop
- Click edit properties
- In the filter at the bottom of the first column, search for animationSource
- The column will find skel:AnimationSource in Schemas/SkelBindingAPI. Select it, click the arrow between the columns to add it, click accept
- Set the primitives path to the same skeleton you set earlier
- Set the skel:AnimationSource value to the 'swimming' skelAnimation prim. Easiest to drag and drop it from the scene graph tree, the path should be /scene/SkinnedMeshes/Sketchfab_model/root/GLTF_SceneRootNode/RootNode_0_0/skeletal_3_3/GLTF_created_0/GLTF_created_0_rootJoint/shark_root_4_4/skin0/swimming
The shark should now play its animation. To get this over to sops, you use the same usd character import sop, but this time point to lops instead of a usd on disk:
- In sops, create a usd character animation sop
- Set the lop path (in my case /obj/lopnet1/editproperties2 )
- That will bring in the mesh and animated skeleton
- Append a joint deform which will move the mesh using the joints.
Rigging » Import USDZ character with animation
- mestela
- 1746 posts
- Offline
There's been a few issues with sketchfab and their usdz output. Ultimately they're doing some weird stuff that makes most 3d apps unhappy. For the record Houdini won't load them, OSX preview won't load them, Blender won't load them, USDView won't load them.
The only apps that do load them are OSX quicklook (but you can't edit), and omniverse with some tweaking. Some clever folk found ways to help Houdini using code, but the fixes aren't consistent, every sketchfab animation seems broken in different weird ways.
I did have success saving the file from omniverse, and loading that into Houdini. This might be the answer in the short term until Sketchfab make changes their end.
Now to load that into houdini and see it animate:
The only apps that do load them are OSX quicklook (but you can't edit), and omniverse with some tweaking. Some clever folk found ways to help Houdini using code, but the fixes aren't consistent, every sketchfab animation seems broken in different weird ways.
I did have success saving the file from omniverse, and loading that into Houdini. This might be the answer in the short term until Sketchfab make changes their end.
- Download omniverse, from their launcher, install composer
- File -> Open, load the usdz
- Switch to the animation layout
- Expand the outliner to find the skeleton, its buried a few levels down in the SkinnedMeshes group
- Find the 'Scene' node underneath that
- Drag the scene node onto the shark mesh in the viewport
- This binds the animation to the mesh, scrub the timeline to see it play
- File -> Save, save it next to your usdz file with a new name
Now to load that into houdini and see it animate:
- In houdini, create a usd character import node in sops
- Point it to the new usd file
- Set the skelroot to the skeleton in the usd file ( /scene/SkinnedMeshes/Sketchfab_model/root/GLTF_SceneRootNode/RootNode_0_0/skeletal_3_3/GLTF_created_0/GLTF_created_0_rootJoint/shark_root_4_4/skin0 )
- Attach a joint deform node, you should see the shark swimming.
Edited by mestela - Feb. 13, 2024 16:18:06
Technical Discussion » How to desaturate image in Houdini (COP2 Network)?
- mestela
- 1746 posts
- Offline
Houdini Lounge » Ultra Widescreen curved monitor?
- mestela
- 1746 posts
- Offline
My tired old eyes can't deal with 4k screens, and I'm constantly amazed that all the OS's still have issues applying scaling.
I swapped to a ultrawide about 2 years ago, really like it. I wrote up some thoughts here:
https://www.tokeru.com/cgwiki/GeneralUtilities.html#ultrawide_monitor [www.tokeru.com]
I swapped to a ultrawide about 2 years ago, really like it. I wrote up some thoughts here:
https://www.tokeru.com/cgwiki/GeneralUtilities.html#ultrawide_monitor [www.tokeru.com]
Houdini Indie and Apprentice » Circular Gradient!
- mestela
- 1746 posts
- Offline
Your setup works fine, what you're lacking is uv's.
The material will fit a circle in the 0:1 region of your uv's. Because your grid doesn't have any uv's, karma will go 'ok, I guess I'll just treat each polygon square as a little uv region, and fit the circle into there.'.
If you go back inside the wall sopcreate, append a uv texture sop, projection axis as 'z axis', you'll get one big circle that fills the wall.
The material will fit a circle in the 0:1 region of your uv's. Because your grid doesn't have any uv's, karma will go 'ok, I guess I'll just treat each polygon square as a little uv region, and fit the circle into there.'.
If you go back inside the wall sopcreate, append a uv texture sop, projection axis as 'z axis', you'll get one big circle that fills the wall.
Houdini Indie and Apprentice » Middle Mouse on Macbook
- mestela
- 1746 posts
- Offline
Houdini Lounge » Is un-subdivide possible in Houdini?
- mestela
- 1746 posts
- Offline
I would love this, its a notable omission. Last I checked its available in zbrush, maya, c4d, max, blender. Even nomad on ios/android has it!
Please send an RFE to sidefx, that helps it get noticed...
Please send an RFE to sidefx, that helps it get noticed...
Houdini Indie and Apprentice » How to make this dynamic growth effect
- mestela
- 1746 posts
- Offline
this setup is doing randomized scale if you look closely, but its uniform randomized scale, ie it can do big crystals, small crystals, but it can't do crystals which are wide on x and skinny on z for example.
its also deintersecting, but only for the particles at the root of each crystal. if it were all on a flat surface with short crystals that'd be ok, but because its uneven ground and the crystals are tall, even if the base of the crystals aren't colliding, the tops will likely collide.
was chatting with others, if you want a more accurate solution, you'd probably want to move to emitted rbd's, but that's a different level of complexity. I have some examples you could play with on my site, but its not as straighforward as this pops setup.
https://www.tokeru.com/cgwiki/HoudiniDops.html#emit_packed_prims_into_rbd_sim [www.tokeru.com]
https://www.tokeru.com/cgwiki/HoudiniDops.html#rbd_deintersect_the_easy_way [www.tokeru.com]
https://www.tokeru.com/cgwiki/ConstraintNetworks3.html#constrained_deintersect [www.tokeru.com]
someone also pointed out an entagma tutorial along similar lines, but you can see it also assumes for circular cross sections:
https://www.youtube.com/watch?v=OkiwsuFo_gA [www.youtube.com]
its also deintersecting, but only for the particles at the root of each crystal. if it were all on a flat surface with short crystals that'd be ok, but because its uneven ground and the crystals are tall, even if the base of the crystals aren't colliding, the tops will likely collide.
was chatting with others, if you want a more accurate solution, you'd probably want to move to emitted rbd's, but that's a different level of complexity. I have some examples you could play with on my site, but its not as straighforward as this pops setup.
https://www.tokeru.com/cgwiki/HoudiniDops.html#emit_packed_prims_into_rbd_sim [www.tokeru.com]
https://www.tokeru.com/cgwiki/HoudiniDops.html#rbd_deintersect_the_easy_way [www.tokeru.com]
https://www.tokeru.com/cgwiki/ConstraintNetworks3.html#constrained_deintersect [www.tokeru.com]
someone also pointed out an entagma tutorial along similar lines, but you can see it also assumes for circular cross sections:
https://www.youtube.com/watch?v=OkiwsuFo_gA [www.youtube.com]
Edited by mestela - Nov. 24, 2023 08:37:05
Technical Discussion » Polymodeling without thousands of PolySplit node
- mestela
- 1746 posts
- Offline
Topobuild. It's a little fiddly to use, but its designed for that more freeform editing and keeping it all on the one node.
Quite a lot of functionality in its various shift 1-6 states, and right click menus, along with the general selection stuff houdini provides.
Quite a lot of functionality in its various shift 1-6 states, and right click menus, along with the general selection stuff houdini provides.
Houdini Indie and Apprentice » How to make this dynamic growth effect
- mestela
- 1746 posts
- Offline
Attached hip isn't perfect, but should give you some ideas.
It's a few concepts linked together:
It's a few concepts linked together:
- A way to animate random emission locations from a surface
- Sticking particles to a surface with the vex minpos() function
- Making particles avoid each other via grains, collide with the ground, and be slowed down with drag
- Copying shapes to those particles, and making sure they're oriented correctly.
Edited by mestela - Nov. 23, 2023 16:07:35
Houdini Lounge » What is the purpose of those weird UI ticks in param editor
- mestela
- 1746 posts
- Offline
Put down a scatter sop, slide around the 'force total count' parameter. The range is between 1 and 100,000, but the logarithmic slider is designed so that you can hit broad ranges of 1-10, 10-100, 100-1000, 1000-10000, 10000-100000 relatively easily.
If sidefx have set the default slider behaviour to logarithmic, its usually for a reason, and gives clues to the range+accuracy of the values you're meant to use.
If sidefx have set the default slider behaviour to logarithmic, its usually for a reason, and gives clues to the range+accuracy of the values you're meant to use.
Houdini Lounge » What is the purpose of those weird UI ticks in param editor
- mestela
- 1746 posts
- Offline
Houdini Lounge » Re-bake texture after changing UV
- mestela
- 1746 posts
- Offline
The labs baker should do this for you, otherwise if you want to roll your own, I have some examples here:
https://tokeru.com/cgwiki/HoudiniCops.html#sample_3d_geometry_in_cops [tokeru.com]
https://tokeru.com/cgwiki/HoudiniCops.html#sample_3d_geometry_in_cops [tokeru.com]
Technical Discussion » Bake camera projection for 3D screen/Billboard
- mestela
- 1746 posts
- Offline
Konstantin has some setups for that:
https://procegen.konstantinmagnus.de/camera-projection-to-a-curved-screen [procegen.konstantinmagnus.de]
https://procegen.konstantinmagnus.de/camera-projection-to-a-curved-screen [procegen.konstantinmagnus.de]
Technical Discussion » problems starting houdini engine on rocky linux 9 | fedor36
- mestela
- 1746 posts
- Offline
I had to dive into all this rocky 8 stuff too recently, on a cloud virtual machine for added fun.
After getting nvidia drivers, teradici, workstation, kernel updates etc all going, houdini would fail at start complaining about a missing X library.
Some of the packages mentioned earlier in this thread would let me install them, but others claimed they couldn't be found. After much running around, I found simply doing a...
dnf update
....seemed to find all the things Houdini was missing, and it starts fine now.
After getting nvidia drivers, teradici, workstation, kernel updates etc all going, houdini would fail at start complaining about a missing X library.
Some of the packages mentioned earlier in this thread would let me install them, but others claimed they couldn't be found. After much running around, I found simply doing a...
dnf update
....seemed to find all the things Houdini was missing, and it starts fine now.
Technical Discussion » Expression for choosing specific numbers at random
- mestela
- 1746 posts
- Offline
@orient is a quaternion, a 4-dimensional vector. Don't try and understand the numbers, you'll only give yourself a headache.
The scatter and align sop can do this for you. Under the 'rotation around normals' section you can set a range and a snap value. So if you set the range to 0 and 180, with a snap of 180, then your objects can only face left or right.
The default mode for it is to both scatter the points and setup the orient attribute, but you don't have to. You can scatter points first with a scatter sop, connect it to the second input of scatter and align, and put it into 'add attributes to existing point cloud' mode. This works as before, but I was confused at first when it wouldn't apply any rotation.
The clue is in the section name, 'rotate around normals'. The first case works because it can query the geometry for normals. The second case looks if the scattered points have normals, it doesn't, will give up. If you force normals onto the geometry first with a normals sop, the scatter sop will inherit it, then the scatter and align will work properly.
See attached hip.
The scatter and align sop can do this for you. Under the 'rotation around normals' section you can set a range and a snap value. So if you set the range to 0 and 180, with a snap of 180, then your objects can only face left or right.
The default mode for it is to both scatter the points and setup the orient attribute, but you don't have to. You can scatter points first with a scatter sop, connect it to the second input of scatter and align, and put it into 'add attributes to existing point cloud' mode. This works as before, but I was confused at first when it wouldn't apply any rotation.
The clue is in the section name, 'rotate around normals'. The first case works because it can query the geometry for normals. The second case looks if the scattered points have normals, it doesn't, will give up. If you force normals onto the geometry first with a normals sop, the scatter sop will inherit it, then the scatter and align will work properly.
See attached hip.
Edited by mestela - Sept. 11, 2023 19:00:59
Technical Discussion » Simple bone capture for 2D planes (no tets)
- mestela
- 1746 posts
- Offline
-
- Quick Links