text:
Baking normal maps high to low resolution object
I have high resolution objects which I want to bake to low resolution objects to save size and loading time, I know the steps of baking high res to low res (which generates a new normal map applied on the low res object).
But I also have a normal map applied to the high res object (example: tiles with grooves), which I also need to apply to the low res object, so in this case I have 2 normal maps must be applied to the low res object.
Is there a quick way to do that? I've read something about adding node that merges 2 normal map nodes, is this the only way? because I have a lot of objects and I need a quick way to do that.

If you bake a high-poly that has a normal map itself, the (fake) 3D relief created by this normal map will also be baked

@moonboots You mean will be baked to one single image? and what if I wanted to change the texture to another texture that has another normal map? I need to bake the whole thing again? including high res to low res?

another solution, as you said, is to bake the high-poly without its normal map plugged, then use this normal map on the low-poly, as you can mix 2 normal maps

In the last solution, is there anyway to automate the baking process and make it faster? because I have many objects, some baking plugins can make baking faster but in this specific case where I have 2 normal maps I think it will be difficult?

i don't know these plugins you are talking about, maybe someone will know


text:
Unexpected result of uv mapping with cube projection or Magic UV Box (Non continuous map)
I imported object from AutoCAD and did UV mapping for it using cube projection, the texture has tiles, I simulated the problem using the color grid texture in below screenshots, it is expected that the mapping will be continuous along each side but it's not, it seems there are UV islands that make the texture stop at certain edges (there is no seams at all), I tried also the plugin Magic UV with same results, how can I make the texture continuous?
Note: I have many objects and most of them are complicated to do manual unwrap, so I prefer doing it with box UV mapping to save time.
Link to blender file:
https://we.tl/t-yGQRw3MKvI
Attached screenshots of the problem:
[1

you need to add seams to your model. it's not possible to have it continuous on every edge. where do you want the seams to be located? select the edges you want to be as seam and do Ctrl+E and select Mark Seam and then Unwrap your model again by going into Edit Mode and selecting everything with A and then press U > Cube Projection

and you might want to scale up your model, it's really small at 0.129 x 0.0925 x 0.2 meters

Cube Projection will project on the 3 axis, so it's normal that the texture is discontinued

@HarryMcKenzie I tried to add seams but when doing the cube projection the texture is uncontinuous in places that don't have a seam (the clouded areas in the screenshots), I know it cannot be continuous on every edge but it should be continuous on every plane (plane projection xz or yz for example should be continuous because it's a box projection, but not when we cross the planes), I think it's something to do with the structure of the object itself not the UV map, because the texture is cut at edges where there is no seam existing, I think these edges are same isolines in the AutoCAD file)

@moonboots yes normal between axis planes but not in same plane (xy for example)

these are not the same faces, you'll see it in Edit mode

the geometry is horrible it needs to be fixed first.

You could select all the side faces and, as they are tris, convert to quads with Face > Tris to Quads:

Then keep the faces selected, shift select one face and press U (Unwrap) > Follow Active Quads:

Now you'll have a continuous texture all around the side:

I tried the steps but I think I am missing something, in "follow active quads" did you choose "length"? I still have 2 directions for the texture, instead of A7,A8,A1,A2 in your image I have them rotated 90 degrees. Also, if this worked, it will solve the problem of same length side faces, but if sides have variant length it will not work, right?

Length is probably the good option, and I'm not sure why it doesn't work for you, have you convert all the tris to quads? Also the result seems correct to me

yes I converted them to quads, what type of unwrap did you do? cube projection? I still have 2 directions, I tried many things but the middle parts are always in another direction, I attached an image here: https://we.tl/t-H7Uy5pieW9

How does cube projection work? isn't supposed that it will automatically map the whole side in one direction correctly?

Cube Projection will project the texture depending on the face normal, so the texture will be discontinued as soon as a face is considered as oriented towards Z instead of towards X for example. As for your UV that is cut in two parts, I'm not sure what's happening, could you please share your file?

This link contains the file after doing "tris to quads" and "follow active quads": https://we.tl/t-T0j9q5UiB4   , the original file before modifications is attached in the question itself.

In that case, is there a quick way to let blender consider all sides oriented towards x for example? because this will be applied to many objects

I've just tested the file you share, it works fine, you need to select all the face (make the view transparent with Alt Z) and then U > Follow Active Quads, and it will be unwrapped in one island only, not two. As for your question I'm not sure what you mean, in the Texture Coordinate there's a Normal output that you can plug into the (Converter) Separate XYZ for example, but please give more details about what you mean and in what way the solution I propose doesn't fit

I did it correctly with Alt Z, I don't know what was the problem, I think Alt Z helped to select all of them in one window without skipping any face, thank you very much for your help. My question was about if there is a fast way to apply cube projection for many objects (100 for example) because in case of complicated objects the "follow active quads" might be difficult to apply,

as I understood, the projection is considering the normal angles to know each face to which plane, as a result there are places the texture is uncontinuous (in place of change between plane to plane for like xy to yz especially in tile textures, is there any way to avoid the texture uncontinuity? for example by telling blender which faces are yz projection? or by controlling the place of tile cut to look continuous?

I don't see how you could avoid discontinuity with Cube Project. For more "organic" textures, like for example wood or stone (and not grids, bricks, etc) you can use the Object output of the Texture Coordinate, in the Image Texture choose Box instead of Flat and play with the Blend value, it will make a smooth transition between X and Z etc

Yes it is a great idea in case of non-tile textures, thank you very much

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
How do I render a composite out of blender
I have a cryptomatte pass that refuses to work in Nuke. I'd like to use the Blender compositor to render out a series of mattes from the crypto matte layer of my .exr sequence. The crypto matte works in the blender compositor.
Here's the thing. (Forgive me if this is something stupidly simple)
I have the cryptomatte image sequence in a new composite tree in a new blender scene. I have it all set up to make the mattes I need. All I need to do is render out the results of the composite tree out of blender. How do I do that?

You can use File Output nodes in the compositor to output whatever you want from Compositor nodes.

If you render everything to Multilayer EXR format, Cryptomatte layers are saved. They obviously need to be enabled in the View Layer properties:

Some software might recognise them, like for example there is this addon for Photoshop, although Photoshop is probably a bad example for compositing as it's very limited for this purpose.
Keep in mind, you should do compositing in linear color space, preferably 32bit float format.

There's no render button on the file output node that I can see. How do I start the rendering process for the compositor?

Compositor does not have separate way of rendering. It is processed during normal render. If you do not need your 3d scene rendered, you need to disable or delete Render Layers node - this way you can render only compositing if you work with loaded image sequences.

So do I need to render the 3d scene to get the compositor to write out it's image sequence?
I already have the cryptomattes rendered. I really don't want to render the 3D scene again ( very long render)

Ok thanks. This is what I needed.

You can make a new file with empty scene and delete the Render Layers node from the compositor. Load the Multilayer EXR image sequence as regular image(there is Detect Sequences option in the n panel of open file dialog), process them as you want, setup File Output nodes and simply render.

Oh, you got it already on your own.

yeah, thanks for your help. Much appreciated

Consider upvoting and accepting the answer if it was helpful.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Add weight value to selected verts
I'd like to add influence for one bone in my rig to multiple verts. By that I mean each of these verts currently have unique vertex weights applied for multiple bones. I'd like to add 0.075 to the weight of Bone.005 to all of the selected verts. The result of this should be that each of the selected verts still have unique weights for all the bones, but they all have had 0.075 added to Bone.005 weights
Hope this makes sense?
If it helps, the way I would do this in Maya would be to select the verts, open the Paint skin Weights tool, Select the joint from the list, change the Paint operation to Add, set the value to 0.075 then click Flood
Many thanks

Enter weight paint mode.  Select vertex group "Bone.005".  Switch to vertex masking and select the vertices you want to be affected by the operation (possibly, by tabbing into edit and selecting there where selection tools are better.)  Use a "levels" operation (under "weights" menu if you'd like, but I searchbar it.)  On the operator panel, set the offset to 0.075.  This will add 0.075 to the weights of all selected vertices.
Any weights that are already at 1.0 or close will not get weights larger than 1.0 via this operation; Blender's vertex groups are clamped to the 0,1 range.

Thanks for this!
I would never have thought to do that.


text:
track to constraint rotation values
New Blender user here. (please be gentle)
I'm using a "track to" constraint to point an empty at another empty. Works exactely as expected, however the rotation values of the constrained empty don't change as it rotates to point at the target.
How do I access the resulting rotation values for the constrained object?
Many thanks.

I don't think it's available. Constraints are override any transform. While you use them, it doesn't count, because they will control the object anyway. If you want to save keyframes or an animation what made by the constraints you can add "Visual" keyframes (they are in the keyframe menu). Or you can bake the animation (Object>>Animation>>Bake Action).

Thanks for the reply.
I tried baking the driven rotations to an action and the curves have no values.
Excuse the complete noob question, but where would I find the keyframe menu?

Never mind... found it. In the preferences

You can "apply visual transform" to see the rotation values at any particular frame (although this may affect the way the track-to behaves; if you want, you can apply them on a duplicate.)  Baking will create keyframes only when you set it to bake visual transforms.  If you use a driver from the transform channels of the constrained empty, that's another way to get the transform of the empty.  Well, "a transform" not "the transform" because more than one set of values maps to the singular orientation.


text:
Mapping face texture to liquid sim
New to blender, so bare with any bad terminology. I'm trying to recreate the face melt from Raiders of the Lost Arc, and I'm doing it using some liquid sims. For the skin, I have a high quality head scan of the person who's face I'm melting, but I cannot get the texture to map onto the liquid mesh properly. I baked the liquid sim for the skin and then exported as an alembic to get the mesh. I really just need the face to look realistic for the first few frames until the skin color takes over. My question is: How can I get the face texture to map, or how can I achieve the effect otherwise? I'm willing to provide files or more info if needed. Thanks.

Hello, not sure how you are trying to do it, have you thought about shapekeys or Animall addon?

Can you share your Blender project file? Instructions for sharing.

We need to see some screenshots fo what you are doing and how far you've gotten, as for what we can tell here you should just be using a UV mapping to project the image to the liquid mesh from view at the onset so that the movement then 'melts' the color data.


text:
Quarternions in the graph editor
So I have some existing animation that appears to have been keyframe with Quarernions and I understand that we shouldn't really directly access the attributes because they're not directly related to XYZ. I believe this animation must have been keyframed visually.
So the graph editor also shows the keyframes in quaternions and therefore how can I edit the curves in the graph editor when I have a W channel affecting everything?
Is there a way to convert? I've not used Blender than long so I may be missing something really obvious (hopefully!)
Thanks in advance
Paul


text:
How can I move the selected faces inwards without creating new faces? I just want to shrink the face next to it inwards
as stated in the Title I want to reverse extrude the faces inwards without creating new faces, there should be a Shortcuts which I didn't catch in the Tutorial. Help would be really helpful

Just grab g :)

@DanielMöller G is extending the edges inwards, similar as you would solidify the selected faces

That means you got duplicated faces occupying the same place. Do a merge first (select all a, and merge m  by distance)

@DanielMöller thanks this helped


text:
Loop cut scale not working
I made a loop cut in the middle of a four sided cube, and am trying to scale it inwards by selecting the bottom side with Face select and scale it inwards. But for some reason, it is instead acting like I am moving it, and not scaling.

As you can see in your screenshot, the dashed black line connects to somewhere higher up outside the image. This line usually connects to the pivot point of a rotation or scaling operation - so it is not scaling around the Median Point of the face. It looks like it is using the 3D Cursor. This is why I linked the other question above, there the problem was a changed Transformation Pivot Point.

Thanks sir, this helped a lot


text:
How to simulate wind while not using hair particle?
I have made a scene with a grass and flowers on the ground. And I want to make them affected by wind. All I know for making a simulation you can use turbulence and wind in case if I'm using Hair Particle. But, in this scene the grass and flowers scattering using Geometry Node. Because my ground was made by Shader Editor. So, is that possible to make wind with Geometry Node and not using Hair Particle?
For more information about the project, you can download here. Download for more information about the project
These are Geometry Nodes that I used for scattering grass:

The flowers have the same Geometry Nodes with grass for scattering.
So, is that possible to make simulation wind while using Geometry Nodes? or there an alternative way to achieve that?

Are you looking for large wind turbulent structures (like big eddies affecting in a coherent way all the grass and flower patches in an area), or would you be happy with just some random/chaotic motion ? Because you are using instances, there are some limits to what can be done without realizing these.


text:
Adding additional automatic weights to my original mesh without redoing it all
Okay, so I'm making a rig and i need to redo the automatic weights on the hands, but already went and hand weight painted the face and the face and everything is perfect. If i parent the mesh with automatic weights to only the bones in the hand, it still redoes all of my weight painting in the face (the entire body is one mesh). So is there any way to only assign new weights to a certain area or bones without redoing the entire thing? The only way i thought of doing it another way is to separate the mesh of the hands and re parent that.... i also am asking specifically about using automatic weights, i know how to use empty groups, just wondering if there was a faster work around. thx.

Another method is: select the armature, shift select the mesh, go to weight paint mode, using control left click select a bone, go to menu, weights, "Assign automatic from bones".
Anothed faster method is: use padlock icon to lock all the vertex groups you want to leave unchanghed, then perform a new automatic weights parenting.

Mark the hands with a vertex group (we'll call it "dtHands".)  Duplicate your mesh.  Autoweight your duplicate.  Give your original a data transfer modifier, targeting the duplicate, copying vertex groups on the basis of topology, limited by dtHands vertex group.  Hit "generate data layers" button as necessary.  Test deforms, possibly smooth out the border of dtHands group to make a more even transition.  Apply the data transfer modifier then delete the duplicate.

Okay, i followed this and im not getting the same deforms on the original mesh as the duplicate mesh.  the fingers are stretching out strangely.


text:
Can't go into edit mode
Help this is so silly is it me? What am I doing wrong? I made of gif of what is going on below, hopefully i'm doing something wrong.
https://gyazo.com/be75d6f44431243bee556584d811efc0

Hello and welcome. While files, images, and external links may be helpful additions to questions they should not be the only way to obtain information about your issue. Don't make understanding your question rely on downloading a file or visiting an external site. Use the builtin tools to upload images or gifs, along with thoroughly explaining the problem in written form so it can be searched for and indexed thus helping future users with similar issues find it.

You just need to turn ON Viewport Overlays button next to display modes on 3d view header ...


text:
Is it possible to check the python source code of a node?
I remember seeing somewhere that it was possible to view the python source code of a menu button and other things.
Is it possible to see the implementation of the NodeSocketInterfaceFloat?

I think for the sake of speed, nodes are not written in Python but in C/C++. You might have some luck asking that question over there https://blender.chat/channel/blender-coders

Nodes are implemented in C/C++, not in Python. Yes, they can be added to a menu with Python, but the node system itself would become way too slow when it would be implemented in that language.

Yeah, after searching a bit more, i managed to find the C++ implementation.
I thought that they were using just a base and then implementing other dependencies with python, but anyway, thank you!


text:
Problem with Fluid-Sim
I'm trying to create a fluid simulation with Blender, in which a flood from a lake runs done a slope. I've built the simulation based on various youtube tutorials (I'm completely new to blender), and for some reason the sim just doesn't work. I've attached the blender file. I'd be very grateful if someone could take a look!
Cheers
https://we.tl/t-oevz36KIwJ

Please add screenshots of the problem. You’re more likely to get help that way.

“Just doesn’t work. here’s the blend file“ is requiring us to open the blend file, manage to have the same system set up as you, and look for what the problem is. What if you wanted the fluid to explode like an alien, but we think that’s an error?

Hi Joe. Welcome to StackOverflow. I had a look at your file, and you made a lot of beginner mistakes. I would recommend to watch some fluid tutorials and make some "easy" fluid tests with an easy setup to gather some experience with it. I just list some mistakes you made - not all. First, the domain should include all the area where the fluid will/should be. Second, all objects which somehow relate to the fluid should have applied their scale/rotation like effectors, domain etc. Third, the object which should "collide" with the fluid should have the type "effector"....

and please next time use https://blend-exchange.com/ to share your file, so other people can learn from your question


text:
check if bone belongs to a group
how to check if a bone belongs to a group? like this:
body_armature = bpy.data.objects['myrig']
for pbone in body_armature.pose.bones:
    if pbone.bone in body_armature.pose.bone_groups['mygroup']. ????():

items and values mentioned in the docs fail with  "this type doesn't support IDProperties" :(
thanks!

Groups aren't handled as well as they might be because they don't maintain back pointers.  Here's one approach that relies on a PoseBone pointing to the BoneGroup
import bpy

body_armature = bpy.data.objects['myrig']
pose = body_armature.pose
bone = pose.bones['top']
group = body_armature.pose.bone_groups['mygroup']
if bone.bone_group == group:
    print("gotcha")
else:
    print("nope")

so your loop would be replaced by
body_armature = bpy.data.objects['myrig']
for pbone in body_armature.pose.bones:
    if pbone.bone.bone_group == body_armature.pose.bone_groups['mygroup']:
        print(f"bone {pbone.bone.name} is in mygroup})

works perfectly! thank you!


text:
How can I make googly eyes with rigid body simulation, or constraints?
I am trying to get a bounce effects for googly eyes on my character. I have 2 objects set up, one hollow "glass case" and a cylinder used as the "pupil". I set up rigid body on both, made the glass case animatable, and set it to use the mesh as opposed to convex hull. However, my "pupil" keeps flying outside of its glass case. It works when hitting play, but as soon as I move the glass case, the pupil eventually flys out of the case.
I'm not sure if there is a way to do this with constraints either, as that might be better as it would save a step in not having to bake the animation.
Here is a link to my googly eye blend file

Hi and welcome. Please use https://blend-exchange.com when uploading files.

Trying to control rigid bodies with collision-- particularly, concave collision-- is not usually a great idea.  Collision isn't all that trustworthy.  It is particularly untrustworthy when dealing with mesh collision, which is necessary for concave shapes; it is particularly untrustworthy when working with "small" objects.  You are doing both. You should be using rigid body constraints instead.
Here, I would use a generic constraint, with 0-0 angle limits, and motion away from the head limited 0,0; other axes' motion limited appropriate to the size of the eye (looks like about -0.08 to +0.08 here.)  But you should experiment with others depending on your needs.  An off center googly eye would be well served by -180 to 180 rotation in a single plane and 0,0 for all other rotation and translation limits.
Note that you have another problem in the file: you have unapplied scale.  Rigid body physics do not work right when operating on objects with unapplied scale.  Delete your keyframes and apply scale.

 Doh! You're right, I forgot to apply the scale. As soon as I did that, things got a lot less wonky. However I would still like to try it using the rigid body constraint as you mentioned. I've never used the rigid body constraint, only rigid body. I tried to set it up and follow what you said to the best of my abilities, but I'm unsure what object needs it, or both, or what object to select since it is able to select two objects. I've attached what I have so far.

@StevenDiLeo I'm sure that once you do your research, you'll get it; otherwise, you can ask a question here about how to use rigid body constraints, hopefully focused on whatever step you're getting stuck on.


text:
How do I add collision for armature?
I have a hair mesh with an armature attached, and am using a plugin called wiggle bones to simulate the physics for moving the hair. However, the problem is the hair goes through my character mesh. I've tried adding collision to the hair mesh, but the the hair still goes through the head of the character.

so I guess you need to give Cloth or Soft Body to your hair rather than Collision, and give Collision to the head?

I forgot to mention my hair is low poly, and it would also be great if I could stick with using a bones system, so in the future my models will be compatible with game engines.
I tried adding soft body as a test, and the hair was much more deformed compared to my nice smooth hair I created once the physics started playing through. Also the calculation times for softbody is pretty insane compared to using something like wiggle bones for realtime playback.

a trick is to give physics to a plane or a cage (a cube that is a bit subdivided), give the cloth simulation to this plane or cage, use it as the object of a Surface or Mesh Deform modifier that you give to your hair mesh, this way Blender need to calculate the physics for a rather simple object, not a lot of vertices

That is a good trick, i'll have to play with that idea. Thanks!


text:
Eyeball weight paint/armature issue
I have some bones I made for my eyes, used automatic weights, and it worked great until I joined it with my main armature. Now when I move my eyes, the mesh deforms in odd ways. I checked the weight paint, and the bones that are controlling each eye still shows the eyeball completely red, so it doesn't seem as if the weight paint got messed up.
Here are my eyes, with a few controllers

I have the right eye bone selected here, as you can see the weight paint is fully on the mesh

Here I rotated both eyes to the right, you can see the right eyes mesh is deforming, and the left eye is scaling down, and scaling along the x axis making it flat

There might be double transformations, perhaps, possibly from having an extra armature modifier. We won't be able to troubleshoot this without your file, which you can share here. https://blend-exchange.com/

Is the armature deform modifier set to “bone envelopes” instead of “vertex groups”? Do the eyes have any other vertex groups on them that another bone could be affecting?

I ended up finding out about preserve volume button, which fixed the left eye from scaling, however the right eye was still deforming. I did notice when I went into edit mode on the right eye, that it was only partially selected, so perhaps it was only affecting certain parts (even though the weight paint showed all red).
there was no extra armature modifier, and it was set to vertex groups as it should be. So i'm not sure why this problem was happening. I ended up just copying my left eye over and its working find. Very odd! Next time try constraints since that was a huge pain.


text:
How can I reorder bones and keep the same hierarchy?

I am needing to match one of my armatures to another one, but the placement of bones are not in the correct order (even though they are both parented to the same item, it does not matter in my case). I have tried re-parenting objects to a temporary bone, then re-parenting to the head bone, but they seem to remember where they were before.
I've done a bit of searching and it seems this may be a limitation of the outliner, but I thought I'd try asking here just in case something has changed.

I found out the error I was getting in unreal on importing my models wasn't due to incorrect bone index. I was getting my bones renamed on import in unreal because I had meshes that had the same name as the bones. Whoops!


text:
How to give duplicated model/rig different textures than the original?
Let me start by saying I know very little about Blender; I am an artist using Blender to photograph references for myself. I recently purchased a rigged dog model and I've had no issues learning posing, lighting, rendering, coloring textures and such through tutorials on YouTube but I am having trouble figuring out how to duplicate the model without having it share the same textures as the original. I am trying to color the second dog black and have the first dog remain white to represent two different characters in the scene.
I duplicated the collection and was able to pose the second model independently from the other and render them in the same scene, but I can't figure out how to give it separate textures to save my life.

In the material slots there is a number displaying the users of that material (in your scene probably it's 2).
If you click on that number the material is duplicated, and it can be independently edited.

Exactly what I needed, thank you!


text:
How do I maintain consistent rail track thickness across this bending curve?
I'm making a animation where a cart on a rail track is going downwards a mine. I made a curve outside geometry nodes and then started to procedurally generate things on it. The trouble is that at some places, the distance between the rail tracks reduces and thus the wheels of the cart appear to be flying and not following the cart. Further, The tracks are placed on U shaped supports that twist weirdly in between the curve. Please check the screengrabs I've attached. I am also adding the .blend in the post.

This is the overall shape of the curve and the track that follows.

This is how the track begins, this is the intended distance between tracks.

Somewhere along the way, distance between the tracks drops down and thus a cart passing this would appear floating and not "on track". The distance between the tracks increases again further along the curve.

The element that's looking out of place in this image is one of the supports I placed under the tracks, now coming apart in between at one place, it aligns again later on in the curve.

Nodes that make up the tracks and the supports. This is a part of the node tree.
What am i missing ? I'm trying to generate this entire thing procedurally on one curve. Would love some help and guidance.

Curve to Mesh can use a profile curve that has multiple distinct offset curves within it. If you have a single curve in the center of your tracks, and then use a profile curve with two circles separated across the origin, you’ll get a pair of rails/tubes consistently equidistant.

Got it. that seems to be working as of now. Thank you

The Curve to Mesh node (or curve Bevel Object) can take a profile curve with multiple separated parts. If you have a single curve in the center of your tracks, and then use a profile curve with two shapes separated across the origin, you'll get a pair of rails consistently equidistant.

However, I can't figure out how to change the material for the left rail and right rail independently. If this is important, you can use two separated profiles, offset from the origin:

Thanks a lot. As per your earlier comment I have found success in your method. Only change is that i made the profile curve inside geonodes itself. And its working perfectly. Thanks again


text:
Can a vertex group be excluded from the effects of a modifier?
I am primarily looking at the Subdivision modifier for this. The hope is to streamline a workflow by merging a few meshes before applying their modifiers. This would avoid the need for merging them after the modifier is applied. And that merge step needs to be remembered and repeated every single time the pre-modified (unsubdivided) mesh needs an edit.
It could save a lot of time in the long run to simply merge them now, and have a portion of the mesh be specifically excluded from subdividing.

In general, most modifiers can be modulated by a vertex group, and for most modifiers, that vertex group can be inverted:

Here, I've specified a vertex group in my modifier, and then I've clicked the button to the right of that group's name in my modifier, telling Blender that I want it to be read inverted-- excluding the effects of the Displace modifier from vertex group "Group".
A subdivision modifier cannot be given a vertex group.  Part of the reason for that is that it's ambiguous: should we create a new vertex between one vertex that should be subdivided and one that shouldn't?  Part of it is because we would create unattractive ngons by only subdividing some parts of a mesh.
However, when you're talking about joining various bits into a single object, you're probably talking about multiple, discontinuous meshes.  We can use a fairly simple geometry nodes modifier to subdivide some of these meshes but not others:

Here, the two monkeys are joined into a single object, but one is assigned to Group and one isn't.  The GN modifier subdivides only the mesh that is not assigned to Group, by separating the geometry by vertex group, doing some operations, and then rejoining.
However, this would not work well for marking parts of the same, continuous mesh for different levels of subdivision:

The simple technique demonstrated loses connecting faces; if we were to find a way around that, we'd need to find a way to reconnect the vertices to prevent gaps and to preserve continuous normals.  It is possible to patch a subdivided mesh to an un-subdivided mesh, by transferring position to C-C subdivided patch edges from simply subdivided patch edges, and then copying normals from a base; it's possible, with GN, to do all of that inside of a single object.  But I'm not sure if that is necessary for what you want to achieve, and don't want to go off on what would be a lengthy tangent if it's not.

There's no vertex group in the Subdivision Surface modifier, but there's the Edge Crease tool (mesh on the left): CtrlE > Edge Crease and the crease value is available in the N panel > Item > Transform > Edges Data > Mean Crease. But the best would be to sharpen your edges with support edges, here on the right the edges are bevelled (CtrlB):

I still wish we had 3DS's Editable Mesh, though...

does it allow to subdivide the vertex groups only?


text:
Changing non-combination keys like 'S' and ' G'
Found the solution while writing the question, but decided still to post for others that might be as stupid as I am. Solution at bottom of post.
I'm planning on moving to a different keyboard layout like Dvorak, Colemak or Workman on a split keyboard. Many normal keys like 'S' for Scale and 'G' for Grab are likely to be placed on the right hand side, but my right hand is using the mouse.
Is there any way to assign new keys to those functions? The keymap tab in preferences doesn't seem to show anything for grab or scale.
And solutions to this question seem very janky. If I put in some text object I don't want to be typing in Qwerty suddenly for example. I just want to remap the simple functions.
Edit:
Apparently it's S for 'Sresize' and G for 'Gmove'... and these functions are actually just right there in the keymap tab in preferences. The solution to the problem was that there actually is no problem except a lack of braincells on my part.

S for Scale and G for Grab actually, hence the letters used!

@JohnEason except the commands are S for Resize and G for Move.  If you look for scale or grab in the keymap you won't find those commands associated with those keys.  scale and grab are just useful mnemonics.

@MartyFouts True, but that's how folks usually remember them.


text:
Grease Pencil object opacity as one image, not individual layers
Currently when I turn down the opacity of my grease pencil object with the opacity modifier, places where strokes overlap become darker. I want the object's opacity to behave more like a single image. Any ways I can accomplish this?

I think it's a blender limitation, but it might be worth filling a bug report? I mean, the default behaviour should definitely be what you're expecting here

merge all grease pencil layers

In the "visual effect properties" tab, choose the "colorize" effect, put it on transparency mode. This will give the desired effect.

didn't even know there was a minimum length. Was in a bit of a hurry. It should be better now.


text:
API: Time complexity of modifers.find()
Suppose it has many of modifiers in a single object,
given that a modifier in that object, I want to find out the index:
def ret_ind(mds, md):
    return mds.find(md.name)

If I am sure that modifier is 100% in the object modifiers, is there a faster way to get that modifier index?

if you know the modifier is in the list, and you have a pointer to the modifier, why do you want the index?  It might matter to an answer.  Anyway, since modifiers is bpy_prop_collection type, I don't think there's any other way to get the index than find.

because I want the index to calculate something in the addon. The index sometime changed by the user.

Unless you have thousands of modifiers on your object or you run this code thousands of times per second, this shouldn't be noticeable in the slightest. Did you happen to notice poor performance on this particular piece of code ?

For a definitive answer, I went to the source code.  bpy_prop_collection, as the documentation indicates is not an actual Python class.  Rather, I suspect for performance reasons, it is implements in bpy_rna.c.
You can start to track down the code that computes the index at line 2374.  This is provided in the form of a macro definition. It uses RNA_property_collection_length; defined at line 3914 of rna_acces.c.
You can take these things from this code evaluation:

This is the only way of determining the index.
It has $O(n)$ time complexity.  Given the data structures used, there isn't a faster approach.
It's optimized C code.

So the answer to your question is that no there isn't a faster way.


text:
What's the use of bpy.ops.ed.flush_edits()
There has a function in blender api:
bpy.ops.ed.flush_edits()

Here is the description of the document:   https://docs.blender.org/api/current/bpy.ops.ed.html
Flush edit data from active editing modes
So, what does it mean?

I can't seem to find any reference to bpy.ops.ed anywhere in the Python code in the github mirror.

@MartyFouts https://github.com/blender/blender/blob/master/source/blender/editors/util/ed_util.c#L237-L284 no idea what it's actually doing though :) also there are a few references to the operation there https://github.com/blender/blender/blob/master/source/blender/bmesh/intern/bmesh_mesh_convert.cc#L593-L606

@Gorgious interesting. Did you find the Python code that invokes it? I’ll try to figure it out when I am back on a keyboard.

@Gorgious I've gone over that code, including looking at T84920 and I'm pretty sure you don't want to know what it's actually doing.

@MartyFouts hehe thanks for the archeology trip ;)

It seems, from looking at the C source code that Gorgious discovered and some bug reports related to the source code such as T84920 that this family of functions isn't really meant to be used from Python.  Certainly most of the functions don't have actual Python APIs.
Very roughly, edits are multiple step operations internally and the editors maintain state that they use during the multiple steps.  The flush operation transfers the internal state to the actual state of the edited object.
Without actually asking the developers on Chat, I don't think we'll get a better understanding than this.


text:
operator error when open a new file
The operator work correctly when I call it. But report error when I open a new file.
bl_info = {
"name" : "Test",
"author" : "Public",
"version" : (1, 0),
"blender" : (2, 90, 0),
"location" : "View3d > Tool",
"category" : "3D View",
}

import bpy, blf

class Test_operator(bpy.types.Operator):
    bl_idname = "object.test_operator"
    bl_label = "test"

    @staticmethod
    def draw_callback_px(self, context):
        blf.size(1, 12, 72)
        blf.position(1, 50, 50, 0)
        blf.draw(1, self.s)

    def modal(self, context, event):
        "some code..."
        return {'PASS_THROUGH'}

    def invoke(self, context, event):
        self.s = "hello world"

        args = (self, context)
        self._handle = bpy.types.SpaceView3D.draw_handler_add(
            Test_operator.draw_callback_px, args, 'WINDOW', 'POST_PIXEL'
        )
        context.window_manager.modal_handler_add(self)
        return {'RUNNING_MODAL'}

def register():
    bpy.utils.register_class(Test_operator)
def unregister():
    bpy.utils.unregister_class(Test_operator)

Traceback (most recent call last):
File "C:\Users\user\AppData\Roaming\Blender Foundation\Blender\2.90\scripts\addons\testcallback.py", line 20, in draw_callback_px
blf.draw(1, self.s)
File "C:\Program Files\Blender Foundation\Blender 2.90\2.90\scripts\modules\bpy_types.py", line 717, in getattribute
properties = StructRNA.path_resolve(self, "properties")
ReferenceError: StructRNA of type Test_operator has been removed
How can I fix it? Thank you very much.

Operator is invalid, callback isn't removed
At issue here is the draw callback belonging to the space is persistent when another file is opened, whereas a modal operator is not.  The solution below removes the draw callback if the operator becomes invalid.
Asked
Removing space draw callbacks after losing the handle?
with relation to having issues like in question. If the handle is attached to the operator and the operator is "lost" there is no way to remove the draw callback.  Well no one has answered how to .
If you were to put in the line
print(repr(self))

into your draw call back method,
All going well, and run from text editor (main thread)
<class '__main__.Test_operator'>

if the operator is removed will see
<bpy_struct, Test_operator invalid>

Once this is the case error shown in question will begin. Without going into great details the "rna" is  how blender objects store their properties under the hood.  When the instance of the blender operator is no longer required its rna is trashed.
Using repr avoids using a try catch clause. Would be keen to find out if there is a nicer way to check for this.
As a workaround to resolve issue of lost handle, when using operator as an argument, and owner of properties to draw, could set up a class variable list of operators and handles. When
repr(op).endswith("invalid>")

is true,  remove its callback via handle, remove from handles... and avoid the error message.
Test script.  Have made a class method to check the validity, and validate  the list.
import bpy, blf

class Test_operator(bpy.types.Operator):
    bl_idname = "object.test_operator"
    bl_label = "test"
    handles = []

    @classmethod
    def validate(cls):
        invalids = [(op, handle) for op, handle in cls.handles if  repr(op).endswith("invalid>")]
        valid = not(invalids)

        while invalids:
            op, handle = invalids.pop()
            bpy.types.SpaceView3D.draw_handler_remove(handle, 'WINDOW')
            cls.handles.remove((op, handle))
        return valid

    @staticmethod
    def draw_callback_px(self, context):
        font_id = 0  # XXX, need to find out how best to get this.

        # check handles
        if not Test_operator.validate():
            return

        blf.position(font_id, 15, 30, 0)
        blf.size(font_id, 50, 72)
        blf.draw(font_id, self.s)

    def modal(self, context, event):
        "some code..."
        return {'PASS_THROUGH'}

    def invoke(self, context, event):
        self.s = "hello"

        args = (self, context)
        self.handles.append((self,  bpy.types.SpaceView3D.draw_handler_add(
            Test_operator.draw_callback_px, args, 'WINDOW', 'POST_PIXEL'
        )))
        context.window_manager.modal_handler_add(self)
        return {'RUNNING_MODAL'}

def register():
    bpy.utils.register_class(Test_operator)
def unregister():
    bpy.utils.unregister_class(Test_operator)

if __name__ == "__main__":
    register()

Window Manager
IMO would instead make a drawing class, similarly to link atop answer, or as a mixin class or as a wrapper for the callback.
Adding further to How do you remove a draw handler after it's been added? can leverage the window manager to keep a context reference to the draw handler classes.
Here is a quick cobble together by I think you can see where this is going.  Can communicate with the draw callback via context from your operator when it is run again.
import bpy
from bpy.types import PropertyGroup
from bpy.props import PointerProperty
import blf

class DrawingClass:
    def __init__(self, context, prop):
        self.prop = prop
        self.handle = bpy.types.SpaceView3D.draw_handler_add(
                   self.draw_text_callback,(context,),
                   'WINDOW', 'POST_PIXEL')

    def draw_text_callback(self, context):
        font_id = 0  # XXX, need to find out how best to get this.

        # draw some text
        blf.position(font_id, 15, 50, 0)
        blf.size(font_id, 20, 72)
        blf.draw(font_id, "%s %s" % (context.scene.name, self.prop))

    def remove_handle(self):
         bpy.types.SpaceView3D.draw_handler_remove(self.handle, 'WINDOW')

class DrawCallBacks(PropertyGroup):
    _dc = []
    def add(self, cb):
        self._dc.append(cb)

def register():
    bpy.utils.register_class(DrawCallBacks)
    bpy.types.WindowManager.callbacks = PointerProperty(type=DrawCallBacks)

if __name__ == "__main__":
    register()

    # test
    wm = bpy.context.window_manager
    wm.callbacks.add(DrawingClass(bpy.context, "FoogleDoodle"))

Can open a new file go to console
>>> C.window_manager.callbacks._dc
[<__main__.DrawingClass object at 0x7fed5b609a30>]

>>> for cb in C.window_manager.callbacks._dc:
...     cb.prop
...     cb.prop = "MumbleGrunt"
...
'FoogleDoodle'

and the callback prints "MumbleGrunt" to screen.


text:
Reallocates a dead pointer Object
Consider the following situation:
Suppose you store the Cube in a global variable and prints the object's position every 2 seconds. Assume you never delete the object.
import bpy

ob = [bpy.data.objects["Cube"]]

def in_2_seconds():
    print(ob[0].location)
    return 2.0

bpy.app.timers.register(in_2_seconds)

Scripts will not work when you perform undo/redo operations in the UI.
Traceback (most recent call last):
  File "\Text", line 6, in in_2_seconds
ReferenceError: StructRNA of type Object has been removed

The simple fix should be:
import bpy

ob = [bpy.data.objects["Cube"]]
name = [ob[0].name]

def in_2_seconds():
    try: ob[0].name
    except:
        print("---- Object is Dead ----")
        ob[0] = bpy.data.objects[name[0]]
        name[0] = ob[0].name

    print(ob[0].location)
    return 2.0

bpy.app.timers.register(in_2_seconds)

But it's not always correct, like when you rename the Cube then undo once and redo once.
Then what is the correct way to fix that?

I don't have 4.1 installed so I can't test atm but it includes bpy.types.ID.session_uid which should do what you're looking for. https://docs.blender.org/api/current/bpy.types.ID.html#bpy.types.ID.session_uid it should remain the same so long as you don't reload the file

Use bpy.types.PointerProperty assigned to bpy.types.Scene.
bpy.props.PointerProperty(type = bpy.types.ID)
Can use any ID, not affected by renaming and it is safe for Undo/Redo.
For many objects you can use bpy.props.CollectionProperty that as type uses a sub-class of bpy.types.PropertyGroup that contains the pointer property.
import bpy

if not hasattr(bpy.types.Scene, 'my_objects'):

    class Object_Pointer(bpy.types.PropertyGroup):
        target: bpy.props.PointerProperty(type = bpy.types.ID)

    bpy.utils.register_class(Object_Pointer)

    bpy.types.Scene.my_objects = bpy.props.CollectionProperty(type=Object_Pointer)

if not hasattr(bpy.types.WindowManager, 'my_data'):
    bpy.types.WindowManager.my_data = {}

bpy.context.scene.my_objects.clear()

for object in bpy.data.objects:
    item = bpy.context.scene.my_objects.add()
    item.target = object

def in_2_seconds():

    print("Count:", len(bpy.context.scene.my_objects))

    for index, item in enumerate(bpy.context.scene.my_objects):
        object = item.target
        if object:
            print(index, object.name_full, object.location)
        else:
            print(index, "Looks like the object has been deleted.")

    return 2.0

wm = bpy.data.window_managers[0]

prev_func = wm.my_data.get('prev_func')
if prev_func and bpy.app.timers.is_registered(prev_func):
    bpy.app.timers.unregister(prev_func)

bpy.app.timers.register(in_2_seconds, persistent = True)

wm.my_data['prev_func'] = in_2_seconds

Nice solution. In my case, the number of objects I want to store is uncertain, please tell me if there is a way to modify the quantity dynamically.

@XY I has updated the answer with info on bpy.props.CollectionProperty.  Not sure if the answer updating notifies the OP. Does it?

Thanks, this should solve my problem.

Not yet understanding what a bpy.props.PointerProperty is and how to use it, I'm not seeing the connection between this answer and the question.  Perhaps you could show the explicit solution you're thinking of, i.e. the original 6 line script rewritten using bpy.types.PointerProperty to avoid the error?

@DonHatch I have added an example.


text:
Scripting about properties panel
When my mouse in properties panel, How can I create a shortcut such that when I press 'FIVE' then toggle to modifier panel.
Blender Ver: 2.91

Please in future use text to paste script

bpy.ops.wm.context_set_enum(...)
Setting a value from a context path for a shortcut use one of the bpy.ops.wm.context_set... operators
>>> bpy.ops.wm.context_set_
                           boolean(
                           enum(
                           float(
                           id(
                           int(
                           string(
                           value(

This one is an enum property (string would work too)
>>> bpy.ops.wm.context_set_enum(
context_set_enum()
bpy.ops.wm.context_set_enum(data_path="", value="")
Set a context value

For the equivalent to
bpy.context.space_data.context = 'MODIFIERS'

using an operator will be,
bpy.ops.wm.context_set_enum(
        datapath="space_data.context",
        value='MODIFIERS',
        )

cannot test this in python console because it is not in the correct properties space context, instead add it manually to test, Edit > Preferences > Keymaps > Properties Edit

...Ok numpad 5 now switches to modifiers tab.
To set up shortcut using python see
Create keyboard shortcut for an operator using python?*

Thank you very much, I click those "small" icons lot of times every day, realy need this solution.


text:
Copy a texture from BlendDataTextures via Python
How to copy a texture from bpy.data.textures
# Assuming it has a texture in bpy.data.textures

textures = bpy.data.textures
new_texture = textures[0].copy()
name = textures.new("", new_texture.type).name
textures[name] = new_texture

and it raise error
TypeError: bpy_prop_collection[key]: invalid key, must be a string or an int, not str

Is there a way to duplicate that texture, or need to set all the attributes to the new texture?

The line textures[0].copy() already creates a duplicate and pushes it into bpy.data.textures

Thank you, I got it, Turns out I didn't find it added

The line textures[0].copy() already creates a duplicate and pushes it into bpy.data.textures
textures = bpy.data.textures
t = textures[0].copy()
t.name = "new-texture-duplicate" # if you want to rename it
print(t.name)


text:
Trying to reduce edge count in Edit Mode
Someone gave me an fbx model with too many edges throughout it and I'm looking to reduce that quantity without destroying the overall mesh.
If I delete edges individually the faces delete as well. And even if that didn't happen, it would easily turn into a multi-hour job before I was even halfway.
I know in Autodesk Maya (2014 version) there was a feature that could reduce/increase the amount of mesh with the click of a button. Might have even been a shortcut.
Everyone says to use the Decimate Modifier but this has no effect on the mesh in Edit Mode.
Does this feature exist in Blender? Is it because of the fbx file type? Is the Decimate just not working?
What's wrong here?

Try X > Limited Dissolve, adjusting the threshold angle.

The effects of the Decimate Modifier cannot be seen in edit mode. I recommend viewing it through Object Mode > Wireframe Preview, so you can see how it's editing the geometry. You will also not see any changes until you adjust the value(s) in any of the respective categories (Collapse/Un-Subdivide/Planar).


text:
Delete vertices, keep faces
I'm trying to delete vertices of which are sitting in the center of a line, but when I delete them the 2 faces it touches deletes with it. I want to keep those faces. What do I do?

Note that faces are 'defined' with the help of vertices, and not vice-versa

Also, please add more details, and pictures too if possible

Have you tried dissolving instead of deleting (X > Dissolve Vertices)?

When you delete a vertex, the face sticking to it also be deleted. The only way is to delete the vertex and create back the face.

Select the loop or edges you want to delete with 'alt left mouse', hit the 'x' key on your keyboard-which should bring up the Delete Menu options, then select 'edge loop' (or whichever option you would like to delete).


text:
OSL trace(): Strange result in visibiliy analysis
I would like to create a osl shader that could show the visibility of the cube surface from the cursor pos (0,0,0). So I used the trace() function like this:
shader Visibility(
    point target = (0.0, 0.0, 0.0),
    output int Hit = 0,
    output float dist=0,
    )
{
    vector rayDir = target - P;
    float hit_dist = 0;
    float points_dist = distance(P, target);
    int ishit = trace(P,rayDir, "maxdist",points_dist);
    Hit = ishit;
}

but the result is very strange. What should I do?

You're firing a ray from P, the shading point, to your defined viewpoint, and you're checking for occlusion: whether anything is hit within the distance from P to the viewpoint, relying on "maxdist".
There's a possibility of floating-point error, here, if your viewpoint is close to a surface, or the ray hits P on the way out; but I've tried fixing that with "mindist", to no effect, which is a bit mysterious.
I do think, though, it might be more positive to fire from the viewpoint to P, where you know there is something to be hit, and check whether anything else has been hit on the way...
shader Is_Visible(
           point Viewpoint = (0),
    output int   IsVisible = 0
)

{
    point hitpoint = (0);
    vector vp_to_P = (P - Viewpoint);
    trace (Viewpoint,vp_to_P);
    getmessage ("trace","P",hitpoint);
    IsVisible = (distance (hitpoint, P) < 0.00001);
}

which seems to work...

.. even then I feel an urge to wrap everything in an if hit {}


text:
Can Blender 2.9+ mimic the Blender 2.8 Outliner functionality to enter Edit Mode on any object in a single click?
In 2.83 it was just a single left click on the mesh like this, even coming from Pose Mode:

Since 2.83 LTS is going out of support, I want to upgrade to 2.93 LTS or higher. But not if it means working slower. And it looks like all versions from 2.9+ lost this functionality. I would be willing to install any addons that could help, thanks for any tips!

You can still switch between objects in Edit Mode as shown below. But it looks like it's not possible to switch from Edit Mode or Pose Mode of non-mesh obejcts. It seems that the fastest way to switch from Pose Mode is to press Ctrl+tab which switches Armature back to Object Mode. Then you can select the a mesh-based object and press tab to enter Edit Mode again. So unfortunately a bit more manual.

Is there any fast way to switch from Pose Mode on an Armature to Edit Mode on a mesh any more? In 2.9+ it seems way slower, needing to manually switch to Object Mode, then select the other object in Object Mode, then tab into Edit Mode, and switching back to Pose Mode is even worse because you can't just tab into Pose Mode. And that needs to be repeated, every single time you are moving from posing to editing?

Unfortunately as far as I know there seems to be none except for doing Ctrl+tab to switch back to object mode of armature then click on mesh object and press tab :(


text:
Is there a modifier that can dissolve edge loops?
I'm willing to use add-ons if any exist. It's very important to maintain a fully quad mesh, so dissolving edge loops to decimate is the cleanest way to finalize the asset. A modifier that can do this would really help with this workflow, simply targeting edge loops in areas where polygons are more dense, or else at points where the average angles between each edge loop are small enough using a slider similar to planar decimation.

In the Decimate modifier there is an Un-Subdivide function.

note that the Un-Subdivide function only supports grid topology (T65748). If there are 3-star or 5-star poles, the result will have defects.

Un-subdivide just completely affects a mesh, this is not an answer. Un-subdivide is not the same as targeting and dissolving edge loops at low angles, which is a method that results in an asset that is lower poly but often indistinguishable from the original.

Hi :). Since you mentioned 'dissolving loops at low angles' may i suggest the Decimate modifier :))

You can sort-of do that with the weld modifier.
It acts as the "merge by distance" operator : it will merge vertices within a specified distance. And the modifier allows you to use vertex groups to target specific parts of your mesh.


text:
I rendered my animation, but I can only save the last frame as a png
This is my second blender creation, and I tried animating it which went well. I clicked "Render animation" without changing any render settings, and then spent the next 10 hours rendering this 90 frame animation. I now cannot find any other frames as images, and can only save the last frame as a file. Please help me figure out what to do, as I don't really feel like spending another day rendering.

Which directory have you set as output path in the Output Properties? If you didn't tell Blender a specific path, the images are usually saved in C:\tmp but beware: by default, the Overwrite option is enabled. So always rendering in the tmp folder will only keep the last rendered images.

It might be helpful to people trying to help you if you uploaded an example blend file to the site https://blend-exchange.giantcowfilms.com/ and add that link in the question.  Could be a simple render setting.

Ah, I didn't know it saved anywhere Thanks for the solve!

@RickT Uploading an example blend file to see the output path is a waste of disk space.


text:
Noise Texture becoming way detailed - Blender Guru donut tutorial
I've started following the blender donut tutorial and have hit a snag. I'm onto the texturing part of the tutorial (part 7) and I've noticed that my noise texture is becoming really really detailed.
As you can see in this picture, his donut with the noise texture looks normal and regular, but when I do the exact same thing (see next image)

Mine ends up looking like white noise and has no texture what so ever. If there are any details I need to include please let me know, as this is my first time on this form. Thank you for any help.

The scale of your donut is probably too small or too large, so you need to adjust the scale value of the noise texture accordingly.  Try setting the scale up or down a fair bit.  I didn't post this as an answer as I am somewhat guessing and haven't explained why or other ways to fix it and all that, but give it a go and see if it helps.

... related.. try Ctrl-A, > Apply Scale


text:
Extrude from PNG or SVG?
I'm very new to this.
I need to create objects which seem to have solidity from imported images.
I'm cutting out in Photoshop some original artwork and from these I'm trying to make them seem 'thick'.
I though that exporting as PNG and importing would work but extruding just creates another plane with air in-between. What I want is that the edge of the extruded object keeps the colours of the front/back. I tried doing a convert to mesh, same result.
I think that I can create a 'solid' edge by making an SVG in photoshop from a path and extruding that, then sandwiching the front, middle and back together but I'm sure there's an easy way to do it. any guidance is very much appreciated!

https://blender.stackexchange.com/questions/84129/is-there-a-way-to-add-fake-thickness-to-an-alpha-image-texture  https://blender.stackexchange.com/questions/40997/how-can-i-make-a-hexagonal-grill/ https://blender.stackexchange.com/questions/1609/tracing-a-monochrome-image-into-a-3d-extruded-object-with-a-script/1610#1610

https://blender.stackexchange.com/questions/183131/how-to-model-an-object-with-width-and-depth-based-only-on-an-image-that-shows-t


text:
model disappears in object mode

I have applied modifiers and my hat vanished in object mode. how can i get it back?

select the cylinder in the outliner and press NumPad . dot key

nothing happened its till the same...

what modifier did u apply? just undo so it will reverse the modifier u applied.

Subsurface division... every time i apply this modifier there is issue.... now i see i went to sculpt tab and the hat isn't there.. but it is visible in texture tab...

I got it... accidentally unchecked the tv icon by subsurface modifier and everything is fine....

Anyways thanks aloot....


text:
How do I get my simple model to open correctly in Adobe Dimension
I'm trying to get a model I've made into Adobe dimension. I've exported all different options, the closest to blender is exported as an obj. However, there's one part that is causing me grief. I've used a boolean in Blender and applied it to the model (so it's destructive) but it's filling in the hole in Dimension. When I look at it closer in blender, the model has two pieces which I've tried to join with no success. I'm sure this must be a easy fix for someone who knows what they are doing (unlike me). Thanks in advance.

Try adding supporting geometry, vertices in the centers of the faces, so that a line between a corner to any other point to fill in a face wouldn't go outside the bounds of that face.

Looks like n-gons are supported differently in the other software. Try to limit yourself to quads and triangles when possible


text:
Composited PNG Image disapers in render
I am trying to composit some clouds into my render using the depth pass.
It works fine and looks good to me in the compositor but when I save the image as PNG with alpha, the clouds that are not overlaping the original rendered object are gone.
I attached a few screenshots. Can anyone help me bring back the clouds?
Thank you and have a good day,
Fabian
Compositor

How it should look (jpg without alpha)

How it looks

They really aren't there ;-)

Can you share your blend with packed images? Or just a part with issue still visible. Usually it is behaviour of emissive materials (pixels with value over 1) on top of transparency, but it doesn't seems to be a case. Try to save as OpenEXR 32-bit to see what happens. What Blender version you use?

@vklidu        Hello, thanks for your comment. Sadly the original file is to large but I created a simpler (and very ugly) one to show the problem. Maybe it helps.
https://we.tl/t-Hf31tAlSlf

Instead of Mix node use Alpha Over node ...

Note: For proper mixing depth is designed Z Combine node, but it requires also cloud image to be rendered with Depth pass and saved as OpenEXR Multilayer.

Thank you very much vklidu. That does the trick. I have the feeling the colors are a litte different when i export it as PNG but I think its just the different background color.
I have never worked with OpenEXR before. This will be the next step I guess.
Have a good day! :-)

Great if it works for you ... alternatively you can mix Alpha channels (Math-Ad node) and use Set Alpha node ... https://imgur.com/xnYJDvx, but why to make things complicated :) Technically I'm not sure why alpha of cloud image is ignored, but there is a lot of issues with alpha now, so probably better not to search for troubles :)


text:
How do you do the beading on a piece of furniture
I am working on an ornate stool and I do not know how to make the beading with out adding tens of thousands of extra faces. I will try anything at the moment

to get something like this:

you have to follow these steps:

Shift-A -> Curve -> Curve Spirals

If you don't have that menu, go to your preferences and check the add-on:

change settings to:

Shift A -> Curve -> Circle and make it bigger

select your spiral -> object -> convert to mesh

add skin and subdivision modifiers

add curve modifier

material setup:

video tutorial for modeling:  https://youtu.be/Ea4T0VUUA-k

I have tried for about 2 hours but when I go to select the circle blender dose not let me use it. Thank you getting this sorted out will be a life saver.

at what step do you have problems?

i added a video tutorial link for the modeling at the end of my answer

To save geometry, this could well be a place for a bump-map. The advantages of  geometry, (or displacement-geometry at render time) over bump are roughly:

Visible profile / external contour. Not the case here: the beading is tucked in.
Parallax / occlusion.. where one bump conceals another. We don't have the viewing angle for that, here.
Shadowing. Bump simulates the light-response of the surface, but the bumps don't cast shadows. The difference here is slight:

Left: Bump only, Right: Displacement only.
To use Bump, you would have to make a height-map of your beading. You could model your beading as shown by @Chris, and shoot a tileable map, as shown, for example, here. But as I was doing that, I thought it would be good to have at least a basic 'Beading' shader node-group, to generate the heights procedurally.
The group is based on a semicircular wave:

.. where, by Pythagoras, Y = sqrt(Radius^2 - X^2). This could be done by putting a Ping Pong wave through a color-ramp, but then the rounded ends in 3D would be fiddly. (At the hemispherical ends, Height = sqrt(Radius^2 - (X^2 + Y^2)).
The group looks like this, inside:

Sorry about the tangle, squishing into screen-capture doesn't help.
Eventually, in these examples, it's used like this:

The Gradient node is just to wrap X around the outside of the cylinder's Object Space. You could UV unwrap instead.
The interface isn't silky-smooth; that would take more nodes. Radius sets the thickness of the elements, Tilt: the slope, Length and Y-Scale work against one another.. the higher the Y-Scale, the flatter the ends of the elements. Floor raises a base-level from which the elements protrude, making gaps.
Between them, the parameters can achieve a fair variety of effects .. (All these are Bump only, no Displacement):

The top example puts the output of the group through a color-ramp, for the fancy detail.


text:
Rotation in edit mode
I want to make animation of a pant folding.... from top view
I have rotated the half side of pant along y axis its good. now I want bottom half of that side to rotate along x to make it half folded in x direction but it doesn't rotate properly. what can i do?

First of all, the pivot point along which you rotate is Median. That's why it rotates around the center of the selected vertices. But even if you set a different pivot point, then simply rotating the vertices in Edit Mode will simply change the mesh, you cannot keyframe this for an animation. To animate the mesh, you have to use shape keys - but they will not rotate the vertices, just move them straight from start position to end position. I guess what you want to do or need to do is using an armature with bones or make everything separate pieces and keyframe the animations.

For something like a folding box in Blender using bones, which you can adapt for your trousers as well, there are tutorials on Youtube. This is a more recent one: Folding Box Packaging Animation in Blender

ok.... Thanks....

so in other words you have to make a (rather simple) rig to make this folding look good :) looking up a simple rigging tutorial should do.


text:
Part of model not rendered

I have made a model of hat. it has 3 parts buckle round strip and hat. hat and strip is not rendered.only buckle is rendering.. I made sure camera icon and checked. plz see to it.

I dont know... but its rendering... i also did what wiseman answered...

Did you checked the Cylinder object hierarchy? Make sure all the objects in that hierarchy are selected and have the camera Icon checked in the Outliner Section.

i think the hierarchy is ok... i have attached the blend file too.. plz have a look at it..

I looked at the file and there were some modifiers which were off for the viewport which is not thing to worry about. But the scene rendered just fine(As you are rendering in the Evee, I would suggest you to improve it by enabling AO option, use an HDRI and color management->look->medium high contrast). All the things rendering were just fine(I rendered few frames to check it), no problem at all.

u mean everything is fine and nothing needs to change? its fine?

yes Thanks.. i change it to OA... color management... and sub division unchecked for GPU.... Thanks a lot

Try disabling GPU subdivision to see if it helps:

Thanks it worked...

@user152225 This site is not a regular forum, the answer section is reserved exclusively for answering the OP question, to post comments or replies please use the comments section instead. Please don't reply "Thanks" as an answer or comment, instead upvote the post that helped you. If you feel it completely solved your issue consider marking it as accepted.


text:
After upgrading from blender 3.0 to 3.2.1 Blender wont render animation properly in eevee
After upgrading from blender 3.0 to 3.2.1 Blender wont render animation properly in eevee.
Previously it was pretty simple and straight forward to render animations for me in Blender 3.0.0 in the EEVEE engine. Now that I just installed Blender 3.2.1 I cant render a simple animation and it just cuts to the checkerboard screen with nothing ever happening. Is there something I'm missing in this new version of blender? Everything seems to be running well in the 3D viewport with no lag or anything.
me trying to render my animation

i think lossless will not work with the H.264 encoding, or at least it has always been problematic for me. try another output quality aside from lossless

@HarryMcKenzie He has chosen only "Perceptually Lossless", which isn't actually lossless. I don't know if Blender can create lossless H.264, but in general it's possible: h.264 lossless coding However, this might not be the issue, since it seems it's not the resulting video file that's not working but the rendering itself. But my problem is I can't reproduce the error with my Blender 3.2.1 - so there might be something with the hardware or some quite specific settings I cannot identify in the video.

@GordonBrinkmann thanks for your input :) i always had problems with lossless and perceptually lossless with h.264, the render output was always corrupted for me. i remember i had a thread raising this issue and they told me it was not compatible. i can't find the thread..

Actually those are the settings I use every time I render with no issues.

I actually just figured it out, there's a problem with the object I made because I used add on geometry nodes, didn't think they would be an issue but I guess so. When I tried to render a different project it was totally fine. Guess I should have done more troubleshooting before asking but I appreciate the help. Thankyou

awesome! glad you discovered the issue :)


text:
copy rotation not working properly after joining two armatures together
So I created a robot hand and I rigged the fingers with separate armatures using limit rotation and copy rotation constraints and it worked. After the fact I created the rest of the robot and started to create a single armature to control the whole robot, so I unparented the objects in my fingers and then joined those bones into the one armature. After I reparented the objects to the bones, it's no longer curling like it used to even with all the same constraints and parenting. Instead of curling this is the effect I'm getting. All the bones are seemingly properly parented so I don't know why I'm getting this. What could be the problem? should I just start the finger bones from scratch? Just to add, it seems there's also a separate problem with the thumb after I unparented the the objects they moved slightly even though I also used keep transformation and those bones wont line up even after realigning them in edit mode, the adjustment doesn't apply in object mode or pose mode like normal.

Okay I'm no expert but I guess this is some kind of bug that when you join two armatures together, constraints will no longer do the same thing as when the armatures were apart. The part in my question where the thumb bones would no longer line up even after fixing them in edit mode is probably part of the same issue of joining two armatures together. To fix this I created a new set of bones in the place the added armature bones were and added the same constraints so now when I rotate my robot finger, it actually curls again like so.  This was all done in in blender 3.3.2 LTS and hopefully will get smoothed out in future versions.


text:
Why is the bevel crossing on this edge?
Every time I try to bevel this edge on the left that was made identical to the other edge on the right, it either crosses or only bevels one side of the edge. I have recreated the edge from scratch a few times and I get the same result every time. I made sure there's no doubled vertices and I cant find any weird geometry that is causing the problem either. Just doesn't make sense that one side would work fine while the other glitches out. Project file

As you see if you display the faces orientation, you have flipped normals, so before the bevel, select all and press ShiftN:


text:
What could be causing this viewport shading issue?
How it looks:

It does appear only under certain angles:

but it also appears on darkly shaded faces.
This is in edit mode with no materials in the default solid shading mode. I am also 100% that I don't have a duplicated mesh, normals are fine and I have no modifiers.
I never noticed anything similar in previous versions. But I have also changed my computer since then, from an Intel/Nvidia setup to Amd/Amd. Could that be the issue?
Blender version: 3.0.0, branch: master, commit date: 2021-12-02 18:35, hash: f1cca3055776, type: release

it looks like overlapping faces but you say it's not the case? maybe share your file?

@moonboots this happens in all files, I can make a brand new file, plonk down a plane and enter edit mode: https://imgur.com/a/hFGqdwN

It's also a fresh install on a new computer.

Did you set 'Smooth shading' for your object?

@eezacque No, I think it's pretty clear from the images that it's not smooth shaded.

so it may be a driver problem, it seems to occur with the last drivers of AMD

@moonboots It's seems you're about right, did a bit of searching and found this which seems to indicate that the current "regular" drivers aren't quite okay for Blender.

And after installing the beta drivers for Blender 3.0 the issue is gone!


text:
What's the easiest way to merge edges in blender?
In the picture below I have 3 edges (on the left) I select the middle one and move it up so that's where I am now- the one on the right. But I'm wondering how to merge the 3 edges with the one on the top so it's just one single edge. I want it to keep the two-front cuts in it as well (basically I want it to look like the right one except the edges are actually merged and not overlapping.
Thanks in advance.

Create 2 edges on your top face:

You can move them along the face with the slide tool (GG) and snap to the bottom vertices position so that you're sure they are aligned with them:

Then merge the vertices:

is there some way to calculate the same exact distance of the cuts on the top plane so when I merge the vertices the line doesn't become diagonal?

Please see my edit, is it what you want to know?

yea that's perfect thank you very much!


text:
Why did my scuplting mesh randomly "shatter"?
This is how my mesh looks right now, it's completely "shattered" as in missing a bunch of triangles. Why did this occur and how do I fix it? I already used up all my "undos" with ctrl+z so I'm stuck with this now. I have no idea what I did to cause this, it happened earlier to another part but for some reason it randomly disappeared and fixed itself when I go into object mode and then back into scuplting mode.

Going to object mode and then back into scuplting mode fixes the problem temporarily. but it periodically comes back. Once I merge everything and remesh the problem never happens again. I still have no clue why it sometimes happen and sometimes doesn't.


text:
I am new to blender and when i change from eevee to cycles for some reason the model i am using turns black

model: https://3dwarehouse.sketchup.com/model/d52ca12e-2dda-4d58-8aa8-a8cd6665a3eb/Cajonera-ALEX-Ikea
I am new to blender so i cant add much information

While files, images, and external links may be helpful additions to questions they should not be the only way to obtain information about your issue. Don't make understanding your question rely on downloading a file or visiting an external site. Use the builtin tools to upload images or gifs, along with thoroughly explaining the problem in written form so it can be searched for and indexed thus helping future users with similar issues find it.

I downloaded the .dae version of this model and it was black for me too. If you select the models and look at the materials assigned to it, once clicked, the material preview goes black. I don't understand the technical aspects, so I don't know what's wrong with the materials themselves... But you can just delete all those materials and assign a new one to everything and your model won't be black anymore!
Here is the messy, but not black result:


text:
Unable to set Layer Selection value on Data Transfer modifier via Python
When the Source vertex group named "ALL", How to change the value of the vertex group "ALL"?

When run bpy.context.object.modifiers["Data Transfer"].layers_vgroup_select_src = 'ALL', it set the value to All Layers, not the vertex group "ALL"

I think you have to rename the vertex group name for the source object.

The vertex group name can not conflict with the "All layers" value.
"All layers" value is "ALL".
So if the vertex group is also named "ALL", that can not work.
Simply rename the vertex group for the source object differently. For instance "All" (not "ALL").


text:
Python: get driver value / calc driver expression
How to get driver value via python?

dr = bpy.data.objects["Cube"].animation_data.drivers[0]

Look at the value of the driven property.
In the example given in question, the bevel modifier width of one cube is being driven by that of another. Have set up similar, the driver value being displayed via UI is 0.2
Given  the object of interest has context, retrieve this value by simply
>>> bm = C.object.modifiers['Bevel']
>>> bm.width
0.20000000298023224

Or from the driver, similarly to above a quick visual check confirms the driver is the zeroth
>>> for i, fc in enumerate(C.object.animation_data.drivers):
...     i, fc.data_path
...
(0, 'modifiers["Bevel"].width')

>>> driver_fcurve = C.object.animation_data.drivers[0]
>>> dp = driver_fcurve.data_path
>>> dp
'modifiers["Bevel"].width'

And hence the value,
>>> C.object.path_resolve(dp)
0.20000000298023224

If the value resolves to an iterable will require using the array_index of the driver [Look for link.]
Consider investigating custom properties as input data to drive from.  For set up like above all drivers will break if the driver variable target object with the modifier is removed.
A custom property on the scene can be used as a global and on the object as a local (the use_self option is handy for this)

Note that this solution will work on render only if the user did not locked his interface


text:
Catch Warning message of operator
When the bind button is clicked, it will display some message in the UI

I'm trying to store a message as a global variable while handling that operation through the API.
import bpy

cube = bpy.context.object
bpy.ops.object.vertex_group_add()
cube.modifiers.new("", "LAPLACIANDEFORM")
md = cube.modifiers.active
md.vertex_group = "Group"

s = ""
try:
    with bpy.context.temp_override(object=cube):
        bpy.ops.object.laplaciandeform_bind(modifier=cube.modifiers.active.name)
except Warning as ex:
    print("success, store the message")
    s = str(ex)

It failed.
It shows up on the console but didn't catch it.

You cannot catch C/C++ warnings with Python if they have not been properly propagated.
These are just text written to stderr. Python is not aware of them.
MOD_laplaciandeform.cc#L687 ->
modifier.cc#L425 ->
CLG_log.h#L194 ->
CLG_log.h#L157 ->
clog.c#L530
You can check for bpy.types.LaplacianDeformModifier.is_bind right after.
The error message is written to the modifier's C data but is not exposed to Python API.
https://devtalk.blender.org/t/displaying-modifiers-warnings-in-a-custom-ui-layout/8843/2


text:
How to lock the always on top subinterface when run a operator

Open a always on top subinterface

Run a operator modal

import bpy

class MyOps(bpy.types.Operator):
    bl_idname = "object.my_ops"
    bl_label = "object my ops"
    bl_options = {'REGISTER', 'BLOCKING'}

    def modal(self, context, event):
        if event.type == "ESC":
            return {"CANCELLED"}
        if event.value == "PRESS":
            print("modal is running... ESC to cancel")
        # some jobs..
        return {'RUNNING_MODAL'}

    def execute(self, context):
        context.window_manager.modal_handler_add(self)
        return {'RUNNING_MODAL'}

def register():
    bpy.utils.register_class(MyOps)

def unregister():
    bpy.utils.unregister_class(MyOps)

if __name__ == "__main__":
    register()

when the operator run, the main window and the top window will lock since BLOCKING in bl_options. It works fine but when you deactivate the window (click on the desktop), the user can control the on top window again. If the user can control the top window and modify the blend data while the operator is running, it will result bugs, so how to lock all on top subinterface while the operator is running?

Do you want the modal to continue running if the user clicks outside the window? Like is it okay if you just cancel the modal if the user clicks outside the main window? Or do you want to keep it running and maintain the blocked state?

There are other ways to deactivate the window except "click", I need the modal keep running.

You can tell if they've clicked out of the window on the desktop cause the modal sends a "WINDOW_DEACTIVATE" event. So you could maybe store a boolean to check if they've clicked out by checking for that event, and then any "LEFT_MOUSE" events after that you can check to see if the window was ever deactivated with that bool and process those following events differently? It seems like a weird edge case.

Internal bug confirmed, temporary solution for blender 4.2:
The idea is when you start your modal, run a empty modal to all subwindow.
And remove them when finished.
import bpy, weakref

class Empty(Operator):
    __slots__ = '__weakref__'

    bl_idname = "wm.empty"
    bl_label = "Empty modal for blocking"
    bl_options = {"INTERNAL"}

    fin_request = False
    modals = weakref.WeakValueDictionary() # items will automatically remove when modal finished

    def execute(self, context):
        context.window_manager.modal_handler_add(self)
        Empty.modals[context.window] = self
        return {'RUNNING_MODAL'}

    def modal(self, context, event):
        if Empty.fin_request is True:
            return {'CANCELLED'}
        return {'RUNNING_MODAL'}

# remember register the class

def block_all_subwindows():
    Empty.fin_request = False
    windows = bpy.context.window_manager.windows
    if len(windows) == 1: return

    for w in windows:
        if hasattr(w.screen, "name") and w.screen.name == "temp":
            if w in Empty.modals:
                continue
            with bpy.context.temp_override(window=w):
                bpy.ops.wm.empty()
            continue

        if w.parent == None:
            continue

        if w in Empty.modals:
            continue

        with bpy.context.temp_override(window=w):
            bpy.ops.wm.empty()

def unblock_all_subwindows():
    Empty.fin_request = True


text:
How to get subclass of a blender class
How to get all subclass of a bpy.data classes
The subclasses of bpy.types.Texture are:
BlendTexture, CloudsTexture, DistortedNoiseTexture, ImageTexture, MagicTexture, MarbleTexture, MusgraveTexture, NoiseTexture, StucciTexture, VoronoiTexture, WoodTexture

But in Blender 4.2, it only outputs one:
import bpy

for cls in bpy.types.Texture.__subclasses__():
    print(cls.__name__)

# >>>> ImageTexture

bpy.types.Texture.bl_rna_get_subclass_py("???")

You can get all subclasses by using this script. In this example, we retrieve all subclasses of bpy.types.Texture:
import bpy

def find_subclasses(base_class):
    subclasses = []
    for cls_name in dir(bpy.types):
        cls = getattr(bpy.types, cls_name)
        if isinstance(cls, type) and issubclass(cls, base_class) and cls is not base_class:
            subclasses.append(cls)
    return subclasses

texture_subclasses = find_subclasses(bpy.types.Texture)

for cls in texture_subclasses:
    print(cls.__name__)

It seems that after executing the above script, it triggers Blender to fully load and initialize those types. Which will then make your script work as well:
for cls in bpy.types.Texture.__subclasses__():
    print(cls.__name__)

Great, it works.


text:
Mesh distorted by rig after export
I have a rigged and animated character that looks completely fine in blender (original .blend file). When I export it, the mesh gets distorted in some places. It looks like some of the vertices are weighted incorrectly. For gltf files, some of the bones change its scale and rotation, in fbx the bone arrangement look different too. Collada looks ok. But the distortion still happens during animation - when the bones are not in its orginal position.
I applied tranforms to the armature like a million times and it didn't help (cleared parent, applied transforms - ctrl A - to the mesh and armature and reparented back with different options, no effect).
I also tried normalizing bone weights, checking normals, baking the animation, I made different animation tracks... Nothing helped. The mesh looks ok only with bones in its rest position.
Any suggestions? I can't find any solution to this and I'm really desperate as I exported this particular mesh multiple times with no issues and then it started to do weird things after I removed the subdivision modifier (not applied, removed).
I'm still pretty new to blender so I may be missing something... Thank you for any help

Here are some pictures demonstrating the problem. How it should look like vs how the exported .gltf looks like.

Please upload your file or at least take a screenshot of your fbx export settings. Looks like the rig breaks, probably you're trying to export some bones which have Blender constraints or drivers that the exporter can't handle.

Thanks for your help, I figured it out. It was a weighting issue - as I normalized weights, I didn't notice the root bone lost influence over some parts. I don't understand it fully (why the original file looks ok) but weighting the root bone fixed it. Still don't know why some bones are rotated in gltf though. https://imgur.com/N0xk7kf


text:
curve bunch of objects without joining them
i made this mesh out of bunch of objects and i want to curve it using the circle curve and the curve modifier :

and i only know one way to do it, by joining all of the objects into one and curve it and after that i separate them one by one .
but when i join them i get this problem :

the ornament disappear and sometimes this happens :

i can't figure out why !!
is there a way to curve them all without having to join all of them like this :

Select all objects with the one with the curve modifier selected as active.
Ctrl+L(link data menu)<modifiers(for pre 2.93)
(for 2.93)Ctrl+L<Copy modifiers.
Your geometry might be folding into other pieces because they don't have verts in the same sections. Match the loop cuts or give everything plenty of geometry

it worked thank you, i guess the problem was the bevel i applied to all of them

Great! Glad you found your asnwer!


text:
Get bpy.data of all DriverTarget.id_type
I need to get all bpy_prop_collection of DriverTarget.id_type, but miss 2 of them.
# get all id_type
# enum_items = bpy.types.DriverTarget.bl_rna.properties["id_type"].enum_items

dic = {
    "ACTION":           bpy.data.actions,
    "ARMATURE":         bpy.data.armatures,
    "BRUSH":            bpy.data.brushes,
    "CAMERA":           bpy.data.cameras,
    "CACHEFILE":        bpy.data.cache_files,
    "CURVE":            bpy.data.curves,
    "FONT":             bpy.data.fonts,
    "GREASEPENCIL":     bpy.data.grease_pencils,
    "COLLECTION":       bpy.data.collections,
    "IMAGE":            bpy.data.images,
    "KEY":              bpy.data.shape_keys,
    "LIGHT":            bpy.data.lights,
    "LIBRARY":          bpy.data.libraries,
    "LINESTYLE":        bpy.data.linestyles,
    "LATTICE":          bpy.data.lattices,
    "MASK":             bpy.data.masks,
    "MATERIAL":         bpy.data.materials,
    "META":             bpy.data.metaballs,
    "MESH":             bpy.data.meshes,
    "MOVIECLIP":        bpy.data.movieclips,
    "NODETREE":         bpy.data.node_groups,
    "OBJECT":           bpy.data.objects,
    "PAINTCURVE":       bpy.data.paint_curves,
    "PALETTE":          bpy.data.palettes,
    "PARTICLE":         bpy.data.particles,
    "LIGHT_PROBE":      bpy.data.lightprobes,
    "SCENE":            bpy.data.scenes,
    "SIMULATION":       ???,
    "SOUND":            bpy.data.sounds,
    "SPEAKER":          bpy.data.speakers,
    "TEXT":             bpy.data.texts,
    "TEXTURE":          bpy.data.textures,
    "CURVES":           ???,
    "POINTCLOUD":       bpy.data.pointclouds,
    "VOLUME":           bpy.data.volumes,
    "WINDOWMANAGER":    bpy.data.window_managers,
    "WORLD":            bpy.data.worlds,
    "WORKSPACE":        bpy.data.workspaces,
}

how will you use these properties if you don't mind me asking? I checked in driver properties and id_type SIMULATION (physics) and CURVES (hair) seem not to be supported as driver as blender disables the ID-Block field when those types are selected.

Thanks for the notice. I use it to loop all of them and get the keys, for example: if id_type == 'MESH':  for k in bpy.data.meshes.keys(): print(k)

CURVES is now supported in version 3.4 with bpy.data.curves. SIMULATION not yet.