Houdini Algorithmic Live #066 - Strandbeest with KineFX

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
okay hello hello so i think it's around time um this is 10 p.m japan time so i would like to start this week's uh houdini all the algorithmic live tutorial okay and the topic for today is to create a wind sculpture called strand beast designed by a theo janssen which he created this mechanism link mechanism to create a simple structures but creating a working machine like these by just by only just by rotating this center rod here and by doing it all the other rods are going to move along with it to create this kind of complex working mechanisms okay and i am going to show you how you can do this uh using a new features from houdini 18.5 called kinfx which enables you to create a procedural rigging system and i found that i found out that using by using this kinfx braking system you can procedurally create this kind of a link mechanism procedurally and by specifically by using a combination of fk and ik the e4 kinematics and inverse kinematics procedure combining together to create this uh looks like a complex system but in fact this is not that hard to do and by with these uh setup you can procedurally change all those like movements and the ratio for the length of those parts like these which could create kind of an interesting output basically i'm just creating the one of the layer of the strand beast and using the same like process over and over again using for each loop for the other layers but just shifting the angle a little bit and what it uh what it does here is that i'm ju i am just rotating this center rod right here that you see right here and by just rotating this rod i am forcing all the other parts to be moving like these by using this kidfx system the rigging system using ik and fk previously i tried using i tried creating this strand beast in other way by using all the rotations functions using trigonometry like sine and sine and it did work well but um you do need to you do need it to calculate a lot of like transformations for each of the part but with this um set up by using a kinfx rigging system i think it can be used for any other like linking system you can you can if you come up with other linking system you can easily implement that using the same like setup that i'm going to show you today so you don't really need to think about how the rotation goes for the next link linked mechanisms and so on okay so i think it'll be interesting so let's do this from scratch right hello everybody so let's let's first look at some of the images of strand beast how the mechanisms mechanism look like i think it's a good idea to look at some of the video for its mechanics and how the mechanism works so let's see if there's a suitable video to see how it moves i think it's better to look at 2d version okay so here are some videos that could be used for in order to see how one leg moves this one shows yeah this is probably what i need to know showing how the leg is moving okay so if you go from the start you can see that what it's doing here is that it is first of all you have this gray rod which is fixed which doesn't really move okay and you can see that this rod the arrow rod here is rotating along this point this pivot point okay and by rotating this rod it is controlling the point position of this rod here and this rod here okay and if you trace this rod here it is connected to this triangle which its shape doesn't really change as its triangle you can see that the triangle shape preserve as it is okay so and if you look at the bottom part by look following the tracing the link from this point from this rotating rod tip point to this point right here you can see that it is connected to the other triangle which is also fixed as a shape like this which is treated as a tip off the leg this triangle okay so and what i can see here is that you by rotating this rod here it is then moving this tip point and also it is changing the angle of this rod which the length of the rod never changes for anything so what i can see from this one is that you have two um ink two ik rig one is the one is the top part which connects from this point to this point right here and if you treat it as a ik you can you can think as this point as a root of the ik and then this this point or this point could be the middle point of the ik which shows the direction how the the joint moves then you can treat this point i mean this point right here as a the tip point which you can use to control the point positions in this case it is moved by rotating this rod okay and so you have three points one two three points to create a inverse kinematics two by using inverse kinematics by just rotating this tip point you'll be able to estimate this rod positions if you have decided the length of the curve over this line now after you have this line estimated then you'll be able to get this triangle as well because this triangle never changes as its shape so by having this length you'll be able to get this triangle and if you look at the bottom part let's look at somewhere around here so if you look at the bottom part looking from this point to this point and to right here maybe it's if i should go somewhere around here okay so if you look at the bottom part you can see the other inverse kinematics um joint which is from this point this point and this point and same as the top part the this point can be a root of the ik this could be a middle point and this could be the tip point which moves around to estimate these rods positions the angle of this position or the position of this point so by having this point position you are left out with these part and this triangle now in order to estimate these part you can have additional ik combining by combining the ik on the top part and ik on the bottom part now by using 2ik you'll be you'll be able to estimate this part at this point now after you have estimated this positions these shapes um you can create another ik by combining these point these two point like these like this um three points so having one point here as a root having another point here somewhere around here to the middle point and somewhere uh third point somewhere around here tip point which connects with the bottom uh part okay so it's more like linking the ik to the another ik okay and after you have estimated that positions you'll be able to estimate this shape because it is this triangle is fixed and it is fixed based on this uh edge so once you have this edge you'll be able to create this triangle procedurally or just like a geometrical calculations because it is always aligning to this things so that's the role here and by understand this by understanding this rule you'll be able to calculate you'll be able to easily estimate or simulate this linking system let me check something seems to be wrong with the streaming is anybody is anybody having a problem with the streaming i think it should be okay okay so let's try to create this system in houdini using kinfx okay so let's see i'm going to start by creating a empty geometry node and first of all i'm going to create a fixed bar so let me try to draw one leg as a diagram i'm gonna make this comes to right here and let me draw some sketch the steps that i am going to create okay so what i'm going to do first of all i'm going to create a initial positions of the um this strand beast leg so let's see where it will be the desirable positions where does where could that be a desirable position so let me see so first of all i have said that you have this fixed rod right here looks like an l okay and then let's make it blue and the first uh things you want to set is the rotation rod as and angled initially at some degrees okay so i'm going to create this rod first initially and you can decide the angle and the length which will change how the legs moves later on okay now after you have decided you want to create two linking system i mean two iks one is gonna look like this and use this point as a root this as a middle and this is a tip okay and another ik which is connecting somewhere around here it's connecting to the same tip point ah wait a minute i made it wrong okay let me undo this the point this point should connect to this point the center uh the tip point of this rotation rod okay and this is this green line is also a ik which is all using this same point as a root this point is a middle point and this point is a t tip point okay now after you have decided all these and by uh by x by using uh by creating these red and green one is an ik uh you you'll be able to estimate this position right here in this position right here by rotating this rod okay and by having this information from rod to the middle point you'll be able to estimate this triangle shape okay now after you have this gut you have got this triangle shape and this shape will never change in terms of this angle and you can decide how the these angles are but uh for the strand beads that i'm referring to this is probably 45 degrees 45 degrees and 90 degrees right here okay now after this after having these triangles you want to have another ik which is to connect this point and this point which which is already estimated so either point can be a root let's say you want to make the initial curve like these and this point will be the middle point this could be a root and this could be a tip point for this ik okay so by rotating this original like rotation rod you'll be able to estimate this red and green and by estimating this green and red green and red lines you'll be able to estimate this light blue and by after having this light blue lines you can have another fixed triangle shape which you want to fix this angle and never changes properly this will be 30 degrees 60 degrees and 30 degrees you can just decide it by yourself okay so that's the basic rule and that's what i'm going to create here okay i have a question from manival9 can you append other geo as a limbs let's say maybe mechanical structures yes i yeah you can do that you can use the qnfx a deform system or you can just copy the line structures as the base structures and use it as a reference to apply some mechanical links you can totally do that what i'm going to show you here is just creating the the bone structures but after that you can just use that bone for any purposes you can either use this for a soft body or you can use it for hot body as well right so let's see so i am now inside this a just move this upwards so that i can see it myself okay so first of all let's try to create a fixed a geometry i mean the fixed rod which doesn't really move so i'm going to create it by creating the base by using the grid the simple grid let's set the orientation to x y plane okay and so uh luca is saying i think there is a king fx node to link back frame to the rig yeah i think so too um i haven't i haven't used that so i'm not sure which one is that so maybe i can do that in the other videos if you know how exactly can do that maybe i can try it today but let's just try to create the bones for today and i might take some time okay so i'm going to create the lengths by five by one like this and what i'm going to do is to trim out one of the edge i mean two of the edges and just left out with these l edge which is going to be a fixed line that i'm going to use as a bone at the core of this strand beast okay and what i would like to do is to use the transform node so that one of the point of the square will be aligned to the zero zero zero positions so let's set the expression i'm going to say um to the translate x i am going to say size x multiply by 0.5 okay and i'm going to also bring this down by minus size y might multiply by 0.5 okay so by doing this one of the point has been touching the d 000 positions now i'm going to convert this into a line okay and just delete two of the points two of the lines or just delete one points in this case i would like to delete this point right here number three so i am just going to select that point or maybe select these primitive and delete it okay so that you are left out with just these three points and two edges okay now i am going to group this as a primitive group let's call this score okay let me also save this somewhere okay now um i would in order to use a kin fx especially with the ik it is a good idea to set the name for each point because you have to define which point is used as a tip point which point is used was a root point and it will be easier to define by the name so i'm going to create the name for some of the point in this case this point and this point so for the point this point which is going to be the pivot point for the rotation rotation rod i'm going to name it as pivot so i'm going to create a name and for the group 2 i'm going to name this pivot let's add one more and for the group the point number one i'm gonna name as root and should be point class okay let's check that out i'm going to go to the inspector geometry spreadsheet to the point and i can see root and pivot all right that's good so that is for the setup the initial setup and i am going to first of all create a one of the leg uh left side or right side probably in this case i'm going to create the right side rag leg starting from the right side leg so let's try to do that okay so first thing i would like to do is to create a the rotation rod initialized at some direction or angle and by looking at the image like this one i would like to create a rod going this way corresponds to this black fixed line so probably around 30 degrees from a top direction going to the right side uh crown i mean do the clockwise direction so let's try to do that all right so i am going to create that i mean any way is fine but since i would like to set a attribute as well for the newly created rod i'm going to create i'm going to just use the point wrangle for my ease okay and i'm going to name it as initial rod oops show rod and since i would like to create the rod from this point which is a pivot point i'm going to set the groups to a name attribute equal to pivot okay now let's try to create that first of all you can define several parameters for this rod one is the angle one is the length so let's try to have that parameter okay so float a angle and float lengths rod lengths i should call this rod angle by the way if anybody of you have understand it what i am going to do by the sketches i think you can just do it by all of your own by one process the process that i'm going to show you is just following the sketch that i have x drone and x as i explained how you could you create the ik system and if you just know that idea i think you'll be able to just do the same thing for with your own process might be that might be more efficient than mine so keep that in mind okay so for the angle i'm going to set it as 30 degrees for the rod lengths it can be anything i mean i can stop by some arbitrary value like a 1.8 so let's set the range for these parameters for the length i'm going to set from 0 to 10 for the angle i'm going to set from what zero to 360. all right okay now uh i probably would like to use this angle as a rotation so let's change this to radians first all right okay now okay first thing first hey let's try to create the the up direction and try to rotate that using this rotational angle so i'm going to create a matrix ident matrix and rotate that matrix to create a rotational matrix with this angle rod angle okay and the axis in this case should be z direction so set 0 1 0 1 okay now now that i have positioned uh wait a minute i feel like i am missing something here let me see let me try to see well i think it's fine okay so on what i'm going to do is to create a rotational i mean the up direction which is 0 1 0 so let's try to rotate that by first of all creating the directional value and i'm going to create 8 0 1 0 and rotate this by this rotational matrix okay now um now i am going to create a new point or probably trying to create a new position new position is equal to starting from the current point positions which in this case zero so doesn't really matter i think but let's just make sure and use direction okay now uh for this one i am going to multiply it by the length of the rod okay so this should be the new positions and let's see where that position is going to be added by using add point okay so somewhere around here so looks good looks and if i change these angle okay it's also changing this point positions now i would like to stop by 30 degrees it seems to work uh the best in this strand beast okay now the for the rod langs seems to work well i'm gonna stick with 1.8 now what i'm going to do next is to create the line connecting from this pivot to this point so let's do that and line is equal to add prim zero poly line from the current point number to this new point okay like this now i would like to set some attributes to these geometries one thing is the primitive group to this line that i've created i'm going to set the primitive group set prim group 0 let's call this tip rod rotation rod rotation rod to the line that i've just created and also for the new point that i've created i would like to set an attribute which is later on going to be used as a tip tip point for this inverse kinematics for the red one and this green one so i am going to name it as a tip by setting the name attributes setpoint at rift zero name to this new point with tip all right uh i have a comment moneyville9 also i'm a bit lost on directing nose to other areas in the houdini session meaning op input pass if you get some time you can explain these for me as well a little directing knows the other areas in the houdini session um okay see what you mean yeah if i got some times after these i will let me see if i can explain that okay so let's see so that i now i have just created this rotational rod currently it's not rotating yet i'm going to rotate it later uh for now i'm going to what i would like to do is to create an initial geometry as a static state so first thing to do is to create this static rod static like these shape on the top and static shape on the bottom after that you can try to rotate this rod to calculate inverse kinematics with the top and the bottom using the existing geometry all right so let's try to do that okay so let's try to create those shapes for the top part and the bottom part in this case what i mean is this red lines and green lines so two lines for the top two lines for the bottom and meaning you have to define this m positions the middle positions for the red and the green initially anywhere you want so what i'm going to do is i'm going to look at this sketch and let's say the middle point is 90 degrees from this edge right the black edge and for this one i'm going to estimate that the length of this green one is same as this black one i'm not sure if that's what i did but let's estimate that i mean you can just use any other like random values by yourself but to make it a bit simple i'm going to define i'm going to link those links together but don't forget that you can just change it by yourself if you want although the result might not look like the original strand piece so that's the downside for this i mean for this tutorial i would like to create a strand beast as it is so i'm going to try to follow the original shape okay so let's try to create another point wrangle so i'm going to connect this initial rotating rod to this first point first input and let's name this top ik models okay and i'm going to create two parts one on the top one on the bottom starting from the top okay so what i'm going to do i'm going to create the middle point somewhere around here okay so let's name this ptm1 and use the add point zero and the position will be okay first of all i have to define in from which point i should start calculating this point positions so i'm going to set the group name is equal to root the root is this point right here so from this point i'm going to try to go upward and go to this direction okay which should be the easiest way to create this top part because you just have from this point you just have to go upside upward to the y direction without any angle so should be easy so the first point is going from the current point position plus set 0 0 0 and the first the second value should be the length of this edge now what i would like to do is to set the edge length same as this grid width right here so probably it's a good idea to parameterize this one so that i can link it all together so i'm going to create the null node to have all those parameters that i would like to control later on so the first value is the size of the rod i mean size of this fixed grid now the x oops probably i should make it as a float so 4x core x size and you have or y size as well or y size let's make both of them from 0 to 10. now i have also created this parameter for the rod so let's also have that drag and drop i'm gonna call this rod angle and this is the initial rod angle so i'm gonna make sure that i i'm going to name it as english initial and for the rod links i'm just going to call rod links okay everything looks good now apply accept and set the core x to 5 core y to 1 and i'm just going to copy this parameter paste it right here we copy this parameter from the y value and paste it to the y all right and then use the same parameter which is this x value for the these the this uh line lengths so let's try to get that value float um for x chf promoted link by paste relative reference not d y but x and in this case you have five so you want to have this core x to y directional value and the new point will come somewhere around here okay looks good now what i want to do now is to have this point right here so that i can connect these point together to create this uh top ik lines so to do that i need to know the point number of this uh point right here you can just check that by showing the point number like this but to make it safe i i know that this point uh right uh this point has a name called tip if you look at the geometry spreadsheet you see that the point has its name called tip so i would like to try to find out the point number by this name attribute by using the ptt one is equal to find at riv val from zero point class an attribute that i'm looking at is name and the value that i'm looking for is tip and get the first result okay as a result you'll be able to get this tip point and to check that out you can try to create a pory line connecting all these points okay so let's try to do that end prim or ik model one is equal to add frame zero polyline starting from the pt num which is the current root point and then going into the ptm1 with the middle point and ptt one which is the tip point okay as a result you'll be able to get this top shape that's good now i would like to also apply a attribute to the point that i've just added as a middle point so let's name this middle as a so set point at riv 0 name to this ptm 1 as middle okay let's check that out okay so i have this middle at number four looks correct okay all right what's next so i have just created the top ik model let's also try to group this so that i can separate it later on i'm going to create a primitive group set frame group zero i'm gonna name it ik one to this poly line that i've created ikea model one okay the next step is to create the bottom part in this sketch looks like what which is this green one okay now um i also need to define the angle right here in which direction should it go and also i have to define this length right here and i could probably use the same lengths like this one together with this this one let's see if that's suitable yeah probably that's fine so let's try to do that way and once you know you have this point positions you just need to connect with the tip point okay so it shouldn't be that hard let's do that so bottom okay okay so um the initial angle that i would like to use is since this one looks like a the polygonal triangle which means that all the lengths of this triangle seems like the same if i if i just look at this part so let's try to make the initial angle as 60 i mean you could also change that however you want you can also parameterize it but in this case i'm just gonna fix it because i don't want to have too much initial parameters to control with but depends on you if you want to control more you can for also parameterize this part as well so i'm just going to call this angle and let's say 60 and you can use convert it into radians okay now let's create the middle point two by at point zero starting from the current point same as the top part and then you have to go downward and to a 60 degrees direction so probably using some simple trigger trigonometry might be a pretty easy to do in this case so what i'm going to do i'm going to define the x by using the cosine angle so cosine angle and for the y direction i'm going to use this line with the angle and for the z it's zero and you also want to define the length which is same as this core x so multiply it with this one and see where the point will come okay it comes right here so looks like first of all you have to make the sign values to negative probably the cosine as well okay so looks like it's at this correct positions now now that i have this point i'm also going to apply the name attribute which i have done right here so i'm going to just copy this one and rename this to ptm2 then i'm going to create the primitive uh i mean the polyline connecting the root the middle point to the tip now i already have this tip number right here so i can just reuse it because it doesn't really change so i'm going to copy this part ik model 2 is equal to add prem polyline pt num ptm2 and ptt1 all right looks good now let's also apply a group to this bottom ik i'm going to name it ik2 okay that's probably it for this initial geometry initial inverse kinematic geometries that's good all right so let's after having all the all those two geometries what i'm to do is to separate them and probably using something like split for the first input i'm going to get the ik one and from the second input i'm going to get the ik two okay and i'm going to calculate the inverse kinematics for both of them separately okay okay now i now have this initial geometry and i have this initial rotating rod the next thing i need is this rod to be actually rotated so let's do that so i am going to create i'm going to use another triangle point wrangle probably or in this case what i would like to do is to try to rotate this primitive itself using this point as a pivot so let's get this primitive and i have attached a group called rotation rod so let's try to use a primitive wrangle in this case we're going to wrangle with this filter so that only this primitive is going to be used as a calculation as a process for the code i'm going to name this rotate rod oops okay so uh first of all um what i would like to do is to get the point list from this primitive in this case you only have two points the starting point and the end point and i'm gonna use both of them to calculate the rotation so pts is equal to prem points zero at criminal and let's get each of the point the starting point and this end point i'm going to name it the starting point is pt1 and endpoint spt2 okay now let's get the point position for both of the point pt one vector position two is equal to point p two all right now that i have this these two points um the point one will be the pivot for the rotation and the point two is the actual point that is going to be rotated okay so now is the time to create a rotational matrix for the rotation i'm going to create the ident first used to rotate with some angle now i haven't defined the angle yet um let's just say angle for now and set 0 0 1 as a rotational axis now let's also let's now try to create this angle value and since i want to make it as an animation i'm going to make the angle based on this frame value okay so let's see what's the good value for the angle i'm going to stop by try by creating the angle by trying to [Music] divide the current frame or i'll just test it by just using the time itself and later on i'm gonna make it more sophisticated so that i can you can create the loop animation all right well now it doesn't really loop but it should be fine as a testing okay now that i have set the angle it's time to actually rotate the point to point position two to do that first thing you need to do i'm going to create the new positions which is the copy of the position 2 and spell mistake then you pus you first want to sub subdivide with the position one which is the pivot point position then you can multiply with the rotational matrix to actually rotate it and give back to bring back the pivot position and then this new position will be the rotated new point position two okay so let's update the position two by set point attribute zero p to p t two with this new position okay if i play it okay it's rotating like this now not sure which direction is the right way to rotate currently it's rotating clockwise so let's assume this is fine now this seems a bit too fast maybe i should apply this real-time toggle okay looks good now let's try to do it let's try to test it out the kinematic inverse kinematics with this point so right now you have this rod rotating and the tip point of this rod is actually the tip point of this converse cinematic and since i'm going to create the converse cinematic inverse kinematic inverse kinematic for using this geometry for the top and this geometry for the bottom and as i said in the sketch this for this top part this point is going to be used as a root this point is going to be used as a middle and this point is going to be used as the tip point now currently by after i have rotated this tip point the tip the position of the tip point is not aligned but uh by using a conversion pneumatics you can um using you can use something like point wrangle to fix this position so that it always attach to this rotating tip point and as a result it will calculate the correct position for this middle point by preserving the length of this edge and as a result you'll be able to create this kind of a simple um mechanics mechanism okay all right so let's try to do that okay so and this part is the actual uh kinfx part so first of first thing first i am going to set up the initial do the initial setup for the rig use it for the kinfx by using the rig doctor to combine it so that i can convert this rod as a rig now i'm seeing this edge right here but i shouldn't be displayed okay that's still that's gone now i'm also going to check this initial transform so that you'll be able to get all those necessary transformation which is going to which is going to be necessary later on all right now uh next thing you want to do is to move this point right here so that it always aligns with it always fixed i always move toward to this tip point the rotating point okay so i'm just going to do that by the simple point wrangle just by transferring this point just by moving this point to this point okay so connect this output of this rector to the first input and for the second input i'm going to refer to this rotating rod okay and i'm going to name this move tip right and the i should filter which point i should do the process which in this case i only want to process on this tip point so i'm going to say the name is equal to tip all right and what i what i need to do next is to get the point position for this rotating rod okay which is also have the name attribute called tip so let's find out i'll find that out first as a point number which point number it that is i'm going to use the same function that i've used previously which is find additive valve and i'm going to look at the point class the attribute name is name and actual attribute value is tip and get the first value first result okay by doing this you'll be able to get the point number for this point and after having that you'll be able to get the point position as well by using the point function with the p attribute at vt okay and you just want to copy this point position to this tip so you want to copy this point position to this one so that this point will come to this point like this okay did it go nope didn't okay i think i'm missing something all right okay i should make this i should look at the second input that was the problem okay now it looks good so if i do the rotation looks like this now currently only the tip point is rotating and nothing right here is being affected by this rotation but after creating the ik chain here for these three points you'll be able to move these point together with this rotation so to do that you are going to use this ik chains node okay the first input is going to be the initial positions where the the kinematic lines okay kinematic model and the original rod positions is aligned like this so make this the second first input and for the second input you want to connect this one where the tip point has been moved okay and the first input means that you want to preserve this length of each line okay now the next thing you want to do is to go to the ik chain and set some parameters which one was going to be used as a root which one is going to be used as a middle and so on click plus you'll be able to get one ik chain now the root name is root the middle name middle tip name tip and you also want to set this part as well the twist name i mean in this case you don't really have a twisting but let's just say just set that middle and goal name is tip this one this one goes this one and this one and set the blend one okay i think that's it and by doing it you after let me also show up the rotation rod and if you play it there you go you have a initial ik uh leg i mean this is uh the link mechanism all right so do the same for the second ik the bottom ik which probably pretty much the same thing that i'm going to do copy the rig doctor and move the tip okay let's test this out this working yeah it's working and do the ik chain okay i probably am missing something let's see what i'm missing okay let me check this ik 2 geometry spreadsheet seems to have seems seems like i have unnecessary informations right here my k1 just has this triangle okay this ik two have this uh the core geometry as well so i have to uh remove that forgot to do that so before splitting i'm going to use the delete node to delete the core right actually i also need to delete this rotation rod as well so okay instead of using the split i'm going to use the two delete node and just pick up the ik one delete non-selected and ik two delete non selected okay am i getting the right value [Music] nope oops seems like i am having the same value for ik1 and ik2 let's see why if i look at the primitive um i this one ik1 ik2 okay so i think i set the group to the wrong model okay this has to be ik model 2 where i have attached the ik 2 group okay now it should be correct you get the top ik model the bottom model if you go back here and show up the rotation rod and see okay looks like it's working correctly and if you combine all these looks like these nice all right so next thing you want to do is to create this triangle shape right here on the left side of this red ik the top ik which is the fixed shape which rotates along with this uh side edge so that shouldn't be that hard to do let's let's see how we should do that okay so i'm gonna do it by referring to this ik one right here and try to pick this edge and try to create the triangle all right so let's do that i'm going to let's see which wrangle i should use i am going to use the did does this one have a primitive attribute actually not this is a just a single primitive and okay well i guess i should just use the point wrangle for this one it's starting with the root point so point wrangle this top ik and i'm going to name it as side triangle maybe one or i'll just say side triangle okay and i'm gonna filter it by looking at the name equal to root okay so from this point i'm going i would like to get create this triangle shape in this case i'm just going to like set the fixed angle in this case 90 degrees to the left and 45 degrees for this angle right here and this angle right here to make it simple i mean you can always change that angle as well if you want but i'm gonna make it simple so to do that uh first thing i want to do is to get this point positions so that i i can get this directional value so that i can then rotate it 90 degrees to get the 90 degree positions so let's get that one and that one has the name called middle so let's find that point ptm is equal to find attrib zero and point name middle zero okay and let's also get the point position for this middle point for this point and ptm all right now that i have this middle point positioned and i already have this point current point position by accessing to at p i'll be able to get the direction so the vector direction is equal to a plus m minus p okay and i am not going to normalize it because i i'm i would like to just use the same lengths for this rotated valley okay now i'm going to create the rotational matrix to rotate 90 degrees to the counterclockwise direction so matrix matte right and rotate math radians minus 90 degrees with 0 0 1 as an axis and rotate this direction with the matrix and then get the new position by adding the current point position plus the direction all right and i am going to add a new point at pt at point zero new positions and it comes somewhere around here looks good looks like the correct positions now uh in order to create a triangle shape what i am going to do now is to just create [Music] let's see what kind of shape i would like to create i would like to try to create this kind of shape this kind of triangle from root to this point to this point okay and i'm not going to create this line because this line is already being used by i mean created by this top ik model so just i'm just going to create this polyline going from this root to the middle point to this point all right so let's do that and line is equal to add prim zero poly polyline from pt num new point to the middle point so ptf all right okay let's also set the group to this new primitive set frame group zero try side side try to display line and let's also set a name for this newly created point which you might want to refer to it later so set point attrib zero name to this new point just gonna call this try as a triangle point triangle middle point which night okay so after that uh you don't really need these on this geometry ik top ik geometry anymore because you're gonna add it later on with the merge node separately so i'm going to remove that i can re use the remove prim zero since initially there is only one primitive so i can just say zero zero one all right seems to work fine okay now i have created this uh triangle let's see if it moves along with the other iks okay actually not so we need what we need to do now is to rotate this triangle based on this moving okay right here so maybe i might be able to create this triangle after i have rotated this might be better isn't it okay so let's try to do that if i connect this one right here okay now yeah looks good so this seems to work fine so let's do this this way all right now next thing the final ik and this is going to be the the this is going to be the final ikea and this is the essence of the linking system you are going to attach another ik right here this light blue one to the tip of this triangle and to the tip of this green middle point the bottom ik model and make it as another ik okay so that's what you want to do that's what i want to do here okay so let's try to do that and to do that i'm going to go back to this one right here to do that you need to set you need to create a initial geometry first then then move some of the point to move along with the uh with the this this middle point of this bottom ik as a tip point so for the top part you just want to create the line that moves along with it but doesn't really change the shape the length of the uh of this edge right here okay so let's try to create that so i'm going to start i'm going to do that in the single frame i'm in a starting frame because it's easier to see right so let's do that by do i'm going to create a point and i'm going to use the another pointer angle should be fine and what i'm going to do is to since i would like to create this point as a root for the new ik and this as a new point middle point and this as a new tip point for the new ik so i'm going to start with this side triangle and this i have just set the name of this point right here as a try so i'm gonna filter it by saying name is equal to tree all right and let's name this modern ik model hello everybody okay so let's do this and so first of all i am going i'm going to i think i should replace the point name for this one currently it is named as try but since i want to use the ik to make it simple to understand i'm going to rename it as rename the name attribute as root okay now next um [Music] i am going to let's see what kind of shape i need to create in this case so in this case if i look at this one right here the sketch let's choose another color somewhere around here okay so currently this one has 60 degrees so probably i would like to make this angle 60 degrees as well and the length of this one might be better if if i share the same length as this value right here which is equal to this length as well so which is our original core x value so will be easier to understand as a result this length will also be the core x and the angle right here 120 degrees okay so so you'll be able to easily estimate this middle point positions you go down [Music] by i mean maybe you can just use another trigonometry to estimate this point positions just like you did right here so let's try to do that shall we show me shall we all right so maybe i can just copy where i have created where i have used this trigonometry where was that somewhere around here this one okay so i'm gonna copy this part and bring it back to the bottom ik i'm gonna name it ptm is equal to that point now currently the end i don't have an angle value but i can just say 60 degrees now as i said before you can also parameterize this if you want i'm just going to fix it as 60 for this one and you also need this core x parameter so let's have that for x is equal to 4x which you can reference from this 4x size okay and paste it right here okay i'm having a error somewhere where is that float okay i think i should name this angle all right so now i have this point where i need it looks good okay so and i do need the additional point going to the right side from this point somewhere around here going to the in this case negative x direction by the core x lengths so let's name that into p t t at point zero let's have this calculate positions as um attribute i mean the variable i'm going to name it as pulse m copy all these right here and from plus m i'm going to add a another vector going to the negative x direction by core x and 0 for y and z all right looks good now i want to connect all these points together to make it as a polyline and new prim is equal to add trim there's a polyline starting from the pt num ptm and ptt all right looks good now i don't need the top part anymore so i can just delete that by using the remove crimp and previously there's only one primitive so i can just say like this all right now for the newly created points i also need to set the name attribute just like i did for the other points so for the middle point i'm gonna set the name as set the name attribute as middle setpoint address serial name ptm as middle and for the tip point the last point i'm going to name it as tip ptt tip all right let's check that out going to the geometry spreadsheet to the point if i have all the names well that's a lot of where is it where is it name attribute do i see it nope i don't seem to see it okay set point attrib to i think i have done it is it's ah okay so i'm looking at the point is there a name attribute okay there is some triangle all right actually i need i want to make this as a root instead of the triangle so it's not really updated ah i shouldn't use equal equal i should just use one equal all right so root middle tip looks good okay now that i have created this um base geometry what i do is the same as i am doing right here so i'm going to copy these and connect it like this now i need to modify a little bit for this one right here because the point that i need to refer to in order to stick this tip point right here is different than previous one so i'm just gonna delete this one and let's try to see how it looks right currently by showing all the ik models all together together with this triangle and see how this shape moves right now and if i play it okay so it looks like these now what i need to do what i want to do here is to attach this point to this point right here and by doing it i want to estimate the this point and to preserve the length of these joint okay which will make which will create a linking mechanism all right and that is not that hard to do you just need to move this point to this point so you what you just need to know is the point position of this triangle tip right here which is which you can get it from the bottom ik part maybe you could you should look at the animated one and this point has the name called middle so that's simple enough you just need to connect this to the second input of this move tip wrangle and you just have to change a little bit i instead of looking for the tip point you are currently looking for the middle point all right and as a result the pip point now changes and by using ik you'll be able to preserve the length of d okay now it's flipping a little bit that is because if you look at right here at some point it just somewhere around here you can see that the direction just flips like these so that's that's kind of a problem here so in order to uh in order to prevent flipping this kind of flipping you need to move this middle point just a bit far away from the center and left direction left bottom direction probably so let's try to do that and to do that i can just do it in the same move tip component i mean the wrangle right here so to do that first of all i need to know this point number right here so i'm just gonna say or probably might be a good idea just to have another wrangle just to just to move the middle point somewhere in between this one this rig doctor and this move tip because i don't want to like make this dirty i want to make it simple so i'm going to create a another point wrangle like this one and let's name fix middle position and set the filter so that the name is equal to middle so that the middle point will only be used for the calculations now uh the direction i want to go for this point is if you think geometrically you can first of all get the middle point from this point to this point somewhere around here and from this point to this point you can get the directional value so to this direction you you want to move this point far away so let's get this direction and try to move this middle point far you don't really need to care about changing the length of these edges because that has been preserved in the first input of this ik chain so for the second input you can do whatever you can just change the lengths whatever you want all right i'll just fix it by using this solution all right so to do to get the neighbor points i will use the naver nay words function neighbors like this oops nay point uh spell mistake was it neighbors all right okay am i i'm getting the errors because i didn't make it as an array all right okay now let's get the average point position between these two points so i'm going to first of all create the average point position starting from zero and then use the for loop to look into all the neighbor points although there should only be two points and get the point position for each neighbor point accessing to a point attribute point zero p at neighbor all right now and what you want to do is to add it to the average point position variable right here and after you have added all the positions you can then divide it by the lengths of the neighbors and then you get the average point position let's make sure that i'm going to divide by the float value might not be necessary because this itself is a float array so now i have got the average point position should be somewhere around here i'm going to create a directional vector value which is at p negative average positions now for this one i'm going to normalize this and set the lengths to a bit really high value like i don't know 50 or something any value is fine i mean even hundreds should be fine and then move the point to that direction which will create kind of a too much exaggerated middle point positions but this is to prevent the flipping that's the only purpose and if you play it no more flipping happens and if you go to the ik chain looks good everything looks good now at this point let's try to merge all those iks and fixed triangles to see how it looks like so this one this one this side triangle right here and this k right here okay and it might be a good idea to colorize differently for now to see which ones which i'm gonna set the top one to the red the bottom one to green the side triangles to orange and the the bottom ik to be light blue all right and i am also missing the core so let's also add the cord which is which you can get anywhere because it you don't doesn't really move so probably you can just get it right here just directly connecting this one like this and for core i'm just gonna set the color to white as it is okay and okay i think i'm also missing the rod here so let's get that one as well okay i'm just going to connect this instead of this rotating rod okay now the collar is gone why okay so if i play it looks like these looks good now what i am left out with is just this fixed triangle which moves along with the bottom edge of this um bottom ik so that should be pretty simple to make so you are almost done here for the one side of the leg all right so let's try to create that one i'm going to move at any frame now let's see where i should do that i am going to first of all let's uh check the rule what kind of what what size of the what kind of size i want to create as a bottom triangle shape okay so obviously this side length is l and you want to use the 60 degrees for this one and 90 degrees for this one so in this case probably creating a triangle from this point might be easy going at the bottom then after you have created this point you already have this this point so easy to create this polyline so what you need is the length of this triangle right here a triangle edge right here so you can just use the trigonometry since this is at 30 degrees and you already have this l right here so and let's say this is l dash or l quote so l quote divided by l is equal to a tangent of 3 degrees so l dash is equal to tangent 30 degrees now okay so this should be the value you want i think all right so let's try to use this value going back where was i so after i have created this bottom okay from this one i could try to create the the bottom triangle shape starting from this point right here and let's see if this point has its name let me check well it actually should be a tip point so let's start from the tip okay so that name equal to tip and you just need to have the y directional value first of all let's have the core x lengths chf or x which is the length you are using all over the places just this value right here so copy this one paste it right here all right and what else okay so i have corex so let's create a new point so a new point the middle point ptm is equal to at point zero set zero minus four x zero oops not too okay something is okay what i need to do is adding from the current point positions all right and this actually is not the core x but i have to use the same equations that i have used here l divided by tangent 30. so core x divided by a tangent of radians 30 degrees okay so the point came here now i can create a new polyline at frame zero and i don't really have this point number yet so i have to also find that one let's do that so int um this is actually a middle point the middle name attribute so i can create probably i shouldn't name this one as a ptm but let's say pt1 and for a pt2 that is i can get that by using a fine attribute 0 point class name attribute middle the first result okay and then pt2 oops i should change this to pd1 all right looks good now you are ready to go and let's remove the original this geometry right here so remove trim zero zero one just like i did for the all the other stuff okay it's not deleting maybe it's a cache problem hopefully is it if i look at there's only one primitive so i guess this is just a cache here yeah i think so all right so let's color this to another color i'll just use the same orange as a triangle let's combine it right here okay and everything is set for the one leg okay okay something is wrong here okay ah right okay what i did wrong is i kind of actually needed to use this direction and rotate it 90 degrees other i cannot just move to y direction directly so that that was the problem okay sorry for that so yeah that was the problem so to do that you actually need to get this point first i'm going to move this right here and get that point position i'm going to name as pulse m and you get the point position like this all right now i can now calculate the directional value vector direction by subtracting plus position m subtract by the current point position all right now i can also create a matrix rotational matrix starting from right end rotate that radians 90 degrees my to the z-axis then rotate this direction by the matrix now now i can probably two what i could do here is keep this tangent value but instead of using the core x i'm going to say dear x divided by this tangent oops and i think i have too many for instances do i like this okay to the other direction so i should change this and go to minus 90 degrees all right now it is rotating as i expected looks good let me change the color to the orange okay so the orange part is not changing its shape only these blue green and red one is changing the shape and the blue one is being changing based on this red and green ik so this is the this sense essence of the linking mechanisms all right so the one part is done you are left out with the other side and all the other layers but once you have this one side it's not that hard to do for the other side okay so let's try to do that what i'm going to do i'm going to use the for loop i'm going to use the forward number for each number just set it to 2 so that i can have the left side and the right side and connect it where i should connect connect it right after the name the initial setup for the core so somewhere around here and bring the end node to somewhere around here just cover it up and connect it like this now currently there are two legs right here but it is positioned at the same position so for the other for the second leg i want to flip it 180 degrees okay i should connect it right here i should flip in 100 degrees so that i can see that the other side so let's try to do that to do that i am going to do a rotation right after this merge node using either i'm using the transform node okay and based on the iteration value i'd like to change the angle so for the y rotation i'm going to refer to the this detail attribute of this for each count which at the detail attribute you have this iteration value goes from zero to one so i am going to refer to that value detail for each count iteration zero multiplied by 180 degrees okay as a result you kind of get the mirrored shape like this which is not really an ideal you have to for the one side of the geometry you want to rotate it the other direction so let's also fix that this itself looks also interesting but this is not really not a strand beast shape so i'm going to fix it so i'm going to bring this for each count somewhere close to where it controls the rotation which is this one right here rotation rod so what i'm gonna do i'm going to connect the this metadata to the second input of this rotate rod and try to use this iteration value to flip the other side one side of the leg to the other direction okay so let's try to do that first of all i'm going to get that iteration value detail like this now now that i have the situations the things that i want to change is this angle which is controlled by the frame based value in this case i'm using the time global attribute so one side could be rotating clockwise one and for the other side this one can rotate into the other direction counterclockwise later on it one side is going to be flipped by 100 degrees so the the final the rotation direction is going to be aligned as the same value same direction so that's the point and so let's try to do that i am what i'm going to do um somewhere i'm going to make a space right here i'm going to create a attribute called mult okay starting with one and if the iteration is more than zero then set the mold to negative one or to make it as a one line since iteration i know that the iteration value is between zero to one i can subtract the iteration by point five and multiply by two you'll be able to get the volume between negative one and one now i can multiply it to this angle value like this and as a result you can see that each leg is rotating in the same directions now i want to fix one more you can see that there is kind of offset you can see there's a bit of offset between this uh rotating rod and this rotating rod so i want to fit that to the same positions so let's also do that and to do that i i need to add additional angle to one of the angle when it rotates so let's do that or i can just try to make it to the same direction i mean currently i don't have uh the offset angle is this value right here and this is actually the multiplication of two uh multiplication of the the two time value of this angle is actually this the offset the gap here if i make it zero it will be fixed but the rotation might not looks clean i mean it looks okay but i seems like the original um strand beast has offset so i'm around 30 so when i change this initial angle and when i want to fit these angle together i'm going to copy this value right here bring it to this rotational rod bring it right here as a parameter promote it paste it right here and try to use this to fit the angle together now to do that um just need to add the this initial angle multiply by mult maybe the other way negative nope actually not um i probably need to multiply by 0.5 no actually not all right what do i need to do here okay let me think so the init angle is always okay i needed to convert it into radians forgot to do that sorry for that okay so now plus unit angle multiplied by mult nope i'm missing something well worked it just worked like this i didn't needed the multiplication if i make it plus okay so it's negative so it's negative initial angle and that seems to fix it that seems to fit the positions all right so for this that looks good all right now now that the one part i mean one layer of the leg is done like this it's time to create another layers with a offset angle so that it looks like it's working gradually like a monster like a beast so let's try to do that to do that i'm going to create another for loop for each loop using for each number and this time you can set the number of iterations as much as you want this will be the number of layers so let's have that as a parameter number layers let's go from 1 to 20 maximum okay gonna stop by some low value like eight paste it okay so this is going to be coming on top of the this two iteration for loop i'm gonna connect like these cover it up making a double loop so currently actually there are five uh eight pairs of this walking beast at the same positions but you cannot really see it so you have to offset this one maybe to the z direction in this case so let's do that to do that i am going to use another iteration value for this for the second loop for each count too so [Music] um instead of using transform for for more control i'm going to use the pointer angle since i want to also set some attributes for each based on its each iterations more than just moving so currently the for each loop it is a bit far so i'm going to connect no node right here i'm going to name this meta tube and probably connect the other value right here and let's call this method one okay so in order to access to this meta2 from far away you can use the object merge let's name it as meta2 two one refer to the method two connect it to the second input now trans translate okay first i get the iteration value from the meta node like this and based on the situations you can set like the distance to the t directions now probably it's a good idea to set the length how much steps you want for this layers so i'm going to create another parameter called depth depth from i don't know from 0 to 50 or 100 i don't know what's the best value for this one let's copy this and paste it let's bring this defs value to here as a parameter like this okay now now that i have this depth value let's try to use the iteration together with the steps to control the point position in between the zero to the maximum dips all right so um might be a good idea to also get the number of iteration value from the same detail num iterations all right first thing first i'm going to create a parameter value going from zero to one by uh converting the in iteration value from zero to one remap the iteration value from zero to one by dividing the iteration by the number of iteration now the number of iteration should be subtract by one if you want to have the range from zero to one you also need to convert it into float otherwise you get the result zero because it's looks like at a division between integer and the integer all right i think this t is now from zero to one based on the iteration value i can now create a each steps information i'm gonna call this each steps or just say z and z positions by uh the depth divided by the number of iterations minus one multiplied by t okay it should do the job and if you update the z with this one if you leave the loop okay it's being layered now looks like there's not much okay now finally you need to hmm am i doing something um okay i think i did something wrong here actually i didn't really need it to create this t value but i just need to multiply by iteration right here all right okay so this is the depth of 15 and you can now change the steps and change layers now everything is working at the same timing which is good but i would like to also change the timing the rotational timing so let's also try to do that i'm going to create another parameter for that purpose i'm going to create the parameter called as a shift angle from 0 to i know 100 degrees maximum let's stop by 90 degrees so for each layers i want to shift this rotation of this rod by 90 degrees first first row comes right here the second rod rotates by 90 degrees the third rod rotates 100 degrees uh the fourth rod rotates 270 degrees and so on incremented by 90 degrees all right to do that you can do it per layers i mean uh yeah per layers i think so but what i want to control is this rotation right here which is controlled right here at this rotate rod point wrangle so we need to get this layer information with this wrangle so to do that i am going to connect this method to to the third input of this rotational rod what did i do okay and access that information to use it as a shift rotational value and iteration two detail two duration and so this is where i'm calculating the angle and i could get the shift angle parameter right here shift angle shift angle okay let's copy that parameter 90 degrees to this one and then convert it into radians now now you can go to the angle right here and for each angle i am going to add this shift angle shift angle multiply by the iteration two so starts from zero one two three based on the layer numbers all right something happened and if i play it yup now it looks more like uh organism like a creature that looks good now let's reduce the number of layers it's a bit hard to see what that what's going on here you can see the the angle is shifted by 90 degrees and looks already organic looks good all right now um you can try to change the number of layers together with the shift angle i mean if it's small numbers it looks like a gradient rotation like these looks interesting enough right like that and you can change the depths what else we can try to change the lengths now this seems to collapse so maybe it might not be a good idea to change the quara lengths what about uh why interesting starting to look like more like a glove if i make it really small still try to create some movement interesting and if i change the initial rotational angle the movement becomes really tricky but it seems to work well as well with zero works i mean it's a bit hard to see so let's try with the single layers okay it's like it's having a little bit of collision so might not be really good so if i reduce to 30 looks good enough zero yeah 30 might be really good if i change the rod lengths oops now it at some value it just collapse maybe if you need another middle positions for the ik you might might be able to fix that maybe there is some flipping happening again somewhere if it makes zero no rotation happens if you make the rotation rod bigger the movement becomes bigger interesting all right and i think 1.8 is a good number for dynamic movement all right so everything looks good and let's try to uh have additional geometry and let's end this one in this tutorial shall we what i am going to do um since currently all the layers are looks separated so i'm just going to create a simple like connections between the layers just some horizontal line that's it but just to make a bit more realistic okay so to do that i am going to let's see i'm going to get all the core information the core geometries by using a split node or a delete node get the core okay so from this score geometry i would like to create a line connecting from end to the start start to the end so let's try to do that to do that it might be a good idea to have some attribute to use it for the connection so after i have translated um i could create another pointer angle to set some id for each point i'm just going to copy the point number to a id attribute since each layer should have the same point number in this case which means i can share the same id over over the layers and by doing it you'll be able to get several points sharing the same id for some points so for this point for this point and this point this should all share the same id this point share the same id and everything is as well so now i'm going to use the a add node to connect all those attributes based on the id all right like this and maybe i should have split it i should split the core and merge it with all the other okay which might make it a bit more realistic more like a structure now there is a lot of collisions so if you want to make it more realistic you gotta i guess you gotta fix those stuff by yourself but for now in terms of the geometry looks fine now um since i have just created the skeleton shape shall we try to set some geometry on top of it i mean the easiest way is to use this polygon itself in this case this one which is currently a rig and for those rigs you can use a kinfx related component to deform the geometry or as someone said in the comment i use a pact based geometry without the deformation i haven't tried the the other one the the non-deformation part might be suitable for this kind of mechanics but i could what i could try is [Music] what was it deform bone deform probably i could do that but i haven't tried it out previously so might take some time to test out with this one so if you're interested you could try it by yourself for now um what i could do i'm just gonna create like a wireframe on top of it to create a simple wireframe geometry all right if you want to change the color based on the layers you can use you can probably need to apply some additional id or parameters i mean the attributes so i can i can do it right here where i am referring to this meta node let's say vowel is equal to for layer layer is equal to the iteration itself okay and i'm going to use the color node and i can set it to a ram from attribute use the what was it the layer the layers in between the num 0 to the number of iterations which is this value right here so i can copy that paste it right here and -1 so by doing this you can create your own gradational stuff or any color you want this is too rainbowish this might be interesting so just like that just like that okay yeah um so this is pretty much it if you have any questions to these please let me know i think i had one questions previously so so from moneyball 9 a bit lost on directing notes on other areas in the houdini session meaning of rp input pass if you get some time you explain these for me please like okay i see well let's see let's see how i can explain that um [Music] let me check the detail attribute of this one nope doesn't have any detail all right this one this one this one nope let me just temporarily create some attribute create attribute actually create i'm going to create some detail attribute detail and let's say this detail attribute has a frame value okay this is just a test okay oh no not this one sorry shouldn't go here uh instead of attribute create i'm going to create i'm going to use the attribute wrangle because i want to create set the animated attribute to this one so attribute triangle let's do it without the wireframe so for this one let's say i have this detail attribute for frame flow value called frame and you can x says the value called the time based volume okay which is uh which is the second which is calculated second from the first frame so in total you have 10 seconds so it and the last this time will become 10 i think all right now now what i am going to do now is to try to access to this detail attribute by from a transform using an expression and to see how we can use these a op input or so on okay the easiest way is to first of all you can see that from this attribute wrangle you can you already have this detail attribute so by knowing the name of the node you can use chf and here is the first input is the channel which is the path to the node so as you write in the comment you can say dot dot slash dot dot slash means you are looking at the current network meaning under the geometry network okay so you are looking for all the possible nodes under this network inside this network okay which is which you will it will give you a list of possible node in this case what i want is this attribute rank of one so i can just select this one and by setting like these you are you can refer to the node name if it's on the other geometry node let's say you are let me just test out with this one okay so this is currently at the same geometry network and i am referring to the first input and by doing it uh it doesn't really move does it it's not really referring to okay i shouldn't use the chf i should use the detail sorry for that so detail what was the value frame zero okay so is it moving slowly i guess it's too slow i'm going to make it faster like 10 all right looks like it's working now so what it's doing here i'm just referring to the detail attribute which has been created right here which is easy to refer to because it it's at the same node network so you can just say dot dot slash like this now if what if this value is of the same of the different network how we do that let's say this is the geometry two you have a single point which have this detail attribute the same detail attribute which changed by time now how do we refer to that i guess there are several ways you can do that first of first thing is to you can refer from the object node and go down to the geometry 2 to that point attribute to do that instead of using the dot dot you could use the object obj g02 and attribute wrangle one and now you can get the same value now i'm not sure if i can do the other way around um if i try to use the dot dot slash currently this shows the original i mean current network now if you have another dot dot slash you are going upward you're going to the parent network now you can refer to the geometry 2 then go to the attribute wrangle 1 and you get the same result so this is more like a relative reference right now let's make this go back to the geometry one now the final the other way in order to find the path is the one that is in the comment is this op input um op input oral p input pass i wasn't sure i'm not sure what was the difference i often use this ob input and that is used to define the input value the in the input number of the node which informations you want to use in this case the geometry node this geometry node is has this first input only the one input right here so you can what you can do is to refer to this node and refer to the first input of this node and as a result you you'll be able to get this detail value so to use that if you want to look for yourself you have to type like this first starting with the dot dot slash which is which shows the current node network then oops gotta say dot dot slash so this is the current point origin uh current network positions and then use the op input just like written like this so dot means yourself and then zero get the same value now if you want to know more [Music] informations about it i think you should look at the expression function page for houdini input so let's see what's the difference between the op input and our input path returns the name of the node connected to the given input returns the full pass of the node okay so this one just gives you the name this one gives you the whole path so it might be open to pass might be suitable for this kind of purpose let's look at it okay so in this case probably i don't really need this dot dot slash but i'll just say path and that should just do the job all right that was easy so lp input passes referring to the the node the input path of the node okay and does it have more information indexes that are obvious then to get the path of the node connected to the first input so the name could be the name of the node so if it's yourself you can just say dot but if it's the other node you probably need to do the same things as you're doing like dot dot slash and that should be wrangle and so on nope nope actually not what if i just say the attribute wrangle one as a name nope i'm not sure how to refer the name probably for this one i might need to use the op input not sure i haven't used re i haven't really used to get the pass but if you if you just need to pass then just need to instead of using this one just use like these that's much faster i guess all right hope it makes sense now i do like the working animation so i'll just keep it somewhere maybe somewhere around here just going to move the x value based on the time point wrangle right yeah looks like it's working walking to the side the correct direction nice now if you want to know the exact like the correct walking distance you gotta you might need to calculate that uh geometrically i'm not doing here all right so one thing i was missing is to create the loop animations if you look from the arrow close to the starting from the close to the end frame you can see that the animation is not really looping so let's also fix that and if you don't have any questions anything any questions so i would like to end the tutorial here so going back to the rod what was it so what i need to fix this this time based value because i'm using the time i cannot make it a loop animation but instead by using a frame based value i can get the volume between 0 to 1 and then use that together with some i don't know trigonometry you'll be able to get the loop so let's do that i'm gonna fix this fun and no not the trigonometry but the multiplication of 360 degrees so first of all i'm going to have a 360 degrees in radians which is pi multiplied by 2. then multiply by the frame divided by the frame end which will give you a value in between zero to one let's make sure that this is a float and then you also might want to set how many loops you want in one frame range so i'm gonna create it as a parameter which is can be used as a speed so let's stop by 10 make it really fast and now you can see that the loop is it is the animation is looping let's make it 60 frame oops too fast okay it's looping cleanly looks good all right and working now if it's working then the looping doesn't really make sense though it just makes this stand on the positions make it with the wires and that's probably it so [Music] how did you wait a minute i think i have some problem here okay the first layer is okay but if i look at the second layer the angle is kind of it you can see here right here also the third layer yeah there is a bit of problem here okay okay i think i need to fix that one first layer was okay second layer it's not okay so to fix that i think i need to go back to this rotation rod and use somehow the layer based value which is this coming from this method two and this rotation rod it is a duration two value right here okay so where is that where should i fix that value okay wait a minute why did i multiply by iteration two ah that's okay now what if i multiply this by iteration two okay not working iteration two plus one nope not really so let me think how i should fix it okay um let's see [Music] okay so i have this [Music] let me make this as a other variable i'm going to name it as add angle currently this is the initial angle right here so okay now to fix this one okay let me see [Music] let's see let's see and angle initial angle is 30 degrees right now and if i multiply by mult together with the it2 okay this is obviously wrong let me think here okay actually this initial angle should be ah right this is not really right okay this uh at angle should be changed based on the iteration um one i think iteration one if iteration one is equal to uh one then [Music] um that angle is zero nope wait a minute starting from zero and then make this at angle as a edit okay let me look at the each of the layers okay so from the first layer it doesn't look good doesn't look correct so let's see what if everything is zero i'm gonna test out from zero so currently the the angle between here should have a multiplication of two of this value right here not this one this 30 so 60 degrees for but if i look at the other stuff it's not it's no more a 60 degrees okay so so first thing i want is to keep all the layers to have a 60 degrees offset for the left side and right side to do that probably need to multiply malt to this one all right now i have 60 degrees offset for each one okay then i probably need to just replace this within it and and that will fix everything yep yeah did so no need to do any complex conditions okay looks good and it is looping all right okay so i think everything is working now so since i don't have any i don't seem to have any questions um i'm not sure if you find it useful for any i mean i find it really useful because i can now create this kind of a linking structures procedurally um procedurally changing these shapes like is i think it's a have a great possibilities to it i mean i guess you could just if you just need to like simulate this kind of linking system there are much better software for it but the the best things about houdini is that you can create geometries procedurally so combining with this procedural proceduralism together with this linking mechanism could open up some interesting structures that's what i thought all right so i hope you've thought that the same way if not sorry for that sorry for taking your time but i myself is pretty satisfied with this all right so uh i am going to end the live stream um i am later on going to upload the file that i've just created right here and so that you can download it to test it out yourself in your environment you have to have a houdini 18.5 though and yeah and if you find these streaming helpful or if you want to support me or anything i also have the patreon page so i'll be appreciated you can access to the file from the video description page of this video youtube video as well as the page to the patreon so um if you find it useful i will appreciate your spoil okay that's it thank you very much for watching and all the comments and thank you for all the suggestions i'll try to i would love to dig in to more of this skinfx related functions it looks really fascinating all right and that's it good night and see you next week i'm going to do the other tutorial live next week some time around the same time okay good night good night good night good night
Info
Channel: Junichiro Horikawa
Views: 2,228
Rating: 4.9652176 out of 5
Keywords: houdini, sidefx, live, tutorial, procedural, procedural modeling, parametric modeling, parametric design, parametric, fabrication, digital design, computational design, 3d, design, isosurface, lattice, structure, 3d modeling, modeling, computational, generative, line drawing, drawing, illustration, fractal, reaction diffusion, celullar automata, simulation, trail, particle, vfx, mitosis, magnetic field, field, volume, rendering, computer graphics, visualization, algorithm, motion graphics, graphics, remesh, quad
Id: c_tl0PjBr58
Channel Id: undefined
Length: 161min 50sec (9710 seconds)
Published: Wed Jun 23 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.