Packing Collection Objects - Geometry Nodes Tutorial

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

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

  • @Erindale
    @Erindale  2 года назад +21

    Happy Nodevember folks

  • @johnsmith56920
    @johnsmith56920 6 месяцев назад +3

    Since no one reads those comments of mine, I can let me go freely.
    @13:01 Here is what I think. If we have 3 objects in the collection the result of the max-min node will give us the 3 “length” of the boxes that I name a,b,c respectively.
    The “Evaluate at index” node has to outputs: Leading and Trailing. If, for instance, the index is 2 Leading outputs a+b+c and Trailing will give a+b. Mixing them with 0.5 factor will result in (a+b+c+a+b)/2 = (2a+2b+c)/2 = a+b+c/2. i.e. length of the first+length of the second+ half the length of the third, which is exactly what is needed. You can make a diagram with 3 boxes to see how it works.
    A very elegant solution. Bravo.

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

      The subtract at 16:01 gives us the “length” between the object geometric center and the actual object’s origin. This works because the object’s origin is always at world’s origin (0,0,0). Probably because we are in the Original mode in the “Collection Info” node.

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

    Thanks for that. Very useful in itself and packed with ... useful tips on how to use nodes that I didn't even know existed.
    For those who like to understand everything, the "MIX VECTOR" node outputs the barycentre of A and B. Namely the output is (1-fac)*A+fac*B.

  • @UTubeSuhail
    @UTubeSuhail 2 года назад +7

    Thanks for this Erin! Yess definitely would love to learn how to rotate instances as well. If it's not too much trouble.

  • @Hoothis
    @Hoothis 2 года назад +1

    You're a lifesaver, I am going crazy with my asset library looking like a desktop without grid snap.

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

    Just what I was looking for. I'm building a sidewalk with wide and narrow collections of blocks that are random Y depth. I was trying to find exactly this info... how to pack them. The trick of using vector multiply by e.g. 0,1,0 instead of separate, combine is great, I like that. I'm starting to get the feel of instances, transfer, capture attributes, but still a little fuzzy. Great demo, keep it up!

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

      Thanks! Good luck with your project!

  • @marcelmarxer962
    @marcelmarxer962 2 года назад +1

    i have a "rotate around custom pivot" for each axis, chainable. super handy if you can't / don't want to turn meshes into instances. took some time to set up the nodes, but it comes in handy in certain cases

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

    That's amazing, thank you for that!
    I wonder if anyone had any success using the packer on surfaces with a scaterer? Bounding box info could be useful to prevent objects from overlapping.

  • @CybranM
    @CybranM 2 года назад +1

    These tutorials are soo good, great job!

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

    Great Tutorial
    Thanks!!!

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

    Thank you so much Sir, very clear and complete tutorial. Looking forward to show you the result of my research after your lesson;)))

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

      trying to do a Beads lace, worked perfectly well in 2D curve but when you move to 3D curve, instances stay horizontal, how to make them following the curve tangent? (Next Tuto maybe)?

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

    Great tutorial and as always really well explained! Such an inspiration. Can you give some tips on how to pack not only in one direction, but in a multiple? For example to pack randomly rotated objects within XY grid.

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

      I’ll have a look into doing it but it’s very not straight forward. UV packing is one of those computational problems that doesn’t have a perfect solution so you have to try and solve for it. Although I wonder if the UV unwrap node would actually solve the problem for you 🤔

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

    Great tutorial. Absolutely fascinating. Thank you! Dg

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

      Thank you! Definitely getting into some pretty esoteric stuff here

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

    This is great, was able to make it through with my little brain. Currently trying to figure out how to scale instances along the curve and I'm not able to figure it out. I was told I might need to use sample index in 3.4 to achieve it (I'm still in 3.3).

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

      If you're scaling along the spline and you still want to pack them then you're going to need to plug something like a vector math scale into the scale socket of the Instance Packer and use the Index node into the float socket of the scale and then you can set the vector as what the scale is multiplied by for each instance. It can't respond to the curve unfortunately with this setup because the position along the spline needs to move per instance size so if it moves, it's a different spline factor, and then different size, and then it'll move again. That's something that would need to solve rather than calculate directly.

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

      @@Erindale this makes sense thank you. It’s a problem that’s far more difficult than I’m capable of handling at the moment. I could perform a rough descending scale along a single curve, but not multiple curves without a bit more effort(and learning😅)

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

    Super good tutorial! I'm learning a lot about geo nodes from you already. I'm having trouble with having the next object in the collection starting at the end of the previous instance. Currently its just starting at the origin of the previous instance instead and I can't figure out why its doing that. I'm sure I am missing something significant but I have no idea what I am doing differently. Any help is appreciated!

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

    Great video Erindale! I'm trying to use a slightly modified version of the instance packer node group to scale instances to fit face size, but I can't seem to figure out how to obtain more than just two values to use to get the scaling factor.

  • @nurmi90
    @nurmi90 2 года назад +2

    Took me 4 hours to go through

    • @Erindale
      @Erindale  2 года назад +1

      Well done making it through 😁

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

    I can't figure out how to add the temporary viewer to the Group Output as shown at 2:58. I press Shipt + Alt + LMB and get a "Viewer"that is a separate node.

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

      It’s the same functionality it’s just that the viewer is more adaptable

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

    Hey, this is a great tutorial. I've run into a problem though. Even though I have followed the tutorial and done exactly the same things, my instances don't seem to be sitting exactly next to each other like yours. They seem to still be evenly spread out (I have made sure to plug in the collection into the bounding box). I'm not sure what is causing this issue.
    Also, I am using Blender 3.5 (Not sure if there's a lot of difference?)

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

      Hm can you email me your file and I'll take a look 👍

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

      @@Erindale Will do!

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

    "Field at Index" has been changed to "Evaluate at Index".

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

    I was trying to make a geo node image viewer/arranger and ran into the problem of getting the width/height of every image using a bounding box without manually indexing every image separately, creating a mess inside geo nodes. And what do you know, Erindale has the solution once again, thx man!

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

    Many thanks for this tutorial, is there a way to get the number of the points before setting the position and deleting the geometry based on the compare selection? Just thinking performance wise... How I can get the number of the instances/points at given length before setting the number of the points? I am still fresh in geo nodes and cannot find the way so far...

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

      You could set the position after the delete. Ultimately it’s the accumulate length result being compared against the curve length that is setting the number, so just delete and then domain size for the count. You can then do all of the rest of your position etc afterwards.

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

      Thanks, setting the position after deleting helped, now there is no timing/performance impact. When I have 99 or 999999 points at the start, the timing is the same.

  • @JohnWesleyDavison
    @JohnWesleyDavison 2 года назад +1

    Love this, but I'm having some trouble following the cursor. Could you make it larger?

    • @Erindale
      @Erindale  2 года назад +3

      I can literally make it double the size 😂

    • @jeffreyspinner5437
      @jeffreyspinner5437 2 года назад

      I take his videos into Davinci, add a power window and track his cursor and reduce it 2x and it works for me... the render time isn't so bad. Makes the nodes look weird at times as the pointer rolls over things though... but I suffer for my Art, like everyone should. 😶‍🌫

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

    I followed this tutorial very closely, but with primitive objects. Oddly, I'm still getting object overlap when toruses (torsi?) are involved, but I have no idea why.

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

      That’s definitely an odd one. Is it specifically toruses… tori that are causing the issue? Does it only affect while a primitive? Do cylinders have the same issue?

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

      @@Erindale It's mostly toruses or any object next to a torus. I'm going to move on to the custom bounding boxes tutorial and hope that fixes it. BTW, love your Geometry Nodes courses on Canopy! The pacing and thorough explanations are just what my programming averse brain needs. I finished the basic one and am moving to the advanced course.

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

    Can this be generalized to 3D volumes?

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

      Not really. There are other algorithms you'd want to implement to do that

  • @shmuelisrl
    @shmuelisrl 2 года назад

    10:59 I think that the attributes only don't come through when you use the pick instances method

    • @Erindale
      @Erindale  2 года назад +1

      This is true yeah but it does mean you need this long winded workaround when you need instances which is just off the time for my work 😩

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

    @14:42 Why is it that we use the “Accumulate Field” on the point domain and not on the instance domain?
    Is it because the input is a vector (therefore very much a point) or is it because the end of the line is plugged into a “Set position” referring to points?
    On the whole, I don’t think you need to explain the maths (we can find them easily on the internet) but explain a bit more of the Blender innards (after all that’s why we are watching a Blender tutorial)
    OK, anyway, thanks again.

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

      Because the accumulation needs to count up per point, not per instance

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

      @@Erindale Ok, but why does it works? If I use the instance domain I get 0,0,0. Do we ALWAYS need to plug the accumulate field with a point domain?

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

    what?! 20:40 indeces can be negative?

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

      Default indices shouldn't be but you might have remapped them for some other operation. In theory I could have set that default value to -1 and most of the time that would be fine but you could break something sometimes. Negative indices work just like in python so they'll cycle through the options in reverse

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

    您好,您课程中的隐藏式字幕可以翻译成其他语言吗,因为我的母语不是英语

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

      There are captions in simplified Chinese. They are automatic translations so I can't guarantee the language is perfect but you should be able to follow along with the video.

  • @costavojik
    @costavojik 2 года назад +1

    6:12, the node in 3.4 doesn't exist 💀

    • @Erindale
      @Erindale  2 года назад

      Yup you will have the one at 6:36