Found 183 posts.
Search results Show results as topic list.
Technical Discussion » Python Panels, Parameter Panes, and Multiple Node Instances
- npetit
- 365 posts
- Offline
It's not the pypanel that is doing anything with handles - the handles are registered with the nodes' python states. The pypanel simply sends commands to the python state that then does whatever is needed to show/update the handles as required.
Technical Discussion » Delete a fractured piece from dynamic sim?
- npetit
- 365 posts
- Offline
That hip file was saved in 19.5 and makes use of a newer dopimport::2.0 SOP.
Replace it with an old dopimport SOP, set the import style to "Create Points to Represent Objects", set the dop network to "../dopnet1" and the object mask to "rbdpackedobject1" - now the sphere pieces should move again.
You may need to attrib delete the path attribute created by the assemble SOP.
Replace it with an old dopimport SOP, set the import style to "Create Points to Represent Objects", set the dop network to "../dopnet1" and the object mask to "rbdpackedobject1" - now the sphere pieces should move again.
You may need to attrib delete the path attribute created by the assemble SOP.
Technical Discussion » Delete a fractured piece from dynamic sim?
- npetit
- 365 posts
- Offline
The path attribute generated by the assemble node is nonsensical anyway and won't generate anything meaningful. You're also grabbing everything from the dopnet indiscriminately which is far from ideal - you have the ground geometry in there as well as an awful lot of attribute bloat (all of the bullet attribs that aren't of any use to you outside of DOPs).
Here's a fixed version, generating a new path using the pieces' name to ensure they each end up in their own hierarchy. Alternatively, you can simply disable the "Build Hierarchy from Path Attribute" option on the rop_fbx SOP.
Here's a fixed version, generating a new path using the pieces' name to ensure they each end up in their own hierarchy. Alternatively, you can simply disable the "Build Hierarchy from Path Attribute" option on the rop_fbx SOP.
Technical Discussion » Delete a fractured piece from dynamic sim?
- npetit
- 365 posts
- Offline
If you need to delete pieces in the sim (rather than after), you can dive inside the RBD Bullet Solver and delete the RBDs there directly - here's an example, either using a geometry wrangle DOP or a SOP Solver to allow you to use regular SOPs to delete the RBD pieces you want to get rid of.
Technical Discussion » Solaris follow path constraint look at mode breaking
- npetit
- 365 posts
- Offline
There are a couple of issues currently. The follow path CHOP this node references uses a VEX CHOP internally which is 32 bit.
Another issue there isn't much we can do about is the fact that the USD spec defines positions, velocities etc as 32 bit float3 attributes. However, if we transform the target curves' packed USD prim before unpacking them, we can somewhat mitigate the lack of precision. The matrix transform we apply to the source prims (the camera in your case) is 64 bit.
With that said, tomorrow's build of 19.5 should fix the jittering you're seeing with the camera alignment.
Another issue there isn't much we can do about is the fact that the USD spec defines positions, velocities etc as 32 bit float3 attributes. However, if we transform the target curves' packed USD prim before unpacking them, we can somewhat mitigate the lack of precision. The matrix transform we apply to the source prims (the camera in your case) is 64 bit.
With that said, tomorrow's build of 19.5 should fix the jittering you're seeing with the camera alignment.
Technical Discussion » RBD Bullet Solver
- npetit
- 365 posts
- Offline
The proper VEX syntax to is - the last argument specifies whether or not to remove the primitive points along with the prim itself, so as to avoid having unconnected points left.
However, the VEXpression is only being run on the group of constraints that have the specified constraint names "Soft" and "Hard". If you want this to run on your Glue constraints, add "Glue" to the "Constraint Names" parameter, or replace it all with "*" instead if you want it to run on all constraint types.
removeprim(0, @primnum, 1);
However, the VEXpression is only being run on the group of constraints that have the specified constraint names "Soft" and "Hard". If you want this to run on your Glue constraints, add "Glue" to the "Constraint Names" parameter, or replace it all with "*" instead if you want it to run on all constraint types.
Technical Discussion » Solaris follow path constraint look at mode breaking
- npetit
- 365 posts
- Offline
The stuttering is due to the fact your curve is a poly curve - convert it to a nurbs curve for smooth motion.
I saved the file in 19.5, that'll be why you're getting errors on opening it.
I saved the file in 19.5, that'll be why you're getting errors on opening it.
Technical Discussion » Solaris follow path constraint look at mode breaking
- npetit
- 365 posts
- Offline
Here's a fixed hip file.
The default look up mode set to "Up Vector Attribute from Path" is not working in your case since you do not have a "tangentu" primvar on the curve, you have an "up" primvar.
Switching from "tangentu" to "up" fixes the issue (add whatever roll you need to correct the alignment), however your attribute flips on the curve ends. Switching it to simply using the "Y Axis" makes it a lot more predictable and easier to control.
The default look up mode set to "Up Vector Attribute from Path" is not working in your case since you do not have a "tangentu" primvar on the curve, you have an "up" primvar.
Switching from "tangentu" to "up" fixes the issue (add whatever roll you need to correct the alignment), however your attribute flips on the curve ends. Switching it to simply using the "Y Axis" makes it a lot more predictable and easier to control.
Technical Discussion » Python Panels, Parameter Panes, and Multiple Node Instances
- npetit
- 365 posts
- Offline
That's exactly what's happening - onNodePathChanged, if the newly selected node is of the right type and no longer the same node as previously selected, the panel removes its event callbacks from the previous node's ParmTupleChanged event (as well as a few other events), rebinds them to the new node's ParmTupleChanged event (this is to ensure the Qt panel gets updated if the user tweaks parms on the regular parameter pane, etc), and repopulates its Qt interface driven entirely by the new node's parm values (or resulting cook data - depending on what the Qt panel needs to populate itself).
Edited by npetit - Feb. 20, 2023 18:30:15
Technical Discussion » Python Panels, Parameter Panes, and Multiple Node Instances
- npetit
- 365 posts
- Offline
That's really entirely up to you and what you want your Qt panel to be doing.
For example the Stage Manager LOP's python panel UI is vastly different from the underlying node's parameter pane. Events on the treeview widget will trigger multiple parm updates on the selected stage manager lop node, depending on the action being performed.
If you just want a pypanel to have a 1 for 1 correspondence with the node parms, it does seem like a lot of work just to get a slightly different parm layout and feel.
Most times you want a pypanel when you need to present the user with an interface to more efficiently and intuitively manipulate the node parms in a way that cannot be expressed using the built-in parm and layout options. The Light Mixer is a very good example of just that.
For example the Stage Manager LOP's python panel UI is vastly different from the underlying node's parameter pane. Events on the treeview widget will trigger multiple parm updates on the selected stage manager lop node, depending on the action being performed.
If you just want a pypanel to have a 1 for 1 correspondence with the node parms, it does seem like a lot of work just to get a slightly different parm layout and feel.
Most times you want a pypanel when you need to present the user with an interface to more efficiently and intuitively manipulate the node parms in a way that cannot be expressed using the built-in parm and layout options. The Light Mixer is a very good example of just that.
Technical Discussion » Solaris follow path constraint look at mode breaking
- npetit
- 365 posts
- Offline
Do you have an example scene to look at?
The camera shouldn't shake, but if it flips it'll probably due to not setting the up vector properly.
The camera shouldn't shake, but if it flips it'll probably due to not setting the up vector properly.
Technical Discussion » Python Panels, Parameter Panes, and Multiple Node Instances
- npetit
- 365 posts
- Offline
It's a single pypanel that gets updated on node changed.
If you look at the *.pypanel files where the panel gets registered, you need to define a number of event callbacks.
Typically, these are:
onCreateInterface(), onActivateInterface(), onDeactivateInterface(), onDestroyInterface() and onNodePathChanged(node).
From there you can access the panel and call its methods, passing in whatever arguments you need.
onNodePathChanged is typically used to redraw the panel with the current node's parm values when the user selects a different node of the correct type.
If you look at the *.pypanel files where the panel gets registered, you need to define a number of event callbacks.
Typically, these are:
onCreateInterface(), onActivateInterface(), onDeactivateInterface(), onDestroyInterface() and onNodePathChanged(node).
From there you can access the panel and call its methods, passing in whatever arguments you need.
onNodePathChanged is typically used to redraw the panel with the current node's parm values when the user selects a different node of the correct type.
Edited by npetit - Feb. 19, 2023 17:36:05
Houdini Lounge » Karma AOVs in different file
- npetit
- 365 posts
- Offline
Technical Discussion » Collison Mesh has Hole but debris bounce off it.
- npetit
- 365 posts
- Offline
The metaball isn't acting as a collider, it's applying a force to the pieces that fall inside its area of influence, making it appear to be a collision. You can animate the magnetforce's scale force parameter. In DOPs, by default, parameters' parm option is set to "Use Default", with the default behaviour set to "Set Initial" which means the parameter is only evaluated when the simulation is initialised. Make sure to set the scale force's parm op to "Set Always" so the animation on the parm is applied.
Not sure what you mean by #2 - are you trying to mix expressions and keyframes on the same parm?
Not sure what you mean by #2 - are you trying to mix expressions and keyframes on the same parm?
Technical Discussion » RBD bullet SOP solver simulating points off
- npetit
- 365 posts
- Offline
Here's one way of optimising and circumventing the transform offset you're seeing. By adding the RBD Configure before transforming the newly fractured geometry, you can simply make the pieces "animated" instead of "deforming". You just need to make sure to preserve the pieces' previous name so you can transform them accordingly after packing.
This will perform a lot better than using deforming RBDs since the internal rbd geometry doesn't need to be rebuilt on every frame.
The problem you're experiencing with deforming RBDs is that they are getting re-packed on every frame, and thus their relative pivot is changing. So when you freeze the geometry output and try and use the simulation points to transform those pieces, you are losing this change in pivot and not compensating for it. You need to transform the deforming input geometry, until it no longer is deforming (when it switches to being active), at which point the internal rbd geometry stops being updated, so you need to stop updating the geometry you're transforming also - the timeshift SOP set to min($F, 15) does this since you are switching from deforming to animated on frame 15.
Here's a fixed hipfile with both the animated method, and a solution to make it work with the deforming RBDs.
This will perform a lot better than using deforming RBDs since the internal rbd geometry doesn't need to be rebuilt on every frame.
The problem you're experiencing with deforming RBDs is that they are getting re-packed on every frame, and thus their relative pivot is changing. So when you freeze the geometry output and try and use the simulation points to transform those pieces, you are losing this change in pivot and not compensating for it. You need to transform the deforming input geometry, until it no longer is deforming (when it switches to being active), at which point the internal rbd geometry stops being updated, so you need to stop updating the geometry you're transforming also - the timeshift SOP set to min($F, 15) does this since you are switching from deforming to animated on frame 15.
Here's a fixed hipfile with both the animated method, and a solution to make it work with the deforming RBDs.
Technical Discussion » Collison Mesh has Hole but debris bounce off it.
- npetit
- 365 posts
- Offline
Your magnet force is causing the bounce - if you animate the activation of it and turn it off on frame 22, all the pieces settle on the collision geo.
Technical Discussion » Problème with rbd material fracture
- npetit
- 365 posts
- Offline
Solaris and Karma » Karma Shadow Matte
- npetit
- 365 posts
- Offline
You mentioned you wanted to see it in the viewport - I missed the bit about the shadow catcher needing to be transparent.
You won't be able to get the ground you're projecting the plate on to be transparent except where the shadows are, in a single render. The background plate lop projects the plate as a material onto the plate geometry (your ground) so you get proper interaction (light bounces and reflections) with your CG elements, sets its holdout mode to Background then uses LPE for the various passes.
The plate geometry also captures the diffuse bounces and reflections of the CG elements you are lighting, helping to integrate them onto the plate a whole lot better than just compositing shadows.
You can dive into the background plate LOP and edit the plate geo material to customize it however you need - so for example if you have more reflective areas on the plate you can set that up there.
In order to get the shadows on a transparent plate geo, you'd need to do some compositing, but if you need the ground the be transparent, it implies you are using the beauty to do some comp work, so this shouldn't be an issue?
Here's an example hip file with the background plate lop setup and the COP graph to either comp all the AOVs together to match the viewport (it'll be the same math in Nuke or whatever comp package you use) or get the shadows and alpha added to the CG element beauty.
You won't be able to get the ground you're projecting the plate on to be transparent except where the shadows are, in a single render. The background plate lop projects the plate as a material onto the plate geometry (your ground) so you get proper interaction (light bounces and reflections) with your CG elements, sets its holdout mode to Background then uses LPE for the various passes.
The plate geometry also captures the diffuse bounces and reflections of the CG elements you are lighting, helping to integrate them onto the plate a whole lot better than just compositing shadows.
You can dive into the background plate LOP and edit the plate geo material to customize it however you need - so for example if you have more reflective areas on the plate you can set that up there.
In order to get the shadows on a transparent plate geo, you'd need to do some compositing, but if you need the ground the be transparent, it implies you are using the beauty to do some comp work, so this shouldn't be an issue?
Here's an example hip file with the background plate lop setup and the COP graph to either comp all the AOVs together to match the viewport (it'll be the same math in Nuke or whatever comp package you use) or get the shadows and alpha added to the CG element beauty.
Technical Discussion » Copy @v From Static To Animated Object
- npetit
- 365 posts
- Offline
Instead of an attrib copy SOP, use an attrib reorient SOP, plug the static mesh in the second input, and set v as vector attrib.
Solaris and Karma » Karma Shadow Matte
- npetit
- 365 posts
- Offline
Tser
I need this to be done in the beauty pass all at once when I do a render
You can use the Background Plate LOP to do this.
By default it creates the AOVs and composites them with the plate - only in the viewport, leaving a clean Beauty and AOVs so you can put it all back together in comp.
However, you can force an output of the comp straight into the beauty by adding a Render Settings LOP node after the Karma Render Settings LOP, set it to "edit", make sure to set all parms to "Do Nothing" using the "Initialize Parameters" menu, then navigate to Karma > Global > Image and enable the "Use Background" and set it to "On".
There is also a quick setup on the Background Plate LOP to create the COP network to comp the various AOVs back together without baking it all into the beauty.
-
- Quick Links