Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Everything posted by StepbyStepVFX

  1. Add points to packed geo

    I understand better. You want to simulate all 10000 feathers using wire solver (each wire containting only a few points to represent a low version of each feather ?), and instance and pointdeform a packed version of a feather on each wire ? If yes, I would then make the wire sim first, and afterward loop over each wire (divide and conquer : you replace memory problem by using more space on disk), pointdeform my highres feather and save it to disk (.bgeo), and use it later as a "packed disk sequence primitive" (File Sop setup on packed disk sequencet). And depending on your computer strength, to save time, I would do it by bunch of 1000 wires (you can handle 1000 feathers at a time ? 4 million points is not killing a good laptop), and you would reach 10 sequences of 1000 feathers that you just need to load later for rendering... If not, if you want to only animate one template feather (but I doubt it if your animal is moving), it is even easier : save your animation of one pointdeformed feather to disk (.bgeo), and instance it through a File Sop setup on Packed Disk Sequence. All apologizes if I make you loose your time and does not answer correclty / understand correctly your problem, but your this topic is quite interesting :-)
  2. how to create Ink in water

    I remember a tutorial talking about that on cmiVFX : https://cmivfx.com/houdini-ink-fx Never bought, never watched, but seems like what you are looking for. And there is this one from Entagma (you can use it as a base start, altough in their setup they use a thin layer of fluid that they reproject on a plane, to focus on the nice turbulence - but the key is to have fluids with different densities, so to answer your question, I would use FLIP, have particles with one density, and change the density for a bunch of particles that are inside a drop of ink, for example, and colored differently):
  3. RBD fracture - id per set of constrained pieces

    You want your packed object to have an attribute that is the same among them when a constraint is still alive between them at the end of the sim ? I think you can manage that with Wrangle using a solver or multisolver. But how do you deal is, say, you have three pieces, one being constrained to the two others (1 object appearing in two constraints), but the others having only one constraint ? You can’t have a unique attribute... can you explain more what you want to achieve ?
  4. Prism pipeline

    Is it a kind of Shotgun “of the poors” (ie. assest management system + tasks followup) ?
  5. Add points to packed geo

    Hello, Packed primitives (if this is what you are using), are just a way to encapsulate your geometry so that, precisely, you only manipulate it like a solid object, using only one point (and one primitive, that contains that point) to bear all the attributes required for a RBD simulation, for example. So if you want to work again on the base geomatry, you have to « unpack » your packed object, with the unpacked node. Why are you using packed geomtery ? Is it for simulation purpose ? For instancing ? Depending on that, maybe it will be easier to work only on the unpacked mesh. You can also use your sim and the attributes P, V and W from your packed prim and apply them to other meshes than the packed one (separate animation from the feather from you sim). With more info on what you are trying to achieve, we may be able to help you more :-)
  6. Deform Bend Camera Ray?

    As far as I understood, the shaders only use build-in raytrace functions, so my guess is that to achieve such a results, you would have (i) to cheat (like what you did by cumulating various planes that « difract » or bend the rays), or (ii) rewrite your own renderer :-) I guess this is what they did for Interstellar. Just curious : are you trying something « physically based », that is to say taking into account mass of surrounding objects to « bend » space (or bend rays) ? The cheat I would use, because I don’t have the skills to write my own renderer, or my own raytrace functions, would be to use particles, placed at time = 0 on each point of a grid (each pixel of à fake focal plane of your camera), give them a mass (although photon don’t have one, but this is to cheat the curvature of space around massive object : light goes straight but into a curved space...), and throw them straight into the scene, apply force fields based on surrounding objects (forces in 1/squared distance or other potential exotic fields found in astrophysics books ), and retrieve the color of surfaces they hit... Once they all have colors, you can reconstruct the image knowing the initial position of your particle. You could even have more samples per pixel by increasing resolution of your grid, but you would loose secondary rays, shadows etc... except if you cheat one more time, by « baking » the textures and lighting first and then just play with the particles / pseudo-primary rays of this poor renderer just to get the a « gravitational lens » FX... Hope this helps :-)
  7. Round the value in the font node

    Check this thread, there may be useful info for you want to do :
  8. UV unwrap without holes

    By the way, there is this 3 minutes tutorial that can help you (but instead of doing it manually like she does, you can try to select your seams using the « algorithm » I discribed above to automatize it based on a threshold of the size of your islands) :
  9. retrieving attributes from objects within refractions

    Why don’t you apply a constant shader to your objects with the color you want them to have in the matte ? For the shader of your sphere just keep the refraction and kill the specular, and it should work, isn’t it ?
  10. UV unwrap without holes

    If the shapes are not too different after remesh, you can indeed transfer UVs between the two geo, like any other attribute. You can use the Attribute Transfer node, that take two inputs, and transfer based on distance, with options to average the values etc. You can even do your own by using xyzdist, primuv (uv of each polygon), and transfer the UV of vertex or points based on that. But concernign your initial question, I am wondering if there is not a way to process the UV to fill the holes : you can use the Connectivity node and check the « use UV connectivity »; then use the Measure node on « area »; then inside a For Loop based on the class attribute of the Connectivity Node, you Promote the area to detail, setup on « sum » and not average, so that you get the area of the island of UV, and Promote back to primitive. Then for each primitive, you look at the area, and if it is lower than a certain threshold (if is an isolated polygon), you seam its UVs with its neighbours (I think there is a node than can do that ? Or maybe loop over its points, get a list of neighbours primitives, and create its UVs averaging the UV values of its neighbours). And you « loop » that process a number of time necessary to fill the holes. I haven’t tried, that’s just how I would explore to obtain a solution... Hope this helps :-)
  11. Indeed, arcosine cannot know if your angle is x or 2*Pi - x, as both of them have same cosine. To work fully, you will need to build an up-vector, make a cross product between your up-vector and your « aim vector » (direction where camera is pointing), and make a new dot product between this new vector and the vector « camera-point » (as before). If they are in the same direction, dot product should be positive, and hence the arcosine gives you the right angle, if this is negative, then you have to take 2*Pi - arcosine. Just review if I am not mistaken myself in trigonometry before implementing that, I doing it quickly wihtout verification :-)
  12. Single Threaded vs Mulithreaded constraint solvers.

    I think in production they tend to freeze the updates of the softwares when they start the projects to be sure the pipeline will remain stable. I think the only solution in your case is to see if they kept the old solver node in 16.5..
  13. I will try to open your file and post a result when i can access my computer (when will there be a houdini version for iPad ??? :-)
  14. Randomize Const. Activation

    Yes, the expressions functions of Houdini works everywhere you have parameters. You can even open the Editor and switch to Python expressions. The syntax or if statement is always if(condition, value if condition is true, value if condition is false). Rand(seed value) is a pseudo random function : given a seed value, it will return a randomly chosen float between 0 and 1, but this float will always be the same for a given seed value (which is normal : if you want to render your files on different Machines, you need to have the same results each you open your scene file :-). I have used the frame number variable $F to get a new random value every frame. So yes, very standard expression you play with everywhere.
  15. Use a Point Wrangle, and for each point calculate the vector that goes from the camera to each point, normalize it, calculate the dot product of this vector and the normalized « aim » vector of the camera (I don’t know what kind of setup you have, if the camera will move etc... but it should be easy to compute or to create), and use the arccosine trigo function to get the angle (should be Y if the aim vector and the « target » vector toward each points are in the horizontal plane) Hope this helps
  16. You can try this site : https://vfxrates.com/ made by Allan Mckay. I don’t know how accurate it is, but it’s worth trying. Otherwise, outside freelance job, you can find useful info about salaries on the site / app called Glassdoor : https://www.glassdoor.fr/Salaires/index.htm Hope this helps.
  17. Need help on Tornado simulation

    For a good tornado setup, I encourage you to look at those FXPHD tuts, where they start with particles and sample them to create velocity field. Very interesting and lots of control over the look you want achieve : https://www.fxphd.com/details/491/ https://www.fxphd.com/details/502/
  18. wire solver interacts with RBD solver

    What do you want to achieve ? you want the wire to destroy the object, right ? I would simulate the wire first, without collider, then "thicken" it (with polywire or anything else), cache that animation, and use it in a second sim as a collider to destroy the fractured object (you'll probably have to fracture the wire itself to create proper convex fragments). And if you want better realism, you iterate with a second pass : you use the cached animation of the object fractured by the wire as a collider for a new wire simulation, to get a better interaction. So in short : wire sim first (alone, just one wire solver), RBD sim in second using a cached polywire from the first sim (so just RBD solver and static solver), and a second wire sim (just wire solver and static solver).
  19. wire solver interacts with RBD solver

    This is a collider issue. That can be solved, but in the end, the wire can be influenced by the RBD, but RBD don’t really work with the wiresolver back... Maybe that can work for your setup, but otherwise, you will have to cheat, by making two different simulations or find a workaround (with a SOP solver ?). Check this video where Jeff Wagner explains why it’s not working properly (around 1h42...). Sorry for the bad news...
  20. macro shot of droplets falling from ceiling

    Well, I believe Flip is more for mid-scale phenomenoms, so you are going to lose some times setting up everything for uncertain results (although you have surface tensions etc. : I don't think it is made for small things like droplets on a ceiling :-). Personnaly, I would do it the old way : with Lattices, or with point Wrangle and SDF to make the drop/sphere deform in contact with the ceiling, and/or sculpting some geo and blend between them when the drop is falling... The geometry is quite simple, there are no complex splashes... DOP / FLIP would be overkill for this kind of things. But that's just my opinion, which I can't help sharing on this forum :-)
  21. Copy Stamp / For-Each / Compile-Block

    Indeed, File node is not compilable (you can display the "badges" to see which nodes can be compiled, in the Display option). But I remember from the video of Jeff Lait there are tricks to use non-compilable nodes, but outside of the network : you need to create many "Compile Begin" nodes as you want and setup them as "fetch input", so that they serve as input point for the compiled blocks. You can try that to use Files node to read a cache of your particles, and also the crowd-agents. But I am afraid that by doing so, you don't gain a lot of time multithreading the instancing of cache files on points... I am pretty sure the speed of hard drive and then the graphic card are more limitating than the CPU tasks for this kind of things... but I may be wrong :-) Let us know if this works and how many times you gained ! Look around 00:25 of this video, he talks about using Copiled Begin setup for Fetch Input :
  22. merge points with mesh ?

    Sorry, I don’t understand your question. I don’t know what you want to achieve, so I just wanted to stress that in the expression you wrote intially (addvertex(geoself(),0,@pointlist), you were probably adding your point @pointlist into the same primitive, which may not be what you want (this makes sense for a long polyline, but if you work on geometry that only has polygons, it means you are adding points to only one polygon. But I don’t know if you were in a Primitive Wrangle, PointWrangle or Detail Wrangle, I don’t know if within this xxxxxx - Wrangle you iterate over a list of point (I was infering that based on the name of your attribute @pointlist, but I maybe wrong). So it is hard to tell you what is messing your setup :-)
  23. Limit one parameter using another?

    In the interface, I am not sure a parameter can refer to himself in the expression. Therefore, I think your need to create a third parameter that will take min of both values, and use this value instead of parameter2 OR, create a new parameter where you set a value of « parameter 2 » (altough this is a dummy paramater), and in parameter 2 you take min of parameter1 and the value of new parameter... To create another parameter on a node you need to click on the cog, and edit parameter interface. There you can create a parameter with the type you want.
  24. Displacing displacements for curly paper

    That's much better using the computetangents node :-) Thanks for your files ! I was using dPds, and I was wrong ! paper_roll_shader-1.hipnc
  25. Fusing or Blending with polygons

    You can use a combination of Boolean, For Loop, and nest everything in the powerful Compiled Block (which allows you to multithread that, and it works well with Boolean).