Curve Deform with Geometry Nodes - Blender 4.0 Tutorial

Поделиться
HTML-код
  • Опубликовано: 5 окт 2024

Комментарии • 85

  • @DKNS_DSGN
    @DKNS_DSGN 4 месяца назад +4

    Great tutorial, thank you! For anyone trying to this in 4.1+ there are the Index Switch nodes for the confusing switch mess for axis selection. :)

  • @BenP-hr2rc
    @BenP-hr2rc 2 месяца назад +2

    If you are generating a curve inside of your node tree to use this "Curve Deform" node group on, you have to make sure to place a "Set Curve Radius" between the curve and the node group. Curves built in the modeler seem to have a default radius of 1, while ones built in geometry nodes seem to default to a radius of 0 until you set one. So if you are trying to use this with a curve generated inside of your node tree and not imported from outside of the node group with an Object Info node and aren't seeing anything, that is probably why you aren't getting any output (everything being scaled to 0 based on the radius).

    • @Erindale
      @Erindale  2 месяца назад

      Yeah this is correct. I think that should be patched to have a default of 1 for radius but I’m not sure if it’s in yet

  • @EduTriRo
    @EduTriRo 21 день назад

    I just watched 50 seconds of your video and learned what I came for, after another one hour video of yours, great stuff!! thanks a lot, I´ll probably watch more

  • @xard64
    @xard64 7 месяцев назад +1

    For someone trying to learn geometry nodes this tutorial was very helpful, informative and easy to follow.
    I don't know if there's easier way to do this but as an extra task I created using the new for node tools with 5 additional nodes (if not counting the for loop input and output) a variant of this curve deformation setup which automatically copies the assigned mesh all separate splines found inside the given curve object. This allowed me to just keep on drawing new splines to inside curve object edit mode to repeat the same object quickly.

    • @Erindale
      @Erindale  7 месяцев назад +1

      Nice! That sounds like a great extension!

  • @maksymrockatansky
    @maksymrockatansky 2 месяца назад +1

    The most underrated RUclips Blnder channel. I recommend it to every friend :P

    • @Erindale
      @Erindale  2 месяца назад

      Thank you so much

  • @gangger89
    @gangger89 8 дней назад +1

    thx for the video. came here from a blenderartist forum link - trying to build a waterslide-generator with different parts on different sections on a curve. still a way to go but this helped definitely :)

    • @Erindale
      @Erindale  8 дней назад

      Wow sounds like a very cool project! Good luck!

  • @ghostarts5767
    @ghostarts5767 7 месяцев назад +1

    Thank you so much, this is amazing. earlier i made a geometry node setup for hair cards where i was creating ribbons inside geometry nodes, but it had quite a few limitations, this is so much better with a lot of flexibility,
    Thank you

  • @JohnFrazier
    @JohnFrazier Месяц назад

    When I came for a Blender tutorial, I didn't realize there would be a geometry lesson included.

    • @Erindale
      @Erindale  Месяц назад

      Every day’s a school day 🙌

  • @Gelo31415
    @Gelo31415 4 месяца назад +1

    You explained things really well - this is such a great tutorial!

  • @kimmolaine665
    @kimmolaine665 10 месяцев назад +5

    Stupid question: at 13:20, you're using a Position node. How do we know, or specify, that the information comes from the cube and not from the spline? I mean, you created this network so that it's attached to empty (?) and not the cube, so it can't flow from there.
    I'm fairly new to Blender and have a background in Houdini where we usually need to specify these kinds of things😂

    • @crisishotl1ne
      @crisishotl1ne 10 месяцев назад +7

      Since geometry nodes works backwards, it'll collect the context for the position node from the Set Position node that it's (eventually) plugged into. Since we plug the cube geometry into the set position, it'll reference the cube vertex positions.

    • @kimmolaine665
      @kimmolaine665 10 месяцев назад +1

      @@crisishotl1ne Thank you, that explains it

  • @SEKOPASA
    @SEKOPASA Месяц назад +1

    You are a amazing teacher.

    • @Erindale
      @Erindale  Месяц назад

      Thank you so much

  • @Nikkes02
    @Nikkes02 10 месяцев назад +2

    You are a good teacher. I know this particular stuff already, but if it was a new topic for me, I'm sure I could follow this and then be able to apply this on my own 🙂

    • @Erindale
      @Erindale  10 месяцев назад +2

      Thank you I’m glad to hear that!

    • @Nikkes02
      @Nikkes02 10 месяцев назад

      @@Erindale Just wanted to add that a lot of your other topics do touch on things I haven't thought of (or from a fresh perspective), although I have done years of work as a graphics programmer. So thank you 😎

  • @jeffg4686
    @jeffg4686 9 месяцев назад +1

    I just wanted to put my vote in for a plugin for some of you geonodes gurus.
    Basically like Firefly Text Effects, but for Blender where you can do cool things like wrap it on a curve, and apply additional effects.
    Maybe I can contribute some day after seeing some others geonodes setup for some of the initial ones (I'm no geonodes guru at all).
    Maybe we can get an open source plugin going where many people can contribute, else it sure does look like a good money opp.

  • @legofreak5769
    @legofreak5769 10 месяцев назад +2

    i was just trying to figure this out like 2 days ago... thank you!

  • @KevinProost
    @KevinProost 7 месяцев назад +6

    You're my new Bob Ross

  • @TripTilt
    @TripTilt 10 месяцев назад +3

    Quite a complex topic and setup but made easy with your great explanations!

    • @Erindale
      @Erindale  10 месяцев назад

      Thank you tt! I appreciate it

  • @ArcaneErudition
    @ArcaneErudition 4 месяца назад

    When you plugged in the mix node I was like 🤯

  • @hereb4theend
    @hereb4theend 10 месяцев назад

    Aw sweet, Christmas came early this month! Many blessings and good cheers to you Mr. Erindale.

  • @Zhiznestatistiks
    @Zhiznestatistiks 10 месяцев назад

    Thanks, it helped me to better understand how curve sampling works.

    • @Erindale
      @Erindale  10 месяцев назад

      A very useful thing to know when working procedurally!

  • @Intercepto
    @Intercepto 10 месяцев назад +1

    Amazing tutorial thank you for this. I always wondered how are meshes getting deformed on curves.

  • @johnsmith56920
    @johnsmith56920 Месяц назад

    I've done it thanks. Very useful. What I'd like is to have the curve deform modifier applied ot a portion of the mesh (no problem here) BUT with a fall off that would smoothly integrate the deformation into the mesh. This would give us a procedural tool for organic modelling. I'd love that.

    • @Erindale
      @Erindale  Месяц назад +1

      Should be able to use a geometry proximity and a map range to set the falloff based on distance from the curve?

    • @johnsmith56920
      @johnsmith56920 Месяц назад

      @@ErindaleI am going to try that. But, if an expert (means you) were to make it nice, flexible, user friendly, ... My problem with the ones I've done is that the deformation is not consistent. If I move the center of the deformation slightly the deformation can rotate madly around the normal.

  • @OneGhastlyGhoul
    @OneGhastlyGhoul 3 месяца назад

    Very minor tip, but you can subdivide even faster by pressing Ctrl + number (depending on the number of subdivisions you want). Saves a few seconds.

    • @Erindale
      @Erindale  3 месяца назад +1

      As long as you don’t have emulate number pad turned on! I have a full size keyboard now but when I learned way back I was just on a laptop so used the number row for camera views. Old habit

    • @OneGhastlyGhoul
      @OneGhastlyGhoul 3 месяца назад

      @@Erindale, that makes sense ofc.

  • @RandyTech272
    @RandyTech272 10 месяцев назад +1

    This will be useful for what I'm working on. thanks my friend !!

  • @hansgoudey9052
    @hansgoudey9052 10 месяцев назад +2

    Very pretty thumbnail! Always enjoy your thoughts on node groups :)

  • @danialsoozani
    @danialsoozani 10 месяцев назад +1

    Another great tutorial! thanks for sharing it here AND amazing Pigeon Tool Bag add on you've mentioned!

    • @Erindale
      @Erindale  10 месяцев назад +1

      Thanks! The addon is so powerful!

  • @zetsology
    @zetsology 6 месяцев назад

    Thank you. I found what I couldn't figure out by myself.

  • @Feddark
    @Feddark Месяц назад

    Thank you for the super tutorial!

  • @MarcLuscher
    @MarcLuscher 5 месяцев назад +1

    I'd LOVE to know which video you "previously made the curve form in" ... i can’t currently see any to figure this out

    • @Erindale
      @Erindale  5 месяцев назад

      I mean that like “here’s one I prepared earlier” but it’s an example of what we’re actually making for the first half of the tutorial

  • @YvesBonheur
    @YvesBonheur 10 месяцев назад +1

    Always amazed by your amazing tutorial!!!☺

    • @Erindale
      @Erindale  10 месяцев назад

      Thank you

  • @sander-wit
    @sander-wit 9 месяцев назад +3

    Just so you know, you're awesome.

    • @Erindale
      @Erindale  9 месяцев назад +1

      Thanks so much 😁

  • @duncanrudd348
    @duncanrudd348 10 месяцев назад

    Great thinking and explanations as always Erin!

    • @Erindale
      @Erindale  10 месяцев назад

      Thanks Duncan!

  • @nicholasgonzalez
    @nicholasgonzalez 10 месяцев назад +1

    you are a wizard!

  • @AhmadHossam
    @AhmadHossam 24 дня назад

    If spline type is poly subdivision the curve 200 before using the curve defoem node

  • @Ciklopcat
    @Ciklopcat 6 месяцев назад

    Thank you for your work!

  • @luzid.vision
    @luzid.vision 5 месяцев назад

    Great! Wonder why the mean radius of a curve is not affected by apply scale, would actually make sense! Such a tricky thing to apply scale to your curve and everything is bullocks :D Am I right in my assumption that instances are actually pointers?

    • @Erindale
      @Erindale  5 месяцев назад +1

      Yes instances are just referencing the same mesh data which is why they need realising to be modified independently

    • @luzid.vision
      @luzid.vision 5 месяцев назад

      @@Erindale You are an amazing tutor. Thank you for deepening my understanding of this incredible software.

  • @BagBuff
    @BagBuff 2 месяца назад

    Random Q: Do you know of a way to find the Length or Factor of a spline at it's intersection with a single vector value? ie. I have multiple splines that each cross over x=0 and x=4 plane. I want to trim them perfectly to those X values while maintaining their Y and Z values where crossing those planes. I am stumped.

  • @arktessellator_10
    @arktessellator_10 4 месяца назад

    i have a technical question regarding how the geo nodes flow of computing is working in this vid. my understanding is basically any field computation of input node, in this case position node which will take the position of each point as a field to which ever geometry it is connected to within a geo node tree,
    now the position node above the bounding box node, its connection goes to maprange to seperate xyz which is connected to sample curve node, now this sample curve node is operating on geometry (which is the bezier curve here) so it forms a tree according to my interpretation thus this should imply that position node will be taking the position of the bezier curve point. But this assumption of mine is clearly wrong as that position node is taking the position of cube seperating its z value, meaning that this position node is sort of connecting to the next big tree associated with geometry connected to set position node which takes the cube as input geometry, if this wasnt the case ig the final output wouldnt have worked as it looks. so the question that remains to me is what is the thumb rule that i need to follow when deciding which geometry associated with which tree is being evaluated by that node (specifically input nodes)?

    • @Erindale
      @Erindale  4 месяца назад +1

      Great question! In 99% of cases the field is evaluated on the context of the geometry it connects with. This is slightly different for sample nodes and raycast and geometry proximity. For these nodes you have something evaluated on the target geometry and then some way you want your main geometry (in this case the cube) to retrieve it from the sampled geometry.
      For example the Geometry Proximity node has a “Sample Position” socket. This is what position you want your main geometry to sample from. By default it’s the position of the geometry but you can specifically set it. Same on the raycast etc.
      With the Sample Curve node, it can sample a specific attribute or it also passes through position, tangent etc by default. With our use case here we want each point of our cube to “know” where on the curve to sample from. The factor is a predictable 0..1 range so we just need a float value between 0 and 1 on our main geometry to sample that curve.
      Same idea with the Sample Index node. You use an integer on the main geometry to correspond to specific indices of the sampled geometry.
      If you’re familiar with coding, these are like a dictionary. We have a key:value pair which is spline factor: position. If we want to retrieve the position from the spline, we need to give each element of our cube a key to go and get the right thing.
      Hopefully this will become more obvious in the future. There’s been discussions around how to visualise things more clearly.
      So rule of thumb: the field is evaluated on the context where it meets geometry EXCEPT from the sample nodes where you’re telling them how you want to map data between two different geometries.
      Does that help?

    • @arktessellator_10
      @arktessellator_10 4 месяца назад

      @@Erindale yes that seems very logical since now that you mention that the goal of sampling nodes is to pass the value or attribs to next target geometry. Thanks🫡!

  • @Kendrixx-f1b
    @Kendrixx-f1b 2 месяца назад +1

    Erin I'm tryin to follow up with the tutorial and which video do I need to watch in order to follow up the first 2mins I just cant find it

    • @Erindale
      @Erindale  2 месяца назад

      Ah sorry I was not clear about that. I mean it more like “here’s one I made earlier”. This is the tutorial that makes that curve deform setup I use at the start

  • @rbettsx
    @rbettsx 3 месяца назад

    26:46 .. I guess a 'Swizzle' subgroup would avoid the spaghetti, and be more generally useful, these days.. and there's a menu option, too... oops.. someone else has just mentioned that

    • @Erindale
      @Erindale  3 месяца назад

      Yeah definitely going to add one of these to ETK that would be very useful

  • @theMindRobber1
    @theMindRobber1 6 месяцев назад +5

    Maybe i’m in the minority, but i absolutely do not understand this. I’ll keep trying though

    • @Erindale
      @Erindale  6 месяцев назад +2

      You’ll get there eventually! This is not a basic thing though and it’s using a bunch of geo nodes more abstract concepts of data flow so don’t be hard on yourself not understanding immediately!

    • @galacticbroadcastingcompan8756
      @galacticbroadcastingcompan8756 3 месяца назад

      You're not alone. Keep going.

  • @manchot29
    @manchot29 10 месяцев назад

    Great stuff!

  • @blackvertigoion36
    @blackvertigoion36 Месяц назад

    😅 I've been frustrated for hours trying to get this to work, only for me to realize I've been using the normal node instead of the position node 🤦‍♂️

  • @joachimfure8030
    @joachimfure8030 6 месяцев назад

    I tried using this to control the "tentacles" of a jellyfish, everything seemed to work until 18:10, my tentacles(which is also curves generated in geo nodes) dosnt rotate at all when I tilt the curve. Will continue to google around, any steps that need to be different since im dealing with curves, and not a mesh?

    • @joachimfure8030
      @joachimfure8030 6 месяцев назад

      Of course I found the solution right after I asked. I was applying all this AFTER I converted the curve to mesh, if I do it before it works.

  • @horngshianngan5313
    @horngshianngan5313 8 месяцев назад

    Excuse me, by any chance anyone know why my Suzanne still remain stretch even followed the steps after 27:50 😢sorry I'm newbie.

  • @shmuelisrl
    @shmuelisrl 10 месяцев назад

    when did they add factor as a subtype to integer? 🤔

    • @warcat3d
      @warcat3d 10 месяцев назад

      At least since 3.6, not sure when exactly it was implemented

  • @Rybz
    @Rybz 10 месяцев назад

    For making a curve deform with GN (with tilt, etc) it always needs to Realize Instances or can it also be done without? (For example, for a very long line of repeating meshes)

    • @Erindale
      @Erindale  10 месяцев назад +1

      My next tutorial which is being edited now is about doing arrays deformed to splines so you’ll get to see how you can work with instances in that one. It will result in identical instances though so you can’t deform them to the curve, just instance them along

    • @Rybz
      @Rybz 10 месяцев назад

      @@Erindale Omg, will it have rotation, start position offset and tilt? Cause this is exactly what I was needing help with rn!! An array with deformation along a curve and one without. :P

  • @Will_Scobie
    @Will_Scobie 10 месяцев назад

    excellence!

  • @SamMan6410
    @SamMan6410 9 месяцев назад

    I'm having trouble with the Axis selection no matter what combination I make with the switches I never seem to have all axis to be blue. Can someone help?

    • @Erindale
      @Erindale  9 месяцев назад +1

      If you invert the normal from the sample curve node, does that solve it?

    • @joshuaborner
      @joshuaborner 9 месяцев назад

      @@Erindale It did for me. Thank you!

  • @PiterTraceurFA
    @PiterTraceurFA Месяц назад

    jesus christ dude, 35min?

    • @Erindale
      @Erindale  Месяц назад +1

      If you just want to get the tool without understanding the process you can download the file from the link in the description