Found 53 posts.
Search results Show results as topic list.
Technical Discussion » How to render pyro and flip in the same SOP?
- Robbert
- 53 posts
- Offline
I guess you could either use a SOP material node, or object merge them into other separate geometry nodes that you use to render if you want to set the material on object level.
Technical Discussion » How to Modify VDB Density based on Curvature or Gradient?
- Robbert
- 53 posts
- Offline
The VDB analysis node takes your VDB and calculates the curvature, gradient, Laplacian and so forth, of the input VDB and outputs a new VDB, either under the same name or a newly specified name. You can multiply your existing VDBs by the new gradient field by inputting them into a volume VOP. You can 'grab' a field with a bind node and export a field with the bind export node. If you would merge your iron field and curvature field together, you can then (inside of the volume VOP) bind both `iron` and `curvature` multiply one by another, and bind export the result into `iron`. You then have an iron field that is dense in areas where curvature is high, and less dense where the curvature is low. Hope this helps out. Cheers!
About the viewport question; I just think the density is visualized by the x component of the vector field, as density is interpreted as a float. What is it you would like to do in your render in regards to this?
About the viewport question; I just think the density is visualized by the x component of the vector field, as density is interpreted as a float. What is it you would like to do in your render in regards to this?
Technical Discussion » Fileformat/extensions/LUT questions when using iconvert
- Robbert
- 53 posts
- Offline
I am implementing a batch texture converter in TOPS that makes use of iconvert amongst other tools. The iconvert documentation mentions "See the list of supported image formats. For a list of extensions, please check the file $HH/dso_fb/index." (https://www.sidefx.com/docs/houdini/ref/utils/iconvert.html [www.sidefx.com]). This leads to an extensive page of supported file formats but it does not specify whether those are explicitly input formats for iconvert or Houdini in general. Additionally, I cannot seem to find the specified file at $HH/dso_fb/index (did some file structure change?). Maybe someone can give some pointers here.
Then there are some LUT options for iconvert. Am I supposed to specify LUT names (like colorspaces in maketx or oiiotool) here or LUT files? Any help is appreciated! Cheers!
Then there are some LUT options for iconvert. Am I supposed to specify LUT names (like colorspaces in maketx or oiiotool) here or LUT files? Any help is appreciated! Cheers!
PDG/TOPs » FBX Batch Export with Mesh Name
- Robbert
- 53 posts
- Offline
Have not opened your file but quickly looking at the question; the backticks should include the @ so; `@pdg_index`. This way you can include any arbitrary TOPS attribute into a string parameter. So if you have a @name attribute on your work items just use `@name` in the FBX output file parameter. Hope this helps
Technical Discussion » Vellum sim must complete THEN generate an alembic using PDG
- Robbert
- 53 posts
- Offline
As mentioned previously, you can use a ROP Fetch TOP node to fetch the render node which is hidden inside of the Vellum IO -> filecache -> render. In TOPS you can either leave the ROP Fetch on 'Evaluate using ROP Node configuration', which will leave you with a single work item. In another ROP Fetch under it, you can then point to your alembic ROP and save it out (it will start only after your Vellum work item has completed). If you want to get per-frame control in TOPS you will have to set the 'Evaluate using' on a frame range setting. In that case you can use a 'wait for all' node, to wait for all work items to complete and then fire off the Alembic saving. Hope you can get it to work Cheers!
Technical Discussion » Combining different images into single mipmapped .RAT?
- Robbert
- 53 posts
- Offline
Not 100% sure about being able to export .rat images, but you can definitely make custom mipmap levels for .exr files with oiiotool (hoiiotool is the tools that ships with Houdini). If you specifically needs .rat files you can of course also download the stand-alone maketx tool that comes with OpenImageIO. I have a custom TOPS texture converter that includes self compiled versions of maketx and oiiotool that can do what you need, if you want it I can share them, though the HDA is not release ready yet.
hoiiotool should support most, if not all of the standard oiiotool functions; https://openimageio.readthedocs.io/en/latest/maketx.html#oiiotool [openimageio.readthedocs.io]
hoiiotool should support most, if not all of the standard oiiotool functions; https://openimageio.readthedocs.io/en/latest/maketx.html#oiiotool [openimageio.readthedocs.io]
Technical Discussion » Reference string input in python
- Robbert
- 53 posts
- Offline
If you want to get the content of the parameter you should probably use hou.node(".").parm("CONTROLLER_NAME").eval() or hou.node(".").parm("CONTROLLER_NAME").rawValue() depending on what you need. Remember that the name and the label of a parameter are two different things. Reference the name, not the label (CONTROLLER_NAME in your screenshot is the label and might be the name too, but I cannot see that in the screenshot). Hope this helps, Cheers!
Technical Discussion » Possible to cache velocity at half resolution for volumes?
- Robbert
- 53 posts
- Offline
When the volumes come out of the DOP network you get them as native houdini volumes which is not always very efficient. You can convert the volumes to VDBs which can be sparsely populated. Merge the vel.* volumes with VDB vector to scalar, you could then also clip your vel VDB by the density to only save vel in areas where you actually have density coverage. Depending on your sim, this might reduce memory consumption quite a lot.
Technical Discussion » Applying ocean evaluate over Flip sim with MASK?
- Robbert
- 53 posts
- Offline
AdrianoRobbert
There is a stable point count/@ptnum between the input and output geometry of the ocean evaluate node. So you can also just put a wrangle down after the ocean evaluate and use a lerp() function to mix between the original point positions and the displaced point positions. You can do this based on a float attribute mask that you paint on the geometry, or any other masking technique for that matter You can also mask the spectrum itself and then feed that masked spectrum into the ocean evaluate node. Hope this helps, cheers!
The tank for the sim is moving, so the geo so i'm not painting manually would work even using the UVs (which might stick, not sure). But i do have the vorticity and veloicty resulting from the sim saved in the compressed cache. I guess i could use this as a base for that masking method you're talking about... i'd probably blur that a lot to fade it around but i guess that could work. I'm just thinking that mixing / blending those very dense geos is going to be quite slow(??). Let's give it a try.
Cheers,
A.
instead of using the points you could create a volume mask and use that to mask out any points that are inside of the volume. That way you can move it with your sim. If I understand correctly, you want to mask out an area near the boat. In that case, you could take the boat, make it into a vdb, dilate the vdb a bit, maybe smooth it out, make a nice falloff with a volume VOP. You might be able to use it with the ocean evaluate directly, or use a volume sample function to read the mask from the volume to the points.
The particle fluid surface node has options to mask by vorticity and velocity. This is generally used for similar masking, the ocean spectrum is then computed at rendertime. There is an ocean surface material in the material palette that you can inspect to figure that stage out.
Technical Discussion » PDG Tutorial 2 Image Manipulation - {inputfilename} alternative
- Robbert
- 53 posts
- Offline
Reading the documentation for the imagemagick node (https://www.sidefx.com/docs/houdini/nodes/top/imagemagick.html [www.sidefx.com]) there seems to be an attribute called {inputfilepath} which you might be able to use. As you mentioned, the {inputfilename} seems to be gone. Alternatively, you can also use the @output_dirs attribute that should come from the file decompress node to point to a path and then use some globbing (for example *.png) to select all files and expand them to separate work items. You can then get the filename attribute correctly. For as far as I can read here, the instructions in the tutorial you are following do not accommodate for the removal of the {inputfilename} attribute, so I guess you have to dive a little deeper now By holding middle-mouse button on a work item you can easily inspect the attributes it holds and debug that way.
Technical Discussion » PDG Tutorial 2 Image Manipulation - {inputfilename} alternative
- Robbert
- 53 posts
- Offline
shin_t_o_
Sorry for the lack of explanation, I used expression in ImageMagick > Output > Output File Path, and got result above.
now I will use @pdg_input, and some method to split it.
Thank you for prompt reply.
Can you post a screenshot of your work item information and TOPS graph? That would maybe clear up some things.
Technical Discussion » PDG Tutorial 2 Image Manipulation - {inputfilename} alternative
- Robbert
- 53 posts
- Offline
Just checked this fast, as far as I understand you can use `@filename`. You have to use backticks to isolate the expression within a string parameter. @filename is automatically made by a file pattern TOP, so I assume you have something similar in your network. Alternatively `@pdg_input` gives you access to the implicit top attribute Input. Hope this helps you out Cheers!
Technical Discussion » Applying ocean evaluate over Flip sim with MASK?
- Robbert
- 53 posts
- Offline
There is a stable point count/@ptnum between the input and output geometry of the ocean evaluate node. So you can also just put a wrangle down after the ocean evaluate and use a lerp() function to mix between the original point positions and the displaced point positions. You can do this based on a float attribute mask that you paint on the geometry, or any other masking technique for that matter You can also mask the spectrum itself and then feed that masked spectrum into the ocean evaluate node. Hope this helps, cheers!
Technical Discussion » stop particle on trail collision detect
- Robbert
- 53 posts
- Offline
If you want to collide and respond to a collision with a collision object that contains an actual surface can use POP collision detect for this. It even allows you to set the collision behavior to stopped, which will stop them when they have their first collision. In case you want to collide with particles you might want to write a little wrangle using the nearpoint() function to find points within a certain (probably small) radius, and then set the @stopped attribute to 1 when another particle is detected. Particles do not actually collide, but setting a low threshold for the near radius can get you similar behavior akin to collisions.
POP collision detect documentation [www.sidefx.com]
Nearpoint function documentation [www.sidefx.com]
POP collision detect documentation [www.sidefx.com]
Nearpoint function documentation [www.sidefx.com]
Technical Discussion » Vellum Grains first frame strange behavior
- Robbert
- 53 posts
- Offline
Is there already collision geometry inside of this pile of particles? In that case, you might just want to increase the resolution of the geometry and make sure the vellum particles do not intersect with it. If they do intersect, they will de-intersect themselves on the first frame and give this kind of pop. I cannot see exactly from the image you shared
Also here is a great video that explains a similar setup; https://www.youtube.com/watch?v=hSlHG_4lIyI&t=584s [www.youtube.com]
Also here is a great video that explains a similar setup; https://www.youtube.com/watch?v=hSlHG_4lIyI&t=584s [www.youtube.com]
Edited by Robbert - Aug. 29, 2022 04:39:48
Technical Discussion » How to check if piece is inside box bounds VEX
- Robbert
- 53 posts
- Offline
EliasCybornakirasun_shthanks for your response!
getbbox or volumesample should work
Not sure how to actually code the if statement on how to compare each piece location to the bounds of the box that i get from that function. could you elaborate?
Or do i still just code it the same way like
if(P.x >= Bounds.xmin && P.Y <= Bounds.xmax && P.y >= ....)
or is there a faster way?
If you are using the bbox functions; getbbox_size() and getbbox_center() you could compare positions as you describe above, you just simply have to take into account the position of the box AND the scale. So @P.x > bboxcenter.x - (bboxsize.x / 2) and @P.x < bboxcenter.x + (bboxsize.x /2). However, the downside of this is that it is not very compact to write, and you can only use a box, preferably one without any rotations. Instead you can convert the box to a SDF with the VDB from polygons node in SOPS. You can then use volumesample() function to get the value of the SDF and if that is under 0, your point is inside of the box. This gives you more flexibility to use any arbitrary shape.
This great video might be able to clear up the whole topic; https://www.youtube.com/watch?v=QgzxBN1m9WE [www.youtube.com]
References to the functions;
https://www.sidefx.com/docs/houdini/vex/functions/getbbox_center.html [www.sidefx.com]
https://www.sidefx.com/docs/houdini/vex/functions/getbbox_size.html [www.sidefx.com]
https://www.sidefx.com/docs/houdini/vex/functions/volumesample.html [www.sidefx.com]
Edited by Robbert - Aug. 26, 2022 05:30:48
Technical Discussion » Vellum Balloon return to original shape / size
- Robbert
- 53 posts
- Offline
danvsmachine02Robbert
I have not opened your .hip file but just sharing my two cents; You would probably want to animate the restlength on the contraints and simultaneously the thickness on the points (so that they won't collide and go crazy when the constraints pull them close together). To do that, you could either use a vellum rest blend inside a DOP network, or use a geometry wrangle / VOP to handle it all explicitly. You can set the inputs in the input tab of the wrangle/VOP. Point those to the appropriate fields; Geometry (the vellum points) and ConstraintGeometry (the constraints). At some point you can even turn point collisions off so you can make your balloons infinitely small. You can use the s@collisionignore attribute for that; https://www.sidefx.com/docs/houdini/vellum/vellumattributes.html [www.sidefx.com]
Hope this helps, cheers
Don't think this answers the question at all, but thanks.
I'm just looking at how to restore original shape size of the sim, almost like a reverse of the animation caused by already animating the restlength, reverting back to original state whilst still being affected by vellum.
Cheers,
I might totally misunderstand what you are trying to do then? If you want to return to the original size (which I understood as small/hidden) then animate the restlength and thickness back to the original states as mentioned before. If that does not solve the problem then I just don't understand what you are trying to do.
Technical Discussion » pressButton, onLoaded event
- Robbert
- 53 posts
- Offline
Change your callback to OnCreated and it seems to do what I understand you want to do? It gives the same trigger as I get when running the command you pasted here in the console. Again, I am not 100% sure I understand you correctly but oh well
Technical Discussion » pressButton, onLoaded event
- Robbert
- 53 posts
- Offline
Can you explain which function you want to trigger when? Do you want to trigger the change_string() function when a user puts a new instance of the node down or only on first loading of the scene? In the trigger_callback() function you are also using the .pressButton() function while that parameter is not of button type. I might just not understand well what you want to do?
Technical Discussion » Selecting invisible primitives from a point
- Robbert
- 53 posts
- Offline
szmatefy
It's a good idea, but for me, it wouldn't really work well.
So the idea is that I have a path where my car would go in an environment. I need to remove the primitives/polygons which are not visible from the given path (occluded, there normal is pointing away from the path, etc.)
I resampled the path and placed a dense sphere to each point, then I used ray SOP to find the primitives that are not at all, and then removed them. But I had to have a super dense mesh, and still, it'd miss a lot of primitives...I was also thinking to spit tons of particles into the scene from the spline path and remove the polygons no particle hit
How about using the dot product? You can calculate alignment of two vectors with the dot product and it will be returned as a float value between 1 and -1 where each opposite means either perfect alignment or opposite and 0 is perpendicular. You could maybe resample your path. For each primitive in the geometry, find the closest point on the path, calculate the positional difference so you get a vector pointing from one prim to the path. Then dot() that vector by the primitive normal and take out if the alignment is opposite. This however would still not account for a very bendy path where prims might be seen from totally different angles and positions on that path. In that case you would maybe want to include more points in the sampling, or just run the whole sequence through a solver with a similar approach. Maybe not a perfect solution... but just figured I'd share my thoughts
-
- Quick Links