Also, regarding bending (haven't tested it though, and it is more than likely destructive) :
Great catch. This should imho be available in Blender already ...
I'm in Blender 3.0.1
I have a model with multiple procedural textures setup, and I want to bake the Diffuse, Metal, and Roughness, ideally the bump/height/normal too. All the tutorials I've found so far haven't worked. For the Diffuse I get a mostly black image with smatterings of some of the noise on one part of the UV, and plain blocks from another area but that's it.
Any help appreciated.
First off I can confirm that this workflow of baking down complex materials (using tiling, masks, and so on) down to regular textures *does* indeed work, as I've been using it frequently. It's especially great for baking down tiling normalmap details onto regular UVs.
No idea about procedural nodes though, there might be some not supported by the baker, who knows.
A few remarks and questions :
• You mention multiple procedural textures. But are you familiar with the process itself to begin with ? For instance simply baking a tiled repeating diffuse texture setup down to regular UVs, or baking from one UV channel to another in general. If not then there's no point doing anything more complex than that, you should focus on the basics first.
• Not all passes might bake properly (or at least at some point in the past they sure didn't). So perhaps you need to pipe all your texture passes as diffuse just for the sake of baking.
• Are you aware that the texture target of the bake is determined by the currently selected texture node, and the UV target by the currently selected UV channel ?
I believe I've brought up the following earlier but I am still curious about it - and perhaps someone might have an idea on how to get around it.
I'd like to find a way to copy the path of a packed texture to the clipboard, even when the path is grayed out and not selectable, like here :
Of course I could click the little pack button to unpack the texture temporarily just to grab the path, but that's actually not an option because it would kill any painted edit that may have been done to the texture during the current session.
As a matter of fact, the very purpose of copying the path is for me to be able to open up the original source PSD of the texture in order to paste any change I might have done to the flattened version of it from within blender.
And obviously, I do know where the texture actually is located 99% of the time. The goal here is to be able to work without even having to think about it at all, going straight to the relevant folder without any navigation.
Any ideas ?
Well, this path is not longer valid. The texture is packed into the Blend file. And that's the reason why the path is greyed out. It is internally only used to unpack the textures into the original location. But the path is not valid anymore until you do the unpack in the very same location. And so also not editable anymore, including to copy it. There is no way to access it, at least none that i know of. It is read only.
Edit externally would have been my second idea. But this feature is just available for unpacked images. All you could do is to unpack the texture to the original path again i fear. Or copy this path before you pack it.
But why don't you simply finish the texture before you pack it?
@pior i did a very quick n dirty addon for this - adds a menu entry in the image editor, guess with a bit more hacking one could integrate it better, but i quess a quick shortcut or so would also do it..
Yeah, i forgot about the python api. Thanks for proving me wrong ^^
@pior You don't need to click on UI Elements to copy, just hovering over it and press Ctrl-C. This works especially great with colours.
@Prime8 ah nice! didnt know about the hover copy, pretty nice!
guess the only 'advantage' of an addon operator is that you don't need to hover over the path, as it copies the path of the current image.
Oh @Prime8 that's perfect, thanks !! I certainly had no idea this was possible. I am glad I asked :)
And thank you for taking the time to look into it @kio . There seems to be an issue with the addon at least with 3.1, as it doesn't seem to show up in the addon list after install.
@Tiles "But why don't you simply finish the texture before you pack it?"
Well that's because not every workflow is linear ! For instance I deal with texture atlases a lot, and it is a common occurrence to have to add or modify an atlas as a model is being colored - to add a missing color or value for instance. Of course I could always open the source image in PS by browsing for it since I know its location most of the time, but this is honestly quite annoying and gets in the way of good flow when working fast. Being able to copy the path means that I can get there with just win-E and paste.
And of course this doesn't only apply to swatch texturing. Being able to go to the source of a packed texture can be extremely handy when hacking something together - another non-linear way of working.
@pior ah yeah that might not work, I only tested it running from the text editor in blender so I'm not surprised the install doesn't work ;) would be pretty easy to fix tho.
but it seems you have a solution anyways.
Does anyone knows how to make a geometry snapshot like in 3d max reliably? So every deformed instance would turn just to unique static geo ?
My guess it's something from Ctrl+A menu but whenever I try it always something is missing
Select relevant objects, Ctrl+A, "visual geometry to mesh" doesn't work?
it usually doesn't active and even when active is not always working.
Re nondestructive bending:
I used to use Pior's script to make Simple Deform less shit too, way back when, but now I hacked together a Geometry Nodes group that does the trick for me
It automatically sets the bending direction to whichever axis is the longest, and can automatically center it to x, y or z (for stuff like wristbands etc)
It's heavily based on Higgsas's work, and he even helped me fix my broken automatic direction logic. Here's his gumroad if you want to support him: higgsas.gumroad.com/
Here's his blenderartists thread where he posts the latest stuff: https://blenderartists.org/t/higgsas-geometry-nodes-groups-blender-3-1-3-0
My version can be found here:
Nice ! Looks like this is working perfectly, very well done.
Does anyone know if it's possible to set a hotkey that could close all collections at once in outliner?
By close you mean collapse? That would be Shift-A
Thanks a lot Prime8. it works :) after I do shift+A two times . Looked for that combination for years and always knew it must be somewhere there.
@gnoop yes right, it is actually expand/collapse, similar to select/deselect, forgot to mention that, sorry. Happy to help.
Is there any way (using default tools, or an addon ...) to split UVs according to the hard edges of the model, and then offset the outer borders in by a certain amount ?
As a matter of fact in the Blender paradigm there is no notion of splitting UVs since they are always ready to be split by just moving the faces, but that's the best way I can think of to describe what I am after.
Like so :
This is an essential part of creating hard intricate lowpoly surface models that bake well (no bleeding over the edges) while still behaving well when textures need to be very lowres (as the hard edges from the geo can then take care of keeping the shading clean) ... but there doesn't seem to be many tools out there that accommodate the workflow consisting of first doing a regular unwrap and only later splitting things out.
Even though a simple scaling would not work in all cases (for instance any island shaped like an L would be problematic, as well as any island inside another island), it would still be a good start. So perhaps a macro could go through all surfaces of a model outlined by hard edges, select the corresponding UV faces, and scale them down by a small factor. Thoughts ?
Select Sharp Edges, then mark as Seams maybe? Then Unwrap ...
And i guess the "offset" part must be done by hand then. There is the margin setting though. After unwrap and with the pack islands tool.
Well no, because the whole point is to not change the overall arrangement that is already established :) This isn't a case of making an asset from scratch, but rather, starting from an unwrap that as been well done the traditional way, and adding the necessary splits.
I feared it ^^
@pior I'm frustrated by the same issue. I generally do a similar thing to what @Tiles mentioned, then manually scale the new islands with the pivot set to individual origins. The thing that's annoying is that as long as the UVs still share the same coordinates, the UV editor still treats everything as a single island (and therefore shares a single pivot), regardless of seam placement. The most efficient way I have managed is to manually select islands that don't share edges, hide everything else, and then do my scale with individual origins. Then repeat until you've got all of them. Select linked, [Ctrl]+[L], with the seams delimit helps somewhat. This seems like something that could be easily automated, but I am not a clever man.
If there is a way to get the UV editor to treat islands as separate when they share border UV coordinates, it could make this process so much easier...
Well, you could work with Pin. Then just the unpinned areas are unwrapped again. But then you have to rescale and put the single parts into their place again.
EDIT, point is, when you modify an existing UV then you modify also the margin. And usually you have the margin set to its size for good reason. So imho, every modification to UV means you better completely unwrap it again.
@Tiles - well, in theory that sounds reasonable ... but in actual practice this isn't quite as simple as it seams seems for a number or reasons :
1 - The unwrap may have been fully done already, in a very clean way but just missing the split-and-spread. This can happen when reworking an earlier asset, or even simply when getting models back from an external vendor. This technique is really quite delicate by nature meaning that many people just don't quite understand or have much practice with it - and this means having to edit things after the fact.
2a - It's not necessarily true that making it "right from the start" is always the best way either, as a bruteforce unwrap with all these edges marked as seams would scatter pieces randomly, requiring to put everything back together manually by checking which edge matches which edges. I could imagine some workarounds though, like a clever way to select the next adjacent piece based on an edge selection and bringing it near the original selection - and then refine manually. Or a packing algorithm attempting to organize things based on surface continuity for instance.
2b - There's also a case to be made for doing a regular unwrap first and only then splitting/spreading things later according to the internal hard edges, because it allows to preserve the "tiger pelt rug" visual consistency on a part quite well.
- - - - -
Now that said your earlier post almost gave me an Eureka moment as it made me entertain the thought of performing an extra temporary unwrap in a secondary channel by marking all the internal hard edges as seams, and then using all these exploded parts as a way to select islands (from one channel to another). But unfortunately that doesn't work, as transferring the selection requires Sync mode to be on and I don't think Sync mode has any way to quickly select islands. So it goes back to what @Brandon.LaFrance what suggesting, ie using things Select Linked>Sharp and Select Linked>Seams in the 3d view to progress through the selection.
Really curious to know if there are any unwrap/packing algorithms out there that not only pack things well, but also keep parts near each other based on the corresponding surfaces of the model. Any suggestions ?
Yeah, i understand your point. It's just not the rule. And i still have the feeling that doing it right from start is / would be the better way to go. First set all seams as needed, do the unwrap, then do the needed corrections, and group manually together what belongs together. But yeah, sometimes this is not possible.
I unfortunately don't know of any algorithm that keeps edges close to each other. Since the priority of the algo is to distribute the mesh as even as possible. And when you try to keep everything close to each other then you waste lots of UV space. Which would be the opposite of what you usually do. To use the UV space as efficient as possible.
(At least for this simple example:) If you split your object in the 3D view then the UV-scaling with pivot set to individual origins does give the wanted borders/margin.. but to select every wanted "face-island" and split it or split everything by Mesh -> Split -> Face by Selection and then merging the "face-islands" may be a bit cumbersome for complexer objects.. depending on you workflow you may have to merge the mesh vertices at then end.. but an (applied) edge split modifier might be handy.. it worked for the example.. A more direct split by sharp edges or seams would be.. nice.
Well. I have a kind of half manual solution involving geometry nodes.
you kind of split and scale down all faces and then transfer original UV to what was before to scaled down thing. It's automatic part. Could be done through usual data transfer modifier too if you do it on an object copy.
Then you apply geometry nodes modifier and convert "atribute" to regular UV . As far as I figured out it's possible only manually here.
it turns the attribute output geometry nodes generates to usual UV
Then next step . You do upscale to corresponding value again in another geometry nodes , apply and do "merge by distance"
I am sure it could be all done through a clever geometry nodes math without all that manual converting and applying but working with UVs there is quite a puzzle for me so I wonder to see a better solution too. It also tends to spoil the final UVs if merging vertex back distance is not absolutely tiny. So could be unreliable.
Well. actually if you upscale back and merge by another geometry nodes again after applying it's kind of more reliable . More probability UV would stay intact if you upscale vertexes very close to each other .
I have no idea yet how to work with selection input in geometry nodes. If somebody have an example how to split certain edges only using selection input I would be appreciative .
PS. Well . actually you can use same named attribute input to bring vertex group based selections . So the problem is solved
Well I am glad I asked - thank you for all the suggestions :) I still have to try the methodds involving Geometry Nodes, but the Split Modifier approach brought up by @okidoki put me on a viable track already. Streamlining it as follows, without even using a modifier :
0 - Assuming that "regular UVs" have been done already,
1 - Select all edges marked as sharp using Select Similar Sharpness,
2 - Split faces by edges (essentially going straight to the equivalent of an applied Split Edge modifier),
3 - With UV Sync on, scale all by individual origins,
4 - Refine UVs as usual with Sync mode off,
5 - Weld all by distance to get back to a continuous, watertight mesh.
Outside of the potential issue of messing up vertex order (which isn't a huge deal really and barely relevant at this stage), this is really quite viable. Of course there is some manual work involved, but much less than having to select-linked and edit all the desired islands one by one. And this little bit of manual scaling/moving things around doesn't take much more time than a regular inspection of the UVs anyways.
@gnoop Regarding your attempts using geometry nodes : perhaps the Split and Merge distance could be kept as 0, with the scaling being done only on UVs ?
I have no idea how to scale existing uv. There are not so many nodes to work with UVs there. What I suggested is basically data transfer of UV from initial model to one with contracted down faces so their uv space is getting contracted accordingly . Then upscale faces back to their original state and merge vertexes. It could work only with selected faces through saved vertex groups . It all could work same way without geometry nodes too.
Gotcha yeah - well, without a way to cleanly/directly interact with UVs I feel like the GNodes method isn't worth it for practical use at this time - but this is definitely a great proof of concept and something to keep an eye on. Thank you for the investigation !
Well that's certainly starting to look like something that could be scripted pretty easily. Now, if for whatever reason you do need to preserve vertex order, this addon has saved me more times than I can count.
Hi there @Brandon.LaFrance - while we're at it I might as well mention the one I use myself :
Also just released: www.youtube.com/watch?v=X5q8bMRjzOg
Still sticking with mine, but it's nice to see tools like this developed
edit: I don't post here enough to figure out whatever format Vanilla wants its youtube links in, and I don't care to try anymore.
I am trying to rig some (tank-like) treads to a small robot. I essentially want a single controller object that I can use for both the movement and rotation to drive the tracks. So that moving the controller object forwards/backwards moves the whole bot and both tracks in the appropriate directions. Also, so that when rotating the controller object left and right the bot as a whole rotates, and the tracks operate so that one goes forward while the other back, and when rotating the opposite direction the opposite happens. Hope that makes sense.
I've come from 3ds Max and not that familiar with Blender's constraints system. The model consists of the bot, and two seperate tracks, which were arrayed (applied) to fit the curve, moving the curve objects forwards/back rotates the tracks around them as I would hope, but when rotating the paths the tracks sort of unravel and fly off away from the model/paths like a ribbon in the wind (best way I can think to describe it lol).
I've found all the tutorials on the subject only cover it going forwards and backwards. There is one slightly more indepth one which managed to keep the tracks in their loop but they moved out sideways from the model.
That's fantastic. Great find!
Question: I work a lot with stacked UVs and the color overlay on UV chunks starts to look too solid quickly, obscuring the texture. Already toned the opacity it way down in the theme editor which helps some but it it still gets hard to see things at times. Both selected and unselected overlay are affected.
Anybody know if there's a way to toggle visibility of the overlay?
Hello @thomasp, Is this what you are looking for? Also the UV Opacity slider but It affects the edges too which is a bummer
What @Oaken said, and to help with this I made a little piemenu in Pie Menu Editor. I could share if anyone's interested, but you do need PME for it. I mapped it to Z, like the viewport's shading menu (if enabled)
Thanks guys, indeed that's what I was looking for. In my configuration with the UV toolkit addon on full display at all times I totally forgot about the UV editor having its own viewport overlay menu. It kinda blends in too well. ;)
I'll be off to get some prescription glasses now.
Is there an equivalent tool in blender ?
I tried to duplicate and separate an edge loop then convert it to curve but it's not smooth. When i convert points of the curve to bezier it is not the same as 3dsmax and nurbs sucks and do not retain some points.
Or maybe it is possible to send my spline to blender ?
@shogunato : please describe precisely your actual intended end result (or desired input and output), as Blender users will not be able to know what this or that Max tool does.
In Blender to make a polygon line (edge loop) into a curve you may try:
If this is what you are looking for..
Pior, when converting edge loop to curve, Max is asking smooth or linear but Blender convert only in a linear way
Thanks a lot Okidoki. This is what i was looking for. I converted to bezier and it worked fine :)
I see ! Yeah the way Blender has different "sub types" of curve objects is really quite confusing and IMHO in violation of the main design philosophy of the software since no other object type behaves that way. Glad you got it figured out.
A new question :
Is there any addon out there allowing for the rapid creation of new materials directly from within Mesh Edit Mode, and ideally allowing to assign said new material immediately to the current selection of faces ? I am well aware of how to do so through the interface, but sure enough someone out there must have streamlined this process already. Ideally the created material would use a commonly used shader, like Diffuse or Principled ; and the user would be prompted for the desired Base Color at the time of creation. I feel like I've seen an addon with such a feature in the past, but I am not 100% sure.
 This seems close enough, just without the option to directly set the base Color :https://github.com/ChrisHinde/MaterialUtilities
[edit2] Well nevermind, I've add some odd material behavior after using the above addon like colors not refreshing as they normally should on editing. This mind be a coincidence, but back to square one ...
@pior https://github.com/BenjaminSauder/create_assign_material something like this? was a nice afternoon project :)