Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Community Reputation

3 Neutral

1 Follower

About PlatinumFishy

  • Rank

Personal Information

  • Name
  • Location

Recent Profile Visitors

455 profile views
  1. Limit one parameter using another?

    Sorry if I wasn't clear. I know how to do it in vex, hscript, etc. but I am trying to do this on a control null node. So within the actual parameter interface.
  2. To be more specific I am trying to make parameter1 equal parameter2 when parameter2 is larger than Parameter1 if(param2 > param1) param1 = param2; ^^this but in the parameter menu
  3. underwater growth effects?

    If it is meant to look like sponge ball coral or something then you can probably just use a procedurally generated bump map. I suggest making two bump maps actually, the first is mainly to get the larger indents or holes of the geometry and the second would just be a bumpy texture that you can probably get from online. I tried to find a way to model directly but it wound up being more trouble than its worth. (of course this bump map will just be applied to a deformed sphere that you can For-Each Copy in order to vary)
  4. underwater growth effects?

    Your solution depends on what’s you are trying to accomplish. You say you are doing coral growth but does it need to be true to life or a simulation at all or would could you used instances geometry? Could you just do a time lapse that looks like separate photos rather than a smooth time lapse to cover up the plain growth of a simpler method? Is this just a challenge for yourself or a shot for a project? It could also be an optimization problem with your method, your project Ilene would help us detect what’s is slowing it down. Also for a convincing shot you will probably want to think about simulating algie, that hair stuff that tends to grow under water (I’m not sure if that isn’t algie but I think so?) and some floating particles for debris.
  5. VEX cabinet generator

    No need to buy her lake house videos just yet! Just watch the free talk she does on vimeo, it is a good way to understand how you should approach most problems in houdini.
  6. Train tracks in procedural

    Alright boys here is v1.0. It is fairly undocumented and kinda confusing but it's here. I /may/ clean it up later. Also I decided to go with method number 2. trainstuff.hiplc EDIT: Doing this made me wish that Houdini had a do while node system. (I know they have it within VOPs but why cant we have it at SOP level) EDIT 2: Cleaned up v1.0 and added a little menu functionality! (but more importantly added comments to my code) trainstuff 1.1.hiplc
  7. Make a loop for a few primitives.

    So, what you need to be using is a for each loop. There are many ways the for each loop can be configured though, making them hard to figure out. Here are some differences key dofferences off the top of my head. A point wrangle (essentially a for loop over points) will do a set of code for each point, it will be able to access information from other points, but it will not actually commit those changes until the end. ex. Say I had 5 points each with an attribute value “value” equal to two. If I said to add the previous points “value” to the current points “value”, the values would all wind up being: 2, 4, 4, 4, 4. Rather than 2, 4, 6, 8, 10. By default, a for each loop will isolate whatever piece it isn’t working on. So if you are working on primitives, it would delete every other primitive except for the current iteration. Then at the end it will merge all the iterations together. The problem with this is that you are unable to access other parts of your geometry. And then there is a mode that will go through each and every piece, but will do it as a whole (meaning it does NOT isolate every piece beforehand) AND it will update the entire geometry before going through the loop again. I am pretty sure this is the type of loop that you want, so do some research into for loops on houdini’s documentation.
  8. Train tracks in procedural

    That is a clever idea! I’m not too good at texturing and rendering so I didn’t think of it in that way. I also have two other concerns with that: The first Is that we would actually have to create a proper path. Honestly I have attempted (and succeeded) making a smooth path before when making a pulley system and it is a B. I would personally rather just use the resample the calculate a few key positions and then copy the pieces. My second reason against that is if the user wanted to do sims with it. Whenever these wooden tracks are being used, there is usually a child causing havoc nearby.
  9. Make a loop for a few primitives.

    I’m sorry I am a little confused about what you are asking. Are you truant to make a Maxwell Cremona Diagram but in houdini?
  10. Train tracks in procedural

    This sounds neat! I'm down to offer some help. Well as with most things in Houdini I think it would be a good to start by breaking our problem down into parts. So we have the user create a nurbs or bezier curve (not polygon) so that we can resample the curve into evenly spaced lines. Having the lines be evenly spaced will help if/when we calculate the curvature between the re sampled points. What comes next depends on what kind of system we design. Option 1: We calculate the curvature of the curve and if the points fall within a certain angel threshold they get assigned a value (0, 1, 2...) corresponding to the respective piece. Option 1.1: After we find what points would get what pieces, we build the whole thing piece by piece. Starting with an initial position and then going through each point, reading which piece, and then appending that piece to the end of the rail. There are problems with this though. Because the system is built around the curvature between two points, it doesn't take into consideration where those two points are meaning that by the end the rails would be very displaced from the original curve. Option 1.2 After finding the curvature and determining which points get which pieces we break it down into smaller groups. What I mean by this is that when a piece has another piece of the same type next to it it gets put into another smaller group with that other piece. (for this we would actually use "piece0" or stuff like that). The reason for this is that we can construct the curved pieces first and put them around their respective "circles" (we could average out the position of the points or something to find an approximate center) then we can try to loop over the whole thing again in order to find ways to connect those curved pieces. Option 2: We start by matching the initial position of the curve and the tracks. Then we compare the end of the current piece of the track with the next point and determine which piece would most help realign us to the point. So we have a vector pointing directly "forward" on our tracks, and we compare that vector to the difference in positions between the end of our tracks and the next point. If the angel between the two vectors is larger than 45 degrees we use a curved piece. This method allows us to stay on the path but may run into problems when trying to get on the line but constantly being bounced between curved pieces (we would want a straight line but the computer would get confused and try to oscillate between curved pieces in stead). Also another problem would be height, because it is only focusing on the next piece and itself, it would not know if there are overlaps. Option 1.1 would analyze the whole thing in one big step then try to build the tracks from there. Option 1.2 would analyze chunks of it, build chunks, then analyze again, etc. Option 2 would analyze only the next point, build, then repeat.
  11. VEX cabinet generator

    Alright sorry for the wait I ran into a little problem that I had to fix. This file has a bunch of notes and if you have more questions (or anyone has any constructive criticism on it) I’ll be checking in on the thread. cabinet.hiplc
  12. Need help with simple string manipulation

    Again, am I not doing the same thing for the param variable? this works: float param = `chs("../control/parm1")`; That is also using the chs() and it reads into a float. Edit: Okay I figured It out, I need to get rid of the back quotes encasing the chf() in order for it to work properly. This probably has to do with me copying the parameter and pasting relative reference in order to get the syntax.
  13. Need help with simple string manipulation

    What do you mean? I am using the path variable to store the reference nor the actual value. When getting the value for the param variable I also used a string within the chs() and it worked.
  14. Need help with simple string manipulation

    I'm sorry I should've included that, it says: "Syntax error, unexpected ';'.
  15. Need help with simple string manipulation

    Trying to access a dynamically generated parameter from my control node and eventually put it into an array. I just do not understand why using the path variable is any different from just reading the string directly. here it is in text form btw int maxi = 2; for(int i = 1; i < maxi; i++){ string path = sprintf("../control/parm%g", i); s@path = path; //works^ float param = `chs("../control/parm1")`; f@param = param; //works^ float value = `chs(path)`; f@value = value; //doesnt work^ } Edit : Ive added a simple project file vex calling.hiplc Edit2: Okay I figured It out, I need to get rid of the back quotes encasing the chf() in order for it to work properly. This probably has to do with me copying the parameter and pasting relative reference in order to get the syntax.