Welcome to od|forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Search the Community: Showing results for tags 'attributes'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • General
    • Lounge/General chat
    • Education
    • Jobs
  • Houdini
    • General Houdini Questions
    • Effects
    • Modeling
    • Animation & Rigging
    • Lighting & Rendering
    • Compositing
    • Games
  • Coders Corner
    • HDK : Houdini Development Kit
    • Scripting
    • Shaders
  • Art and Challenges
    • Finished Work
    • Work in Progress
    • VFX Challenge
    • Effects Challenge Archive
  • Systems and Other Applications
    • Other 3d Packages
    • Operating Systems
    • Hardware
    • Pipeline
  • od|force
    • Feedback, Suggestions, Bugs

Found 36 results

  1. Hi, I've tried it over and over. Suddenly the complete attributes are missing in the POP. I dont know the concrete circumstances when it happens. I think its different. Is it my fault, missing something, a bug? disintegration_v.2.hip
  2. Hi, I've tried it over and over. Suddenly the complete attributes are missing in the POP. I dont know the concrete circumstances when it happens. I think its different.
  3. Hi, I've tried it over and over. Suddenly the complete attributes are missing in the POP. I dont know the concrete circumstances when it happens. I think its different. disintegration_v.2.hip
  4. Hello, one question please: What expression can I write to use the @ptnum attribute to drive the @P.y attribute using VEX or Python expressions. What if I want to drive @P.y with @P.x ?? thanks in advance.......
  5. Hey guys, About this energy attribute, I think I could make a good use of it but I don't know how to access it. I mean, I can see it in the dops geometry spreadsheet but it doesn't get out there. I can't see it in sops. My main doubts are: - Can I bring this attributes to sops? (dissipationdensity, kineticdensity, potentialdensity) - Can I use it in dops? (use it as a multiplier for some other parameter, like the fracture threshold for example) Thank you fem.energy.v1a.rar
  6. Hi there, I am trying to build a propagation driven blend / morph effect to change the look of a geometry. But I am already stuck by transfering the atrributes between the geo A and geo B. I managed to build a set up where I change the geometry by using a attribute vop and subtracting B minus A. Here come the BUTs couldn´t animate it by keyframing the Bias of a mix node. couldn´t use a propagation effect with scattert points In the second set up I tried to change the set up by using a scatter node insted of the normal geometry. It works but it seems that the point order isn´t the same and while changing the bias of the mix node all the points change it´s position?! In the scatter node I unchecked "Rondomize Point Order" but without any effect. I also tried to use set up with the change from lowres mesh to a highres mesh, but here I couldn´t get solution with the scattered point, because of the primitive Attribute node in the second Vop. I also tried to recreate it with point cloud node but failed as always. I am pretty new to Houdini and I know that I am missing a lot of foundation knowledge, it would be great if someone could give me a hint what I am doing wrong. Thanks and all the best Dennis 170422_position_transfer_001.hiplc
  7. Hi, probably a simple one but I'm having problems deleting points based on a point attribute called "wet". So its a wet map. The delete sop isn't willing to delete anything here. Any hint? Thanks
  8. Looking at the Geometry Spreadsheet. A Group SOP creates an attribute like "group:foo": I can easily access that group "attribute" in a Wrangle like so: i@myvalue = @group_foo; QUESTION: How do I access that group attribute on parameters that requires an attribute name? For example, in a Color SOP's Random from Attribute: Or on a Delete SOP's Filter Expression: Although I know that I could just type the group name on the group field. I'm just curious if there's a way to access the Groups data as "Attributes". Particularly, I'm asking because I want to access Groups as an "Attribute" in the Enable Solver DOP without actually creating an actual attribute to represent the group: Hopefully I'm just missing or forgetting the proper syntax.. P.S. The Enable Solver could use an option where it can check for existing groups. I'll probably send an RFE
  9. Hi all, I am trying to use geometry to control attributes on particles. Would anyone know how to do that? Problem. I have a flat bed of sand grains with their "static Kinetic" set very high. But I would like the collision geometry (a hand in this case) to diminish the "static Kinetic" attribute to a very low setting. Much like using the sop solver for fluids. Cheers, dreamagery
  10. 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. hey guys i'm trying to do a basic FEM test here and having a prob with attributes I paint up an attribute call 'shapestiffness' then i'm trying to pass that to dops - so i've entered @shapestiffness into the slot in the solid object node in my dop network. My understanding is that the attribute should act as a multiplier but i cant get it to work it just splats on the floor this is probably comically easy for some of you but i'm still trying to wrap my head around attributes to control objects and stuff so bear with me I've attached a super simple ball scene where you can prob see what i'm failing to do lol! anyone got a few mins to take a quick look? ta ant shapestiffness_variable_FEM_test01.hip
  12. Like the title says. I'm trying to kind of make my way through the SHOP context, but my biggest problem is accessing information from the actual geo. I made a fairly simple scene where I am running a sin over the sphere's @pscale. In this case I'm just trying to have the @pscale control the principal shader's emission amount. I tried making an attribute VOP where I bind the @pscale to a bind export and then named it "lit". After this point I can't fin an answer online how to access and connect that attribute to the emission. I know it has to be the easiest and most obvious node, but I can't seem to find the answer. All help is much appreciated! size_lit.hipnc
  13. What is the difference between creating the name attribute in the voronoi fracture, or later in the assemble?
  14. So I come from a Max background using Vray. I can load in VDB's from Houdini through Vray's VolumeGrid. I was trying to do the reverse; load in FumeFx VDB's into Houdini. I can load in the VDB's no problem and I see it in the viewport. However, trying to use the volume shader is entirely different. When I click the VDB in the viewport and go to the primitives view I can see Fume's channels. I'm not sure it's even possible but I attached a screenshot to better explain what I'm talking about. I would attach a .VDB file but it's 100mb so...But the scene is literally loading in the file and then has a transform to scale it down. Thanks!!!
  15. Back in January I didn't know Houdini existed until I started school and ever since I've been trying to learn as much as I can. I still have a lot of work to do and there is a lot more I want to learn/try but this is all I've learned up until now.
  16. Took me a while to get this far on this project. But I managed to somewhat recreate the derez effect from Tron: Legacy.
  17. Hello friends, yet another explanation of attributes in Houdini. Hope you will find it useful ))
  18. Hi everyone, The new GridMarkets Houdini artist feature is out! Johnny Farmfield, Houdini artist from Sweden, shows us how working with attributes is key to understanding the Houdini workflow. Don't miss his entertaining and extensive tutorial. Have a great week, Patricia and the GridMarkets team
  19. Hi all, Am trying to tweak a scene file that was passed to me from here (apologies, I don't know/can't find original poster, so can't credit). It's a wire sim where points are activated based on their Y position - And I'm trying to tweak it to be based on color. I've worked a nice way to animate my colour across the points in a way I like, but my question is: How do i get my point color attrib to update per frame in the dopnet? And how do i associate it to the gluetoanimation value? Been really trying to get this going today, but to no avail... Any help or tips gratefully received! activate_sim_based_on_color.hip
  20. Hi everyone, I apologize if this has already been asked but i couldn't find an answer for this precise case. I have points with a bunch of attributes and I'm using an Instance Node to render them. Each instances is set by an instancefile attribute. I want to use the id attributes to export aovs from the shader but I can't find a way to have the instances inheriting the points attributes. You can see in the example file what I wish to do with the instance display node unpacked. I saw post about the function instancepoint() applied to the object to instance but I guess that in my case I cannot use this with instancefile since files are written ahead. Maybe should I find an other way to instance my geometries which are currently in files debris.0001-0050.bgeo.sc using the attributes pieceNbToInstance to somehow filter the piece to import but ideally I'd like to use the easiest way if possible so I don't write unneeded stuff in the IFds. Any ideas ? Thanks ! Chris instancefileWithAovsUsingAttributes.v1.hipnc
  21. How do I add an input curve to the polyExtrude which is outside of the current context ? Can someone correct me if I'm wrong, from my understanding of the splitGroup option within the polyExtrude is suppose to add edge splits to the selected geometry ? I have the option toggled on in the polyExtrude node, along with a group selected but I don't see any edge splits ? Local attributes, all the manual states is, for example, for distance scale is; Multiply the extrusion distance by the value of this attribute ?
  22. Hello All, I am using VDBs to combine geometry and I am interested in a way of maintaining specific attributes from the two input geometries. Currently I have two poly objects which are being converted to VDBs and then combined using VDB combine and then converted back to polys using VDB convert. What I want is to be able to identify which polygons on the resulting combined/converted object comes from which input object and also maintain their respective UVs. I have had some success with using the second input of the convertVDB node to transfer attributes. Using this method however, I am only able to maintain some of the objects attributes, not all. I've attached some images and a file to demonstrate my issue. In the attached file I have three objects; Base, Add Sphere and Sub Sphere. All objects contain UVs and an ID attribute (tmp1), they are all converted to VDBs then combined using VDBcombine nodes. Finally the resulting VDB is converted to polys using convertVDB. When both original sphere are input into the second input, the UVs and ID attributes are transferred correctly however the Base object is not. When all three objects are input into the second input of the convertVDB, only the Base and one sphere's attributes are transferred correctly. I have tried several different combinations and methods of making this work to no avail, but it feels like I'm so close if I can get all three objects to transfer the attributes correctly, just not all at the same time. It is possible to use two convertVDB nodes, one with the two spheres in the second input and the second with all three objects in the second input, then deleting the problem polys from either (using the ID attribute) and then merging the two together, but this is not very ideal. In the image on the left you can see the results of the convertVDB using only the two spheres as the second input, the middle image is when using all three objects (base, add_sphere and sub_sphere), and the right is an image of all three input objects showing their UVs. I am new to VDBs so I was hoping someone might have some alternative methods or could point me in the right direction. Thank you all in advance! Cheers, -Mat VDB_attributes.hip
  23. Hi Guys, I'd like to know a way to control different forces, based on some attributes. I find is very easy to control Pop Forces based on position or velocity or Cd attributes... but I want to have this control using for example Gas Turbulence or Gas Surface Tension to control my fluid... Imagine I have one liquid that is flowing along a curve and after TX > 5 it will increase surface tension and turbulence. How would you do that?
  24. Hey guys I have a simple enough problem i wanted to solve in HDK, and i managed to do it, however im sure there has to be a more elegant solution with enough knowledge of HDK classes. I wanted to do a simple sop that compares the same user chosen attribute from two different inputs, and either groups the difference as points group, or deletes points that have the same attrib value across both inputs. Basically i just have the same point cloud on both inputs, the second input has a timeshift node that looks up the previous frame. Its a simple enough exercise, however i have to ask if anyone knows if im reinventing the wheel, if the interface for doing stuff like this is more simple to use, or could give me some hints on how to do it better. Now the problem i came across was how would one define an array to hold values of an attribute of type we dont know in advance? Ive used a hacky solution where i would do the following in cookMySop() //get ptrs to our input geoconst GU_Detail *firstInput = inputGeo(0); const GU_Detail *secondInput = inputGeo(1); //find if attr exist in those geos, lookup is our string that holds the attr name user chose from the UI const GA_Attribute *fattr = firstInput->findAttribute(GA_ATTRIB_POINT, lookup); const GA_Attribute *sattr; //get our total numpts std::cout << "total num of pts (1): " << firstInput->getPointMap().indexSize() << std::endl; // std::cout << (GA_StorageClass)fattr->getStorageClass() << std::endl; //if we have hooked a second input, find attrs and get total numpts if(secondInput) { sattr = secondInput->findAttribute(GA_ATTRIB_POINT, lookup); std::cout << "total num of pts (2): " << secondInput->getPointMap().indexSize() << std::endl; } // If source attribute doesn't exist, error. if (!fattr || !sattr) { addError(SOP_ATTRIBUTE_INVALID, (const char *)lookup); return error(); } //define our arrays UT_ValArray<int32> ptNumListFirst; UT_ValArray<int32> ptNumListSecond; UT_ValArray<int32> ptNumListDiff; //only if our attr is not string shall we compare, have no idea how to figure out string yet if(fattr->getStorageClass() == GA_STORECLASS_INT) { std::cout << "Yes it is a numeric!" << std::endl; //feed our list of attr values in the array FIRST GEO gdp->getPointAttributeAsArray(fattr,gdp->getPointRange(), ptNumListFirst); //if we have connected the second geo if(secondInput) { //feed our list of attr values in the array SECOND GEO secondInput->getPointAttributeAsArray(fattr,secondInput->getPointRange(), ptNumListSecond); //compare our first and second input list and feed the diff in the third input //this is our class method compareUTArrays(ptNumListFirst, ptNumListSecond, ptNumListDiff); } } I actually dont allow the user to pick an attrib from the list thats not int or the node errors out, so basically im forcing the user to choose an int attr. Im sure there is a better way of doing this. Also i tried using the sortedIntersection() method of the UT_ValNumeric array type, however i could never get the difference to be calculated so i had to write my own implementation of the method (compareUTArrays()). Also in the end i use this approach to get the pts in an array that either needed to be grouped or deleted, im not entirely sure if its the "proper" way of doing things: //if we ticked new group, create a new group for pts if(newGrp || deletePts) { //create our new group GA_PointGroup *diffGrp; diffGrp = gdp->newPointGroup(grpName, false); //create a temp group we will delete later if we need to delete points GA_PointGroup *delGrp = gdp->newPointGroup("__tempDelGrp__", false); //get the handle to our int attribute //would prefer if i could somehow make the handle type recognize the attr data type GA_ROHandleI lookup_attr(fattr); int32 value; //iterate thru all points for(GA_Iterator it(gdp->getPointRange()); !it.atEnd(); ++it) { GA_Offset offset = *it; value = lookup_attr.get(offset); std::cout << value << " is value of pts attr" << std::endl; //iterate thru the array and if we have found same attr value add it to the group for(UT_ValArray<int32>::const_iterator itarr = ptNumListDiff.begin(); itarr != ptNumListDiff.end(); ++itarr) { if(value == *itarr) { diffGrp->addOffset(offset); continue; } } } //the diff between the first and second input is found in the diff array //however we need to delete everything thats not the diff, and that is the second inputs members translated into first for(GA_Iterator it(secondInput->getPointRange()); !it.atEnd(); ++it) { GA_Offset offset = *it; delGrp->addOffset(offset); } if(deletePts) { gdp->destroyPointOffsets(GA_Range(*delGrp)); gdp->destroyGroup(delGrp); } } Now i guess i can use the GA_Attribute.getStorageClass and a switch or if statement and initialize my arrays according to the type, but like i said somehow im sure there has to be a more intelligent way of doing this Also im a bit confused about the bumpDataId, what should i do in this case? If i just group my points and dont even modify the geo or attrib values, should i signal houdini to bumpDataId and whats the syntax for doing that? If i delete points however im sure i have to inform houdini that ive modified geo, which class or method should i use to do something like that? I hope all of this makes sense, let me know if it doesnt ill try and elaborate better Any help would be greatly appreciated Thanks Serge
  25. Hello! I am currently playing around with using COP together with SOP, and I have run into a little problem. Here is what I have done: 1. I have scattered points along a surface 2. Then I gave each point an attribute which contains a filename like "flower_1.jpg" and "flower_2.jpg" 3. With a copy SOP I put planes on each point 4. After that I put a material SOP wich overrides the texturepath with the attribute from the point 5. Everything works as it should. Now I am in need to faking shadows (please do not give me suggestions on other ways to do shadows, we do both know that it isn't really flowers I am working with ) The solution that fits my needs the best is to have a plane, rotated along the surface, with the same texture as the previous one. But this of course needs to be black and a bit faded. I have managed to do this in COP with a hardcoded texturepath, but now we have reached my problem How do I feed my point attribute with the filepath into my COP-network, and then retrieve the output so that I can use it as a texture? I have tried to search, but I have had no luck so far. I am thankfull for everything that can get me in the right direction Cheers! Joakim