Geometry Node Selecting Vertices Tips and Tricks

Поделиться
HTML-код
  • Опубликовано: 19 июл 2024
  • A bit of a compilation of what I have found from watching a lot of individual videos where one technique is used.
    Hopefully its helpful!
    00:00 Intro & Setup
    01:30 Using Index Value
    09:05 Using Position Value
  • ХоббиХобби

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

  • @SouthernShotty
    @SouthernShotty Год назад +33

    This is one of the most helpful Blender tutorials I've ever seen. Thank you.

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +1

      😁 Thanks so much man, lovely thing to read.

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

      @@ArtisansofVaul Agreed

  • @markdebono1273
    @markdebono1273 Год назад +7

    To put it simply, everything starts from zero to accommodate offsets and multiplications as step-wise increments. For example, you have an instance array. The location of the array is that of index zero. To increase the spacing you can multiply the step by two. If you had one as the start, index, then increasing the spacing would also shift the entire array, which is something you normally wouldn’t want. Zero is also important to indicate an "off" state (as opposed to one to indicate an "on" state) and is one of the two states of binary, which is the basis of digital technology.

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +1

      Thanks so much. Makes a lot of sense and very clearly explained 👌

  • @Nerdrakere
    @Nerdrakere 9 месяцев назад +5

    Thanks so much for this info!
    Also side note: counting from 0 is a combination of programming practice and historical programming tradition. Most computers have 0s and 1s and although that may not be needed as much anymore, it’s just tradition.
    But thanks so much! I was struggling with these selections and knowing how I feel like you can REALLY get control over the creations with this!

  • @korone609
    @korone609 Год назад +4

    Using geometry nodes for a project for my internship. Exactly what I needed. Thank you so much!

  • @pixelmuncher
    @pixelmuncher Год назад +23

    I think you could use the Object info node and subtract its Location from the position to get a value that reacts to the world space position

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +7

      Oh thats really clever. I need to see how that combined with a node to get that information from the object info. Nice!

    • @peteroostra9858
      @peteroostra9858 Год назад +3

      ​@@ArtisansofVaul Hapless newbie, here. *I think* you could also introduce the imaginary line as a new object in Viewport, feed that object's Object info node into a Capture Attribute node with a Position field node as value input (on the left) and out comes the position of the new object. I think. With GN's I will never be sure.

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +4

      @peteroostra9858 I think you're right but I think I read somewhere that the capture attribute node is changing some point soon so I didn't want to explore that too much for the video to then become useless 😅

    • @peteroostra9858
      @peteroostra9858 Год назад +1

      @@ArtisansofVaul Understandable 😏

    • @namedjasonc
      @namedjasonc Год назад +2

      This is probably a feature on a newer version of Blender, but I don't think you need to do anything special with the Object Info node (other than keeping the default "original" button activated and selecting the object that you want to use) to get its global position/rotation/scale info.

  • @Flowerpot2905
    @Flowerpot2905 Год назад +1

    Thanks man - I like the in-depth overview, explainer style... Very clear.

  • @physicsteacher4569
    @physicsteacher4569 Год назад +3

    Your insights and explanations are spot-on since you are, as you say, just learning geometry nodes. Perfect for us noobs. Thanks a million!
    FWIW: Indices start at zero most likely because if you are coding this and have an array of "things" that are each "so big (in, say, bytes)", and you have this array at some location in memory, you will need to find each "thing" by multiplying the "index" of that "thing" by how "big" each thing is and adding that number of bytes or whatever to the base location of the array. Therefore, the 1st thing in the array is located at the base location of the array - an offset of zero (zero times the size of each thing). The 3rd thing (index 2) is located at the base location plus 2 times the size of each thing. Numbering things in a array from zero then suddenly makes sense. Took me a while to realize this 60 years ago.

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +1

      That's a good explanation. Like that the beginning if a ruler is 0 the beginning isn't 1.

    • @physicsteacher4569
      @physicsteacher4569 Год назад +1

      @@ArtisansofVaul Exactly. Hence the (forgive me William Safire) ordinal neologism "zeroth" instance or array element.
      You're a natural teacher; keep up the good work!

  • @lartmaispastrop
    @lartmaispastrop Год назад +4

    Thanks for all these helpful tips and explanations 😊
    I don't know how to use the global axis instead of the object's origin, but it'd be really interesting and handy to learn it !
    A little bonus tip :
    It's possible to display vertices/faces/edges indexes in the viewport, without using the spreadsheet panel.
    "Edit", "Preferences", "Interface", under "Display" : check "Developer Extras".
    From now on, in Edit mode, you'll be able to find an "Indices" checkbox in the "Viewport Overlays" menu (top right of the viewport). When checked, selecting a vertex, an edge or a face will display its index 😊
    Thanks again 🙏

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +1

      Wow! That's bloody brilliant! Thanks so much for that. What a time saver!

    • @lartmaispastrop
      @lartmaispastrop Год назад +2

      @@ArtisansofVaul My pleasure ! Glad to see this will be helpful 😊
      I saw this in a tutorial some months ago (but I can't remember which one), so, all the credits and thanks should go to the guy who made it :) If we ever find him 😅

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

    Excellent tutorial, you nailed it - we need more tutorials where simple subjects are covered, simple subjects like this that are UNIVERSAL for almost all projects.
    All programming is zero based, that means start from 0, not 1 - that's the answer

  • @richardokeeffe8375
    @richardokeeffe8375 Год назад +1

    Interesting stuff. Look forward to seeing its use as right now the application is beyond my brain space!😂

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

    This has been so very helpful. thank you

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

    Much needed tutorial! Thanks

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

    You can also add an integer node and plug it into the math node so you can go up or down by whole numbers

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

      Oh that's really handy 👌🏼👍🏻

  • @guzu672
    @guzu672 Год назад +2

    13:45 Compare it to the "Object Info" Location.
    If you have more than one clone, use "Self Object" as an input.
    For anyone still looking for an answer (Blender Version 3.5.0) 👍

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +1

      Thanks so much!

    • @guzu672
      @guzu672 Год назад +2

      @@ArtisansofVaul I discovered it after practicing your tutorial. 👍

  • @ivandahy8271
    @ivandahy8271 Год назад +1

    Great content ! Thank you !

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      No problem and thanks for taking the time to watch and for the comment 😁👍🏻

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

    ooh, this modulo's gonna save me so much time

  • @mrdol
    @mrdol Год назад +1

    super useful tutorial. thanks a bunch

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

    The ZERO is the point. Its the only object that represents the instantiation into the scene. Its the only point that cannot be deleted

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

    Brilliant thank you!

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

      My pleasure. Always glad to be able to help.

  • @taunado
    @taunado Год назад +1

    Excellent

  • @phantomapprentice6749
    @phantomapprentice6749 Год назад +1

    Thanks for explaining this without all the fluff

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      No problem. Great to hear the video was the right balance 👍🏻

  • @Tony-cm8lg
    @Tony-cm8lg Год назад +1

    This is great, I literal never know how any of these nodes work I just plug things in until I get what I want 😅

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +1

      Thanks. To be honest that's what I'm doing half the time to get what I want and then note it down. But I think that trial and error is one of the best ways go learn.

  • @paulreed07
    @paulreed07 Год назад +1

    Brilliant thanks!

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

    2:50 - The reason that 0 is "off" is because you are converting the Index to a Boolean.
    0 -> False
    1 -> True
    2 -> True
    3 -> True
    etc.

    • @ArtisansofVaul
      @ArtisansofVaul  7 месяцев назад

      👌🏼 Nice explanation. I should have thought about that.

  • @user-pz9ju6ss7r
    @user-pz9ju6ss7r Год назад +1

    02:46 - I'm sure that this is due to the fact that the Selection attribute takes a boolean value (which can only be in two versions - true or false), and at this moment an integer (index) is passed to it. Blender tries its best to convert one to the other. I'm currently studying the Python programming language, and there, in such situations, zero is converted to false. The remaining values that are non-zero are converted to true. Blender seems to do the same. The same thing happens with the Modulo node (08:03) - where the remainder is zero, the Selection node gets false, in all other cases - true

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +1

      Thanks man 👍🏻 Good to know. My lack of knowledge anything programing related hindering my understanding there 👍🏻

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

    Good stuff

  • @romabuster702
    @romabuster702 Год назад +1

    Still helpfull video thanks !

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

    All you have to is do the transforms in geometry nodes because it's scale is always applied

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

      👍🏻 Though be careful be cause sometimes that isn't true for example if you're using an object info node that object will retain the scale it has as its brought into the node group/used.

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

    Thank u so much for the excellent tutorial. In the case of using "modulo", how can I offset the selection? For example, using a modulo value of 3, how to select the numbers 1, 4, 7 and so on? Can I cycle and animate this selection?

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

      So you can just use an addition maths node after the modulo part (for example +1) to do that. And this can be animated by using things like the frame as a value.

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

    This is amazing, very grateful. I have a question, how could I move those selected points in a given direction, different from x,y,z? Greetings

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

      Thanks. When you say a different direction you'd base the direction on the x,y and z used in combination. So move 1 in x and 2 in y for example. Or did you mean something different...?

  • @eclecticgamer5144
    @eclecticgamer5144 11 месяцев назад +9

    **WARNING** Using Index may make your model incompatible with future versions of Blender.
    Whenever they make changes to nodes code, it may end up with completely different indexing that previous version. For example the "Split edges" node used to keep all the edge indices the same and simply add one for each new edge created, which makes sense.
    But, for whatever reason, they decided to re-write Split Edges node so that it completely reindexes every last edge to something new, and when I asked the Lead Geo Nodes Dev, Hans, not to do this, he basically said don't use the Index node and expect it to work the same from version to version.
    I have an 18,000 node procedural humanoid that relies entirely on indices for selection...
    Oh, and when selecting verts, edges, faces, you have a new option Normal. (Normal doesn't make sense for verts with no edges/faces, nor edges with no faces) Normal of edges and verts is the average of the faces attached. This is quite helpful when you want to do something to "all edges where at least one face is pointed 'down' direction".

    • @ArtisansofVaul
      @ArtisansofVaul  11 месяцев назад +3

      Thanks man 👌🏼 That's REALLY helpful information and I (and I'm sure other people) really appreciate you passing it on. Yours a champion 👍🏻

  • @EngineerNick
    @EngineerNick Год назад +3

    I think zero indexing comes from memory layout in old programming languages, and it just never went away; an array of integers in memory is stored by remembering the memory address of the first element. This first element is the zeroth element because you can find its value by looking at the integer at + . The second element of the array is found by looking at + (this is assuming the memory-width of each integer is 1 byte). It is ubiquitous in most modern programming languages although I have a suspicion we will see one indexing become more popular in future, particularly in high level languages since it matches more intuitively with hand written math notation which you might find in academic papers etc.

    • @EngineerNick
      @EngineerNick Год назад

      btw Thanks for the awesome video :) Also, Instead of using the `math node` in compare mode, you can use the `compare node` in integer mode which constrains your input to integers automatically. No idea why there are two methods of doing the same task hidden in different nodes.

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      Thanks man, that's really useful to know. Great info and thanks for taking the time to write it 😁👌

    • @markdebono1273
      @markdebono1273 Год назад +2

      @EngineeringNick Definitely agree, also because the socket on the selection is a boolean input. That is also the reason why in the beginning of the video, just index was plugged in, zero was selected since there was no boolean expression to evaluate.

  • @Flowerpot2905
    @Flowerpot2905 Год назад +1

    Presumably translating the grid within the geometry node would change the y pos of the points - therefore, making them move once they pass the threshold?

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      I believe so yes, as it will move them in comparison to the origin (which is the 0,0,0 point) from my understanding

  • @Stimes
    @Stimes 11 месяцев назад +1

    I have a question how i can select a range exemple between 5 - 50 and select 3 random for exemple only in this range.... ? or another exemple in range 1 -10 and in this range select 9 randomly ?

    • @ArtisansofVaul
      @ArtisansofVaul  11 месяцев назад

      Hmm.... Thats a good challenge. You can definitely select a random number using the Random Value node and set it to Integer, then you have a min and max to allow you to set it to the relevant value. If you wanted to do the same thing to several nodes selected that way then in Blender 4 there is going to be a "repeat" node I believe, so you could do that 3 times for example. The issue is that this could select the same point twice by virtue of it being random.... Hmmm....

  • @shmuelisrl
    @shmuelisrl Год назад +1

    the reason why the index only selects the first point (index 0) then put into the selected is because of the boolean conversion, which converts 0 (or lower) to false and anything 1+ to true.

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      😁 Nice. Thanks so much for the explanation. 👍🏻 Really appreciate you taking the time as well.

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

    Am strangling getting the same selections mirrored in the grid.
    Changing the values to match both sides has some problems
    The moment i scale or shrink it x y of the grid only the negative said scales with the grid the positive side misses its place.
    Even do the both use the same copy node thst i just change the location with a indix.
    This is all to complicated to explend.
    Can you just tell me pls the best way to get all the corner only fill even if a scale it any size the grid.

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

      So you'd probably have to do the maths using input values. If you input the number of points on on X and Y, then it should be something like point 0. Then the Y-1, then (X x Y)-1 and then
      (X x Y) - Y. I think that should work.

  • @Benjamin-dq5ib
    @Benjamin-dq5ib 11 месяцев назад

    ive got a question. im trying to modulo select every 2nd index plus 1 (1,3,5,7........and so on) but I want to leave the very last index un-altered. is there a way to do this? ive tried using a lesser or greater than but I ends up breaking the system/output i am trying to achieve.

    • @ArtisansofVaul
      @ArtisansofVaul  11 месяцев назад

      Hmm.... That should work so aim not sure why it isn't. Depending on what you're trying to do if you convert something like a line with points on it to a curve there is a select first and/or last function. You can see me doing something similar on this video: ruclips.net/video/Gbj9AXFUU9U/видео.html

    • @Benjamin-dq5ib
      @Benjamin-dq5ib 11 месяцев назад +1

      @ArtisansofVaul Awesome man, thank you! I managed to get it working after some time. I am still very new to the blender scene, but I am completely in love with it and your videos have helped me immensely. Thanks again.

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

    Oh that why the end point node was laging it need a curve thank you

  • @jeffreyspinner5437
    @jeffreyspinner5437 Год назад +1

    Sounds trivial but mentioning 3.3 GNs is more relevant than you may think... in the future. I saw that only because I looked for it in the lower right corner... many ppl won't, but I have 2 weeks wasted learning deprecated 2.93 nodes that no longer exist 🤕
    I didn't know the math node had this function, so that's cool and tyvm.
    Indicies starting at zero is from programming lore, where instead of starting at 1 like the rest of the world (counting on knuckles (base 12 and hence where a dozen, months, and hours comes from...), then fingers (base 10, totally unnatural) they always start a list with 0.
    I think this is what you mean about selecting based on a "line" but with a plane: ruclips.net/video/NopMAW8ni6k/видео.html like you want to use a line @13:27, kinda like an effector for MoGraph stuff in C4D.
    Try to pick a row like this ruclips.net/user/shorts23cP9lGToJs?feature=share or this ruclips.net/video/vFZHFJkFdDc/видео.html without using Erindale's solution when I asked him using ceiling or floor Idr. In Houdini, you just pick the faces (primitives) you want and done. In Blender you have to do gymnastics.
    Then again, I'll try your method, but move my sphere around and see if it fubars the selection set (I now use vertex paint filled in faces to make the selection and then that for the selection set, cause Blender GN vertex groups do NOT behave the same as they do with vertex paint). I'm suspicious that the selection set done your way will "swim" thru the scene like using "generated" instead of "object" sockets in the Texture Coordinate node in the shader tab... idk have to test that too (!)
    Thanks for the food for thought. I'm Black Cat Blending (but I use ytube the "right" way, only as offsite video storage) and Logically Fallacious on the Blender servers, though I'm logically fallacious all the time.

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад +1

      Thanks a lot for the info and the video to watch. I'll be sure to check that out later.
      Yeah GNs are changing very fast but I think its good that they are responding to the community so rapidly to get something that's going to work really well.

    • @jeffreyspinner5437
      @jeffreyspinner5437 Год назад +1

      @@ArtisansofVaul As long as they don't change the _way_ they work, like from 2.93 to 3.0, I have no issues... but given there are gonna be animation/rigging nodes I'm kinda concerned. The more I think about what Ton is doing, the more I conclude what he does focus on ways to extend the time beginners take to give up, given, I didn't realize the majority of ppl just give up on Blender... (or anything, given most ppl never learn anything worth doing takes time and effort) that's why most tuts are beginner oriented, then with intermediate there is so much less, and adv tuts are so rare... all based on audience size (!) imo.
      Stay safe, and keep up the good work!

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      @@jeffreyspinner5437 It is definetly something people give up on. I know a few. And some people don't "give up" but just stay at a level because they don't challenge themselves to do more. And if thats all they need thats fine. Like I am pretty good at Excel but I wouldnt say Im an expert as I just dont use/need some of the functions.
      I agree with hoping the nodes dont change too much. But I do hope they put in a "repete last" node and an amount of times. That could be really handy.

    • @jeffreyspinner5437
      @jeffreyspinner5437 Год назад +1

      @@ArtisansofVaul It's weird that For loops have to be a hack... I'll ask Erindale about why the heck are some programming functions not implemented in GNs... he would know better than I, given he's a wizard, and I'm 2 months in Blender GNs and 2 years ago 8 months in to Houdini before they kept changing their system that the tuts I could access were deprecated... so I put Houdini aside. It may have matured enough to go back and do both concurrently... I will see... Houdini gave me procedural modeling/etc., PTSD, that Blender's GNs have lessened... so there's that upside... Both Blender and Houdini almost all the time are extremely opaque, or "hide" really cool things in places if you're not shown will never find, and the defaults on both seem to be designed to give the worst possible outcomes out of the box...
      I'm trying to get to a place like I was with ZBrush: having the software be transparent, so I could just focus on the Art. Same with my classical guitar playing. The second the mechanics of the guitar became transparent to the music, I realized no matter the instrument, music is just a way for other ppl to vicariously enjoy the _emotion_ being expressed by the musician. I mean I got FDNY EMS workers to come back to the station to eat and relax to baroque music. Classical music in a blue collar setting... I was very surprised at that. I was playing for my own satisfaction, but others wanted to come along with me.
      Dare I dream to get Blender to become no longer about the mechanics, but about the Art? I'm betting on it... Don't let me down Blender Foundation...

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

    video start at 3:00 guys

  • @eclecticgamer5144
    @eclecticgamer5144 11 месяцев назад +1

    The reason they start at zero is that's how computers work. All data storage/usage starts at 0. Arrays (which instance on points is) always start with index 0, up to (Number of elements) - 1.
    And the reason 0 is "off" is that's how booleans work. 0 = false, everything else is true.

    • @ArtisansofVaul
      @ArtisansofVaul  11 месяцев назад

      ah that makes sense. I always assumed 0 being off would mean nothing, like a null value, not the first.

    • @eclecticgamer5144
      @eclecticgamer5144 11 месяцев назад

      @@ArtisansofVaul It gets even funnier when using "Signed' (positive and negative numbers) integers.
      The number *after* the highest possible number a signed integer can represent: -0
      Yep, there's a negative zero. 😅

    • @ArtisansofVaul
      @ArtisansofVaul  11 месяцев назад +1

      @@eclecticgamer5144 🤦 My poor brain 🤯

  • @user-pz9ju6ss7r
    @user-pz9ju6ss7r Год назад +1

    03:29 - I think it would be easier to use an Integer node

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      I'm pretty sure that's what I then set up after. Is there another way to do it in the node?

    • @user-pz9ju6ss7r
      @user-pz9ju6ss7r Год назад +1

      @@ArtisansofVaul in the video the Group Input node was used. I'm talking about Integer Node, it creates an integer in place

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      @@user-pz9ju6ss7r Ah. I see what you mean. But then (unless I am mistaken) you cant access it through the modifier menu for use without going into the geometry nodes?

    • @user-pz9ju6ss7r
      @user-pz9ju6ss7r Год назад

      @@ArtisansofVaul yes, you are right, you can change the value in this node only through the geo node editor. (apart from drivers and animations... By the way, drivers could help solve the problem of tracking global coordinates, but this is too hackish. The Object Info node will do the job much better)

  • @nikrogers123
    @nikrogers123 Год назад +1

    Im trying to use this to create interesting geo and so far have seen only explanations that go nowhere , all tutorials are like that and i believe that the creative mind has been swallowed up by technology and all tutorials are a direct proof of that , so thanks but its not really helping at all

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      I try to make tutorials that focus on specific elements so that they are easy to find to help solve individual issues, that way they will help when someone has an issue. What you want to do/make with the tutorials is then down to the individual user to exercise their own "creative mind" for themselves. I do have some working through making specific objects but they always have less views than those focusing on specific solutions so it seems that's what people are looking for.

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

    This is too complicated.

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

      Its about as simple as its going to get if you want to select certain points Im afraid.

  • @neilmarshall5087
    @neilmarshall5087 Год назад +1

    Geometry > Bounding Box is one way to find location. Max - Min sockets gives center points to use a greater / less than on.
    Attribute > Attribute statistic >> change float to vector will also give location as a tuple (x,y,z).
    Be careful about saying compare values when talking about the Math node. The Compare node can do Greater / Less / Equal & Not Equal. And in vector mode can do angles, dot product and length. Compare node outputs a Result, not a Value like the Math node.
    Try doing distance (Vector / Length / Less Than) from bounding box center with a grid....
    Selection based on Geometry Proximity from a Curve Primitive Arc... So you can select 1/2 or 1/4 of a face.

    • @ArtisansofVaul
      @ArtisansofVaul  Год назад

      Thanks a lot for the tip! I'd used bounding boxes to work it width but not location so that's interesting. 👍🏻

    • @neilmarshall5087
      @neilmarshall5087 Год назад

      @@ArtisansofVaul Study Lance Phans shading tutorials. A lot of the 'masking' of shading is also applicable to GN selections.
      Once you see that almost everything can be a mask / GN node selection socket input it all becomes amazing....
      Happy blending.....