Blender 3.3 LTS: Making and Using a 'Distribute Points In Mesh' Node

Поделиться
HTML-код
  • Опубликовано: 22 авг 2022
  • --- READ THIS BEFORE COMMENTING ---
    Before you tell me that this not a good method for distributing points, please understand that I know that and until a better method is built in, this is an ok workaround. You don't have to write me a novel about poisson distribution in the comments!
    --- OK BACK TO YOUR REGULARLY SCHEDULED DESCRIPTION ---
    In this video we will make a reusable "distribute points in mesh" node that fills a mesh with points, not just on its surface. Then we will use those points to create a topiary effect.
    *Ways to Support this Channel*
    Channel Source Files at Patreon: / johnnymatthews
    Free Assets at Gumroad: johnnygizmo.gumroad.com/
    ---------------------------------------------------------
    Affiliate Links for Channel Sponsor XP-PEN
    Artist 13.3 Pro - Tablet Display - amzn.to/3EvI6hT
    Artist 15.6 Pro - Tablet Display - amzn.to/3Ox9v7U
    XP-PEN Meow Meow Drawing Glove - amzn.to/3U3XiZk (THIS IS SUPER CUTE!)
  • КиноКино

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

  • @yesterwhere
    @yesterwhere Год назад +20

    For Blender 3.4+. The Transfer Attribute node is gone and replaced by 3 other nodes (Sample Nearest Surface, Sample Nearest Index and Sample Nearest). I got this tutorial to work by simply replacing the Transfer Attribute node with the Sample Nearest Surface node without any other changes. Thanks for another awesome tutorial, Johnny!

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

      Thank you very much, my man. Appreciate that! I was looking for that quite a time!

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

      Hero!

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

      thanks a lot man

  • @chicao.do.blender
    @chicao.do.blender Год назад +4

    johnny with the absolute banger tutorials, thanks for it, i got an opportunity to help my 3d modelling teacher to teach a lot of other students, and am looking to get better at geonodes so that one day we can teach more people to make awesome stuff

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

    Thank you so much for this informative tutorial. The ability to determine if a point is inside or outside of another mesh is vital to many further operations such as determining which points to delete or to displace. You have shown us how to do it, although I do feel it should be a basic output (Boolean "Is Inside?") from the Geometry Proximity node and/or the Raycast node.

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

    For modern versions use "Mesh to volume" > "Volume to points" > "Instances on points" > "Join geometry".

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

    You are amazing! Every time I need some help you have put a video out that saves me! Your work is incredible! Hope you are doing well!

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

    A really great explaination, especially the bit about delete geometry selection was godly. Helped me a lot with something similar.

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

      That’s great to hear! I’m glad to have helped 😀

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

    You explain things so calm and well

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

      I have 7 kids, I have to be as calm as possible!

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

    most underrated blender youtuber. Thanks for everything you do.

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

    Awesome high-quality great-info channel! Subscribed!

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

    I really like how you broke down the steps on this video, specially regarding the normal find orientation.

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

      I’m glad it was helpful! It was a fun one.

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

    exactly what i was looking for, no more no less, perfect

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

    thank you soooo much for sharing your skills with us. very educative tutorial!

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

    It's like it was made for meeeeee! 😉 Love this and will be using it in my current diorama project. Guess I'll just have to watch it again.

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

      Lol, I'm not sure I've got great replay value.

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

      @@JohnnyMatthews You think I learn this stuff with just a single watching!? In this case, I watched on my phone while doing cardio at the gym. Now I have to go back and actually follow (& copy) you on my laptop.
      One thing about this is I'm a big fan of being able to pull instances from a collection... for example, different leaves. Between this video and your circular array video, I *might* just be able to figure it out. We'll see.

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

    I really like that you kept the error and pointed it out... you know, just to make you look human and not so God Like! :D Terrific tutorial BTW

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

      The amount of screwups I edit out of my raw footage is embarrassing.

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

    Thanks! Awesome Tutorial!👏

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

    You're a wizard Harry!

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

    really great video. i am currently using this in my own project...
    but is there a way to generate a gradient parameter where it goes from core of the object to it's edge....
    i want to uss it to make leaves bigger inside the bush...

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

    I hope that someone has already told you you're one of the Blender wizards.. Love your content..

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

      Ah thanks. I don’t always feel that way, especially when I watch other peoples content, but I appreciate the kind words and support ☺️

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

    Thank you!

  • @rastro-arthur
    @rastro-arthur Год назад

    this was perfect thank you so much

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

    Thanks a lot man, you saved my time 🤣

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

    dang ! the transfer attribute node changed in 3.5... but wow ! great tutorial, thanks 😀!

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

      I looked up online and you can substitute the "Transfer Attribute" node for a "Sample Nearest Surface" node. Hope this helps.

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

    Excellent video!
    How would we go about removing all nodes and only placing nodes that are in the bottom 5% along the x axis?
    Currently I have set up: position-> separate xyz -> less than or equal .05 for x ->delete geometry which recieves the point generation data. For some reason it is not working and has random points well into the mesh

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

      You might be better off doing it earlier in the process? Take the bounding box X vector and set the max value to something like max-range*0.05? Or min+range*0.05.

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

    Great tutorial as always, thank you! Is there a way to connect those points and transform them to edges to feed the shortest path node?

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

      That’s coming in another video! Both methods will be hackish, but for the time being will work.

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

      One way I've seen is to create two 3D grids, rotate one 90 degrees, then join them together with merge by distance.
      Now you have a grid connected by edges that you can use the node group in this video to cut to shape.

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

    Without these videos I would have zero clue what to do with all the new nodes, great stuff. I don't understand though how transfer attribute worked in this case.
    It seemed to me like you compared face normals and face positions but for some reason what ended up deleting were points and not faces. The attribute workflow is extremely abstract to me..

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

      Well I'm getting the normal from the nearest face which is a vector. Then creating a second vector between the point in question and the closest point on the closest face. So now I have 2 vectors that are related to that point. Then that dot product is specifically related to that point in question. It's tricky and very hackish :)

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

    Cooooool!

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

    ok I read your comment but this is bs. I would parse all faces and use random barycentric coordinates or something. your method is incredibly inefficient
    thx for sharing. I learned a lot

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

    Wow!😃

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

    Thanks johnny,
    any idea how we can have a stable density per m3 ?

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

    Very insightful, thanks. Curious, wouldn't the "Distribute Points on Faces" node shortcut most of this process? I'm playing with it now and not having great results, which is how I came to find this clip, but I'm assuming that aside from my own ignorance this node should conceivably, um, distribute points onto faces, no?

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

      Unless you get full coverage the insides will not have anything filling it, giving empty space.

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

      @@JohnnyMatthews Ahh, good point!

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

    Thx

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

    in 3.4 i cant find transfer atribute node - with what to repleace it? It automatically changed to "Sample nearest surface" and it works...
    And more important question, how to make, instance not to overlap??? I distribute balls, and i dont want them to overlap, bacause it looks wired... HEEEELLLPPPP !!!!

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

    Hey Johny thanks! What kind of Computer do you use? I’ve noticed you have cycles so quickly updated in viewport. Can you share with us what to buy for smooth work in cycles ?)

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

      That’s mainly an RTX 2070S doing the heavy lifting.

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

      @@JohnnyMatthews thanks you !

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

    Is there a way to just test if the A-B vector is negative? If so then the dot product with the Normal vector would not be necessary.
    Great tutorial!

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

      But we still need the normal as a point of reference. Lets say your face point is (0,0,0) and you have 2 points (-1,-1,-1) and (1,1,1): the differences will be (-1,-1,-1) and (1,1,1) respectively. But you still have no information about which way the face is pointing. So you can't compare.

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

      @@JohnnyMatthews Thanks for explaining that Johnny!

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

    I was very curious about your idea of distributing points in a mesh, because that was always a great challenge for me too. Sadly you came up with the same idea and solution that I had some time ago... And that's not good, because that is not how a 'Distribute Points In Mesh' Node seriously should work. Please let me explain why:
    The "Point Count" value in your parameter is not the point count that you actually get, because you're removing every point outside the mesh. It should behave like the original "Distribute Points on Faces" node in which you can define a reliable density (and indirectly also the point count). It would also be nice to have a "Poisson Disk" mode which tells every point to have a certain distance to each other.. but I can't imagine how to do that in geonodes..
    But I don't want to discourage you! You're greate and tutorials are always an awesome source of ideas!

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

      Well yes, this is using the tools at hand until a proper node is written in c++. With the speed of the points node, this is a workable stopgap measure.

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

    It will be nice if they implement a node to distribute points on volume...problem solved in seconds.

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

      It's on the developer radar for sure. It's just not on the front burner at the moment. If a community developer stepped up and coded it, it would get done. However it's not exactly a simple programming task and the core devs are busting their tails on many other tools (see the new hair system for example!)

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

    Yes, but initial random distribution is not nice.
    It is better to combine surface poisson disk distrubution and pyramid-grid distribution inside. Also there is no reason to delete geometry.
    We can just instance on points inside with selection.

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

      Obviously, but until someone codes that as a built in node, this is a decent workaround.

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

    I have one question, is there a way to distribute points and make them stick to the surface or volume without appearing and dissappearing when the mesh is displaced?