Houdini Algorithmic Live #110 - Flying Spine

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hmm all right good afternoon everybody um this is during jewelry car so it's been a while I think it's for to be in absent for two weeks um so this is another tutorial live for Houdini which is called as Houdini algorithmic algorithmic life which is the tutorial live stream for Houdini that I've been doing almost weekly and the today's topic that I would like to do is to create a bit of a fun project that I made in spare time which is this flying spine thing or flying warm warm warm thing that I would like to try to create procedurally in Houdini which is pretty pretty easy to create and pretty fun to look at as a image so just move on let's try to create this kind of stuff from scratch shall we all right and again I would like to make it from scratch uh as always and to make it procedural since we're using Houdini all right so on a big uh the main purpose is to create uh flying warm so the first thing I would like to do is to create a spine motion okay so in order to create that I would like to start by creating a bunch of lines lines or polylines that flying around the space then we can add the detail to those spines or the base core of the spine so let me first of all change the set up I'm gonna make the background Dock and let me know if you could hear my voice if there's anybody here hopefully you'll be able to hear all right let's start so starting from gradient geometry as always so starting off I am going to create the base um spine geometry by creating a line then I want to be able to move these lines around the space around the 3D space like a worm like a flying worm or um like the San more I mean Sci-Fi movies like the one in demons probably okay so I'm gonna make this x-axis line and try to have a bunch of points like uh 10 might be enough my mic going to resample this later so it doesn't really matter I guess maybe I can go with two for now right then and what I would like to do in order to move the line like a worm I'm just going to move the center tip of the line then let all the points follow to these uh tip points and size over recursively right yeah I don't have a cam right now I'm outside my office right now so the setup is the minimal minimum setup since I've been moving around a lot these days I don't have much equipment on some places so if I'll be able to come back to my office then I might be able to go with the cam as well but for today I am going with the minimum setup hey sorry for that okay so group or maybe if I use the ovs studio something like that for the live stream then using the webcam of my no PC might be okay but uh didn't have time to set it up so what I'm going to do first is to create a group node to assign a tip group to one of the points on the end I guess just using the center point or the uh the first point will be okay so I'm just going to pick the first point like this then let these let this point move around freely maybe using something like a noise functions inside a solver then let all the other points on this line follows this Center Point uh by preserving the same lengths so if you have 10 points all the other points try to follow this tip points if I try to preserve the lengths off in between each point okay as a result you'll be able to create some creature-like motion all right so yeah I guess I'll go with 10 then let's go with just one line for now and later I'm gonna be able to make this procedurally um changeable for each point numbers but for now let's go with the one Let's test out with one line I'm gonna use the probably need to use okay instead of just using the point number in the lines I think I'm going to use resample instead so that I can control the length between the points Okay so for now it's 0.1 all right that's fine and after I look at it I want to make sure that the tip point is only applied to the first point tip group okay now I don't doesn't seem like the like the first point not only the first point being inside a tip group but also like second third and fourth it's also inside the group so maybe I still need to make this like 10. to make sure that just one uh just the first point will be uh inside the tip point what if I make this okay now that's a problem maybe I just need to set the group after I resample this foreign like that okay it makes sense right make this back to point one in terms of the lengths and next thing I like to do is to um apply a point number or copy the point number or a number inside A Primitive to each of the point as an ID so that you know which ones in which index starting from zero one two three four five so if you have multiple number of lines you want to put uh those numbers for each primitive starting always starting from zero so for those case I think it makes sense to use primitive for angle get the list of points from primitive Loop over points get the point number and applying a point ID or I'll I'll call this ptn as PD number to each point with the eye I will be the Point index or the index for each primitive starting from zero okay so if you have multiple number of lines you'll you'll see same 0 1 2 3 for each primitive maybe I should create multiple number of lines initially so that it'll be easier to test out and so to do that just gonna create random number of lines on a space probably creating starting by creating a Cube that's a bounding box foreign and scale this up a little bit make a volume use a nice offset create a scatter node [Music] create a bunch of points let's try with 10. points then I am going to copy points like that and probably I want to change the size of each lines when I copy to each of the point and I might also want to change the initial angle for each lines so that the initial direction is kind of random currently it's facing toward the same direction which is a bit too artificial so it doesn't look good so let's try to make this so maybe it might be also looks uh better if the initial curve initial line will have some curves or yeah curves some how do I say um some curvatures not just straight but some curves let's try to do all those that all those stuff first of all in terms of the scale I think I can just use the P scale for those for each point when I do he might not use the copy two points node also you can use the normal attribute to control the direction randomly so just try to decorate that so first of all P scale I'm gonna use a random for each point but I don't want to make it too small so let's make this in between 0.5 and 1.0 all right and I think it might also makes sense to set the lengths between the points will be equal to for each points for each lines so I think it makes sense to do the resample after I did copy the points then again I think it makes sense to do the group grouping after the resample but now it doesn't really work because it only works for Point number equal to zero so I have to do it in Wrangle I guess so I'll just use this primitive wrangle to get the first point inside this Loop if I is equal to zero then I'm gonna set the point group tip to this point all right okay let's check so I have tip points for each primitive I think it's working yep yep all right so in terms of the scale resampling it's working now let's also change the direction going back to the point attribute just before copy two points I am going to set the normal by using the randomness um and since this will give you the positive value for x y and z I'm going to subtract by 0.5 for each coordinate like that and then multiply it by two so that the values were maybe I can just normalize it so the lengths will be equal to one we go starting to look better now it's time to make this point curved now to do that I might need to resample again after I have Bend these curves these lines so what's the best way to do some random bending not sure you can just rotate each points randomly using random axes random Center pivot Center and then rotate with some random values that's probably the way so shall we try that I guess I shouldn't make the pivot center for the rotation to be a bit not too far from each primitive so let's do this for each primitive I guess so and since I'm going to do the rotation I might want to have more resample or more points then let's say the center is the center of the primitive and this could be the center the middle point of this curve I guess hopefully now I could offset the center to some random Direction a little bit maybe perpendicular direction to this curve might work so in order to do that I do need to know this direction which is defined here I guess if I show up the well it actually is the perpendicular Direction so maybe I can just use this one for the offset Direction do I have that information nope so I think I need to transfer that value I need to remove this one guess there you go now I have no more direction for each point I can now use these normal Direction to move the center point so let's get that value so it belongs to the points inside its primitive so the first I'm going to get the prim printed points thank you very much necessary for your comments appreciate it and let's get the first point any point will be good but since I know that point number is more than one so I'll just get the first point then from this point I'm going to get the normal Direction all right now I'll be able to use this one which is probably this direction I can use this to offset the center point somewhere around here to this direction then use that as a bending Center so I'm not sure how much I move so I guess I will just move this randomly with some offset let's go with the one for now maximum number will be one now that I have center it's time to do some bending so I'm going to for now I have all the points from primitive so I will Loop through all the points then get the point position um then try to rotate this position based on the center okay and I also need to define the axis and the axis could be again perpendicular to the normal and the direction of this line so you can use the the cross product between this direction and the normal Direction so how do I get that um I guess I will get the end point as well from the TS minus one so this will be the end point this will be the starting point all right then from this end point I will I would also like to get the point position the starting point Position will be this one and point Position will be like that and the Curve direction will be e plus minus S Plus and I'm gonna normalize this just in case okay so I have this direction I have this normal I can now you create an axis by calculating the cross product between the Curve Direction and the normal and again it'll normalize this now I am now that I have uh axis I can create a rotational Matrix starting from the identity Matrix and use the rotate to rotate the Matrix by an angle some angle for each point based on the eye so um so I have to define the angle now so how do I do this um probably I'll use fit I is in between 0 to the lengths between PTS and the angle could also be random so let's define some Maximum angle using another randomness probably plus some sample seed different seed so that you get different values between each randomness then multiply by maximum angle what's this all right like that in this case I have to write it in radians so I'm gonna make sure that I'll be able to input the degrees and convert it into radians like that all right now that I have angle I can do something like this so that the first point will be rotated by negative Max angle multiply by 0.5 then the last point will be rotated with this angle all right then use this angle together with the axis okay which one comes which so Matrix angle and axis Okay so and go and axis all right let's try with 180 degrees for maximum now that I have rotational matrix it's time to rotate this position so first thing first I have to move this position with the center minus something like push Matrix then multiply this rotational Matrix to rotate then pop matrix by adding Center back again all right now time to apply this set point apply this set point pry this point position to each point to see how it goes all right well maybe the offset is too big all right not bad but uh maybe the angle is too much okay but I'll make this on 180 maximum also I might want to change the seed for each Randomness so um something like that okay okay starting to look better so this will be the starting position or starting conditions state a comment from casali sorry for Destruction from topic have you experimented with Vex OSD lookup subdivision surface functions would be great to dive into this new possibilities ah actually I didn't I've looked at it I'm not sure what those functions are sounds interesting let me just quickly search for it OST look up so division surfaces I'll put the Houdini face and UV coordinates responding to the given loan oh interesting what's patch ID I was deep I think I never used it's always the thing myself well I haven't used this myself so I think I need to look at it later well it looks really interesting yeah definitely would look at it thanks for not to sing um what was I so I have this initial conditions as a bending maybe I I'm good enough with these uh you could also make this curve random by changing the center point a bit different I mean offsetting the center with random offset uh for each point maybe you could do that inside here that my could that might also be really interesting maybe I can show you that just before going into the center yeah just before it push the Matrix so I can use create a new center which is Center Point plus noise function based on that point I could calculate the smoothness multiply by some moving distance but uh very quickly I would also do this so that it also goes to the negative Direction and then something like that um does it make sense I guess all right then I think I'm missing parenthesis so I have noise subdivision okay I don't really need the last one then let's say I have something like the smoothness might be better with the smaller one for now then instead of using Center I'm going to use new center not really much changes so am I going to increase the offset oops not much um I guess that I shouldn't use point but I should use i instead for this one right or this one position yeah so um yeah a little bit of a Bend custom Bend like these might gonna happen with these so but not so obvious I guess a little bit just a little bit of changes maybe if I make this smooth a little bit bigger I might have some randomness just full fun just to be able to control flexibility somewhere around okay maybe maximum 10 is fine mm-hmm okay more like it like it I guess so it starts to get more organic well that's that it's just the initial condition so it's not really important now going back to the point ID this should work as it is now what I want to do now is since I have bended the distance between the points have changed a little bit so I'm going to resample this back again so that the distance between the points will be equal again like that and I want to make this back 2.1 okay good enough so that's the initialization now now what I do what I want to do now is to um so I want to create a initial conditions to this curve possibly creating the tangent Vector for each point as well as maybe the normal Direction perpendicular Direction so I'm going to use a node called Curve Orient orientation along curve which is pretty useful unless you're intro just a quick question that's a little bit of outside of subjects and you can answer when you've done this video how can I access components menu using C sharp like building categories component from Rhino inside assembly International um I'll look at it later sorry um so so the orientation will give you a normal direction to a tangent direction and you also get the perpendicular direction as up it's pretty handy all right okay so let's do this and what else um I might also need to set an ID for each primitive and then yeah set the ID for each primitive I guess shall we do that to define the numbers not sure if I really need it but uh so to do that I'm going back to the point attribute I'm going to apply an ID attribute to the points coming from point number then I want to make sure each point has that value in spreadsheet okay now I also want to promote these value to primitive since I might going to use this so I treat you to promote [Music] promoting from one point to primitive ID don't delete the original so that you get both on primitive and point or as an attribute all right I think initialization is enough for this it's time to actually move this curves around the space like a creature hopefully I'll be able to do that so you for that purpose I'm going to use the solver creating your own simple simulation now the rule is pretty simple just pick the tip points of the each curve so the first point for each Curve will be the tip point then just move that point inside the solver and the rest of the points inside the Primitive will just follow to that uh tip point Direction and also try to move each point so that the length between the points will be preserved meaning each length between the points will be the same okay so that's the goal Okay so let's try to do that going back going inside a primitive now first of all I am going to create the Wrangle or the functions to move the tip point around the space which there is uh there's many ways to do that I I could use like a noise field some Vector field or some uh external forces coming from adopt net but I'll just make it simple I'm just going to use the not one of the noise functions like like curl noise okay so connecting to a point I'm going to look for a tip point which should be just the first point for each primitive shall we try that so if I set the point to zero zero zero okay so each first point will come back to the first zero zero zero points so looks good now what I actually want to do is to move this point using curl noise using some kind of seed and amount of movement now if I look at the Vex function for the curl noise and I have either x y z as an input or x y z t as an input now since I want to make it as an animation this might make sense so XYZ could be the position and T could be the time based value to make an animation so I guess this one will make sense as a seed so let's create a vector 4 value as a seed Define how much it moves in one frame shouldn't be that big I guess it's depends on how much your curve size is now it's defined the seed so I could start by copying the point position as it is multiply by some smoothness let's go with 0.1 for the smoothness and let's see how it looks like in attribute for this so so the first x y z coming from the point position the fourth one is set as one okay so I wanna replace this fourth value for this Vector 4 with the time based value so seed w is equal to frame multiply by a Time speed time but we can all just say speed and Let It Go let's go with 0.01 for now since it goes from one two three four five like an integer value 0.01 step might be good enough for this one now I think I am ready let's see how it goes how this point moves around the space play okay interesting moving really fast and seems like it's moving a pretty similar direction for each point since I'm using the curl noise based on the point position I might also want to add some Randomness for each primitive I guess um so that each or um as a swarm intelligence assimilation this might also make sense that closer creatures move to the same direction so I don't know which one's better but uh right now looks to me that it's moving to a similar direction for each point which is okay but let's make an option so that each one could go to the different direction as well right so in order to do that you want to get the a ID I guess all right then use this ID to create the random value um which could be a vector for random value and I'm not sure if the randomness will give you random four let's see okay so it does give you I'll put test run Vector 4 so that's good so I'm going to name it as Randolph set using random functions for ID multiply by some bigger numbers like that all right then multiply this by um brand offset how much you want to have the random offset all right then add it to this seed okay starting with one let's see how it goes now each point starts to go through the different direction if you make it zero pretty much the same direction so if I make it 0.5 yeah it's starting to look a little better so each one is kind of a trying to go to the similar positions but also to the different places for in some chance cool all right so I think this setup is good now that I have moved the tip points it's time to make all the rest of the points follow that tip points and to do that I need to do that recursively for each point so once the tip point moves then I need to look at the next point and make this point move to the the this point Direction trying to preserve the length then after I do that I need to look at the second point do the same things follow the next point and do the same thing let this point follow the next one again and again until it goes to the end so to do that I need to do this recursively and I guess you could also use for each Loop but to make it simple I'm just gonna use a attribute Wrangle I guess yeah so primitive Wrangle since I'm wanna move the point list for each primitive I'm gonna I think it makes sense to use primitive wrangle okay and rest four rows tip now first of all get all the points from the primitive then get the point position [Music] now the idea is that tip point is always starting from zero okay so you don't really need to move the first point which is I equal to zero so I guess I could skip the I equal to zero and start I can start by going from one to the end now so consider this point as a current Point position maybe starting from the second point in order to go to this direction I need to get this point number so to do that I need to do I minus one so let's say the current Point number is CPT and the previous Point number is p p t I minus 1. okay now um the current Point Position will be see it called that c pass the previous Point Position will be called as P pause okay now I don't have much uh space to write the code here now that I have two vectors uh first thing I would like to do is to calculate the current distance between this point and this point and check if this distance is small enough or large enough I guess so or too far all right now [Music] um next thing well actually actually what I want to get is the target distance not the current distance but the target distance I guess so meaning I need to get the distance coming from the original curve which is coming from I guess this one yeah so this is the geometry which is the one before before running the solver so this is the original um state then after I have moved the tip point you see that the tip point has just moved from here to here so what I want to get is the the original distance between the points then apply that distance to a new point So based on those distance I want to move this point back to somewhere around here so that the distance will be preserved so I need to refer to this original geometry and get the original Point position so I'm gonna rename this to an original Grand Point position getting from the second an original previous Point position getting from the second input and the point number doesn't really change so I think it's okay to just use these then the original distance is distance that's between this one and this one there you go now that I have the distance I think I'm able to move this current Point position which is this one based on uh this distance so in order to do that I need to make a directional Vector going from this point to this point in order to move this point so [Music] let's get those informations current Point position and previous Point position getting from the current then create a Direction moving Direction which is current Point position minus p pass and I can normalize this well the lengths will become 1 and multiply by this original distance then if I just move this point with this Vector value I'll be able to create the correct Point position for this point so the new current Point Position will be a previous Point position plus this direction right now let's uh apply this tribute to the current Point position see what happens okay so the first point will be well applied correctly but the rest of the point is not really updating as I was supposing so I need to do something more in order to be able to recursively follow each of the lines to the next points so if I think about it in the next Loop I'm looking at this point right and in order to move this point based on the distance between this point I need to get the distance which is right here which I think is working fine but the problem is problem is this one here when I get when I try to get especially try to get the previous Point position the previous Point position has already been updated here so you can't really use this method because this is running on multi-thread so you cannot really get the updated value from the previous iteration of the loop using the point function so you need to preserve this value somehow it within this wrangle so I can just say I can just move this P pass outside a loop and this could this previous point will always start from zero which could which will be the first tip point so I think it's okay to start from zero then after I have moved to the last where I'm using where I'm creating the new Point position I can now update the previous Point position to the new C pass for to be able to use it for the next Loop oops now I think I did something wrong obviously hmm okay what did I do wrong so okay I shouldn't do like this because this is not considering the first point of the Primitive so what I need to do is to get the first point of the Primitive points there you go so I am not sure if it's going well let's see the difference between before moving the rest follows and after I have moved the rest points so this is the previous state after I have moved you see some shift to each of the point trying to preserve the legs of the Primitive of each point distance and in order to see if this is correct I can just measure the lengths for each primitive and compare it with the original curve and if it's the same value then should be okay so I'm gonna make this as a perimeter for measure node so 0.8987 for this one and the original is yeah I do see a small differences here but most of all most of the value is pretty much the same so I'll say it's okay okay so that it looks it's working let's see in the animation and see how it looks like if it's really working as a animation okay so if I play it there you go I might want to see a little bit more maybe it's moving a bit too uh smooth in terms of the turn angle so I'm gonna make this angle a little bit more there you go like it this is more like kit I could also I could make this like one and see how it goes uh well start to look more like a worm but uh maybe I am okay with 0.5 for this business okay but overall looks good like it okay Tito Morales thank you for the Super Chat thank you thank you very much so where was I um so I think everything looks good uh it's time to go back to go up back to the solver but um people getting out the solver I might wanna set some additional value to these primitive such as the direction to each point the reason is the reason I want to do is to because I wanna add the detail to each spines later so what I could do before getting out of the solver I can recalculate the orientation using orientation along curve like this recalculate the tangent vector and the up Vector all right so that should be good I am going out of this now I think I'm ready to create some details to this moving lines which currently is just the moving lines It looks interesting what if I increase the number of points to some large numbers cool pretty fast decent okay good to know going back with a small number of lines and see what I could do now what I wanted to do for the detail I want to make like a spine as a fun so in order to do that I am going to create the one element for the spine bone then copy it to each point then move those on move those bones around along with these curve that's what I wanted to do so let's create That Base shape procedurally uh to as a simple shape and in any shape it's fine I guess but um let's try to make look like so I'm gonna go I'm gonna start by creating a cylinder and test it out with this curve and later I could add up some details to this cylinder shape later so starting with the cylinder shape let's see what kind of parameter I have I don't want to use this one not the labs but just a simple tube it's fine okay so polygon it's fine looks a bit too big but we could just scale this slider and let's add a little bit of column or rows yep rows maybe 10 or 8. all right and let's also close the end cap hmm okay now what I'm going to do now is try to first of all try to move this to each point and scale this with a corresponding uh scale value so let's try to do that I'm going to make sure this is already fused do I need it maybe not and so in order to move this in order to make it faster to move I'm gonna make this packed in case okay and it'll be easier to scale if the size is within one in terms of the height and the width and I think the current height is equal to one yeah so that's good now what I would like to do now is to how think how I could copy this cylinder to each of the point position or the line position maybe like what I could do is to replace each line with these cylinders okay maybe that makes a sense so after the solver I am going to name this as spine core okay first of all I'm going to convert this into a bunch of lines all right then in order to copy the cylinder to the center of this line I need to know the center point position I need to know the direction I need to know the scale so I already have the scale which is inside a primitive primitive attribute which is rest length that's good I can access to the center point by using preemptive Wrangle with that P so that's good and I can get the direction by getting the first point on the second point of this line and create the subtraction so I could use primitive Wrangle oops and get the list of points from primitive points first point since everything is converted into a line you know that each primitive has only two points so I'm okay to go with like that then get the first point and the end point like this then what I want to get what I want to create is the directional Vector value like that normalized and what I would like to do is to add a new point at the center of this line at Point um using at p then set a normal direction to this point the one that I've just created between this point and this point then finally I want to also set the P scale with corresponding scale value and the scale value will be first of all get the rest lengths Target links is and currently I have a cylinder height is equal to one so the final scale is actually this value itself so I could just gave this here I guess okay and now that I have points added to each of the center of a line I can now remove the original line itself check the normal Direction and see what happens if I copy the cylinder to each point now the direction looks a bit off I might need to rotate this cylinder 90 degrees to some axis maybe to x-axis there you go so it turns off the cylinder seems to work fine like a toy worm cool now this is doesn't really look like a spine yet so spine bone yet so I want to make a little bit of detail to add a little bit of detail to this tube so how we should we do that going back to the tube I want to make it a round top and bottom so let's do that um how should we do this is there any way to extract the top and the bottom somehow using some groups is I don't think there is a group set for a primitive so I'll just have to say the top primitive and the bottom primitive should be set as a cap yes Okay so let's do that shall we and also [Music] um I might hmm you might want to add a sphere I might wanna maybe remove the cap and replace with the sphere that might work with the corresponding number of edges so let's see what's the what could be the best way to do this so first of all I'm going to move the center to 0.5 obviously the number of edges is not equal let's see what's the best value for that so the number of edges it's defined by the number of columns here so I'm going to copy this parameter and try to use that somewhere for the sphere this one Maybe okay is it working currently it's working but let's see if it still works okay looks good now just need the half of this sphere top half divide now I have a option to cut it I don't know maybe not so I'll just use the clip clip the top part [Music] um fine like that okay now looks good and maybe that's two capsule look like looks like a two capsule so I want to make it a bit more uh like uh oval shape so let's scale this a little bit using transform okay so first of all let's set the pivot transform so that this height this point the center point will become the center point for the pivot rotate or scale so just for the Y um uh min y min yep okay and then just scale the Y value to thing um maybe 0.5 is a bit too big two five might work three yeah maybe okay let's go with this now I have I also need to make it make for the bottom part it's happening so I guess I don't really need to uh close the cap but I just need two mirror this based on the X Z plane so like that all right then merge with the cylinder okay then fuse it I also might want to have some curve on the side to make it a bit more realistic or like a spine bone shape so let's also do that and also I need to make sure that the height the overall height is equal to one so currently it's been added a little bit with this sphere so I need to rescale it it turns off the height a little bit I'm gonna use the transform node rescale the whole geometry by 1 divided by the current y size so size y there you go and this will make sure that the size of this total shape is equal to one in terms of the height okay now it's time to make this shape a little bit um curved on the side let's see how I could do that maybe I can just use the ramp parameter together with some simple effects for this purpose or maybe I can just use some like trigonometry like cosine of sine function to change the shape that might be better so I'm going to use the point wrangle and probably since before scaling the size was equal to 0.5 in terms of the width so maybe it's easier to see what's the current size is so I'm gonna do this before using this uniform scale and see how I'm going to do this so I want to change the curve curvature based on the Y position so I'm going to remap this y value I so positive 0.5 to negative 0.5 I don't really need to change these shape so I can cramp it 0.5 n minus 0.5 and 0.5 and for ease of use I'm gonna map it between 0 to 1. now I'm going to create an angle for the trigonometry so what kind of archery what I will like to use so if it's so I want to create a curve like like this shape and that is a cosine curve starting from angle zero go back to 360 degrees I think so let's create that kind of angle and so oh wait a minute wow sure let's see so pi multiplied by value multiply by 2 which will create a volume between 0 2 360 degrees probably and cosine value with this angle will create a volume between one two minus one to one so let's use that value to move the point inward I want to make these Point go to the center Direction without changing the Y Direction so why am I getting it over here syntax error unexpected flow constant 22. um that ah this one gotta be dollar pi all right so so the direction it will be current Point position not that I want to move to the Y Direction so I'll let y be zero so just get x 1 3 normalize and want to go to the negative Direction so that it goes to the inward so make a negative now I could use I could multiply with a cosine value but probably it'll be better to make sure this is in between zero to one right um wait a minute if I do this I do like this um the initial value for this cosine will be one which is not really good might need to do something like this and finally multiply by some custom offset parameter let's see uh nope it's not really changing because I am not adding this direction to anywhere of course and finally I have to update the direction okay um good enough yes hmm well I am not really sure with if I'm like this maybe I could add a little bit of corn [Music] I could reduce the number of rows hmm well um if I want to control this curvature maybe I could add additional power functions here for a little bit of more control to make this in between 0 to 2. okay um maybe 1.5 something like that well and if I see it as a result yeah it does somehow look like a spine bone somehow parameters maybe somewhere around here okay that looks good now I have some details to this flying curve now it looks really look look like spine bone is flying cool and maybe as a final touch up I could add some like uh flying uh feather or what I call these wing to maybe in between the spine bone to make it look like it's flying around the space with those wing yeah as a just for fun okay so let's try to do that and I will finish this live stream Okay so in order to make it make the wing like it's flying I have to control the rotation somehow so that's one of the tricky part I guess let's see first thing first I need to try I need to move the wing shape to each of the bones maybe in between the bones somewhere around here copy it on the right side and the left side so first let's create a simple Wing shape to test it out Okay so I could just go with some simple oval shape I just to clean this up a little bit okay now start them with the circle hmm I could go with really low-res setup just a little bit of points and I am going to let's say um transform this shape to an oval shape I guess okay just for initial test I'm just going to use the transform node to make it as a oval shape from the line on top of the XT plane which one is the top okay then you want to make the scale for the Z direction to something small something like that yeah I could go with this and I also want to make the total length of this sphere as one currently it's equal to two so I want to make sure that the radius is 0.5 all right okay okay this should do the job now I'm gonna use this as a test wing to place it on the side of the the bone spine spine bone so let's see how we could do that um so I need to decide in which position I need to place those uh spines I mean wings so I guess um I guess I could just use those not these but uh these points position maybe I could also ignore the one that's on the tip point so the first point and the end point all right so in order to remove those tip points not sure what's the best way to do that so I'm just going to use the real primitive Wrangle again to remove the first and the endpoint of each primitive it doesn't really look efficient but uh sure what's the other way to do this so the first point and the end point all right now I have left out with those points in between points which is going to be the base points to copy These Wings all right so let's see um oh I could do that in order to place the wing I am again going to use the copy two points okay and I also want to know what kind of information do I have right now on each point first of all I do have tangent uh curve a tangent Direction and I should also have a up Vector value coming from the orientation so probably I could all use all those informations like that so let's see what happens with these information at this point if I just try to copy the wing as it is to these point see what happens now Something Wicked um since the center point of this circle is at the here I think I need to shift this Wings to the left or right direction so that it goes to the side of the bone so let's move this to the side maybe to the X Direction that and now if I combine These Wings with spine obviously the wing size is a bit too big but it is kind of a lying let's make each point scale a bit smaller going into the going to use the point wrangle to control the scale go with 0.5 yeah starting to look like uh fly dragon fire dragon and Firefly I mean now if I play it now I do see some weird um rotation to this Wing it's sometimes the wing is rotating too fast as you can see here it's probably coming from the up Vector so I think I might need to fix those let's also give a the other side as well currently I only have one side and I also need to create the other side and what's so we need to think about what's the easiest way to do that if I control the rotation with for these curves for These Wings on the one side I want to just copy back this direction to the other side as it is and I can't I don't think I can use mirror node because the axis is pretty much fixed to one constant stop value so I probably need to do the reflection [Music] um using vex so let's try to do that here um I guess I need to add additional points for the other side and put additional information in order to create uh reflected wing value so or I after I have copied uh when I could also use a attribute Wrangle to copy this primitive itself but that process is more heavy I think so I'm just gonna do it here so additional other side point will be at the same point position but using different normal and up Vector I guess the normal Vector could be the same because it's used as a tangent Vector so set point attrib normal with PT I can't just copy the normal Vector as it is for the app Vector I could probably use a negative value of the current of vector value or is it I'm not sure maybe I can just copy and see what happens no I think it's not going to work I think I need to make either one of it negative something like that okay and let's see what happens uh okay it's not working so what if I make this normal negative nope um probably I need to put the scale as well so set point address P scale or PT same P scale there you go so that's good but as you can see there are a two fast turn on some angle let's see what's this angle coming what why this fast turning is come is happening I I'm probably think this is based on this up Vector value so let's visualize that attribute see what's happening here as you can see here when the curve turns all the up Vector is also turning really fast that's pretty problematic so I want to fix that so that the up vector rotation will be pretty slow or pretty smooth so to fix that I think I need to go back to the solver where I'm using disorientate Orient along curve okay some of the problem using this one is just it's estimating this up curve with the current conditions which is good at some point but but if you are having us fast turn so in order to fix this what I'm going to do is to lurp between the previous conditions the previous up Vector and the current up Vector okay LARP slowly so I do that I am going to create a pointer angle connecting the previous uh Point conditions then get the previous um up value P up accessing from the second input the same point number then update the current up Vector by lerp using LARP between the pup and the current up Vector with some threshold let's start with 0.5 and see what happens 0.5 meaning take an average between the previous and the current still a bit too fast when I'm if I make it point one now you start to see the changes becomes a bit slower but it still look a bit too fast wait a minute am I yeah still a little bit too fast what if I make it point zero one now that's a bit too much I guess it's not really changing at all 0.05 yeah maybe Maybe Maybe but um hmm what I don't like is that every point is changing at the same time hmm I wanna want to gradually change the up Vector from tip to the end so that's not really happening here so as a result what you get is pretty um straight aligned um Wing meaning I don't really have a twist which doesn't look fun so going back let's think how I could preserve this twistiness see how I could do that so so um maybe uh maybe I could hmm change how much I use how much I love from the previous one more or um yeah let me try to wait what if I just change the tip point um what if I just use the tip point uh up Vector and then for the rest of the Curve will stay as it is then just smoothing out between these end to the tip so in order to do that I might need to use the Primitive instead get the point list from points then um um Loop through all the points okay then changes to PT and the current up Vector value will be point zero t now produce this pup and this is where I want to change so blurp using this I value so fit i 0 length pts -1 I want to fit it in between maybe zero to one see what happens so if it's zero I'm gonna make it one but it's the end no lerp might not make sense but let's see what happens and then set point okay maybe this is not a good idea after all I went out to you know I don't think this will be a good idea okay is it changing so primitive not sure if this is changing so check okay it's not really moving so it's something wrong hmm if I make this to 0.5 nope okay something must be wrong trim points primitive number get a PT get the original oops mistake okay so um one and zero and see what happens hmm okay obviously that's not really good it's not really good climate just 0.5 and 0.1 nope foreign because it's still moving too fast so I realize I shouldn't really use the up Vector created with this uh node okay so I'm just gonna then remove this x-axis the new app Vector value and instead of using LARP I need to just rotate the previous up Vector based on the directional change of this normal Direction I think that's what I need to do all right so so again I don't those for those reasons I don't really need to use primitive Wrangle but instead I should use Point wrangle okay so currently I'm not updating the up Vector values so it's the up Vector is not really not changing yeah I have some glitch on the display not sure why so in order to move or rotate this up Vector I wanna use the updated normal Direction based on the change of the normal Direction I want to rotate these app Vector value okay and that should I guess that should make sense and in order to Define how the normal Direction has been changed um that's a tricky question it's a tricky question how do I do that how do I do that okay let me think um so I wanna rotate this off Vector value or um based on the new normal Direction let's see and the change will be just a little bit I guess so what I could do so this normal is the new Vector value and up Vector is previous one hasn't been changed and I could calculate some axis between calculating the cross product between the normal Vector value and based on this I could recalculate this upper Vector value by um new up using another cross starting from axis and up and I might want I might need to make this negative let's see yeah I guess I need to make this negative no what okay what I'm getting here is the tangent Vector so I I need to make this normal okay that way I don't need to make this negative so this is the previous condition this is the current condition so do you see some a small change on the up Vector value hopefully this is and seems like I don't need a second input so let's see what happens with the animation okay I think I'm having a little bit of problem with the animation I mean if I play it it plays really slowly maybe due to some encoding or stuff like that let me just quit this Houdini and reopeness yeah just in case so I'm gonna reopen the dini all right before if there are tons of functions that I haven't been using yet okay reopen the file hmm wait a minute wait did all the other okay so show up the up Vector value see how it changes so now the up Vector is rotating really nicely as you can see no sudden changes great this is great I think this is great and I do see some small twisting as well that's also great all right then if I show up the wing nice all right now it's time to think about how I could like rotate the wing so that it looks like it's swimming around wait a minute what's Happening Here funny angle okay what's this what is this hmm I see so it it's really dependent on the initial conditions I guess uh then I might need to add a little bit of smoothness I mean blur between the neighbor points to make the upspector close to each other so as a final step now I could add a attribute blur so the neighbor points will share the similar up Vector value maybe not too much 0.1 maybe that was too much if that's okay yeah looks better yeah it's being fixed okay so for the rotation um in order to rotate the wing what I need to do is to control the normal and up Vector value for this for the copy two points node so in this case I probably need to like move these up Vector value somehow right and probably in order to create the wing-like shape it might make sense to create a the wavy like uh angle so let's try to do that so let's see what what can I do with these for adding a new point maybe I can test out with just the one side and later I can copy back to another side right so I'm going to rotate this curve like like um mechanical wing like you see in the toy Okay so how would I do that let's see um I could do either using trigonometry or use like external informations like using your curve information and use that as a guide to rotate the wing maybe that approach might be interesting in my case I mean just using the rotation might maybe it's good for testing so let's do that way first so in order to rotate these up Vector what I'm going to do is to rotate based on this axis I want to rotate based on this axis maybe clockwise are counterclockwise to this direction in circle shape so and the based on for based on the point position on primitive I could also change the timings when to rotate so let's think let's think so for that maybe I should use primitive Wrangle because I want to use the point number on primitive let's see let's see so I'm gonna get each point numbers Loop through each points yeah now I also want to get the up Vector value which is this yellow Direction okay and I could use this current up picture as a base axis for the rotation so let's also get the tangent Vector value which is normal and what I would like to do is to update a new architecture by adding up plus a little bit of normal offset maybe like 0.1 in terms of amount okay then normalize this and what I would like to do is to use this as the new up Vector for the wing so let's see what happens if I set this to a picture for each point at this point why do I have double foreign so I think it's been offsetted a little bit Yeah like that and whatever let's see what happens on the wing okay actually it's using up Vector as the perpendicular Direction so it's not it's not really changing the wing Direction huh I see so maybe I need to change the normal Direction instead I see I see it's I was hoping this line is aligning with this Wing so that it's easier to control but doesn't seem like it so I need to rethink that um all right so instead of using the upper picture I need to probably create the new normal Vector value [Music] and probably I need to offset the current normal using the current up with the little offset and then update it okay what happens um what is happening here huh wait a minute I don't see any it's here am I getting the correct value here so I do have offset normal new oh oops right okay so what happens with these values it's let's see okay so it's changing its angle for this wing foreign thing hmm I see it's not really like um easy to follow so I'm going to change the angle of the wing to make to be able to see the changes of it more easily because currently I don't really see the can't really see the relation between the normal direction of the direction and this wing Direction so instead of doing like this let me try to rotate 90 degrees to y direction Dot and then going back here and I probably need to swap the normal and up Vector value now is it possible to do this attribute swap [Music] okay let's see so the source and destination up there you go and currently the normal direction is this way the wing is on the other side so I guess I need to rotate 90 degrees to the other side cool here in there and I want to make it flattened so there you go this more like it so now it's aligned with the normal Direction now I guess it makes more sense to I'll do the offset for the normal cool all right that's more like it that's more like it all right then I could now use the I can now try to rotate this wing from here and I could also give some offset differences using some trigonometry so first I'll create I'm going to create the base offset angle by multiplying by I by radians of some offset angle for each point not sure how much I should offset so let's say 15 degrees 30 degrees then now it's time to rotate this normal New Normal Direction with the previous normal used as an axis so create the rotational Matrix and the angle is offset angle Plus um time based value not sure how fast it should be so let's say five per frame then the axis is previous normal okay now I could rotate The New Normal with this Matrix see what happens okay now I in order to see the test result of this ring wing rotation I shouldn't let this point move so I'm going to disable the moving part for now to see the testing to see the wing rotation okay all right now let's try to change some parameters all right so for example going to increase the range of this offset angle also maybe up increase this offset it's fine for this one if I increase this okay hmm no no probably need to know in which direction the point is moving to gotta check the point number okay so this is for this smaller number compared to this one so let's this should be the tip point so maybe I want to rotate in the negative Direction meaning I want to use the frame for the negative Direction that now doesn't really look like it's catching the wind because it's all flat so I also I probably also need to change the up Vector value or in order to make this rotate it and tilt it or I could customly do that here if that works is it this direction or is it this direction maybe this one yeah somewhere something like that no to the other direction yeah it's more like it um so it's more like it's catching the wind now I might need might want to be able to control the speed how much fast it's it's running so hmm not bad I guess um still look a bit hard maybe I could increase the offset maybe that might be too much and I think it might make more sense if I could control the tilt tiltiness meaning this angle here based on this animation so I could also rotate the up Vector together with this um rotational Matrix the normal Matrix so new up is current up multiply by the mat see what happens okay that's too much What's Happening Here What's Happening Here okay that's not really what I wanted obviously so don't do that I guess I just need to change since the normal is rotating like these I just want to have the perpendicular Direction corresponding to this normal for these up so again I could use the cross product for those right so across the current um New Normal with the up Vector value and then cross again between this one and the gnome will get updated normal Direction Maybe like that and see what happens with these okay so without this new up nothing changes so doesn't really make any changes okay it didn't really mean anything so I guess it's all due to this normal Direction so I need I guess I need to add on this additional angle additional rotation to this normal Direction other than these hmm other than these what would I need I mean hmm I guess it might make more sense if I could place this off Vector into perpendicular Direction instead of this tangent Direction that might make more sense in terms of controlling the angle for these yeah how would I able to so the objecture is rotating like these okay probably I could re-rotate this up Vector this new up normal up Vector using this normal as a new axis that might work yeah that might work so let's create a new angle small angle just gonna test it out using some small maximum numbers like 30 degrees or 45 degrees with multiply by sine frame probably for inside this signed I could use a i or offset angle with these yeah these as it is okay and since this will give you a volume between minus one to one I want to make it as I want to multiply it by this angle New Angle here and foreign use this angle to actually rotate all the new Matrix um and update the new app with this but so let's see how it goes there you go nice one now the rotation is a bit too much so I could control it I mean not sure what's the best value here um um what if I make this cosine more like it more like it 30 degrees more like rolling the boat or something like that um maybe I do need if I want to make it but more natural I need to create some small offset to these angles but uh I guess looking from the far view looks pretty fine pretty much fine so I guess I'm just gonna go with these for now if you need more realistic real reality maybe like you could tweak these ankles a little bit more all right so that's good um I could add now that I have these um points on one side I could add additional side just copying these up and normal maybe I could do this here then add it back now the problem is I have I have to no it's just I'm just making reverse in terms of the normal so oh it's like it's really look like a propeller now ah that's not bad let's look like a canoe so what I want to make is uh the synchronized rotation both on the left the left side and the right side so you don't you can't really use a negative for that purpose for the normal but uh you need to have some reflection Vector value reflected Vector value and there is just a function for that I think and what was the name what was the name let me search there you go reflect so you can calculate the reflected Direction by using the line you want to reflect and the one against the normal so let's see the one that I want to reflect is this normal Direction and the one that I could use as a normal Direction could be uh well I don't have that information right now so I need to get that from here which information should I use this up or normal um currently the normal is this yellow one no no just try to get the normal as an axis see if it's gonna work and foreign with this axis now looks weird nope didn't work so maybe up nope hmm what if I use the same normal for this one and change the up nope somehow I need to change this normal Direction but the axis if I use the reflect normal didn't really work foreign maybe I need to make this negative nope that's not it um let me look at the normal Direction coming from here so these are popular Direction let me look back at reflected Returns the vector representing a reflection of the direction against the normal so this looks like it's correct I might need to reflect the up Vector value as well yeah that's probably it nope somehow nope it's not correct it looks like 90 degrees different or not sure if I just use n as it is or negative n m oh well um let me look at the sample file that I've created previously see what I did so I think I did use reflect um or it may be no no yeah I did and I did use the axis is coming from from probably I need to I need to rotate this original normal Direction by 90 degrees uh that's probably I need to do so the normal direction is here upper Vector is here so so yeah I guess that's what I need to do so previous up previous gnome axis is cross between the genome and pee up and then that's what I want to use to reflect the normal [Music] doesn't look correct through the negative what's up nope hmm wait so this is up Vector value and the current one that I have here is this one and I want to use this axis as a reflection of I guess so in return why do I have an angle like these for the normal that doesn't look correct [Music] this will just change the orientation so it doesn't really mean anything I need to check if this axis is correct or not Okay so okay that looks so wait a minute hmm well yeah I mean this should be okay this should be okay and using this red axis as a reflection normal I was hoping the new points normal will come to the other side let's these but it's coming to this com how come if I change this to previous normal wait a minute it doesn't really change wait okay so this is more like it but uh not really correct not really correct hmm what's wrong with this reflection oh my there's any reflection of against the normal hmm reflection of the direction against the normal let me test out with the small sample see what I was doing wrong foreign let's say I have one one okay and if I want to use the axis one one one four one zero one analyzed and by reflecting this with this normal I'm kind of a wanna have this reflected normal coming here see if that happens nope what hmm no interesting so the normal stands for I mean the axis for the reflection stands for what the normal for the plane is it well you have to rotate like 90 degrees pretty confusing hmm or should I make this like what if I'm what happens if I make this zero one zero nothing happens yeah hmm what if I make this one one zero reflected oh well it's not really doesn't really make sense to me does it what if I make this axis and previously where was it no that's that's also not making sense hmm so how this how does this work I was hoping this normal coming to this but instead it's coming to the negative Direction so if I make it negative that might be okay yeah what if I make this to okay now that might make sense so maybe I need to Put negative after reflecting okay so going back to where I was put the negative and does it work now now I also would like to think how the upper Vector should come so cool currently looks like these maybe I can just use that picture as it is not sure maybe not but let's see what happens no maybe not and the axis is um your axis could be just the a p uh okay so why am I seeing those points where does these points coming from oh this one okay So currently I still have some convince is probably due to a up Vector value so I think I need to also fix this up as well so do I need to reflect it maybe yes try using the same thing okay no nope it doesn't really look correct what if I don't do the reflection is a rotating hmm um I'm gonna have to check one by one so the normal is the normal look okay nope doesn't look okay it does not look okay Lee I need to use P up all right more like it okay so that's good for the normal what's up with the up Vector value that's too busy make this scale smaller So currently I'm using the up Vector without doing any reflection so maybe I could do the reflection again this is not doing anything so P Norm nope not going good what I need to do what I need to use is a axis which is these tangent Vector value I think and that should be equal to this P up but it doesn't really [Music] uh no actually it is oh yeah it is uh Vector value so I was hoping that would work somehow it's getting getting some weird result or is this correct maybe I don't know let's see um nope it's close close but the the angle is still a bit wrong in terms of left and right okay why am I getting these results okay so I guess the normal direction is correct at this point is pretty much mirrored I think so I guess this normal direction is something I just want to flip it to the negative Direction that's it can I just do it here nope I don't think so can I nope hmm wait a minute we demand it I might not be able to use reflect as it is so I might need to make this negative as well as reflect foreign do I need to use this axis hmm well it seems like I just need to okay can I need to consider that uh okay so first of all the up picture should be negative probably um coming from the current value let's look at this and maybe I need to make sure that this is aligned with the normal Direction the current New Normal Direction so let's consider this is correct and then foreign I could use cross between the new Norm and current up Vector value then create across again between the this one and new Norm normalize then make a negative hmm nope obviously that's wrong it's funny okay now I am this is out of my hand so I'm just gonna make this easier way it might not be efficient in terms of the uh performance but I'm just gonna create a mirror after I have copied it foreign so in order to do that I need to know the reflection um value reach uh primitive so I'm going to update the previous abnormal with this one which is going to be the axis for the flip then make sure that this being transferred to the new geometries after copy two points yeah it's been copied now wait I could promote these to primitive more or I can just use pointer angle to flip these points with each of the points based on it's normal now I think I also need to know the base Point position like the center point position here let's also copy that show you how that right there you go okay okay now I can access to the center which is currently called as rest then push Matrix do the Reflection by um what was that b p u p that's that's the axis and the one that what I want to reflect is p get the negative then pop Matrix and let's see if this is correct in terms of flipping um no is it doesn't really maybe it is yeah maybe it is okay yeah uh it's a bit hard to tell um maybe not [Music] what's the axis pee you up first of all I this one needs to be correct so if this is wrong then the whole thing is wrong [Music] which comes from here right so currently this been used as an axis and I guess one axis is not enough to reflect the plane is it isn't it yeah now that I think you do needy two vectors in order to reflect correctly isn't it okay so this one actually is not a good option to use is there any yeah now that I think this reflect is not considered as a mirror because it or maybe I need to uh okay probably the note this normal Direction refers to the perpendicular direction of the plane that makes sense then the value is not available right now so this should be the one so let's try to use that one see what happens um nope nope where is it no I don't think I think this is correct wow just show up the Axis wait a minute this is not the angle what I want but this is not the angle I want actually this is the angle I got is it normal Direction ah maybe I can just use the normal hmm let's see so p no taking too much time okay finally I think I got it finally I think I got it yay yes finally something to look at something I could satisfy with a couple of time okay now it looks more like about a fry now What's Happening Here probably due to the current normal okay so pretty much it looks fine let's go with adding the movement back together with the spine see what happens flip it hard to see the wing movement because it's moving too fast I'm gonna make this movement to 0.02 so that it merely moves so that I can check the wing okay not that bad it does have some kind of a rowing angle movement so I think I'm okay with it cool that's cool that's that's fine looks fine and the movement using some sine wave looks wait a minute what's Happening Here okay something not so I have this normal so at this normal okay these so some flipping is not really working somehow gotta visualize this P Norm interesting why is the why is it so this is the piano should have come from here once I wait a minute why am I am I having something like this okay now I know the reason because the number of points is different and I'm using p t num and that's the reason why everything work seems to be off okay stupid mistake then maybe things that I was trying here might have been correct huh but I won't go back oh well to know what's there is okay now it looks perfect perfecto better fit okay okay looks good now now you I can just wrap this up this time maybe I could add a little bit of detail to the wing and just finish this life okay so the wing shape currently is a bit too simple so maybe I could add a little bit of um small detail to this one maybe a bit of um angle to this so maybe I could go back to a sphere instead of using Circle I could use an oval shape instead so first of all I want to make this clipped so that I can use one half like that and then scale this to make the top part a bit smaller [Music] lower [Music] like that make it less res because I want to make a lot of wings maybe this is enough then reconnect here I have some on them maybe this is too much [Music] could the small curvature a big curvature [Music] none Mike also reduce the detail a little bit more even the wrong res looks nice [Music] with these wireframe on okay that's good and now [Music] start to look nicer okay now maybe I could then use make this thing shape as a pack to object to make it lighter to simulate to make a lighter to animate might be interesting to show it on wireframe shape in terms of the wing [Music] uh what's Happening Here um is it because of the pack yeah it is uh okay I didn't I can't couldn't do that oh yeah that's because I'm using flip here right well hmm that's tricky that's tricky if you want to use the same flipping for the pack you could instead of using foreign well in this case it probably might it might make sense to reuse this this one instead of using this one if you want if I want to use pack oh well okay let me try then it's always good to go for a best performance so what do I have to do here first of all um I'm gonna go with the up as it is for now and for the new gnome this is reflect P up but I guess this has the BP Norm and then I think I need to do the the reflection for this P up or make it negative nope hmm yeah so that and uh for the P up needed to do it's a bit hard to see with the wireframe okay it's not correct oh close there you go nope nope nope throwing it's rolling rolling okay I need to check if the normal is doing let me make sure again it's not moving so that's easy to test okay so in terms of normal it's fine I think and for the up Vector value hmm yeah probably this up Vector is not correct and to fix this I am going to create the the up the current up with the norm The New Normal and then again create a cross between The New Normal this one and normalize it probably I may need to make this negative so for these pairs once this comes to the other side I need to have this corresponding to this angle so somewhere around here which seems correct so let's see [Music] probably I need to rotate 90 degrees that so I could use axis okay [Music] this is out of my hand um probably I need to rethink about how I set the normal end up so currently currently the normal is being normal and off Vector has been used and it's been aligned 90 degrees things are aligned like this okay if I wanna make this selected then what I should do is just rotate um this angle oh yeah but I just need to flip to the side for this normal angle but I also need to I think I also need to flip this one as well let's see so once I have normal Direction like that hmm and if I make this negative why am I not seeing any copying oh forgot to enable p-scale Okay so obviously I think obviously I need to fix this normal Direction somehow when I have reflected this normal to here I also need to work this somehow somehow and how do I need to fix this how do I need to fix this can I just can I just [Music] um what happens if I make this negative just flip to the negative Direction so that doesn't really make sense I think I need to rotate this so reflect making P Norm as an axis didn't really work so new normals and a new axis nope axis no copy up foreign so this is closest from here I might need to rotate this I don't know if I can rotate 90 degrees it does that fix Maybe so let's say now that I have this angle I might wanna rotate it by 90 degree see what happens to the other direction foreign first of all maybe the reflection is not correct hmm oh well I am pretty much the hmm [Music] is there an easy way to sort this out so in terms of normal looks correct but maybe I shouldn't do this angle here 30 degrees and okay now looks good so this was doing something wrong here the the angle that I have set here I see although I wanted it but instead of using that maybe I can just control the normal direction to half the initial angle all right so currently it looks like this but instead of using the current normal which was set here somewhere around here I could try to add the custom angle like that there you go so maybe I could create a custom parameter for this one write it let's say from 100 80 degrees range there you go now it's more like it um all right looks good now I can use packed geometry some took a long time to fix this well I guess I hope it's worth it I'm gonna keep this since it might be useful in some case okay I think I am done with the oldies I'm a bit too tired I'm a bit tired so I'm gonna organize some of the parameters that I set and I'll finish this live stream let me know if you guys have any questions I'm not sure if you are still listening to this inside being struggling with this orientation a lot but uh hopefully found it interesting all right so let's collect all the parameters that I have to able to control these shapes maybe I want to also color these randomly um for the spine maybe keep it white fine which was fine this maybe I can do this before packing or the this one maybe I can color based on each point it is to call a lot of time maybe it could be based on the Primitive so I could do it here create the random color point uh I guess I shouldn't do it here because it's Gonna Change while running so I should do it somewhere right here or um why should I do that yeah maybe I can just use another Point wrangle so I have a unique ID this one for each primitive for each spines so I could use that to create a color I guess and as a result oops okay that is because I don't have this ID for the newly created points so there we go all right hmm maybe it makes sense to control the shape the size of the wing randomly for each character would be spines so going back to the P scale P scale it could be using another randomness from ID and fit this between 0.25 2.06 or something like that some spine has the bigger Wing someone sun has a smaller make 0.5 maximum maybe 0.3 minimum okay it's flying too far away maybe I'm making the speed too fast okay no question no question is a lot it's over my head thanks for the comment um I'll be make sure to upload this file after I have finished this live stream so that you can play out with the file that I've created on this live and please free feel free to use it for any purpose okay okay so let's collect all the parameters um starting from the initialization so I had punch first of all the number of points makes sense make thousand the maximum okay and I might also be able to change the base size like the lengths oops that I wanted to close it to now um next with attribute so this is nothing I could do bending yeah a lot of bending offs parameters which is kind of optional but um maybe good to have so let's have these all copied maybe I could um maybe I could just leave these as it is in terms of the initial scaling so let's also create the label these are the base parameters now next what do what do I have resample okay we should go inside a solver there is a moving parameter here so move smooth speed red offset let's label this as uh moving or I'll call it flying again someone doesn't have parameters this one doesn't have a parameters okay and now comes to the detail part put a spine maybe these could be the parameters the bone spine bone label label okay now the wing especially the rotation part which uh which took most of the time for this live stream damn but I hope it's worth it offset offset angles speed up angle base what else that's pretty much it okay okay that's a lot of parameters now let's see I'm gonna make the speed a little bit slower try to make the number of there you go it's still pretty fast with hundreds of spines flying around it's pretty nice and I could make this longer oh wow now it becomes more like uh one from I don't know final Final Fantasy or something okay okay that's cool it's a lot it's pretty fast I think it's moving pretty fast nice I guess it could even looks nice without the wing let's see that uh yeah I also like these okay the point is that the edge the length between the points is not changing so I can use these spine as a fixed geometry for each point cool maybe I could add the alpha Channel to the wing oh didn't work here maybe I need to do it here a bit too transparent hmm yeah something like that no okay 0.9 is fine all right so yeah it's a centipede yeah it looks like a centipede maybe instead of using the link if I could if I made the leg it will become centipede for sure okay let me let me try all the parameters that I have start with small numbers of flying spines so hmm so I have move smooth flying smoothness almost the smoothness so if I make this smaller I have more smoothness I guess so if I make this like 10. it's more like wondering where to go each spine is looking for some it really does look like a bug like an ant looking for some food that's interesting five yeah I'm Gonna Keep with one okay speed or speed what's the difference between move and speed oh God it does really look like it's looking for some uh forgot what the speed was maybe due to some curl noise scale or something probably Grand offset yeah that's this is offset between each um flying spines so if I make this zero all the spines are using the same cool noise meaning it's affected by the same Vector field so if the distance is close enough for each spine it's going to move in the same direction yeah five spine detail that's the detail for the shape of the spine not much difference when detail this is more of an angle now that's moving really this is a step angle for each wing bead okay up angle base yeah that's the offset angle for the up this is how much it waves no that's too much probably this is good reduce the speed yeah that's pretty much it thank you for watching guess no question so I think I'm just going to end the live here hopefully you learned something new um which might not be really useful for many cases but uh some of the idea explained in this life could be used in other cases so especially the the one that I really struggle with the reflection and how you move the spine starting from the tip points might be useful in some case okay so that's it what did they thank you very much for listening thank you very much for watching um I'd like to finish this live as always I am going to upload the file to the GitHub you could download the file the head file from the video description page of this YouTube live later I'm also going to upload the files to the patreon which um if you could support me on the patreon that would also be awesome but all the files are freely available so only if you wish to okay thank you very much and see you sometime next week or so if I'll be able to have catch a Time right so that's it um thank you very much and hope you have a nice week um it's 4 30 a.m in Japan time and I have a meeting in three hours yeah yeah nice so good night and sleep
Info
Channel: Junichiro Horikawa
Views: 136,058
Rating: undefined 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: 0301TnpwzbA
Channel Id: undefined
Length: 218min 42sec (13122 seconds)
Published: Tue Nov 29 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.