This channel is the most underrated one in the whole blender community. I can’t say thank you enough for all the the knowledge and effort you’re putting into these videos.
I really appreciated you further explaining this argument that you mentioned in the capture attribute video. You are carrying on a solid narrative, which is fantastic!
The longer I stare at the thumbnail, the more I see. And that scares me. I love it. And again, this is the perfect crash course right now, this will help tremendously.
You are my hero today. I had been wondering why some of my inputs had that offset-plus symbol and others didn't, and I had been wondering how to read vertex group data into my node graph. One video, 7 minutes, and you answered both of these questions and more. Thank you! As an aside, I licensed the Erindale Toolkit (ETK) a couple of weeks ago, and it's useful not only for nodes as-is, but even more often I find myself zooming into one of your nodes to learn how you did that. This GPL-licensed tool is open source ethos at its best -- code as useful tool *and* as teaching medium to spread understanding.
This series is amazing! So much usefull information here! And considering the low amount of 3.0 geom nodes videos this is exactly waht the community needs imho! Thank you sir! :)
This was a brick wall for me until I figured it out, when the old system went out the window. Felt obvious (or at least not that hard to figure out) in hindsight, but I think this and your other clearly labeled chunk-sized videos about very specific topics of GN is extremely useful! As fun as full tutorials with cool results are, it can be a bit messy to learn basics from. So keep it up! :)
Thanks! This lil series is only going to be these 6 videos I think. Unless there's some specific interest for a particular tool later on. After Nodevember, normal broadcasting shall resume!
Thanks a lot for this tutorial. Nice trick about generating the UVs. That softness is probably due to the lack of UV boundary edges, because the data is saved on the vertices instead of the face corners. Ideally there should be a way to split vertices into face corners with coordinates from opposite sides, like a cylindrical projection.
Yeah ultimately we ll get nodes that allow us to create UV maps procedurally with seams but I think it'll still be a while yet. A lot of other core functionality to get in geo nodes first.
If you were a God, you would be God of Geometry Nodes. I echo many of the comments. THANK YOU for everything you do to help us understand. THANK YOU! Dg
I have to thank you Erindale for the awesome tips you are giving us! That one about creating an UV map for spline is so incredibly useful! I have started using that one quite a lot on my own youtube channel. 😀
@@Erindale You're welcome. If i may ask: I just tried to replace the cube instance by a "collection info node", but my objects in collection are distributed as group, not individually; there's no option to choose between whole or group like the "point instance node" in 2.93. Is there any way to achieve it?
Yes! Use the Collection info node, tick Separate Children, Reset Children and on the instance node tick Pick Instances. I'll explain this in the video going up in 2 hours :)
@@Erindale yeah cool! I didn't try the pick instance. It's really hard to find some logic sometimes and everything changes from different versions. Many thanks 😊😊
If you take a spiral (prepared to a circle) instead the standard curve circle the uv becomes a perfect 0 to 1 without the Endglitch which could be nearly eliminated by the circle resolution. By the way Thank you very much for sharing your wisdom with us !
the downside of all these attribute capture UV creation is that when converting to mesh it gives only a per face uv mapping and not what we see in viewport before converting to mesh.
I am using Blender 3.4 and I got the same result without having to use Capture Attributes. In the Shader editor, just connect the Voronoi Texture to the 'Surface' input node of the Material Output node and then add the Set Material node in the GeoNode tree. Note also that this works in Evee in both the Material Preview and Render preview. However, if Cycles is used, The object is blacked out in the Material Preview mode, and is correctly displayed in the Render Preview mode. They both Render properly. Any Clarification would be appreciated.
that's because the voroni texture is 3D.... you're not mapping the tube correctly you are assigning the colour by 3D coordinates.... this technique, in the video, makes the uv coordinates follow the tube properly so it's useful for say adding a tiled rope/cable/pipe texture... then you can just draw pipes for example
Hey, thanks a lot for this video! Was wondering how we could "instance on points" or "distribute on points" for all objects and their respective vertex groups in a collection ?
If you have a collection of objects then you'll need to realise instances to be able to instance on them in a meaningful way. You can use the named attribute nodes now to bring in the vertex group you're interested in and then use that as a mask
Collection info node brings in objects as instances so you’ll need to realise instances to modify them. To read the vertex group, just use a Named Attribute node with the name of the group
As long not sure they work for generated geometry but definitely for just modifying the original object you can use the output attributes like shown in here
You can just use an object info node to pull in whatever object and a named attribute node to read the vertex group. As long as the instance on points node is using the object info as the points then it’ll read the vertex group just fine. Whatever geometry is being processed is the context for where it’s looking for named attributes
i just got ETK, and it is wonderful! I was looking for a tutorial to output a vertex group with vertex weight from geometry node, but i didn't find anything. Do you think if that is possible?
Unfortunately that is not possible right now. In 3.2 it was accidentally possible as long as you had geometry from the original mesh in your output. In 3.3 it was broken as they work more on intergrating the new attributes with Blender. Should be possible again some time in the future
I need help, i have a custom texture that spreads across an object and while it works perfectly fine with shaders it seems geometry nodes dont follow the same path when trying to use selection in distributing points, they appear to follow in the beginning but then go random as if the uvs are messed up, not sure what im doing wrong
@@Erindale all good mate, figured it out after trying all day lol, had to take the vector input of the image sequence and run it back through the group node, then change that external vector to uvmap, tried everything possible until it just worked haha, am happy now
Hello Erin, I have an other question, is it possible to use a texture instead of painted group? It' s possible in 2.93 but can't connect a texture to a geometry node in blender 3
@@Erindale well well, not working, I feel like monkey now. I don't want bother, if you can give a try in your next live... Would be great. It was easy in 2.93 and it drives me crazy
What if you apply extrusions and make holes in that surface. how do you UV unwrap that? I'm kinda stuck on this. I have a animated torus where I have holes and extrusions on it. I need my texture to follow the animation rotation and twist. I have managed to let the UV follow the animation with technique from above but after that when i extrude faces of the mesh the UV unwrapping looks bad again. How can I fix this?
I noticed that when you use the curve parameter attribute to define UVs around a closed curve, at the segment where it closes up, the UVs interpolate all the way back to 0 in that short distance, resulting in an extremely scrunched band of texture. Is there any way to avoid this, short of never using a closed curve as the profile curve, and faking it with a bezier segment that isn't actually closed?
Until we have proper UV support on face corner instead of point domain, this will be the way. You can have a cyclic curve and transfer the positions by index to a curve with 1 more point and just modulo the index by the number of points on the cyclic curve. That'll give you a curve with perfectly overlapping ends to avoid the interpolation from 1-0
I have used this method to apply materials to a road created with the curve to mesh node and it works quite well. However, when I extend and/or extrude the curve to control the road, the materials begin to stretch. How can I avoid this? I have tried using the curve length node as an attribute to control the x scale of the material but cannot get it to work :(
Man you made my Sunday with all these videos! :). Also Just wondering how you would keep the generated UV map from stretching when you change the location of the Bezier curve start and end locations? When I was trying out this setup if you for instance change the starting control handle on the +X axis half of the tubes UVs gets stretched but anything on the negative X axis half of the tube is fine?
Hm maybe you need higher resolution? Unless you mean you want it to not stretch as the curve gets longer in which case you can multiply your lengthwise axis by th curve length node
@@Erindale thanks for the reply! I definitely had enough resolution, I think there is an issue with the Bezier Seg. If you set its start handle so x=1m and end handle x= -10m and use a checker texture you can see everything > x 0 is normal and everything < x = 0 is very stretched out so its not uniform stretching where you can just multiply by curve length. Now if you do the exact same thing with a curve line primitive it works fine and you get uniform stretching from x=1 to x=-10
Great videos, Erindale, I've been watching a lot of them. What I'm looking for specifically is how to access a vertex group on another mesh outside of the mesh the node group is operating on. I want to try to make an enhanced version of the shrinkwrap modifier using geo-nodes that can use a specified vertex group on the target mesh which affects the influence of the subject mesh. So for example, a shirt mesh can be shrinkwrapped on a human mesh that has a vertex group specifying vertices to not be influenced by. In this example arms and hands on the target mesh could have a vertex group that tells the modifier not to shrink to them when they come close to the shirt during animation. Do you have a video showing how to access and read the weights of the vertices in a vertex group on a mesh object that is separate from the mesh the node group is operating on? I'm sure it can be done, I just don't know how. Thanks!
Just use the name of the vertex group with a named attribute node. As long as you’re using it in a context where that other mesh is being read, then it will read the vertex group as required
I really had a hard time wrapping my shrinkhead around the new field workflow. You really cleared the fog for me :) thankyou one question: with your basic uv cylinder example, I get a very dense distribution for the u or v value at the point where the circle loops. Easy to see when using a checker texture. I tried a lot of things but could never make it behave like the seamless mapping I get from add bezier > curve panel -> bevel circle along curve
Thank you! Yeah this is because actual UV maps are stored on the Face Corner domain meaning that you can have completely different values on two sides of an edge. Our current method is using the vertex domain which means that it'll interpolate across the face which give you that very visible seam. You could always stick a ping-pong by 0.5 on your curve parameter and that will make it look mirrored which you might get away with
One thing; the children are randomly chosen and distributed on the plane, but every child is mirrored on the z-axis from the plane, which is kinda strange
@@graphicalsolutions1899 Have you applied scale on the objects in the collection as well as the geometry nodes object? And also check the scale on the Instance on Points node.
Is there an option to assign generated geometry (with GN) to a vertex group so I can then apply different bevel modifiers selectively ? Or is there a different/better approach to this?
Hey there! Is there a way to offset uvs in geometry node graph? I want to make a mirror based on vertex group, and i want to make the mirrored mesh part uvs to offset on uv with 1
Hey @Erindale, I'm trying to implement this UV mapping method to use in a production pipeline. The poly count is obviously too high to leave it as it is. So - what is the best way to un-subdivide the final tube? I tried a couple of options based on capturing excessive edge's positions, but it's stability depends on model scale and is not always reliable.
@@Erindale Thanks for the fast reply. Unfortunately decimate modifier won't work in my case because of un-subdivide mode not supporting vertex group limiting. Besides that my object is curve based so it doesn't support vertex groups whatsoever. I could have isolated tube from the rest of the object to ease consequential modifications, but it complicates workflow. The idea was to draw a curve, convert to mesh, convert attribute to UV map and get an export-ready object. That's why I don't want to overcomplicate things. I really wonder why this method breaks UV map on only the last one edge loop. Maybe there *is* a pure geo node solution.
Can you make something like the world builder shader you made a while back, but in geometry nodes ? I think you can basically make Minecraft like (but realistic) terrain generation within blender itself. I've tried to make something like this but I think I've hit my peak with the progression of it because me small brain. I'd love to see you try it.
Hi there! Thanks for tutotials. One question though. How do i bring in vertex group of an object, that was added in geo nodes via Object Info? For example, i wanna instance an object on a face of another object, both of them are in geonodes via Object Info, and one of them has a vertex group with a face assigned. Thanks a lot!
You just type in the name of the group you want. If it's not the main object then it won't show in the drop down on the modifier but it'll still be referenced correctly if you type it in
Super .. Thanks .. Is this going to be the Attribute Workflow going forward ?? IMO its terrible UX to have to go to the Modifier for Attributes, they need to be in the Node tree unless promoted to the Group Node only if the User wants it.
@@Erindale I gave it a try and it seems to work. Blender doesn't seem to read any fall of though, only black or white. Wasn't able to achieve a fall off with the mid tones. I ended up using Animation nodes, but was curious if you know why it did that?
It's probably that you plugged the group input into a Boolean socket (pick) when you meant to use a float socket. You can change it on the Group tab of the N panel. Boolean sockets will compress all data into 0 or 1.
Can this be done the other way around? Can I assign a vertex group and its weightings within the geometry nodes system? Rather than assigning the weights manually I'd like them to be dynamically assigned from the geometry.
Hmm, I see the curve parameter allows me to output attribute data which is *exactly* what i need, (0-1 across the length of the curve) However, how do i then assign that attribute data to a vertex group? the drop-down in Output Attributes does not show the vertex group I created.
Erindale, another great tutorial. I tried this using a geo-node mesh primitive but does not work the same - weight paint only does a gradation across plane. Any work arounds?
If you're wanting to weight paint but separately use a mesh made within geo nodes then you'll need to transfer the vertex weights to the mesh with an attribute transfer by nearest 👍
@@Erindale , Thanks again for your response. I'm just not getting how the vertex groups can be "weight painted" in the first place from a grid generated from the geonode "grid primitive". It doesn't seem to be an option as compared to same grid generated by the traditional method.
@@davidmcknight4028 Yeah so if you want to weight paint then you need a separate, "real" mesh that you can use a vertex group with, and then transfer that attribute to the grid you're using in geo nodes. You're right to think that you can't weight paint / use vertex groups on generated geometry.
(Thumb 666 ;) When i build an object, using an object from the GN mesh- or curve-primitive list, i can't just start weight painting. It has no UVs yet. The 3.1 manual tells something about attribute conversion, but keeps being vague, technical and new-user-unfriendly , with no pictures or examples. Some users seem to know the holy grale of how to use teh domains properly, but obviously are not willing to share it publicly. Could you please tear down that wall of silence (in my case i want to weight paint a river onto a displaced GN grid)? Thx ;)
Yeah the documentation is definitely lacking and the way we work with things can shift. Definitely need to work something out for examples though. With things like weight painting you have to maintain at least some part of the original mesh for it to properly assign to any generated geometry
Oh wow that's interesting. Again thanks for the thorough explanation. Hope you don't mind me asking. If I wanted to make a tree with the fields version using beziers how would I go about making each branch randomised if they're beziers generated in fields?
I would probably set up an instance on points with a simple line and then realise instances and then use index manipulation like [divide by line verts then floor] for an index per line and [modulo by line verts] for vertex index. You can then capture Attributes and use white noise from the index per line to create a random seed so each is distorted differently. Then mesh to curve and curve to mesh after your radius control etc. There's definitely a workflow to find in there!
@@Erindale oh amazing. Thank you so much. What I'd been experimenting with was a bezier with a curve to mesh and a circle as profile then adding in a noise on the normals index as you explained in a previous video. Instancing on that object another bezier with a curve to mesh. That sounds great though. Thanks for taking the time to answer. I'll definitely give that a go. I'm not very advanced when it comes to geo nodes but it's a lot of fun learning
Is there any way to write to the actual UVMap? Since there is no vec2 data type in the group output options, sending it out as a vec3 seems to confuse Blender and breaks any mapping. Note that I need this for game dev and to export a uv mapped mesh, so these "fake" uv tricks won't work in that instance. Would be interested to know if you have come across any tricks for this or if it is beyond 3.0 capabilites?
This is not possible in 3.0 but you can use the vec3 trick and then bake your textures to a manually created UV. Not ideal but until they make a decision on whether to add vec2 or update the legacy UV code that's that path.
I'm interested in (but somewhat confused by) this discussion. Would having a vec2 output type make any difference in creating UVs? If one were to allow scripting, it shouldn't be overly hard to convert the custom attribute UVs into actual UVs (haven't really tried this, but I've written a comparable script for generating vertex groups from GeoNode data, which is similar). So I'm confused about why vec2 vs vec3 matters right now. It certainly doesn't affect scripting in any real way, so I'm guessing you're discussing a different workflow...
Hello, Thanks for this. My problem is a bit different and I wonder if there is an answer to it. I have a real model, meaning that the ID and Index aren’t in accordance with the UV. I want to select a few vertices on a U or a V line in UV editing mode and transfer this selection to Geometry Nodes. Then do things with this selection, edit the selection to adjust the effects on the fly (means from inside the Geometry Nodes). It works fine if index are in accordance with UV. But if not, I have to define a vertex group from the UV editor and import it into the geometry nodes to be able to edit it from there. Is there a way to do this without painting which I hate.
Manual vertex groups or weight painting is probably the most direct way. If you have my ETK Add-on then there are a lot of selection nodes which might work for what you want like grow selection or select by edge direction etc
@@Erindale If I can find where it is. Otherwise my idea is to select the Vertex in an animated selection and give them an ID by rame number. Then ID will be ordered by U and Vs.
We have a separate geometry node now which works the same. To invert a weight map, I would use a math node set to subtract and subtract the weight map from 1.
@@Erindale Thank you for getting back to me...Would it be possible to somehow share an image of the node setup of your method for flipping weight maps please. Thanks again!
Hi Erin, Thank you for those great Tutorials! I have a quick question- How do you use in the new GeoNodes the Crease socket inside the Subdivision Surface Node? My big hope was, that i can now just connect a vertex group- to use this as an Selection for creasing- does´t seem to work like that... But how is this socket used then? Keep up the great work :)
This channel is the most underrated one in the whole blender community. I can’t say thank you enough for all the the knowledge and effort you’re putting into these videos.
Thanks so much, Pete! That's really kind of you to say!
Agreed 💯
These thumbnails are getting better and better
Hahaha thanks 😂
Agree 😆
I'm so glad these tutorials are dropping right before the Nodevember event. All of these will be really helpful. Thanks a lot.
You're very welcome!
He's got our backs!
I love these short videos on every node so much. So easy and useful to understand to basics of every node
Congratulations on having the only valid tutorial on the internet about this. Subbed.
Hah thanks :D I got in there early
I really appreciated you further explaining this argument that you mentioned in the capture attribute video. You are carrying on a solid narrative, which is fantastic!
These are the best geometry nodes tutorials. So glad I found this. Thanks!
Thanks so much!
The longer I stare at the thumbnail, the more I see. And that scares me. I love it. And again, this is the perfect crash course right now, this will help tremendously.
Like all good art 😂
You are my hero today. I had been wondering why some of my inputs had that offset-plus symbol and others didn't, and I had been wondering how to read vertex group data into my node graph. One video, 7 minutes, and you answered both of these questions and more. Thank you!
As an aside, I licensed the Erindale Toolkit (ETK) a couple of weeks ago, and it's useful not only for nodes as-is, but even more often I find myself zooming into one of your nodes to learn how you did that. This GPL-licensed tool is open source ethos at its best -- code as useful tool *and* as teaching medium to spread understanding.
Thanks so much! Glad you're enjoying ETK!
I'm so excited for nodevember starting tomorrow I can't
This series is amazing! So much usefull information here! And considering the low amount of 3.0 geom nodes videos this is exactly waht the community needs imho! Thank you sir! :)
Thanks! It felt important to push these out before Nodevember begins!
This was a brick wall for me until I figured it out, when the old system went out the window. Felt obvious (or at least not that hard to figure out) in hindsight, but I think this and your other clearly labeled chunk-sized videos about very specific topics of GN is extremely useful! As fun as full tutorials with cool results are, it can be a bit messy to learn basics from. So keep it up! :)
Thanks! This lil series is only going to be these 6 videos I think. Unless there's some specific interest for a particular tool later on. After Nodevember, normal broadcasting shall resume!
Thanks a lot for this tutorial. Nice trick about generating the UVs. That softness is probably due to the lack of UV boundary edges, because the data is saved on the vertices instead of the face corners. Ideally there should be a way to split vertices into face corners with coordinates from opposite sides, like a cylindrical projection.
Yeah ultimately we ll get nodes that allow us to create UV maps procedurally with seams but I think it'll still be a while yet. A lot of other core functionality to get in geo nodes first.
@@Erindale I'm looking forward to all of it! Everything new being added to Geo Nodes has so much value!
If you were a God, you would be God of Geometry Nodes. I echo many of the comments. THANK YOU for everything you do to help us understand. THANK YOU! Dg
Higher praise couldn't be had! Thank you, Dg, I always appreciate your commenting!
Got my answer at 1:32! Thanks Erin!
Pretty useful as usual
Thanks Bassem
I have to thank you Erindale for the awesome tips you are giving us! That one about creating an UV map for spline is so incredibly useful! I have started using that one quite a lot on my own youtube channel. 😀
those thumbnails are doing their job really well
Hahaha thanks 😁
Great video!
The vertex group workaround is VERY helpful
Thank you for the video. This is very helpful :)
can't thank you enough for this video
Thank you so much for this! This is exactly what I was looking for. You have a great voice and a great way of teaching. Please keep it up!!! :)
Thanks so much Steven!
Thank you, I was looking for this!
just what i needed, thanks so much 😃
Thanks Shura!
@@Erindale You're welcome. If i may ask: I just tried to replace the cube instance by a "collection info node", but my objects in collection are distributed as group, not individually; there's no option to choose between whole or group like the "point instance node" in 2.93. Is there any way to achieve it?
Yes! Use the Collection info node, tick Separate Children, Reset Children and on the instance node tick Pick Instances.
I'll explain this in the video going up in 2 hours :)
@@Erindale yeah cool! I didn't try the pick instance. It's really hard to find some logic sometimes and everything changes from different versions. Many thanks 😊😊
If you take a spiral (prepared to a circle) instead the standard curve circle the uv becomes a perfect 0 to 1 without the Endglitch which could be nearly eliminated by the circle resolution. By the way Thank you very much for sharing your wisdom with us !
This is smart! Thanks for sharing
@@Erindale Downside you got hard loose edge in the mesh
the downside of all these attribute capture UV creation is that when converting to mesh it gives only a per face uv mapping and not what we see in viewport before converting to mesh.
there is a nice convert to UVMap Button i completely missed
I am using Blender 3.4 and I got the same result without having to use Capture Attributes. In the Shader editor, just connect the Voronoi Texture to the 'Surface' input node of the Material Output node and then add the Set Material node in the GeoNode tree. Note also that this works in Evee in both the Material Preview and Render preview. However, if Cycles is used, The object is blacked out in the Material Preview mode, and is correctly displayed in the Render Preview mode. They both Render properly. Any Clarification would be appreciated.
that's because the voroni texture is 3D.... you're not mapping the tube correctly you are assigning the colour by 3D coordinates.... this technique, in the video, makes the uv coordinates follow the tube properly so it's useful for say adding a tiled rope/cable/pipe texture... then you can just draw pipes for example
Hey, thanks a lot for this video!
Was wondering how we could "instance on points" or "distribute on points" for all objects and their respective vertex groups in a collection ?
If you have a collection of objects then you'll need to realise instances to be able to instance on them in a meaningful way. You can use the named attribute nodes now to bring in the vertex group you're interested in and then use that as a mask
this is what I looking for
Glad you found it!
If i add a collection as an input how to get vertex groups from jbjects in that collection?
Collection info node brings in objects as instances so you’ll need to realise instances to modify them. To read the vertex group, just use a Named Attribute node with the name of the group
Cool! And I wondered how to output vertex groups from geometry nodes?
As long not sure they work for generated geometry but definitely for just modifying the original object you can use the output attributes like shown in here
Genius!
this is insane
Will their add direcltly vertex group as input without doing like that ? (as a node like in shader vertex group input)
I hope so! At the moment is not very shareable which is dumb because they specifically wanted to make geo nodes shareable...
Pretty cool stuff! How would you get another object's vertex group to instance points on the "imported" object?
You can just use an object info node to pull in whatever object and a named attribute node to read the vertex group. As long as the instance on points node is using the object info as the points then it’ll read the vertex group just fine. Whatever geometry is being processed is the context for where it’s looking for named attributes
@@Erindale Ah! I'll have to give this a shot. Thank you so much!
i just got ETK, and it is wonderful! I was looking for a tutorial to output a vertex group with vertex weight from geometry node, but i didn't find anything. Do you think if that is possible?
Unfortunately that is not possible right now. In 3.2 it was accidentally possible as long as you had geometry from the original mesh in your output. In 3.3 it was broken as they work more on intergrating the new attributes with Blender. Should be possible again some time in the future
I need help, i have a custom texture that spreads across an object and while it works perfectly fine with shaders it seems geometry nodes dont follow the same path when trying to use selection in distributing points, they appear to follow in the beginning but then go random as if the uvs are messed up, not sure what im doing wrong
What are you doing to get the UVs?
@@Erindale all good mate, figured it out after trying all day lol, had to take the vector input of the image sequence and run it back through the group node, then change that external vector to uvmap, tried everything possible until it just worked haha, am happy now
Hello Erin, I have an other question, is it possible to use a texture instead of painted group? It' s possible in 2.93 but can't connect a texture to a geometry node in blender 3
Yeah we can just plug something like a noise texture (probably via a map range) into the density or any other value socket 👍
@@Erindale well well, not working, I feel like monkey now. I don't want bother, if you can give a try in your next live... Would be great. It was easy in 2.93 and it drives me crazy
Do you have an up to date build of Blender? Maybe drop a screenshot of your nodes in discord and we'll check things are looking right 🙂
@@Erindale yes last 3 beta. Ok I'll try to get in touch in discord 🙂
What if you apply extrusions and make holes in that surface. how do you UV unwrap that? I'm kinda stuck on this. I have a animated torus where I have holes and extrusions on it. I need my texture to follow the animation rotation and twist. I have managed to let the UV follow the animation with technique from above but after that when i extrude faces of the mesh the UV unwrapping looks bad again. How can I fix this?
These tutorials are great in general, but I think this one is my favorite in the series. Really gets you thinking.
I noticed that when you use the curve parameter attribute to define UVs around a closed curve, at the segment where it closes up, the UVs interpolate all the way back to 0 in that short distance, resulting in an extremely scrunched band of texture. Is there any way to avoid this, short of never using a closed curve as the profile curve, and faking it with a bezier segment that isn't actually closed?
Until we have proper UV support on face corner instead of point domain, this will be the way. You can have a cyclic curve and transfer the positions by index to a curve with 1 more point and just modulo the index by the number of points on the cyclic curve. That'll give you a curve with perfectly overlapping ends to avoid the interpolation from 1-0
I have used this method to apply materials to a road created with the curve to mesh node and it works quite well. However, when I extend and/or extrude the curve to control the road, the materials begin to stretch. How can I avoid this? I have tried using the curve length node as an attribute to control the x scale of the material but cannot get it to work :(
Man you made my Sunday with all these videos! :). Also Just wondering how you would keep the generated UV map from stretching when you change the location of the Bezier curve start and end locations? When I was trying out this setup if you for instance change the starting control handle on the +X axis half of the tubes UVs gets stretched but anything on the negative X axis half of the tube is fine?
Hm maybe you need higher resolution? Unless you mean you want it to not stretch as the curve gets longer in which case you can multiply your lengthwise axis by th curve length node
@@Erindale thanks for the reply! I definitely had enough resolution, I think there is an issue with the Bezier Seg. If you set its start handle so x=1m and end handle x= -10m and use a checker texture you can see everything > x 0 is normal and everything < x = 0 is very stretched out so its not uniform stretching where you can just multiply by curve length.
Now if you do the exact same thing with a curve line primitive it works fine and you get uniform stretching from x=1 to x=-10
Great videos, Erindale, I've been watching a lot of them. What I'm looking for specifically is how to access a vertex group on another mesh outside of the mesh the node group is operating on. I want to try to make an enhanced version of the shrinkwrap modifier using geo-nodes that can use a specified vertex group on the target mesh which affects the influence of the subject mesh. So for example, a shirt mesh can be shrinkwrapped on a human mesh that has a vertex group specifying vertices to not be influenced by. In this example arms and hands on the target mesh could have a vertex group that tells the modifier not to shrink to them when they come close to the shirt during animation.
Do you have a video showing how to access and read the weights of the vertices in a vertex group on a mesh object that is separate from the mesh the node group is operating on? I'm sure it can be done, I just don't know how. Thanks!
Just use the name of the vertex group with a named attribute node. As long as you’re using it in a context where that other mesh is being read, then it will read the vertex group as required
@@Erindale Thank you!
I really had a hard time wrapping my shrinkhead around the new field workflow. You really cleared the fog for me :) thankyou
one question: with your basic uv cylinder example, I get a very dense distribution for the u or v value at the point where the circle loops. Easy to see when using a checker texture. I tried a lot of things but could never make it behave like the seamless mapping I get from add bezier > curve panel -> bevel circle along curve
Thank you!
Yeah this is because actual UV maps are stored on the Face Corner domain meaning that you can have completely different values on two sides of an edge. Our current method is using the vertex domain which means that it'll interpolate across the face which give you that very visible seam. You could always stick a ping-pong by 0.5 on your curve parameter and that will make it look mirrored which you might get away with
Is there a way to use a collection as the instance object and paint the contents of the collection at random on the plane?
Yeah just plug the collection info node into the instance socket. Tick on Separate children, Reset, and also Pick Instances on the Instance node
@@Erindale hmm.. didn't do the trick, must be missing something...
oh it actually did, i didn't see it, scaling the mesh collection worked! thanks!
One thing; the children are randomly chosen and distributed on the plane, but every child is mirrored on the z-axis from the plane, which is kinda strange
@@graphicalsolutions1899 Have you applied scale on the objects in the collection as well as the geometry nodes object? And also check the scale on the Instance on Points node.
Is there an option to assign generated geometry (with GN) to a vertex group so I can then apply different bevel modifiers selectively ? Or is there a different/better approach to this?
As long as you maintain at least 1 vertex from the input geometry you should be able to do this. It's a weird hack but it works!
Hey there! Is there a way to offset uvs in geometry node graph? I want to make a mirror based on vertex group, and i want to make the mirrored mesh part uvs to offset on uv with 1
what's the shortcut you used at 1:43? shift+ctrl right click drag doesn't do anything for me.
Maybe check what your node wrangler shortcuts are for the join node but it's definitely ctrl+shift+right drag on mine
Hey @Erindale, I'm trying to implement this UV mapping method to use in a production pipeline. The poly count is obviously too high to leave it as it is. So - what is the best way to un-subdivide the final tube? I tried a couple of options based on capturing excessive edge's positions, but it's stability depends on model scale and is not always reliable.
Can you get away with a decimate modifier? Otherwise just use a lower resolution earlier in the system
@@Erindale Thanks for the fast reply. Unfortunately decimate modifier won't work in my case because of un-subdivide mode not supporting vertex group limiting. Besides that my object is curve based so it doesn't support vertex groups whatsoever. I could have isolated tube from the rest of the object to ease consequential modifications, but it complicates workflow.
The idea was to draw a curve, convert to mesh, convert attribute to UV map and get an export-ready object. That's why I don't want to overcomplicate things.
I really wonder why this method breaks UV map on only the last one edge loop. Maybe there *is* a pure geo node solution.
Can you make something like the world builder shader you made a while back, but in geometry nodes ? I think you can basically make Minecraft like (but realistic) terrain generation within blender itself. I've tried to make something like this but I think I've hit my peak with the progression of it because me small brain.
I'd love to see you try it.
Looks like this might be a good fit for one of the Nodevember prompts!
@@Erindale Looking forward to it :)
Hi there! Thanks for tutotials. One question though. How do i bring in vertex group of an object, that was added in geo nodes via Object Info? For example, i wanna instance an object on a face of another object, both of them are in geonodes via Object Info, and one of them has a vertex group with a face assigned. Thanks a lot!
You just type in the name of the group you want. If it's not the main object then it won't show in the drop down on the modifier but it'll still be referenced correctly if you type it in
How is nodevember going to be this year?
Geometry nodes or shader nodes? Or both? 😄
For me a mix of shaders, geo nodes and Sverchok 😁
Super .. Thanks .. Is this going to be the Attribute Workflow going forward ?? IMO its terrible UX to have to go to the Modifier for Attributes, they need to be in the Node tree unless promoted to the Group Node only if the User wants it.
Yeah agreed. Get/Set nodes will come in time I think!
No way yet to assign Vertex Groups to generated meshes ?
This is correct I believe.
Had the same question... Defining vertex groups in the tree would help a lot...
Is it possible to use dynamic paint in the same way - and have different values change the height of the geometry being instanced?
Should be. Just write the dynamic paint layer name in your attribute field on the modifier and you can use it in the node tree 👍
@@Erindale I gave it a try and it seems to work. Blender doesn't seem to read any fall of though, only black or white. Wasn't able to achieve a fall off with the mid tones. I ended up using Animation nodes, but was curious if you know why it did that?
It's probably that you plugged the group input into a Boolean socket (pick) when you meant to use a float socket. You can change it on the Group tab of the N panel. Boolean sockets will compress all data into 0 or 1.
@@Erindale Ooh ok ill give that a try and see if I have any luck. Thanks mate!
The Content vs your Thumbnail....
Gold vs ......😷
Can this be done the other way around? Can I assign a vertex group and its weightings within the geometry nodes system?
Rather than assigning the weights manually I'd like them to be dynamically assigned from the geometry.
Hmm, I see the curve parameter allows me to output attribute data which is *exactly* what i need, (0-1 across the length of the curve) However, how do i then assign that attribute data to a vertex group? the drop-down in Output Attributes does not show the vertex group I created.
Just write it by name if it's not showing up 🙂 did you definitely add it to the correct object?
You definitely can do yeah. Just creating the data inside the node tree instead
@@Erindale I've sent an email to you're business address with photo's to try and figure out what I'm doing wrong, thanks.
Erindale, another great tutorial. I tried this using a geo-node mesh primitive but does not work the same - weight paint only does a gradation across plane. Any work arounds?
If you're wanting to weight paint but separately use a mesh made within geo nodes then you'll need to transfer the vertex weights to the mesh with an attribute transfer by nearest 👍
@@Erindale ,
Thanks again for your response. I'm just not getting how the vertex groups can be "weight painted" in the first place from a grid generated from the geonode "grid primitive". It doesn't seem to be an option as compared to same grid generated by the traditional method.
@@davidmcknight4028 Yeah so if you want to weight paint then you need a separate, "real" mesh that you can use a vertex group with, and then transfer that attribute to the grid you're using in geo nodes. You're right to think that you can't weight paint / use vertex groups on generated geometry.
(Thumb 666 ;) When i build an object, using an object from the GN mesh- or curve-primitive list, i can't just start weight painting. It has no UVs yet. The 3.1 manual tells something about attribute conversion, but keeps being vague, technical and new-user-unfriendly , with no pictures or examples. Some users seem to know the holy grale of how to use teh domains properly, but obviously are not willing to share it publicly. Could you please tear down that wall of silence (in my case i want to weight paint a river onto a displaced GN grid)? Thx ;)
Yeah the documentation is definitely lacking and the way we work with things can shift. Definitely need to work something out for examples though. With things like weight painting you have to maintain at least some part of the original mesh for it to properly assign to any generated geometry
Cant freakin wait to reverse engineer your Nodevember stuff man
Oh wow that's interesting. Again thanks for the thorough explanation. Hope you don't mind me asking. If I wanted to make a tree with the fields version using beziers how would I go about making each branch randomised if they're beziers generated in fields?
I would probably set up an instance on points with a simple line and then realise instances and then use index manipulation like [divide by line verts then floor] for an index per line and [modulo by line verts] for vertex index. You can then capture Attributes and use white noise from the index per line to create a random seed so each is distorted differently. Then mesh to curve and curve to mesh after your radius control etc. There's definitely a workflow to find in there!
@@Erindale oh amazing. Thank you so much. What I'd been experimenting with was a bezier with a curve to mesh and a circle as profile then adding in a noise on the normals index as you explained in a previous video. Instancing on that object another bezier with a curve to mesh. That sounds great though. Thanks for taking the time to answer. I'll definitely give that a go. I'm not very advanced when it comes to geo nodes but it's a lot of fun learning
Is there any way to write to the actual UVMap? Since there is no vec2 data type in the group output options, sending it out as a vec3 seems to confuse Blender and breaks any mapping. Note that I need this for game dev and to export a uv mapped mesh, so these "fake" uv tricks won't work in that instance. Would be interested to know if you have come across any tricks for this or if it is beyond 3.0 capabilites?
This is not possible in 3.0 but you can use the vec3 trick and then bake your textures to a manually created UV. Not ideal but until they make a decision on whether to add vec2 or update the legacy UV code that's that path.
@@Erindale thanks for your reply. Hopefully this issue will be addressed in 3.1
I'm interested in (but somewhat confused by) this discussion. Would having a vec2 output type make any difference in creating UVs?
If one were to allow scripting, it shouldn't be overly hard to convert the custom attribute UVs into actual UVs (haven't really tried this, but I've written a comparable script for generating vertex groups from GeoNode data, which is similar).
So I'm confused about why vec2 vs vec3 matters right now. It certainly doesn't affect scripting in any real way, so I'm guessing you're discussing a different workflow...
Hello,
Thanks for this.
My problem is a bit different and I wonder if there is an answer to it.
I have a real model, meaning that the ID and Index aren’t in accordance with the UV.
I want to select a few vertices on a U or a V line in UV editing mode and transfer this selection to Geometry Nodes. Then do things with this selection, edit the selection to adjust the effects on the fly (means from inside the Geometry Nodes).
It works fine if index are in accordance with UV. But if not, I have to define a vertex group from the UV editor and import it into the geometry nodes to be able to edit it from there. Is there a way to do this without painting which I hate.
Manual vertex groups or weight painting is probably the most direct way. If you have my ETK Add-on then there are a lot of selection nodes which might work for what you want like grow selection or select by edge direction etc
@@Erindale I'll get there immediately.
@@Erindale If I can find where it is. Otherwise my idea is to select the Vertex in an animated selection and give them an ID by rame number.
Then ID will be ordered by U and Vs.
Thanks for the tutorial....How would you go about inverting/toggle the weight map? (the 2.9 way used the "point separate" node)
We have a separate geometry node now which works the same. To invert a weight map, I would use a math node set to subtract and subtract the weight map from 1.
@@Erindale Thank you for getting back to me...Would it be possible to somehow share an image of the node setup of your method for flipping weight maps please.
Thanks again!
I love your voice 😍
Thank you so much !
Hi Erin, Thank you for those great Tutorials!
I have a quick question-
How do you use in the new GeoNodes the Crease socket inside the Subdivision Surface Node?
My big hope was, that i can now just connect a vertex group- to use this as an Selection for creasing- does´t seem to work like that...
But how is this socket used then?
Keep up the great work :)
I've not used it but I would assume you need to pass in Edge indices
@@Erindale how do I convert a vertex group to edge indices?
An idea?
@@jimmyjames6913 maybe try capturing them on the edge domain with the Capture Attribute node
@@Erindale I will reviste your clip on capturing again ;)
And try to figure out!
Thanks
@@Erindale mmhhh really no idea on how to approche it...
maybe you can try it out and explain?
🏇🤸
It's like a having a religious experience, yes?
Nodes always feel like that 😁
i should have watched this earlier . 😅
Dude the audacity to put up such thumbnails for videos 🤣🤣🤣 why dude why 🤣