text:
Animate the Viewport Visibility of an Object within the Timeline?
I want to hide an object in the Viewport up to a certain frame in the Timeline and then make it visible (e.g. at frame 30). How can i do that?

I see what you mean. However the other question was about how to achieve this for the rendered animation. I changed this question and answer to describe what to do for the Viewport animation. Is that OK to do ?

I added a comment into the other q/a and proposed to merge my q/a into the other one.

Make your Object visible at frame 30:
You can keyframe the Viewport Visibility of an Object from within the Outliner:

In the Timeline select Frame 1
Then open the Outliner
Set your Object to Hidden
While the mouse hovers over the eye icon in the outliner, press I to keyframe the visibility.
Move on to frame 30
Click on the Eye icon again to make the object visible
Then press I again to keyframe the visibility change.

Note: If you want to achieve the same for your render, then please check the answer in here: How can I animate the Restrict Visibility property of an object?

You might also want to consider the same for the camera to hide it in your render.

This no longer seems to work in Blender 2.91. When pressing I it says "hide_viewport property cannot be animated"


text:
How do i Parent a mesh to an armature that is not in rest Pose?
This is a simple character mesh: http://www.pasteall.org/blend/31247

The mesh has no modifiers.
Scale and Rotation have been applied.
The Armature's Rest Pose is the T-Pose.
The Armature has been posed to match the mesh.

How can i parent the mesh to the armature (with automatic weight from bones) while retaining the armature's original rest pose ?

I got feedback from Bassam Kurdali on Blender's bf-animsys mailing lists. Here is his slightly edited answer:
There is no "bind pose" in blender. There is just a rest position and a pose. Armature deform happens based on the rest position.
the only exact solution to this problem is:

create your 'bind' pose
duplicate object to a new armature
apply the pose as new rest pose on the new armature
Use the new armature as your modifier target
Constrain the new armature to the old and use the old one as the control rig, if you desire rest pose as T pose.

One more remark: It is not possible to use the Pose library as temporary storage for the original rest pose, because the Pose library stores poses relative to the current rest pose. If the rest pose changes, the poses in the library will no longer result in the same pose as before.

Select the armature change to Pose Mode
Select all A (until all bones are selected)
Ctrl-A Select: Apply Pose as Rest Pose (from Apply popup menu)
Change to Object Mode
Select mesh
Select armature
Ctrl-P Select: With automatic Weights (from Parent to popup menu)

Hi, stacker. Thanks for the answer. But "Apply Pose as Rest Pose" changes the rest pose. While i must retain the original rest pose :(

Sorry but this seems to be a requirement, after parenting to the armature you can create as many poses as you like.

source: Stack Exchange

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

sort: votes


text:
Cycles spotlight creates fireflies on glass and glossy materials
Its about spot light lamps in combination with Cycles Glossy and Glas Shaders. In this post i only make use of unchanged shaders "Glossy BSDF" and "Glass BSDF" from cycles.
The blend file is here: http://pasteall.org/blend/index.php?id=47499
And what i am trying to do is a simple Cycles setup using a camera, a flat cube and a spot light:

The Spotlight has Strength 300 with a spot shape size of 20 degree
The cube material uses Glass BSDF (Beckmann) with roughness 0.1 and IOR 1.45
The camera looks straight downwards
All items are aligned on the Z axis

This is the render result with 128 samples after about 15 seconds:

Now i want to get rid of the fireflies. I followed the recommendation to use more samples. I increased the number of samples from 128 to 1024 which created this image:

The downside here is that now the image renders in 2 minutes and actually the spot is not so much "spotty" but more "cloudy"
In the next experiment i increased the spot Strength from 300 to 1000 and now the flies are back:

Someone told me that increasing the lamp size will fix it. So i increased the lamp size from 0.2 to 1.0 and the flies are gone but the spot is again cloudy.

Ok, lets make a break here. Actually i am not even interested in the reflection on the glas surface (for now). I rather want to get the spot light passing the glass and travel further down to another flat cube that uses a glossy material (a mirror actually).
I change the setup a bit as follows:

So i now expect to see the reflection of the light spot on the lower plane, and indeed the spot is there, on the left side i see the reflection from the glas and on the right side i see the reflection from the lower plane (the mirror:

but ... fireflies are back :( Now i need some help out of this :) thanks for any hint!

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


text:
Generate equation from surface
Does Blender have already a way to generate equations from simple surfaces?
In my case, I have a bowl and I want to find out the inner surface xyz equation of it. I've seen that you can do the other way around, generate mesh from equation, but in my case the equation is the unknown. I know I could code some identification algorithms, but I want to know if Blender has this option already or if there are any addons someone could guide me to.
thanks for any insight

No, Blender is not a mathematics program. It cannot "find" any equations for anything. You can enter equations and it will place vertices etc. according to the results, but it does not calculate equations based on any given arbitrary surfaces.

Unless your bowl is simplistic and follows a pattern like ax² + bx + c, I don't know if it is even possible with regular grade computers in any program. You would have to write a regression algorithm in 3 dimensions which could amount to any number of polynomials and solutions. Would you mind sharing an example of a program that would achieve what you want, even if it's private or paid for ? I'm not an expert by any means I'm genuinely wondering if this exists.

If your surfaces are always 'bowls' :  (rotations of a curve, )  then could this problem be reduced to 'equation of a curve' ?

@RobinBetts Even if, you could enter an equation in Blender to form a curve, but you cannot make a curve in Blender and let Blender find a corresponding equation - so I guess this is no BSE question. In Excel I would say, just let it determine the trendline.

Hi, @GordonBrinkmann fair enough.. curve-fitting is never going to be a Blender native activity :)   .. just wondering about very constrained cases.. e.g. known to be quadratic as suggested by Gorgious, or maybe extracting polynomial coefficients from the handles of a Bezier.. you would know better, I'm sure.

@RobinBetts Well, sure there are probably ways to determine equations by reading out control point positions and handles etc., but you would have to do it manually. And since the question says "I know I could code some identification algorithms, but I want to know if Blender has this option already" I guess ioanau is not asking for manual ways to do it yourself.

sorry, didn't receive comment notifications. Hi @Gorgious. I ended up importing the STL in matlab and using their identification toolbox, turned out to be a good fit for a 4th degree polynomial.

@RobinBetts i guess it did end up being that.  and yes indeed, maybe it's not a blender question, but was just very hopeful about the possibility.

@Gorgious AI Feynman is the example you're looking for. Beware, however: last time I tried to use it (to figure out a solution to beveling a cube) I spent like a week trying to make it work. I was so excited at the beginning and so resigned at the end I burned out for like a month :D

Thanks @Gordon Brinkmann for the answer to my question basically. I ended up importing the STL in matlab and using their identification toolbox, turned out to be a good fit for a 4th degree polynomial. Excel and other software would probably worked fine as well, I am just more familiar with Matlab.

You could [Edit] in some example to show your workflow, so that people in future can benefit from it, cheers!

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


text:
How to use Vertex Painting to create Subsurface Scatter in specific areas in Blender 4.1?
So I'm new to Blender modelling and am watching tutorials from Dikko on how to create Stylised Characters where I am to apply Subsurface Scatter on the character  and just realised a lot of them are a few years old and are using Blender 3.6 which had since changed the Subsurface Features after 4.0...

The video:
https://youtu.be/gkLFKEvqpP8?t=671&feature=shared
This tutorial I've been following uses a Color Attribute (Vertex Color) canvas to paint a black and white reference of the areas he wants to add Noise to by connecting that and a Color Ramp to the 'Subsurface Value' and then creating a Subsurface Scatter in that highlighted areas.
I'm aware Blender 4.0 made the Subsurface Scattering correspond directly with the Base Color which apparently makes sense to some users but I can't seem to apply it to certain areas like the way he tries to.
Is there a method for applying Subsurface Scattering over Vertex Paint Attributes in 4.0 or is there a better way that I'm unaware of?
Youtube and Stack Overflow all seem to have tutorials of this topic from 2 years ago so I hope I can get some insight...

You can plug the attribute values into the Weight input of the SSS section.

Thanks for your answer!
Took a while for me to realise that I had to increase the 'scale' for it to be visible on larger areas with more vertices.

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


text:
How to play an animation only on a specific action?
I have a character model which has multiple animation actions in it (eg. Running, Jumping).
Let's say I want a different object (cube for example) to play an animation like simple moving, but only when the Running action is played.
How do I achieve this in Blender, using NLA strips or something else?
Thanks.

Maybe look into drivers?

This sounds like the XY Problem.
Not sure if this is feasible in Blender as you describe, nor with drivers. Because for this to happen, it would require for Blender to have a system to know "when animation A is playing, play animation B". But Blender doesn't have a logic system that allows you to handle events and conditions.
But I doubt you need that system to begin with, if all you want to do is to have multiple objects playing specific at the same time, the NLA lets you keyframe any strip's influence at any time:

Using that, you could key a strip's influence at 1 when the other action is happening, and at 0 when the other action isn't.


text:
AfterEffects camera
Very new to Blender.If I've imported a 3D camera and solids from an AfterEffects project (3d camera tracker), how do I align things I build in Blender to those camera/solids? For example, I have a drone shot of a park - camera tracked it in AE... bring that camera into Blender and want to put crowd simulation in the park. When I make a plane or a crowd they come in aligned to the world, so how to I align them to the perspective of the imported camera and solids that mark the ground?
thanks in advance for any help
K

Hello, please provide screenshots of your work/your file. :)

Welcome. Please use a title that matches the content of the question. It should be descriptive but succinct, unique and identifying, summarizing the issue in such way that anyone searching for a similar problem may easily find it. Use the [edit] link above, remove anything superfluous, avoid words like "this","issue with" or "question about". Remember, your title is the first thing potential visitors will see, answers you get depend heavily on how inviting it is. See "What is the problem of asking “How do I do this?"


text:
How to add a UV Map to a Mesh Using Python
I've made a script that creates a mesh in Blender using a binary file containing mesh data. That works fine, but now I need to get textures on the mesh and I want to create a UV map from the UV data in the file. However, I can't figure out how to add the UVs to the mesh.
Ideally, I'd like some system that lets me add a UV per vertex as I add the vertices. Should I be using UV loops? I don't really know what they are, but there is some information about BMLoopUV at the following url, although no example usage:
http://www.blender.org/documentation/blender_python_api_2_67_release/bmesh.types.html#bmesh.types.BMLoopUV

There are 2 existing resources that show this:
The best is the template for this purpose that comes with blender 2.67:
See Text Editor -> Templates -> Python -> Operator UV.
There is also a snippet in BMesh docs.

Unfortunately I can't figure out how to get this working. I'm getting the error: "ReferenceError: BMesh data of type BMFace has been removed" on the line "for l in face.loops:" where face is the name of the face I just added to the mesh. Is there something special I need to do, or some state my mesh must be in for this to work?

"where face is the name of the face I just added to the mesh." should be "where face is is a reference to the face I just added to the mesh."

I checked on the template and it works fine in 2.67b, on a mesh in editmode.

You are right. The template works fine, I just can't get it to work with my script :( Maybe I should add my code in a separate question and mark this answered? I have a feeling that I need to update the bmesh after adding the face, since the error mentioned above suggests something has gone missing.

Finally managed to get it working! Thanks for putting me on the right path.

@MrFlamey could you post your working result as an answer? (assuming its not 1000's of lines), or just explain what the problem was so others can benefit.

Here is the code I wrote to add a face to a mesh. The function takes an object and a bmesh derived from the object's mesh data (obj.data), a list of vertices, uvs and the name of a texture/material. Using this data, the function adds a new face to the object.
The section where I am adding uvs is only slightly different to that in the example provided (see below). It is all written for Blender 2.67b. No idea if it works on older versions, but it's probably ok.

def mesh_append_face( obj, bm, vertex_list, uv_list, texture_name ):
    # add vertices and uvs before creating the new face
    for vert in vertex_list:
        bm.verts.new( ( vert[0], vert[1], vert[2] ) )
    bm.faces.new( ( bm.verts[i] for i in range( -len( vertex_list ), 0)) )

    # add uvs to the new face
    uv_layer = bm.loops.layers.uv.verify()
    bm.faces.layers.tex.verify()

    face = bm.faces[-1]
    for i, loop in enumerate(face.loops):
        uv = loop[uv_layer].uv
        uv[0] = uv_list[i][0]
        uv[1] = uv_list[i][1]

    # assign material
    try:
        material_names = [ m.name for m in obj.data.materials ]
        material_id = material_names.index(texture_name)
    except ValueError:
        obj.data.materials.append(bpy.data.materials[texture_name])
        material_id = len(obj.data.materials) - 1

    face.material_index = material_id

It is based on this example code from Text Editor -> Templates -> Python -> Operator UV:

def main(context):
    obj = context.active_object
    me = obj.data
    bm = bmesh.from_edit_mesh(me)

    uv_layer = bm.loops.layers.uv.verify()
    bm.faces.layers.tex.verify()  # currently blender needs both layers.

    # adjust UVs
    for f in bm.faces:
        for l in f.loops:
            luv = l[uv_layer]
            if luv.select:
                # apply the location of the vertex as a UV
                luv.uv = l.vert.co.xy

    bmesh.update_edit_mesh(me)

I think this will work too: https://gist.github.com/anonymous/5750782

Thanks. I'll try simplifying the code a bit next time I work on it.


text:
Is there a way to save preferences for import/exporters?
I often use the .fbx export plugin in Blender, and every time I must disable the apply scale and enable selected only options. I realise that not everyone wants these settings enabled by default, but is there a way to save the settings so that I never have to do it again?
Note: I can probably edit the script to change the default, but I have a strong feeling that it can be done and saved with my user prefs somehow.

Yes, you can use operator presets. (Press the + icon to the right hand side of Operator Presets dropdown).

I've just realised, that since Blender updated and I lost my modified export script I need to use this preset answer to asve the exporter presets. However, the problem is that they are NOT applied by default and I have to actually select my preset. This is leaving me with the same problem as before. Is there a way to save a DEFAULT preset?

When you open a new version of Blender, it gives the option to copy old settings, This will copy your presets over too.

How do I make my operator preset the default option, so that I don't need to re-select it every time I close and re-open Blender?

This is not the answer I want, but I'm going to post it anyway because it may be helpful to some.
Here is the method to do it by editing the script for anyone else that wants to change options. Note that because I'm editing a default addon directly, it will need to be done every time a new version of Blender comes out, which is why I'd like to know if there is a way to do this with preferences.
Find the init.py file for the FBX import/export plugin:
<Blender install directory>\<version>\scripts\addons\io_scene_fbx__init__.py
In the ExportFBX class there are a number of properties, which all have name and default parameters. The name parameter is the text shown in the Blender UI, so you should be able to find the property you'd like to edit by searching for this string. Change the default parameter to that of your choosing. For example, to answer my question, I would change the default parameter of the property with name "Selected Objects" to True, and that of "Apply Unit" to False.

There's two places these files might be.

In your Blender installation folder:
C:\<blender_install_path>\2.93\scripts\presets\operator\export_scene.fbx\

A separate user settings folder on Windows for Blender:
C:\Users\<username>\AppData\Roaming\Blender Foundation\Blender\<version>\scripts\presets\operator\export_scene.fbx\

If you want to overwrite the default export settings, in 3.5 you can edit __init__.py in:

C:\Program Files\Blender Foundation\Blender
3.5\3.5\scripts\addons\io_scene_fbx

This is the same as the other answer. https://blender.stackexchange.com/a/40240/30849 ?


text:
Converting a 3d model into a square-dominant mesh with same sized faces
I need to create a quad-dominant mesh for a 3d model such that all quads are approximately squares and all non-quads are triangles. An additional requirement is that all square faces have to be close to the same size. Below is an image example. I haven't been able to find a solution to this exact problem. I just want to know if it is possible, since I am brand new to Blender. Any help is appreciated.

The tool that comes the closest to what you show is probably the Data > Remesh > Quad, click on the QuadriFlow Remesh button and you'll be able to choose the amount of faces in the pop-up panel:

Result with 2000 faces:

But a software like Instant Meshes, tutorial here by SouthernGFX, will do it a bit better, for example you'll be able to choose the topology flow:

Result (quickly made so it's largely improvable):


text:
Ink on Porous Paper or Water Bleed Effect
I have seen some rather incredible results out there using smoke and dynamic paint, and as such, I am curious if anyone can come up with a clever simulation of ink onto paper, or, closely, ink into water.
Brief

Should create the look and effect of ink landing onto paper and dispersing via capillary action into the paper's texture.
It must be accomplished in 3D via Cycles, and be modifiable / controllable.
It should trace basic forms and result in an interpretable series of glyphs or shape.

Sample
The following video is very close to the goal, with the potential to not bind quite as tightly to the water's path:
https://www.youtube.com/watch?v=N_zbcVs419E#t=2m20s
Here is another sample of the fractal-like expansion as the ink spreads through the medium. Very similar to ink landing on very thin tissue paper:
https://youtu.be/Nox0EFM0xow
Here is another of ink onto parchment. Ideally the effect would be possible to get in closer for a macro shot to observe the actual dispersion through the paper:
http://www.gettyimages.ca/license/181844542
I figure one of the clever minds around here would be able to generate something close to a viable solution.

@LukeD, as requested.

I tried passing a deformed sphere mesh through a plane as a paint source so that it would grow as the radius of the mesh increased (think flat lander POV) but fidelity was low. Perhaps distorted cycles textures driven by blend type textures would work?

Have you tried dynamic paint effects? https://www.blender.org/manual/physics/dynamic_paint/introduction.html

I have smoke sim pretty much accurate but I can't force dynamic paint to work with domain as a brush in cycles... I know nothing about Blender Render :/ If anybody knows how to use smoke in cycles with dynamic paint, I will do the rest.

I've got it, I'm making answer.

Here's ink in water, but I s'pose you meant on water?

@ajwood on water on paper ;)

@DuaneDibbley Looking more for a generated procedural result that offers the overall feeling of the expansion and traversal of ink through the water and paper as given in the videos. If you watch the zoomed in versions, you can see the fractal-like motion.

I think both of these answers are excellent, but I do love the idea of smoke painted. I believe @gandalf3 has some absolutely excellent attempts that I hope he posts as a solution. Would love to see the smoke attempts.

One of them looks more like Reaction Diffusion effect. While the other is like Fluid effect. Two different thing combined.

After messing with settings.
Basics:
To achieve 'ink drop on paper' effect we will be using Fluid System and Dynamic Paint. Fluid gives us nice control over drop shape. Blender units are used in this answer.
Set up:

Plane with dimensions 8x8 - this is our 'paper' - it must be subdivided number of times (higher is better) I'm using 2 Subsfurf modifiers, first set to 6 and second to 2 both set as Simple, they need to be over the Dynamic Paint modifier.
Sphere (16 segments, 8 rings, 0.3 size), moved by 3 units over Z axis (G > Z > 3) - this is our drop.
With selected Sphere hit Space search for Quick Fluid and apply.
Select Domain and Scale/Position it to cover whole plane.

Fluid:

Select 'paper' (plane) and in Properties tab choose Physics then select Fluid and set Type to Obstacle. Decrease Slip Type Amount to 0.1
Select Domain and under Fluid World > Viscosity Presets set Base to 2 and Exponent to 3. Under Fluid Boundry set Slip Type > Amount to 0.03

Exponent is very important here, if you want to preserve shape of your fluid you will need to set it to 0, and if you want to have random splatter set it higher.
Another important thing in Fluid Domain is Resolution, we will be using here 65 for preview but higher will give much better results
Dynamic Paint:
Brush

With selected Domain add Dynamic Paint (Physics tab).
Set Dynamic Paint to Brush and then Add Brush.
Change color if you want.
Under Dynamic Paint Source set Paint Source to Proximity, Falloff to Color Ramp and set Color Ramp as in the picture below:

Canvas

Select our 'paper' (plane) go to Physics tab and add Dynamic Paint > Canvas > Add Canvas.
Under Dynamic Paint Advanced set Dry Time to 25.
Under Dynamic Paint Initial Color choose Color and set it as you like.
Under Dynamic Paint Effects check Use Spread and set it to 0.5 then go to Drip and check it as well (it will give us control over the splatter by force fields).

Force field:

Add Force Field > Turbulence and set it to Strenght 10 and Flow 1.
Bake your fluid and play animation.

Domain and Fluid are hidden here.

Fluid resolution - 128 and some other sligt changes. This is from .blend file.
Final thoughts:
There are many things to play with in order to get higher resolution/better looking effect as I mentioned it above. Fluid resolution, mesh (paper) subdivision, substeps in Canvas. You could change Influance Scale and Radius Scale under Canvas > Dynamic Paint Advanced to have 'lighter look' of ink. It's all up to you. Now when you know the method it will be fun to mess with it.
Blend file:

This is darn close @LukeD. How can one constrain the bleed to a form, such as a letter etc?

I don't think I understand. Do you mean splatter shape? If yes just create this shape and make it as Fluid source and keep exponent to 0. Sorry I couldn't provide more detailed example, my PC seems to be to weak to this job :)

In the first video, the ink loosely follows a path. It would need to be constrained to a glyph or provide a way to constrain it.

Add in your question blend file with this mesh/glyph and I will try to adapt it. Con of this method is that you need change settings for every shape, resolution and such.

@LukeD It can be any old series of glyphs typed out frankly. Basically filling a text form would suffice. Ideally with a bit of bleeding beyond the form to keep it natural.

Instead of subdividing the paper mesh you can change the canvas format to image sequence and increase the image resolution for the final bake. You could setup collision objects to restrict the fluid flow to a shape you want. I expect using fluid physics for particles would be quicker than a fluid sim.

Instead of using paint I propose a modified mesh with textures.

Prepare your glyph art as white on a black field then use compositor to create an internal gradient for the shape (edge to center)

Import this new "image as a plane" with emission settings (we won't be shading the result), unplug the image texture. Then apply simple subdivision and displace modifier from the imported texture. Then apply a remesh to cut the letter out from base. Finally apply another displace modifier with noise and gradient to limit effect.

Create and scale a box to use as a control object for texture mapping the glyph.

Select the glyph and edit the material to have the texture vector controlled by the Box object

UPDATE 01: I have added another plane as a mask to eliminate the rough edges at the bottom

UPDATE 02: By adding another ramp to modify the distortion of the texture you can make the bleed at the edge occur quicker while the spread catches up. A more accurate result for the brief.

This would still require some post production to mask the edges of the glyphs as the are pretty coarse from the distort process. Also the control object can be easily rotated to make interesting wipe edges with texture bleed. And its all real time if you turn the samples down to 1.

authors: Андрей Николаев


text:
How to get the active vertex within a Handler?
I need to know the current active vertex from within a Handler, so i do this:
import bpy, bmesh
from bpy.app.handlers import persistent

def find_active_vertex(bm):
    elem = next(reversed(bm.select_history), None)
    if isinstance(elem, bmesh.types.BMVert):
        return elem
    return None

@persistent
def edit_object_change_handler(scene):

    context = bpy.context
    obj=context.edit_object
    if obj and obj.type=="MESH" and context.mode=="EDIT_MESH":
        bm = bmesh.from_edit_mesh(obj.data)
        avi = find_active_vertex(bm)
        if avi:
            # ... more done here ...
            pass

def register():
    bpy.app.handlers.scene_update_post.append(edit_object_change_handler)

However this approach does not work. The following line seems to create a very unwanted misbehavior of Blender:
elem = next(reversed(bm.select_history), None)

As soon as i add this statement the weight editor in the "n" panel of the 3D View no longer accepts weight values as input.
So my question is: Is there an alternative to find the active Vertex within a Handler that does not affect the behavior of the Vertex Weights panel within the "n" properties sidebar of the 3D View ?

Try reusing the bmesh instance, here I've used a global dic.  Also I've used history.active
import bpy, bmesh
from bpy.app.handlers import persistent

def find_active_vertex(bm):

    elem = bm.select_history.active
    if elem is not None and  isinstance(elem, bmesh.types.BMVert):
        print("BVert", elem, elem.index)
        return elem
    return None

dic = {}
@persistent
def edit_object_change_handler(scene):

    obj = scene.objects.active
    if obj is None:
        return None

    if obj.mode == 'EDIT' and obj.type == 'MESH':
        bm = dic.setdefault(obj.name, bmesh.from_edit_mesh(obj.data))
        find_active_vertex(bm)
        return None

    dic.clear()
    return None

def register():
    bpy.app.handlers.scene_update_post.append(edit_object_change_handler)

register()

scene_update handlers are called around 200 times per second, (Sample file here https://developer.blender.org/T46329 )  Using the data to load bmesh that many times probably affected the vertex weight panel.  I'd consider using a  modal timer operator instead.

Just use bm.select_history[-1]. Also account for the chance that this raises an IndexError when the list is empty, of course.


text:
How to get Enumerations correctly right aligned
I try to create a box with 3 EnumProperty elements. When i just create the items in a box like here:
box = layout.box()
box.label("Add new Avastar")
col = box.column()
col.operator("add_avatar", text="Create")

col = box.column(align=True)
col.prop(self, "mesh_type",   text='Character Mesh')
col.prop(self, "rig_type",    text='Rig Type')
col.prop(self, "weight_type", text='Weight Variant')

Then i get this result:

So i see how the selection menus are a bit too wide and because of this the text label to the left side gets truncated. However there is a lot of free space to the right side of the button labels. So i first checked if maybe one of the option texts is too wide, but that is not the case.
Here are the text labels for all options involved in this example:
character type: [ Rig only | with Tris | with Quads ]
mesh_type:      [ Classic  | Extended ]
rig_type :      [ Classic  | Extended ]

Next i thought maybe i can get an improvement when i use the alignment property as follows:
box = layout.box()
box.label("Add new Avastar")
col = box.column()
col.operator("add_avatar", text="Create")

col = box.column(align=True)

col.alignment='RIGHT'         # <== See Here!

col.prop(self, "mesh_type",   text='Character Mesh')
col.prop(self, "rig_type",    text='Rig Type')
col.prop(self, "weight_type", text='Weight Variant')

But this gives me following result:

Next i tested what happens when i replace 'RIGHT' with 'LEFT' in the alignment. But that does not change anything, the alignment looks the same for 'LEFT' and 'RIGHT'.
So what is the trick to get the selectors all aligned to the right edge of the button?
Here is what i hope to achieve (mocked up with my 2D image editor):

How can i create this (or at least something similar)?
Here is a Blend file with an example script:
http://pasteall.org/blend/40501

You can use layout.split() to split a row into two columns based on percentage. The first item on the row uses the percentage of the width specified in the split, then the following items use the remaining width.
Then by adding the label as a separate item to the menu you get each in their own column.

class testPanel(bpy.types.Panel):
    bl_label = "Test Panel"
    bl_idname = "OBJECT_PT_tester"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'

    def draw(self, context):
        layout = self.layout
        obj = context.object
        box = layout.box()

        col = box.column()
        title_size = 0.6

        row = col.split(percentage=title_size, align=True)
        row.label(text='Character Mesh')
        row.prop(obj, "mesh_type",   text='')

        row = col.split(percentage=title_size, align=True)
        row.label(text='Rig Type')
        row.prop(obj, "rig_type",    text='')

        row = col.split(percentage=title_size, align=True)
        row.label(text='Weight Variant')
        row.prop(obj, "weight_type", text='')

I was about to write the same :P At a first glance it looks a bit 'hacky' thru the extra label lines, but really seems be the only way to align this, since there is no option to shift the enum text...

I did not want to use Split and labels because its such an ugly workaround. But then Scorpion81 has shown me a trick how i can fetch the Property name from the EnumProperty without need to retype it into the label. Here is how i finally got it to work:
#Note: MeshProp is defined as:
#
# class MeshProp(bpy.types.PropertyGroup):
# ...
# bpy.types.Scene.MeshProp = PointerProperty(type = MeshProp)

class testPanel(bpy.types.Panel):
    bl_label = "Test Panel"
    bl_idname = "OBJECT_PT_tester"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'

    def draw(self, context):
        props = context.scene.MeshProp

        box = layout.box()
        col = box.column(align=True)

        row = col.row(align=True)
        row.label(MeshProp.meshType[1]['name']) #<== Scorpion81
        row.prop(props, "meshType",   text='')

        row = col.row(align=True)
        row.label(MeshProp.rigType[1]['name'])
        row.prop(props, "rigType",   text='')

        row = col.row(align=True)
        row.label(MeshProp.weightType[1]['name'])
        row.prop(props, "weightType", text='')

Here is how it looks:


text:
How can I reflect a transparent background?
I'd like to make a glossy surface which reflects objects above it, but that also reflects a transparent background in the final render.
So in effect, the final render would contain only the reflections, not the surface itself.
Is this possible please?

Yes, mix a Transparent and Glossy shader. However reflections will be captured from all sources

This sort-of half works - there is transparency in the layer, but it's not completely transparent.  As one would expect I suppose - it's half-glossy, half-transparent.  Did I miss something?

It is reflecting the world settings

Just found the solution, posting answer

If my solution helped you, please click the checkmark under the question voting arrows to show that this question has been answered satisfactorily.

Could you provide a Sketch of your desired setup, please?

You need to use a Transparent shader, and a Glossy BSDF shader, combined with an Add Shader, not a mix shader.
Using the Add shader gives a perfect result:
Nodes:

Result:

Although you should normally use a Mix shader (greater realism) this is a perfect use case.
Here is a comparison of the two methods:

I never realised this! Indeed an interesting fact, I wonder what the real solution then is?

@troy_s No this doesn't work even with associated alpha. Because when compositing this the reflection will not be composited correctly (over light or white bacground for example). The alpha channel is only the physical object, what you need is also a mask around the reflection. https://i.sstatic.net/QKFKs.png  I don't know why people upvote this.

It's work for me in rendering mode !

Sorry. It works only if the the roughness of the glossy shader is 0

You can deal with the roughness on doing : add (transparent, mix (transparent, diffuse)) and on playing with fac of the mix.. But you don't have any shadow ( in my cas it's a problem that i deal with rendering the shadow separatly and add it).

This solution does not require compositing, and is actually very simple. Think of the ground plane as being a plate of glass instead of an invisible mirror, transparent, yet glossy. So we will use a glass shader and not a glossy mixed with a transparent node.
Plug a Light path node into the IOR socket of the glass node to start with. The light path reference comes from a forum discussion I saw on BlenderArtists (unfortunately, I don't have the link presently, I'll add it if I come across it again). Add a transparent shader, then plug the glass shader into the top input of a mix node, and the transparent into the bottom input. Run this out to the output, render, and invisible, reflective surface!
Node setup:

Example .blend

You can achieve this relatively straightforwardly using render layers and the compositor. Here's the result I was able to get. It looks much better over a black or grey background than white.

With lots of simplification to the node setup it's easy to mask out just the reflection.

Set up two layers in your scene. The first layer will be your main render, and the second layer will be used to mask out the reflections. Make instanced duplicates of all of the scene objects (Alt+D) and move these duplicates to the second layer. Keeping all of the duplicates selected, change the material properties to be linked to object instead of to data and copy that setting to the other selected scene objects using the context menu. Add a new material to the active duplicate and set it up to be Emission, white, strength 1. Link this material to the other scene objects (Ctrl+L, Materials) so that they're all emissive. At this point the first layer should look something like this:

And your second layer should look something like this:

Next, make a reflection plane and put a copy of it on each layer. It can be instanced if you wish. This is the material I used for the reflection plane:

It's set up to show a glossy surface to the camera and to be invisible otherwise. This prevents it from affecting the rest of the scene's rendering. Of course, if you want some other behavior, you should feel free to make it happen.
Now that the scene is set up, it's time to set up the render layers. There are two, one for each layer in the scene.

The first layer is set up to be a beauty render. It excludes the second layer and uses the environment IBL to get a good final render. I've enabled the glossy indirect pass as well, although I suspect it might not be necessary for your use case.
The second layer is set up to mask the scene and its reflection, and it's set up to exclude the first layer. It's limited to ten samples because all of the shaders in the layer resolve quickly, so it's cheap to render. I've enabled an emission output that produces a mask for the scene and a glossy direct and glossy color output that produces a mask for the reflection. Make sure to turn Use Environment off, otherwise you'll see the reflection of the world in the reflection plane which isn't helpful.
In the composite, you can get the mask for the scene with the Emit output of the reflection mask layer.

You can get the mask for the reflection by multiplying glossy direct contribution by glossy color. Just glossy direct is close, but isn't antialiased in some areas.

You can get a mask of the scene and the reflection together by enabling and using the combined pass for the mask layer.
From here you can use that mask to get an image of just the reflection:

Or, something more complex like the original render plus the reflection with the reflection mask multiplied by the value of the reflection.

The setup also works pretty robustly with curved reflecting surfaces. Here's a monkey, which I used the glossy indirect pass to get the color of since I didn't want the direct specular highlights it was picking up.

I am sorry, but the only "correct" solution is to render a custom mask as a secondary render to your scene like this:

Where you give all the objects a white emission shader, the ground a sharp glossy shader and you uncheck the environment from render-layers.

Explanation:
For this to work in one render layer the ground shader would have to react whether the ray reflects environment or reflects an object. Which it cannot, because for the light-path node all the ground plane is one ray type, has same transparency depth and same ray-length.
For multi-layer solution utilizing the same objects you would have to overwrite their material with a white emission material in the second render layers and you would have to have a choice to exclude the ground plane from the overriding. Which is sadly not possible.
Multi-layer solution that would work needs copies of objects with a different material (white emission) on separate scene layer which is same like a dupli-scene for the mask or a second render for the mask.
So the only option is to use a compositor and key the reflection objects with some color-key. Which put's a restriction on those objects to not have that color.

@troy_s white 1.0 emission is special because with it you get a perfect black and white mask to cut your objects with reflections from the render. You should try the transparent + glossy solution with associated alpha and also composite it (pick a bright background) and you'll see.

The original wanted to remove the object itself, hence the original answers. Second, the idea of using an emission is a tad of a hack, as it won't work if your display referred transform is anything other than a 1.0 hard cut. It would seem more prudent to actually glean the occlusion. Surely there is a method to impact the transparent node with a light path.

@troy_s Yes it would be nice with light path if it could be done..it cannot for reasons in my answer. Semi-transparency in reflection is a problem than only keying can deal with.

Well no, you don't need to key. The emit hack works for occlusion, and the emission is handled via the RGB.

@troy_s and if there is refraction? Then you have to craft the mask with lot of work (build those emission shaders tailored to each object). Keying is the easier thing. Yeah I shouldn't say that only keying can deal with it, true.


text:
Hair dynamics does not affect all grass stands, some are frozen
I'm using hair dynamics to simulate grass blowing in the wind. When hair dynamics is activated, some hairs do not move at all. About 1-2% stand still. I don't understand and cannot find a explanation for this after searching the net. Hope someone here can advise?

Got the same problem, it seems to happen when the strand-points are to irregularly apart.
I kinda found a solution by going into particle edit mode, selecting the problematic strands and using the function: Rekey
you need to test how many numbers of keys you need. for me, some strands needed 14 other 10...
if there are still some left or you haven't much strands in total, search where the big gapses are and subdivide them.
not the best solution but the only one i know without deleting your whole work...

I fixed the problem by deleting the emitter and particle system and re-creating it. When I made my emitter more complex (not a flat plane) and added more hairs it all worked fine.

There is stilll the possibilty that you had a supperposition of two particle system, but it look more like a bug. It's always a good think to start again from scratch when you have unexpected result, but it would have been interresting to see if a relaunch of blender could have been enough.

authors: Стелла Бакалова


text:
Online colour grading LUTs
So, I was researching some stuff about colour transforms, and found some companies who sell colour grading LUTs.
They did include with the free samples a set of transforms from a bunch of recording formats to rec709, so that the grading LUT will be applied to a rec709 input.
I wasn't considering buying, but I was wondering how useful these would be. Given the expected pixel output 'x' depends on the transform performed on a given pixel input 'y'. Can we genuinely expect 'x' out for any 'y' put in after the conversion to rec709?
If I have recorded for example, Alexa Log-C or RED Log, can I reasonably expect that my Alexa Log-C or RED Log pixel is the same as someone else's Alexa Log-C or RED Log pixel, to convert to rec709 and from there to an orange(or teal) 'film look' pixel?

You absolutely nailed it; they are a load of codswallop and rubbish.
The bottom line is that all colour transforms are based on a chain of assumptions. The moment a single assumption is wrong, or a single transform is out of order, the whole stack becomes invalid.
TL;DR is you can trust the transforms if you know they are the correct ones and they are / were applied properly. However, I would be at least as skeptical with purchased LUTs as one should be with HDRIs; prepare to be underwhelmed at best, and outright scammed at worst.
Fantastic question and welcome to the forum.
;)

Hi, thanks for taking the time to answer.
I figured it might be something like that.
If my camera is pointing at my scene and not their scene, and I am using my lighting set up, it's possible my shadow pixel won't match their one so it can be tuned towards 'darker' and 'bluer'(teal-er).
I might get the expected result I paid for, I might get something quite like it, or I might not get what I expected at all.  All this, plus assuming the transforms are properly made and properly applied.
Might be better for me to learn how to do my own colour grading and display transforms.
:)


text:
Trying to recreate an effect that involves emission and cant get it right at all
this is a picture of the effect I am doing

The original work: https://instagram.com/p/BjFdQfEgthj/
I just can't seem to get the same glow like effect. I'm not sure if I am missing something with the emission material itself or is it the surrounding elements that are making it realistic.
when I made it I just added an emission shader, I'm assuming there should be other stuff with it too but mine just ended up looking extremely dull. ignoring the imperfections on the glass, the glow in mine is just meh and not even glowing at all. am I missing something big with emissions? increasing the emission value just makes it white so that didnt help either

Possible duplicate of Glow with depth in Blender? also: https://blender.stackexchange.com/questions/3636/post-processing-lightsabers-in-blender or just: https://blender.stackexchange.com/search?q=glow

You can do this with Volume Scattering.
In the world tab (icon of globe), under "Volume", select "Volume Scatter" from the dropdown and set up the Density and Antisotropy to be similar to mine (feel free to tweak but this should work well):

This brought my emission object from this

To this:

Again, feel free to play with any of the values shown to get it to look as you imagine!

adding the volume scatter removes everything else from my scene, cant see the lamps or the background plane i added


text:
How can I get my glass to look like this glass?
  I have tried to make it look like this but I cant get the reflections with it still being see through. Could someone please help figure out how I can get my glass material to look like this?

Have you tried to mix a Glossy and a Glass node?

please post your current node layout

I added the node layout to the question

How are you lighting your scene?

As far as lighting I haven't put anything more than the original light that is already there

You need an environment to reflect in your glass. Tye using  an HDRi for lighting. Also maybe related to https://blender.stackexchange.com/questions/35726/fluid-in-a-glass

The reason its not see through is because you have a gray background. The 2nd picture has 1 big square light and possible a 2nd smaller one I cant tell, Plus that yellow bar of light behind it, plus the table is bouncing light. You need all the objects in the scene so they can interact with the light better. An HDRI can help. But I do not believe your 2nd pic is using an HDRI.

You may want to check those parameters(I´m using 2.79b.6) More bounces means more light will sample through the glass. But like the friends up here suggested, we would all like to check what your material looks like first.

I added a picture of what it looks like

@Ethan - I think he meant your node set up.

Yeah, the node setup is the one in the picture I added


text:
How to turn particle emission on/off?
Is there a way to animate whether or not a particle emitter is emitting particles at a given point in time?  I'm using the particle system to animate bullets, so basically I'm trying to find a way to say: at frame 150 the gun fires a burst until frame 170, at frame 240 it fires a burst until frame 265, and so on.
I've tried key framing the particle render setting between "object" and "none", but the problem with that is that the hidden particles are still there, so when the render setting switches to "object", the particles that were initially hidden suddenly appear.
I've also thought of putting a plane (not rendered) with a collision modifier in front of the emitter and then moving it when I want the emitter to start emitting particles.
Is there a better way?

I know you can do this by setting up multiple particle systems, each with their own start/end times, but that's a really clunky way to handle this.

I was going to suggest the same thing as Gwenn. Multiple particle systems would give you a lot of control over what you are trying to achieve here.

LOL Is this a joke? You cannot animate the Particles Number in Emission, that would provide an off-going? Instead have to make different Particle Systems with different Frame Start Ends. Thats ridicilous lol

Set a keyframe on the Render As dropdown box. Change the dropdown to None.

The simplest way to handle this is to add a keyframe for the particle lifetime. To make the particles stop emitting, set the lifetime to zero.
If you have very fast-moving particles (such as bullets), you will also need to keyframe the initial velocity down to zero.

Thanks... That would definitely work - the problem is that it won't let me set a lifetime of less than 1.  Any way around that?

Lifetime 1 should be 1 frame; if you want to keep it from emitting at a certain time, keyframe the emission rate to 0.

@AlexSchimp With a lifetime of 1, the particles shouldn't appear in the render (unless your particles are type "halo"), even though they appear in the 3D view.

@KyleWilley I don't think there is a "rate" setting, although there is a "number" which can be set to zero. Unfortunately, it has the same problem as the OP's original solution in that it makes all of the previously emitted particles disappear when it is keyframed.

@Gwenn I have my particle type set to object, and they appear in the render even with the lifetime set to 1.  I do have the velocity set fairly high, as they are bullets.  If I turn the velocity down, they don't render, but, of course, I need the velocity set high.

@AlexSchimp Well, it couldn't have been something easy, like rain? Since they're moving so fast, is it okay if bullets that have already been emitted disappear when you turn the emitter off? If that's the case, you can keyframe the "number" parameter to zero.

@Gwenn You're totally right; Blender lacks a rate functionality for emitters-I was thinking of Maya.
As for the minimum one frame, are the particles emitting from the brake or the chamber? If they're coming out through the barrel and only exist for one frame, they'd be effectively invisible.

@Gwenn If I keyframe the initial velocity along with the lifetime, it works great.  I just turn the velocity down when the lifetime is set to 1.

@KyleWilley I'm actually compositing the bullets into live footage, so the gun isn't rendered in Blender.  But keyframing the velocity does the trick.

@Gwenn AFAIK keyframing the number is impossible currently.

thanks, but doesn't seem to stop emitting. lifetime cannot be set to zero

life time can't be set to 0

According to the comments here, it seems that keyframing (hovering over the value with mouse cursor and pressing I) the velocity of the particles, (Velocity panel, Emitter Geometry: Normal) is the best way to go.

You can also automate the curve with F-Curve Cycles modifier (Shift+E):

If it annoys you that the 0-velocity particles keep popping up, you can model a structure around the emitter:

You can keyframe the visibility of your emitting object in the outliner window.
Just select the required spot on the timeline, find the name of your emmitter in the top right outliner window, then hover over the eyeball symbol next to it and press i on your keyboard. Visibilty can be toggled on or off as required and keyframed accordingly.

Please expand your answer, giving steps on how a user can do this.

I just did this by having a kill particles collision cube jump in and out of the particle path, close to the particle generation point. A little clunky, but seems to work.

I found the solution for me. Just animate mesh far far away in one frame and then return.

The best way I've found is to duplicate the particle system, make single user copy, then adjust each frame start/end to desired lengths

It's a little lame that this answer is downvoted, because it's actually a practical answer that works just as OP asked.


text:
Would it be possible to write an addon that highlights all modified settings?
Most if not all settings have an item Reset to Default Value in the context menu.
This would be helpful when tracking down issues when someone played a bit to much with the settings.
Could an addon be created to highlight changed settings, or would this require to change implementation of blender to adjust all hardcoded default values to the values of the default scene?
Can an hook-method be defined to intercept calls to draw an UI control so that the changed settings could be highlighted in one piece of code?
Apart from that there currently is a bug regarding the default settings.

That's a bug with reset to default value, see http://blender.stackexchange.com/a/1951/599.

@gandalf3 Thanks, I changed the question now it no longer focuses on the bug.

The default value can be queried via *.bl_rna.properties[prop_name].default. But it is not possible to alter the drawing of ui elements.

The colour used comes from the theme, keyed, driven or default colour is chosen within the c code that draws the items. We don't really have control of the display - we only say "show a property here", blender decides how it is displayed.

@sambler Could you add your comment as an answer

Not all properties have .default values as you might expect, the render resolution dimensions are 4x4 for instance. The 1920x1080@50% settings come from the startup.blend - see https://developer.blender.org/T32894

Unlike a "GUI" toolkit that gives access to the objects drawing the items on screen, in blender we don't really have control of the display - we only say "show a property here", blender then decides how it is displayed.
The colour used to draw each item comes from the theme - keyed, driven or default colour is chosen within the c code that draws the items.

There's a flag you can set with Python however to show certain elements in red: http://www.blender.org/documentation/blender_python_api_2_72_release/bpy.types.UILayout.html?highlight=layout#bpy.types.UILayout.alert

@CoDEmanX thanks, this could help to implement it at least partially.

@stacker You should word this into answer if you get it working.


text:
RIGIFY ERROR: Bone 'lid1.B.L': Input to rig type must be a chain of 2 or more bones. Incorrect armature for type 'stretchy_chain'
I am facing some issues with Rigify while building a character. I need to create an animation with it for a school project, and I decided to use Rigify because it's supposed to be simpler, or at least I thought it was.
My character has some parts that don't need very elaborate movement since it is very simple. Because of this, I ended up watching a tutorial to use only some parts of Rigify and skip those that would be unnecessary.

After a while, the problem you see on the screen started to appear, and I tried various ways to solve it, but I don't have much knowledge in Blender. I will leave the file below so that anyone who can help can have an easier view of what it could be, because I simply have no idea.

AnimationV1
I tried changing the bone types, tried matching some of these bones with what would be the complete Rigify, but nothing worked. Actually, one thing that did work was removing the bone types related to the eye, but even though it worked, it ends up losing the custom shapes, which would make the animation more difficult.
If anyone can help me, I would be very grateful.

Does this help: https://blender.stackexchange.com/questions/316440/report-error-rigify-error-bone-brow-b-l-004-input-to-rig-type-must-be-a-ch?rq=1 ?

Further comment:  I'm no expert on Rigify, but comparing the ring of bones round your eyes against the ones in the standard rigify armature, all the bones in the standard ring connect head-to-tail right round the eye whereas the directions of the ones in your armature are reversed at the corners of the eyes.


text:
Liquid Sim in a Closed Container Not Working
I'm trying to simulate an oil drum getting knocked over and liquid spilling out of it. Right now, my sim is not behaving as intended. When I move the sim out of the hollow drum model, it behaves as intended and simulates correctly. But inside of the drum, the liquid  doesn't emit much at all. This is what my drum model looks like:
and this is what the sim is doing inside of it:

I've tried flipping the normals of the drum model and increasing the surface thickness but it didn't have any difference in behaviour. I have the drum as Effector Type: Collision, with sampling substeps at 4 and surface thickness as 0.7. The drum itself is moving as a child of a rigid body simulation. The liquid source is an Inflow fluid sim with the mesh as the flow source and 0.02 surface emission.
In case this is useful, this is what the inside of the drum looks like with the normals visible:
Appreciate any guidance I can get, thank you!

I am going to try this myself tomorrow, but I'll try https://youtu.be/ZNb8I4v53-A?si=URqCtdG0sv-Yarae.
Basically inverting your normals to inside (as fas as I can tell the normal of your drum in inverted, but solidified or something because your inside is inverted too.) (edit mode-> face select-> all-> ⇧ Shift + N-> maybe inside, maybe not; you want the inside to be blue); then make a hole at the top and step up the domain resolution.
Then close the hole again. I‘d recommend watching the video, just to clarify, and maybe make it more obvious what I mean


text:
Adjust Bone Roll with constraints
I run into an issue with bone roll when i want to retarget two rigs with different bone roll conventions. I actually am able to do the correct retarget by using a Python script. So, problem solved ...
However, when it comes to retarget a complete animation, then the scripted version is simply too slow. Hence i am now looking at retarget with bone rotation constraints. while this works perfect when the two rigs use the same bone roll conventions, it fail as soon as the conventions differ.
Here is an image of what i mean. The upper part shows the rigs before adding the bone copy rotation constraints (target rig is green). The lower part shows the situation after the copy rotation constraints have been enabled:

Unfortunately the bone roll change also propagates down to all children and it ends with the hands and fingers rotated by 90 degree (target rig is green):

The problem is that i can not fix the bone roll on the target rig, because that must be preserved. And i can not fix the bone roll on the source rig because that destroys the animation.
The only solution i could find so far is rather odd, that is adding bone drivers to fix the roll in the target system. But i doubt this is a correct and efficient solution as it again involves scripting the drivers... So what else can i do?

You could create a copy of the source rig bones which have a bad bone roll, adjust the roll as desired, make them child of the respective original bone and retarget from them to the target rig.

this is a nice and easy solution :) thanks for this!


text:
Considerations for using .blend files between operating systems
I'm creating a (fully packed) .blend file that contains textures, cycles materials, UV maps, multiple scenes, rigging, and fluid simulations. The OS I am working on to create it is Windows. However, I must send this file to Blender (same version, 2.66) on Linux. I plan to rebake the fluid on that machine. What considerations must I take with the names, content, etc of packed files and .blend data?

The only major one I think are path names, if you had anything linked into a non packed .blend, you would have to double check and make sure that the paths to files were relative (If they are in folders near or with the .blend that is).
You can do this simply by going to External Data > Make All Paths Relative
OR
This can be avoided by just packing the file.
Also, to further understand why this is important

A full path or absolute path is a path that points to the same location on one file system regardless of the working directory or combined paths. It is usually written in reference to a root directory.
A relative path is a path relative to the working directory of the user or application, so the full absolute path will not have to be given.

Update: thanks to jesterKing and ideasman42 in the comments for pointing these out.

Windows uses case-insensitive filenames, mostly this isnt a problem because blender will use the case from the filename you select, but if you rename a file or directory (and only change the case) after this is already referenced from blender, you could then run into the problem where windows will resolve the path but loading the project on Linux/OSX (any non windows system) will fail. You might be best off to avoid this by using all lowercase names.
For linked and non-packed blends, make sure you have as many of your relative paths preferably under your main .blend file. Especially for Windows users: don't put resources (textures, sound) on different drives compared to your .blend files.
Quicktime support isn't available on Windows or Linux, so these can't read image/video formats supported by Quicktime.

I forgot to specify, but the file is already packed. So I should be good?

@ObsessiveSSOℲ you should have specified it earlier, but its added to the answer. Sure.

For linked and non-packed blends, make sure you have as many of your relative paths preferably under your main .blend file.
Especially for Windows users: don't put resources (textures, sound) on different drives compared to your .blend files.
Any path going up from your .blend will cause troubles ( //../../ -cases)

2 more - issues that could be added to this answer, 1) endian issues big/little endian systems. PowerPC isn't so popular now so it comes up less and less but, Point-cache between systems of different endian isn't compatible. 2) Quicktime support isn't available on Windows or Linux, so these can't read image/video formats supported by quicktime.

Would installing QuickTime on Windows allow loading of quicktime formats? I know this works with many video editors but I don't know if Blender will seek out and use the installed libraries on Windows.

@ObsessiveSSOℲ, no windows quicktime support has been removed.

I'm pretty sure blender is endian-aware; that's usually much more a developer than a user concern.


text:
How to copy object(s) to another layer
I am building a model for a game and have decided to copy part of it into a separate layer. How do I copy one or more objects to a different layer?

It's important to know whether you want to COPY the object or MOVE the object. Your question is a bit confusing. You asked how to COPY, then how to MOVE. Be sure you understand the difference between the two or you'll quickly find yourself confused by having more objects than you intended. The first answer correctly tells you how to COPY the object to a different layer, the second answer tells you how to MOVE the object to a different layer. Not meaning to be critical here, but using the correct terminology helps to clarify your question.

To copy an object you have to be in Object mode, right click on the object that you want to copy and the press Shift + D to duplicate it first.
The duplicate will be in grab mode so right click to get out of grab mode without changing its location.
The object will still be selected but if it isn't, you can look in the Outliner for it. It will have the original object name followed by a number indicating that is a duplicate such as Object.001.
You then press M to bring up the layer move popup menu and click the button for the layer that you want to move it to or alternatively type the number corresponding to the layer.

Select the objects that you want to move and press M, then select the layer you want to move them to. You can also have an object in several layers, for that after pressing M, Shift +  LMB select the layers.


text:
Uv mapping fix symmetrical mapping
I just started using blender for one of my projects where I need map UV co-ordinates to be able to use that object in three.js
I found similar question here and i tried disabling the sync but that did not solve my problem so i am asking with screenshot here for clarification of my need.

I am manually mapping UV as shown here in this screenshot but as we can see whenever the last vertex is selected and moved, corresponding left most vertex also starts moving and also in the same direction. I m not sure why this happens?,
is it due to the fact that those are the same points? But in that case also they should move in opposite direction towards the shape and not in same direction.
and hence i am not somehow completing wrapping of this 2d shape as there is this black always remains on 3d in left between last two edges i.e. last face.

did u try split selection before?

Hi i am not sure what that is but i have one more problem if you can help in dm.

uv's are not visible till we press A if that option is not selected. This info is not mentioned there otherwise yes.

It is mentioned there it literally says "When you have the Sync button disabled, you can only see in the UV Editor, the faces that you have it selected in the 3D View in Edit Mode, so make sure you select all the faces you need to have it available before unchecking the Sync button, or use the 3D View to select the faces/edges/vertices you need, and tweak them in the UV Editor with the Sync button unchecked" so, it is a duplicate

ah good catch. i have not seen that somehow missed so duplicate yes

Ok I finally figured out how to do it.
Although mentioned above In UV map can't move shared vertices independently, when we keep UV Sync Selection turned off, still, to see all vertices, first we have to select all of them by pressing A while being in 3D Viewport area (the one on the left).
The entire thing was that until we press A, all vertices won't be visible on uv editing area, and after they become visible, one must keep UV selection in Vertex Selection Mode (the first option shown in the image) and then only that vertex will be able to be moved individually on his own and hence can be taken to the intended area in 2D shape where mapping is needed.


text:
Mesh appears in renders but is not visible in object mode/viewport render (Blender 4.1)
It seems many problems people have with Blender are objects appearing in object mode and not in their renders, in my case it's the total opposite.
My mesh in made visible in the side bar and in object properties everything is set to default, however my mesh does not seem to appear in my view port, no matter the engine.
Any help would be greatly appreciated!

Try Alt-H with the cursor in the 3D View?

@JohnEason No, it is not hidden, that's Local view and obviously the object in question is not included.

You are in Local view, indicated by the (Local) in the top left of the 3D Viewport.
You switch to local view by pressing Numpad / and then only those objects are visible which were selected at the time you switched.
Selecting or deselecting objects while you are in local view does not make them visible if they were not in the selection for local view (you can however still hide and unhide the ones that are there.
To get back to the normal view, just press Numpad / again. You can use local view to focus on a certain object for editing without having to hide and unhide other objects. Also rotating the view, zooming in and out or changing to different shading like Solid, Material Preview etc. is limited to the local view and once you get back, the viewport is as it was before switching.

Good catch! I missed that because everything except the missing character must have been selected when he went into Local view. It's more usually used with a single object.

@JohnEason Yep, it is usually used with a single object... but I guess this was not usage but an accident, so probably the intention was to do something completely different...


text:
Linking light Power to a texture emission
OK so, I am making a Moving Head Light (like you see at events or shows) and I would like to link the light Power to the emission strength of a texture.
Basically, I want to use the Light Power to drive the emission strength.
Is this possible? Because I cant figure it out or find anything about it anywhere!
I'm from a C4D background so, I would use the "User Data" and "XPresso" feature to achieve it there.
Thanks in advance for any help on this.

Sure, a simple way would be to use a driver. Go to the light source and in its properties right-click on the Power value and choose Copy as New Driver.
Then go to the Shader Editor to edit the material with the Emission shader. Right-click on the Strength value and choose Paste Driver. The field will turn purple to indicate there is a driver, now the Strength will get the same value as the Power.
If the Power is too strong for the Emission shader and you want to use only a certain amount of it, you can now right-click on the driver in the Strength value again and choose Edit Driver.
In the opening dialogue box switch the driver's Type to Scripted Expression. In the Expression field should be a variable "energy", which is the value you get from the light source. Simply enter some mathematical operation, for example energy/10 or energy*0.1 to use only 10% of the light's Power.

Thank you so much! I know there would be a way somehow! Thanks again.


text:
Is there a way to control Blender's GUI remotely?
I would like to control Blender on a remote server (Ubuntu, local network) from my Notebook (Windows 7).
Until now I evaluated the following configurations, none of them works satisfactorily.
1 VNC (followed this tutorial)
Result: Applications like Firefox, Libre-Office work but Blender's UI is rendered incomplete and unusable.

2 MobaXTerm
MobaXTerm supports SSH and comes with its own X-Server:
Again firefox and other apps work but Blender crashes:
$ blender
Color management: using fallback mode for management
connect failed: No such file or directory
X Error of failed request:  GLXBadRenderRequest
  Major opcode of failed request:  146 (GLX)
  Minor opcode of failed request:  1 (X_GLXRender)
  Serial number of failed request:  154
  Current serial number in output stream:  179

3 Run Ubuntu under VMWare and Tunnel X through SSH
Blender starts flawless but the connection (100MBit/s) is so slow that it takes 2-3s to open a menu. Instructions on AskUbuntu
Is there an alternative to the methods I tried?
Solution
The MobaXterm settings that worked for me:

Would an NX session work?

There was decent local X server for windows, tried it couple years ago: Xming.
Never tested any heavier applications though.

The latest version of MobaXterm works great with Blender! I just had to check the "Hardware OpenGL acceleration" in order to make it work (under "Settings" --> "Configuration" --> "X11" tab.
I started a SSH connection with compression enabled in order to lower bandwidth usage and started Blender which now works correctly.
I am running the latest free version of MobaXterm from http://mobaxterm.mobatek.net and my Windows computer has a nVidia Geforce GT640 with the latest nVidia drivers.
I hope this helps!

Thanks, after setting the X11 server display mode to "Rootless" it now works.

I currently use Splashtop it's free for personal use in your local network. You can also transfer sound to your local device and stream videos. The mouse is a bit laggy but modeling works. Due to the mouse lag it's not suitable for games.


text:
Which action should take newly created keyframes?
I created a new action named BladeAction and keyframed the influence slider of a Shape Key I couldn't use the action in the Logic Nodes / Action Actuator. Then I examined the action in the NLA and Action Editor it looks like that:

A KeyAction strip has been created by Blender and is not accessible from the Action Editor the BladeAction has no keyframes and cannot be frozen (snowflake icon). I can use the KeyAction from Action Actuator but I'm somewhat confused why this behaves like that.
Why are no keyframes in the Action created by me? Why does Blender create an Action Strip* which cannot be edited?
[.blend] is already linked here: Can gravity be disabled for a single object in the BGE?

It seems that only Keying Sets like location, rotation accessible from the Keyframe Menu are stored in the currently active Action.
For each other property like influence slider values, colors, transparency etc. an F-curve associated to the object is created and holds the keyframes and some kind of virtual Action Strip is added to the NLA Editor.


text:
How can a parameter be passed from one operator to another?
I used a python template to create a menu which is populated by the names of files from the text editor:
class AnimMenu(bpy.types.Menu):
    bl_label = "Anim Menu"
    bl_idname = "OBJECT_MT_anim_menu"

    def draw(self, context):
        layout = self.layout
        for txt in bpy.data.texts:
            if txt.name[-4:] =='.txt':
                layout.operator("object.anim_operator", text=txt.name).text_name = txt.name # from here

Another operator should receive the filename as a parameter
class AnimOperator(bpy.types.Operator):
    bl_idname = "object.anim_operator"
    bl_label = "Pose Anim Operator"

    text_name = bpy.props.StringProperty(name="anim_text_name") # to there

    @classmethod
    def poll(cls, context):
        return context.active_object is not None

    def execute(self, context):
        txt = bpy.data.texts[ text ].as_string()
        main(context, text_name)
        return {'FINISHED'}

I wasn't able to use this technique:
How to set multiple custom attributes to operator class when called in UI layout?
props = layout.operator("object.anim_operator", text=txt.name)
props.text_name = txt.name

leads to:
AttributeError: 'OBJECT_OT_anim_operator' object has no attribute 'text_name'

The snippet actually seems to work. http://www.pasteall.org/52716/python

I don't know very much about Blender scripting, but I do know a bit of Python. I don't see "OBJECT_OT_anim_operator" anywhere in your code; the example you linked to defined a similarly named class. In both of your classes, the variable txt is initialized only in a method within the class. I'm a bit rusty when it comes to coding, though, so perhaps this is all fine.

I had to add the self keyword to access the variable in the invoked operator (basic python, ouch!)
class AnimOperator(bpy.types.Operator):
    bl_idname = "object.anim_operator"
    bl_label = "Pose Anim Operator"

    text_name : bpy.props.StringProperty(name="anim_text_name")
    @classmethod
    def poll(cls, context):
        return context.active_object is not None

    def execute(self, context):
        print("invoked script name=%s" % self.text_name ) # <<- self.


text:
speed up pose transfer
i have programmed a retarget operator in python, but it needs dozens of depsgraph updates while calculating a single pose, so its super slow. I have a code snippet here:
for tpbone in arm.pose.bones:
    matrix = retarget(...) #transfer the pose matrix
    tpbone.matrix = matrix
    depsgraph.update() # needed to recalculate matrix for all pose bones

def retarget(src_rig, src_pose_bone,
    tgt_rig, tgt_pose_bone):

    scpbm = src_pose_bone.matrix
    scdbm = src_pose_bone.bone.matrix_local
    tcdbm = tgt_pose_bone.bone.matrix_local

    sm_world = src_rig.matrix_world
    sm_apply_rotscale = sm_world.inverted()
    sm_apply_rotscale.translation=((0,0,0))

    tm_world = tgt_rig.matrix_world
    tm_apply_rotscale = tm_world.inverted()
    tm_apply_rotscale.translation=((0,0,0))

    SD = sm_world @ scdbm @ sm_apply_rotscale
    TD = tm_world @ tcdbm @ tm_apply_rotscale
    SP = sm_world @ scpbm @ sm_apply_rotscale

    Q = SD.to_quaternion().rotation_difference(TD.to_quaternion())
    ROT = Q.to_matrix().to_4x4()
    matrix = SP @ ROT

    return matrix

When i do not call depsgraph.update then the matrix data returned by the retarget() function is wrong. However, can i avoid the depsgraph updates to make this run faster?

Investigate usage of numpy and pose.bones.foreach_get / set  Bit hard to do too much from info given.

@batFINGER i have added the retarget function that i use. Does this give a clue for why omitting the depsgraph.update() returns bad matrix data ? I am not sure how i could use numpy here or the foreach... functions.

Not sure. Bit different to what i imagined. Generally use Object.convert_space for bone matrix calcd  across objects.  https://blender.stackexchange.com/a/109852/15543

well,  my way to get the matrix works reliably when i call depsgraph.update() after calculating the matrix. So the question is: does your method avoid calling the depsgraph.update() function ? I suspect that it might get called from the convert_space() function. If that is the case, then then it would not help to speed up the retarget.

Doubt very much that convert space, which simply creates a matrix calls an update.  (btw wasn't putting forward comment as an answer to question) ...although imagine it would be quicker.  A hierarchical approach, leaf nodes up could reduce number of updates.


text:
location constraint adds too much offset
Consider i have two armatures side by side (different X values in Object mode), both armatures are in rest pose. Additionally the right armature (see image) has an additional Origin bone at <0,0,0> in Armature space, while the left armature is rotated and scaled in Object mode such that both armatures have about the same size and orientation in the scene.
for clarity i created a minimal setup as a demo blend file. I have not found a way to directly attach the file here, so please apologize that i use pasteall.org as a workaround:
https://pasteall.org/blend/f582293333c642ae9ad84163b6798713
Also note, that the original scenario has got animations assigned to the animating rig, so trying to fix this by applying scale in object mode would destroy the animations.
So, here is the situation before i add any constraints:

Now i add a location bone constraint to the Pelvis bone (here named COG, center of gravity bone) of the right armature using the corresponding Pelvis bone of the left armature as the target bone. I expect that the two armatures get aligned to the location of the targeted Pelvis bone. And indeed that happens:

Remember that both armatures are in restpose. When i now enable the Offset option, then i see the owner armature moves back to where it came from, but it gets an additional offset from the target pose bone, namely the distance from the bone.head to the ground floor (z=0):

However, what i really want to get is the offset relative to the target bone's restpose, which would be <0,0,0> when the target armature (on the left) is in restpose. Of course i can move the driven pose bone on the right side down to the desired position as a workaround. But what is the correct approach to achieve a relative location movement for the two bones without the additional restpose offset, such that both rigs are animated side by side ?

please provide blend file to check it out and so we won't waste our time by answering your question with "forgotten" details by you. thank you.

well, it was your initial answer that made me think that i might have missed something. So i figured that the scaling of the animating rig could actually be part of the problem. I wish you had kept your initial answer here :)
Anyways, the demo blend file is added. although i did not see a way to upload it directly to stackexchange.

If i understood you right, you can

apply scale in object mode

in constraint: change both to: Local space.

Then it should work as you want.

Unfortunately this does not work in this case :( But i think i found why: the animating armature is scaled (i forgot to add this to the description, fixing) . So when i use local space, then the animated armature flies high up into the sky. Maybe i can add an additional transformation constraint...

i updated my answer

When you apply scale to the animating rig (on the left side), then the animation goes totally crazy unless you als "appy scale" to the animation itself which is about scaling the fcurves i believe. It is a tricky situation, i admit.

Oh boy…than it might be solved by Josh - he is the rigging god around here

i got a hint from Blender chat. I seem to be able to solve my issue by using a ChildOf constraint. i make the animated pelvis child of the animating pelvis. I additionally need to set inverse in the constraint. I would never have thought of that! I will test now if i can get it to work together with Python and report here

Sounds promising!


text:
How can I connect objects together as if with strings/springs?
My end goal is to be able to move one object, and have others that are connected to it, follow as if they're being pulled/dragged by a string or spring. Ideally I'd also want to be able to lock the rotation of the following objects. I'd also want to be able to pick any object in the link and move that
See the gif for what I'm trying to do. I animated each of these objects manually, but I want to be able to just animate/move one of the objects, and have the others follow automatically without having to animate each one. Imagine the object highlighted is the one I'm "moving."

You want rigid body physics.  Each object should be an independent rigid body; the three you want to animate should have "animated" trait; and you'll want to join each pair with spring-type rigid body constraints.  "Locking rotation" is a bit ambiguous, it's doable but you'd need to specify what you mean (lock to what, parent rotation?  world rotation?)  If you're not yet familiar with rigid body physics, you should start by following along with some Blender rigid body tutorials.

@Nathan by "lock rotation," I basically just want it to look like the above GIFs where they arent rotating at all. im not super familiar with rigid body physics but thank you, I'll look into it! Do you have any specific playlists/guides to recommend for learning?

For something simple like this maybe geometry nodes or even drivers would be better?

is that https://github.com/luckychris/blender_gifs/blob/main/spring%20aniim.gif what you want?

@MarkusvonBroady How would I achieve this with geometry nodes or drivers? I'm open to alternate methods!

@Chris That looks perfect yeah, how was that done?

i posted an answer with blend file

First create one object and add rigid body to it.
Double that object with shift-D and move it to another place.
Repeat step 2 four times so that you have 6 objects in the right start positions
check "animated" for these two objects because they won't be calculated by Blender's simulation system, but will be animated:

4b) keyframe the location of these two objects as you wish for different frames

now select two rigid bodies and choose object > rigid body > connect

choose "generic spring":

now a constraint/empty appears between these 2 objects:

limit the angles to 0 like this:

give the linear z-axis values like this:

restrict transforms like this:

now you have created a spring connection between two objects which only "works" in z-direction (linear).
Repeat this process to the other cubes. Of course the linear stiffness/damping values must be adapted.
Here is my blend file to check it out:


text:
When I right click, the selected object disappears
I am pretty new to blender, so I don't know if this is intended or not. Lately, whenever I press right click, the object selected disappears or unlinks. This is pretty annoying since I want to box select some things, but every time it just unlinks the object. This bug is prevalent on all projects that I open, and it's very annoying. I am using blender 3.5, btw.

Perhaps one of the first things we could look for is a strange key-binding.  Header > Edit > Preferences > Keymap > Search by Key-Binding rmb . Anything funny in there?  Or .. You can save your preferences manually (Hamburger bottom-right) Switch off AutoSave just in case .. 'Load Factory Preferences' . If no joy, you can use the same menu to 'Revert'.


text:
Export Tab > Device has a orange BG in blender

setting it to CPU makes it Orange and setting it to GPU makes it Yellow
it doesn't happen in Other Projects, only this specific one
i was messing around with some export settings which i dont really remember and Setting Device to CPU still uses GPU for exporting
how can i make it normal?

It looks as if you've managed to keyframe the setting. Right-click on it and choose "Delete Keyframe".

I didn't even know you could keyframe that

@aidan-j-rhoden Nor did I until I tried it and to be honest I can't see the point. I presume it's just available to every setting by default.

@JohnEason Although there are definitely settings in Blender which cannot be keyframed even if you tried...

@GordonBrinkmann Is that a challenge to go through every one and make a list? If so I'll defer to your knowledge and give that a miss thanks! :^))

@JohnEason Haha, no it was just more thinking aloud like, if by default they make every setting keyframeable, and they manually take out some of them and they forgot this one or the other way round, none can be keyframed except for those which get this option and they accidentally enabled it here...

I have managed to keyframe the setting Device Setting. a simple Right-click on it and "Delete Keyframe" was the solution


text:
How to export Custom Properties to be read in Unreal Engine
The Epic documentation describes a way to export custom attributes to be read as (anim) curves in Unreal. I'm attempting to do this with Blender. I've created a custom property (float) as part of my root deform bone and exported the rig and animation as GLB with "include custom property" checked ON.
The skeletal mesh and anim sequence import just fine in Unreal, however it doesn't appear to have picked up the custom property. Does anyone know what I'm missing here?

What import settings are you using when you import the GLB to Unreal?

Skeletal Mesh

Auto Detect Mesh: ON
Import Lods: ON
Keep Sections Separate: OFF
Vertex Color Import Option: Replace
Import Only Animations: OFF
Import Meshes in Bone Hierarchy: OFF
Use TOAs Ref Pose: OFF
Import Skeletal Meshes: ON
Import Content Type: Geometry and Skin Weights
Combine Skeletal Meshes: ON
Import Morph Targets: OFF
Import Vertex Attributes: OFF
Update Skeleton Reference Pose: OFF
Create Physics Asset: OFF

Try turning "Import Meshes in Bone Hierarchy" on, I think that could possibly fix your problem by helping Unreal recognize your custom property.

Hm, doesn't appear to have made any noticeable difference

I stumbled upon this question while I was trying to resolve this problem myself.
I haven't figured out yet why this is happening, but you can use Attributes now, at least as of Unreal 5.4.
First you have to define either the attribute/property names or bone names to get attributes from in Project Settings > Engine > Animation in the Animation Attributes category.

Then when you reimport your animation, the new Attributes should show up in the timeline. Here I have a Float custom property called "equip" on the "grip_gunblade" bone that I've defined in Blender.

You can access that attribute as you would a classic animation curve, you just need to specify the bone it's on.

Hopefully it helps!


text:
Combining Animations
I need some help with Blender. I'm trying to animate a robot for my master's thesis, but when I combine the armatures (I downloaded the movements from Mixamo), the robot always briefly spreads its arms and legs instead of transitioning smoothly into the other animations. Do you have any tips on how to solve this problem?
Thank you!

There are lots of YT tutorials on combining Mixamo animations in Blender. Try  this one for instance.

please share the file, only keep the useful elements (armature, actions, strips), remove the other ones (so that we understand more easily): https://blend-exchange.com/


text:
What is the benefit of "Lock Object Modes"
I must admit that i disable the "Lock Object Modes" option whenever i start a new project. (Yes i know how to disable this permanently, but that is not what i am asking about). I probably am very ignorant about the true value and benefit of this option, but i honestly can not find anything about why to use this option, when to use it and how to use it for practical use.
All i find is when to disable it, why to disable it and how to disable it. So i am a bit lost, but apparently i am not at all alone with that :)
So the question i have is:
Is there any fundamental information on the benefit of "Lock Object Modes" ? (manual, tutorial, documentation, explanations, Youtube, whatever... )
Again: I am not asking for opinions but for reasons why this option is useful and how to make use of it. And i believe this is a question that fits well here (as it is also about sharing knowledge and not just about solving practical issues)
A Use case for demonstration
For more clearness let me add a use case that i try to handle with the default settings. This works smoothly in Blender 2.79 but i have not figured out the nice and correct way to get this done with the default Lock Object Modes enabled (available since Blender 2.80). Maybe it is important to mention that my workflow in Blender 2.79 does not involve the Outliner.
Lock Object Modes disabled
So... Say you have an armature and a rigged set of meshes (here 3 body parts):

Now lets say i want to weight paint the meshes and for ease of use i also want to select the weight groups by using CTRL-LMB on a bone. This is what we are using all the time with Blender 2.79 and the setup is done as follows:

Select the armature and set it to Pose mode
Select a mesh and set it to Weight Paint mode
switch weight groups with CTRL-LMB in the viewport

You can do exactly the same workflow in Blender 2.80 and newer when you disable Lock Object Modes.
Lock Object Modes enabled
But we want to understand how to use Blender with its default settings. However, when the defaults are enabled, then in first place  can not find a way how to use a similar workflow as mentioned above (and this is why i am asking for fundamental information about how when why use Lock Object Modes).
The problem is: When i set the Armature to pose mode, then i can no longer select the meshes. When i select the meshes and go to weight paint mode, then i can no longer set the armature to pose mode and i can no longer select the bones. However, there is one workflow that actually does something useful (as for my understanding):

First disable Lock Object modes !
select each mesh one by one and set it to weight paint mode
select the armature and put it to pose mode
select one of the meshes
Finally enable Lock Object Modes !

Now i can select the bones with CTRL-LMB and the meshes with CTRL-LMB as usual. And because of the Lock Object Modes enabled, i now can only select the meshes in weight paint mode. I see how this has benefits.
But ... now i can rephrase my initial question into several smaller parts:
1.) Is there a better way to setup weight painting for multiple Objects while the default settings are not changed? (How?)
2.) Is it discouraged to use CTRL-LMB on the bones to switch weight maps? (Why?)
3.) What is the encouraged way to do weighting on rigged objects (When?)

If you don't want it and always disable it, why don't you just disable it by default? Open a new Blender file, disable Lock Object Mode, then go to File > Defaults > Save Startup File.

My question was less about how to disable the option, but more about when, how and why to use it for the good. I know how to set preferences and while this would let me forget about this option soon i still prefer to understand for what the option is good.

I don't know who benefits most from it, but I never needed to deactivate it in 9 years using Blender (don't know when this feature was implemented though) so it's certainly not disadvantageous for me. I've once seen a tutorial which claimed that this is sometimes beneficial for animators or modellers who want to make sure they don't switch accidentally between modes. You didn't ask for setting the default, but since you started off with you always disable it, to me this sounds annoying and I would want to change the default (your question also didn't state you know how and just don't do it).

By the way, I know this wasn't an answer for your question, that's why I commented instead of giving a proper answer. And actually I guess this is not really a question like you have a real problem here for what this site is intended to be, it's more like asking for opinions on what this option is good for so an answer is more a matter of taste and speculation, not solving a problem.

I've just asked this on Blender Artists https://blenderartists.org/t/lock-object-modes/1226734 (which might be a better place for this sort of open-ended question).  No answers yet, but the existing topic also has a link to the vid Gordon Brinkmann mentioned.

@KickAir8p My apologies.  I did not read that thread correctly and thought it was a different one.  I'll remove my comment.

@MartyFouts No problem, it happens - I've removed my reply.

What it does? The Property limits the selection of objects to those having the same mode as the active Object.
When can this be helpful? when you want to avoid any mode switch during your current task.
An example where the property shows its benefits:
When you are animating a rigged object, then you have your Armature in Pose mode and you would want to only select bones. However, typically bones and meshes are placed close to each other, so it is very easy to accidentally select a Mesh instead of a bone during your work. This is a case where you would want to enable the Lock Object Modes property.
An example where the property is not useful:
When you are rigging and weighting Mesh objects, then you typically have your armature in Pose mode and your meshes in weight Paint mode. You would want to select bones and weight meshes in the same workflow. Here you must be able to select elements from Objects in different modes. This is a case where you want to disable the Lock Object Modes property.

Lock object mode is as the manual said "Restrict select to the current mode"
The only benefit that i know is... If you turn it off, you will have the ability to switch between different objects that are in different modes.
Let me give you an example:
I have 3 spheres,i'm gonna keep the first one in object mode. then go to the ouliner, select the second one and switch to sculpt mode, and finally select the last one and switch to vertex mode.
If now you select the different spheres, you will notice that every sphere is using the mode that we previously selected, which could speed up your workflow if you are working with different object in different modes.
In previous version you could use Alt + LMB to select the objects, but that does not work with 3.1, also edit mode is not working (probably a bug)

Turn that ON and you will prevent that behavior

I think it is now CTRL+ LMB, at least that works for me. lets say i want to weight paint on a subset of my scene. So i:

disable lock object modes
select the objects one by one set them to weight paint mode
make sure all those objects are selected(SHIFT LMB)
turn Lock Object modes on
Now i can be sure only the selected objects can be selected in weight paint mode. Since i have to disable Lock Object Mode in order to Select the objects and change their mode, why is Lock Object Modes enabled by default? I still don't get it, even after reading https://developer.blender.org/T55246

To be honest, that's a question that i can not answer, probably a developer can. An assumption could be "When you are a beginner, you are not aware of this and could probably be confused at first". sorry

@GaiaClary As I said in my comment above, I never had a problem with it being enabled by default. I guess there are a lot of people modeling, weight painting etc. often just working at one single object in a certain mode at a certain time. So the question could also be: why not have it enabled by default? It prevents accidentally switching modes between objects and you are still able to work in different modes, just not simultaneously. But as Emir said, probably that's a question for a developer. From my perspective I can say it doesn't hurt or if so, you can change the default anyway.

I added a scenario for better explaining what the issues are.

I think that you could have better luck getting an answer if you ask HERE Other than that, as @GordonBrinkmann it's optional

@GaiaClary Well, as I said before, this is not really a problem to solve, it is asking for opinions on what might be better or preferable and as such recommended for closing since this is not a regular forum for discussing pros and cons. Whatever answer will be given especially on topics like "is it discouraged to...?" or "what is encouraged..?" will be strongly subjective and dependent on personal preferences and adapted workflows.