Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Everything posted by StRaToX

  1. Hi I'm new to Houdini and recently I've been getting into DOPs. I have a question I've been trying different things out in dops to see how they work, been playing around with the "Gas Match Field" node and found that it works quite nicely when both fields you are supplying the node with are from the same object Like on picture 1, both the "myField" field and the "heat" field are part of the same object and the node works just fine But what I can't figure out is how to make the node work when I'm supplying it with fields from different objects. On picture 2 "myField" is part of an empty object and the "heat" field is part of the smoke object, I tried to reference them via their paths like on the picture 2 but unfortunately it doesn't seem to work. Does anyone have any insight into why this may be, I can see how referencing field from different objects can come in handy not just for this scenario.
  2. Alright I get it now, thank you everyone. Regarding the merge node question I was thinking about when you want to perform actions in an order does the merge node provide that, as in nodes connected to it execute in order from the first to last
  3. Why is it that after you used the gas match field node which creates the non-existent "mask" field there's a wrangle ode which does the same ? Also do merge nodes run their child nodes in order from left to right ? This next question is unrelated but how do I copy or transfer a field or data from one object to another ?
  4. Thanks for replying, really appreciate it So your saying that even thought the description for the field parameter says : "The name of a field that one wants to create. If it doesn’t exist, one will be created. This can be a space separated list of fields to create many fields in one DOP." , instead it only just makes field and doesn't modify them. Ok then. But in that case how would I go about matching an existing field to another And also I really have to know, on the second picture am I even referencing these field the right way, I mean the path to them and all that
  5. Please, I just need a couple of pointers I've been trying to set-up a pyro simulation, have some smoke rise up and collide with an rbdobject. I've uploaded my hip file and written all my questions and problem explanations in there. Plus I think that it's much easier to understand if you have my hip file instead of me trying to explain it here in text form. Please take a look at it. The gist of it is : The smoke has a temperature field. And I've wanted to lower the temperature field of the smoke that comes in contact with the geometry so I've come up with the idea to give the geometry it's own temperature field and tick the temperature merge option on the pyro solver. In order to create the geometries temperature field I plan to make a volume mask to mask out the smoke's temperature field so that i'm only working with the voxels that make up the geometry and then lower their values, the result will then be the geometries temperature field. I've listed all the problems and explanations inside the hip file please take a look Any suggestion is greatly appreciated Thank you Houdini_DOPs_pls_help.rar
  6. I'm new in this whole Houdini thing I at least wanna know if i'm referencing field from different objects the right way Like in the gas nodes
  7. Is the thing that is stopping my gas nodes from executing the fact that I use multiple objects and somehow mess up the syntax when referencing fields from other objects. Well to me it makes sense to in the gas match field node reference one field from the rbdobject as /obj/Smoke_Simulation/dopnet1:rbdobject1/temperature_mask and then reference the other field for the reference like /obj/Smoke_Simulation/dopnet1:smokeobject1/temperature is this where the problem is, that one field in on one object and the other on another object I see that you always make all your fields part of one object, is it impossible to put fields on different objects and then make gas nodes perform operations on field that exist on different objects
  8. I'm trying to make a temperature field for my geometry I want this field to have the same values as the smokes temperature but only subtracted by an amount. Starting from the smokes temperature field I'm trying to isolate only the voxels inside the geometry and then subtract their values. I've listed all my questions inside the dops node Looking at what you've done raises another question for me I see that you import volumes using the source volume node and then wire them into the last input on the solver even including masks. Is the thought process when importing fields from sops Use "Source Volume" set it to maximum and make sure that on the sops to dops bindings tab it binds to a field of and object you want to apply it to Or is the thought process of importing volumes from sops Use the "sopscalarfield" node and then use the apply data to apply it to your object also why is it that none of gas nodes get executed
  9. Hello everyone, I've been getting into DOPs recently and i just cant figure out something. I have a SmokeObject and an RBD object. They are both plugged into the Pyro solver. The smoke has a collision relationship with the RBD object, and the Pyro solver's option "Temperature Merge" is set to "Collision Interior". In order for the "Temperature Merge" to happen the RBD object has to have a temperature field. Now what i want is for the RBD object's temperature field is to be just like what the smoke's temperature is but subtracted by a number so that the RBD object is always cooling the smoke. I've Created a fog volume that consists only of value 1 voxels inside the RBD Object and value 0 voxels outside of the RBD Object. I'm planning on using this as a mask for the smoke's temperature field (multiplying these two fields) and then lowering the value for all the kept voxels. Now i don't know what is the best way of achieving this but i thought that I can bring in the mask field (the only 1 or 0 field) into the dop network using the "Sop Scalar Field Node" and then extract the temperature field out of the SmokeObject using the "Fetch Data Node", wiring these two into the "Gas Calculate Node" and then blending and doing post subtraction in there. I don't even know if that is the right way to do it, but anyway once I connect the scalar field (the temperature mask, brought in from sops) into the gas node everything is ok. Once i plug in the data (SmokeObject's temperature field) into the gas node it reports an error saying that the connection to the fetchdata node is the wrong type. How could this be? Both the "SopScalarField" and the "FetchData" nodes output data, how come that the gas calculate will accept data coming from the "SopScalarField" node and not from the "FetchData" node ? I've been trying to resolve this for a while now, if anyone could help out it would be greatly appreciated
  10. Temporary variables in VEX Help

    Hi I'm new to this wrangle node programming, I've been busting my head over why this doesn't work for three days, it's so simple therefor i must be missing out on some general vex concepts. If anyone can please point me in the right direction that would be greatly appritiated. I have a bunch of points on a grid and their moving up and down via noise. I am trying to set up a point attribute that has a value of 1 when a point if moving up (positivly in the Y axis) and a value of 0 when a point is moving down (negativly in the Y axis). This attribute is called Direction, I'm computing the logic on temporary VEX variables and then writing them out to the attributes. Here's how it looks like : // 0 is going down, 1 is going up, -1 means the point has no direction // on the first frame they have no direction so the points just take their current heights so they can use them for comparison on the second and every other frame int temporary_Direction; float temporary_Previous_Frame_Height; if(@Frame == 1) { temporary_Direction = -1; temporary_Previous_Frame_Height = @P.y; } else { temporary_Direction = @Direction; // ------------> this is where the problem is (this is here so that the temporary variable get's the value of the currently proccesing point every frame) temporary_Previous_Frame_Height = @P.y; if(temporary_Direction == -1) // If the point has no direction { if(temporary_Previous_Frame_Height < v@P.y) // If it's going up { temporary_Direction = 1; temporary_Previous_Frame_Height = v@P.y; } if(temporary_Previous_Frame_Height > v@P.y) // If it's going down { temporary_Direction = 0; temporary_Previous_Frame_Height = v@P.y; } } } // Out_Values i@Direction = temporary_Direction; f@Previous_Frame_Height = temporary_Previous_Frame_Height; // Out_Values The problem here seems to be when I declare "temporary_Direction = @Direction", for some reason on the second frame when I read @Direction the value wich is given to temporary_Direction is 0 instead of -1 wich was given to every @Direction on the first frame. Temporary_Previous_Frame_Height updates just fine but temporary_Direction doesnt. Also writing "if(temporary_Direction == -1)" doesnt seem to work either. Is my thought process even slightly right here, what am i doing wrong, are temporary variables created in vex something that exist globally and in order to use them per point we need to read each point's values or are temporary variables something that exist for every point. Also why do i have to give values to all attributes every single frame or else they will reset to 0 (hense the Out_Values section). //////////////////////////// Update Thank you everyone for replying. I've tried out the time shift sop and it work's fine now( I dont even need the Previous_Frame_Height attribute anymore). I've updated the main post with the original hip file and the one with the time shift sop. Learning about the time shift sop is great, but i would still like to improve my thought process on writing code. It would be greatly appritiated if someone can take a look at the original hip file and possibly shed some light on the problem. I've added notes inside the original hip file for clarity. Any help would be appritiated Thanks in advance Original.hip Time-Shift SOP.hip
  11. Temporary variables in VEX Help

    Alright, i got everything sorted out, all the concepts have been cleared up for me and the problem solved. A big thanks to everyone who helped out, this really means a lot
  12. Temporary variables in VEX Help

    Here's the hip file. I've explained inside what i'm trying to accomplish and also explained via comments every step of the point wrangles code Pls_help.hip
  13. Temporary variables in VEX Help

    Thank you j00ey, now i can finally create a detail array attribute and was able to progress a bit. Now i'm stuck at trying to make the array carry on through frames. Currently i am trying to create a for loop that will do the calculations for all previous frames, if i try out creating the detail array inside a solver even though it gets created at the end of the tree will it persist from the prev_frame node to the next frame ?
  14. Temporary variables in VEX Help

    when I declare an array like this int Glitched_Group[] = array(); and then use push(Glitched_Group, @ptnum); when i print out the array it just prints 1 for the first element and 0 for all others also how will i go about transfering this array to another wrangle node
  15. Temporary variables in VEX Help

    That that mean VEX arrays don't reset when houdini cooks a new frame ?
  16. Temporary variables in VEX Help

    Ok, that explains allot. f1480187 demonstrated that with the solver node from the rising file. I'll have to look into the sop solver and solvers in general. So am i correct in saying I will be able to acess value's from any time step and frame inside a solver. Should i just recreate my idea inside a solver ? Well i'm sure it's not as simple i'll look into it some more later.
  17. Temporary variables in VEX Help

    Thank you everyone for replying. I've tried out the time shift sop and it work's fine now( I dont even need the Previous_Frame_Height attribute anymore). I've updated the main post with the original hip file and the one with the time shift sop. Learning about the time shift sop is great, but i would still like to improve my thought process on writing code. It would be greatly appritiated if someone can take a look at the original hip file and possibly shed some light on the problem. I've added notes inside the original hip file for clarity.
  18. Temporary variables in VEX Help

    That was just me misspelling it in this topic, corrected