text:
Unexpected vertices when looping through meshes in Scene Collection
I would like to loop through meshes in my Scene Collection to find the coordinates of Verts (single points added via Add Mesh Extra Objects addon) or the volume of a mesh (the default Cube).  I have code that will do each of these things separately, but when run together, the code which returns the coordinates of the single Vert instead returns the coordinates of the Cube's vertices.  I'm new to Blender and appreciate any help figuring out what the API is doing here.
Based on Batfinger's feedback (Select Meshes from Scene Collection without relying on name) this code prints the coordinates of a Vert:
import bmesh
import bpy

for i in bpy.context.scene.objects:
    if i.type == 'MESH' and len(i.data.vertices) == 1:
        print(i.name, i.type)
        # Get the active mesh
        obj = bpy.context.edit_object

        me = obj.data

        # Get a BMesh representation
        bm = bmesh.from_edit_mesh(me)

        for v in bm.verts:
            print("vert location", v.co)
        pass

This code prints the volume of the Cube (has to be selected):
import bmesh
import bpy

for i in bpy.context.scene.objects:
    if i.type == 'MESH' and len(i.data.vertices) > 1:
        print(i.name, i.type)

        #Get mesh data from the active object in the Scene Collection
        me = bpy.context.object.data

        #Create an empty BMesh
        bm = bmesh.new()
        #Fill Bmesh with the mesh data from the object
        bm.from_mesh(me)

        print('Volume:', bm.calc_volume(signed=False))
        bm.free()

However, when I combine the two statements, the Vert loop now prints the coordinates of the vertices from the Cube and not the Vert:
import bmesh
import bpy

#Vert loop
for i in bpy.context.scene.objects:
    if i.type == 'MESH' and len(i.data.vertices) == 1:
        print(i.name, i.type)
        # Get the active mesh
        obj = bpy.context.edit_object

        me = obj.data

        # Get a BMesh representation
        bm = bmesh.from_edit_mesh(me)

        for v in bm.verts:
            print("vert location", v.co)
        bm.free()
        pass

#Volume loop
for i in bpy.context.scene.objects:
    if i.type == 'MESH' and len(i.data.vertices) > 1:
        print(i.name, i.type)

        #Get mesh data from the active object in the Scene Collection
        me = bpy.context.object.data

        #Create an empty BMesh
        bm = bmesh.new()
        #Fill Bmesh with the mesh data from the object
        bm.from_mesh(me)

        print('Volume:', bm.calc_volume(signed=False))
        bm.free()

Results in:
Vert MESH
vert location <Vector (1.0000, 1.0000, 1.0000)>
vert location <Vector (1.0000, 1.0000, -1.0000)>
vert location <Vector (1.0000, -1.0000, 1.0000)>
vert location <Vector (1.0000, -1.0000, -1.0000)>
vert location <Vector (-1.0000, 1.0000, 1.0000)>
vert location <Vector (-1.0000, 1.0000, -1.0000)>
vert location <Vector (-1.0000, -1.0000, 1.0000)>
vert location <Vector (-1.0000, -1.0000, -1.0000)>
Cube MESH
Volume: 7.999999999999999

Your scripts are incorrect, you are ignoring scene objects and repeatedly printing data for the active object instead.
In both cases you are looping over scene objects with
for i in bpy.context.scene.objects:

Then you proceed to ignore them all by defining an "active object" with either obj = bpy.context.edit_object or me = bpy.context.object.data rather than iterate over i from the loops.
It should probably be something like me = i.data.

That did the trick, thank you helping out a n00b. :)


text:
Is it possible to use python to detect when Difference Boolean hides a mesh?
I have an enormous mesh (200mb) and a collection of small meshes that I apply as Boolean difference modifiers to it. Sometimes a modifier causes the original mesh to disappear, and I am trying to detect that with python. Currently my script applies separate loose parts after the Boolean and checks the number of objects to determine if it succeeded.  This works, but it is very slow. Is there another way for python to determine if the Boolean modifier caused the mesh to disappear?
Additional Info:
There are no doubles in the mesh.
Selecting Self-Intersection through the Blender GUI crashes my machine with an out of memory error.

you could check the number of vertices of the resulting mesh. But i i am not sure whether this is quicker....

You may check if etiehr your base mesh or your boolean cutters is non-manifold. A mesh can be non-manifold an have perfect topology, for example if you deleted a face and forgot to add it back

@ Chris, Thanks!  That is indeed faster.

source: Stack Exchange

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

sort: votes


text:
Mesh lines visible in object mode
hey there i was just applying some modifier [ mirror ] , then suddenly the mesh started to look like this somewhat a mix between wireframe and solid mode . how do  stop this from happening coz i feel its irritating ,

note : draw all edges is off.
and also it happens to only one particular mesh .AND YAH I HAD CLOSED THE SOFTWARE ONCE SO I CANT UNDO IT .

hello, maybe share your file? https://pasteall.org/blend/

looks a bit like z-fighting....is it possible that your object is doubled?

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


text:
how to parent a rigged grop of object using constraints to another object without messing up the constraint
i just rigged a fighter jet but forgot to add the engine nozzle to the rig or the empty . so here are the 2 different rigged objects  i want to make them move together so i selected the entire engine parts and parented it to the main rig as expected i just messed it up . i dont want to re do the whole engine again . please tell me how can i parent the 2 sets of objects without messing up with anything .

If the main body section of the aircraft already has a parent holding it all together, the cube,  and assuming you haven't already done so do the same with the engine parts?  Give them their own parent?
With both sections/groups having their respective parent to hold them together as two separate sections, add a 3rd and "Master" parent and make the 1st two parents, children of that.  Disable selectability of everything except the master parent so they can't be inadvertently pulled apart.
The aircraft is then dragged, rotated etc by ONLY the Master Parent.

Cont... When flaps, undercarraige, canopy, etc are to be animated, switch their Outliner arrows back on, keyframe each piece as required, then toggle the arrows off again.  Each movement will be 'local' to their respective parent, and of course the main parent.

well the engine is really complex and it is a working engine that is , it can do trust vectoring when scaling a main empty . and parenting it to an empty just makes it look fully dismantled , but i noticed that if i select all the parts of the engine and grab it it moves very well and doesn't hamper with the constraint is there any feature in blender other than parenting that a group of objects can be moved when a desired object is selected ???

close observation shows that your flaps control surface all are rigged and are parented to the box empty and it moves along with the rig and what you want is that the engine parts that you have made in another blend file that was imported to the current blend file needs to also follow along with the body. well parenting doesn't hold good for these things since it just messes up everything be it the constraints etc.
you can use group instancing over here, heres how:
so what you do is first select all the parts of the engine and press ctrl g and the press shift a and select group instance you will see a replica of your engine parented to an empty axis use the empty to position the replica in the desired position. and with the replica selected click on the main empty and parent it  to the empty using keep transform option. now you will see that along with the body the replica engine also moves when you move the empty. now you may notice that all the objects in the replica object look to be joined together to form a single object but you can edit every single object it by editing the actual engine you can even scale the thrust controller empty and you will notice that even the replica will be able to do the trust vectoring, hope it worked, thanks and bye.

man i just followed everything what you said and it worked so well . thanks a lot .

glad to hear that you have got the answer


text:
Is there any way to replicate "Aura Glow" reflective dispersion/iridescence glass effect in Cycles?
I'm currently working on a model for Samsung Galaxy Note10+, with one of the colors used on the phone is "Aura Glow" that is a very reflective glass that reflects  light (a la CD/DVDs):

However, I couldn't get the effect working as intended in Cycles, Blender 2.90.

Using the RGB Glass BSDF method shows the result correctly in Material Preview/Eevee, but appears transparent in Cycles render (note that the front of the phone appears as "see through"). Mixing with Principled BSDF didn't help much.

Using Anisotropic rainbow ramp method only gives out a solid red finish.

I can't seem to find any other method that actually reflects like what I intended to, so I'd like anyone to help me on giving a reflective glass like that GIF above.

Apart from the answer @Luciano has given: check your node settings. The node setup you're linking to uses Normal in the Mapping nodes, not Point. Although when I try it the difference is not as extreme as in your screenshot, but the results are definitely not the same when you're using Point.

@Luciano that works, but only in BI render, which is gone with the game engine.

Did you try using a metallic shader instead of glass?

@Luciano I've tested the second answer of the thread linked (which is a bit complicated lol) and after I tweaked a bit, it now look exactly as I wanted! Should I update this to include the node setup I used?

@logoffon no, don’t update the question, but post it as a new answer. You can answer your own questions on this site for other users to know

@ZargulTheWizard If you're referring to using PBSDF with metallic set to max and different IOR settings in place of glass in first method, it didn't work.

No, I mean just using metallic as opposed to glass, but thinking about that longer I can see the obvious problem  Sorry.

Turns out that this method actually do work, but for my use, a bit of tweaking has to be done to make it look like the actual phone:

Just one question, those four values on the left side, are you going to change them? Because they are not connected to group node inputs which means you cannot change them from outside the group. If they stay like they are, I have a much much easier node setup for you because there are a lot of redundancies... (for example, the Dot Product goes into Arcsin > Sin, which is nonsense... sin(arcsin(x)) = x.)

What a pity, the question is closed. But to make your node setup easier: Delete all four Value nodes. Enter the Strength 0.5 directly into the Bump node. Then delete all Math nodes after the Dot Product except for the last Modulo node. Now add a Math node set to Multiply Add. Plug the Dot Product in the top Value socket, enter 2 into the Multiplier input and 0.5 into the Addend input. Plug the result in the top value of the Modulo node, leave the bottom value at 1. That's all, you just need two nodes between Dot Product and Color Ramp.

I've already changed them to suit my need, so I don't really need to alter those again. But thanks for your suggestion!

Oh, and for varying the colors a little you can change the Addend value somewhere between 0.0 and 1.0, changing the Multiplier brings variation too, but going below 1 makes the colors less "rainbowy" and more monochrome.


text:
how is it possible to set alpha over as default for strip
Is it possible to set "alpha over" as default in strip? It's pretty annoying to have to change this setting for every strip...
and if yes, how? ;)

Yes, it is annoying. No, there is not a natural way to set "alpha over" as default from what I know.

You can't change the add/import settings, but you can batch change settings by selecting all strips needed, right click and select Copy to Selection.

Many properties will add values to full selection with +alt pressed, but it doesn't seem to be implemented for the blend modes.

yeah, thanks, this will make it a bit easier so


text:
Folders for movies / image sequence
Is it possible to set different folders for images (which where saved from animation renders) and for movies (which are the result of video editing)
For me it looks like there is just one output folder.
I personally think it is a lot of work if you want to make movies from image sequences you need these steps (especially if you have different output folders)

change your output to /images
render animation (which outputs the files to e.g. /images)
new -> Video editing -> add -> and then search for your images and add them
change your output file to your e.g. /movie - folder
render

I hope i am just to dumb to find a better alternative...!

Not entirely sure what you're struggling with. You can use the compositor and its file output node, if that answers your question. Also I'd suggest use davinci resolve instead of the VSE.

thx, did not know that ...just a beginner...

You can set more output directories in Compositor editor.

For a movie set output directory and format in Properties editor > Output Properties
For an image sequence use Compositor editor > File Output node

See: https://docs.blender.org/manual/en/latest/compositing/types/output/file.html

If you are looking for an option to later merge image sequence into movie you can use some external script in terminal. Under OS X I was able to manage a Quick Action that lets me select images (or folder) in Finder and with right click to use an action. There are additional installations needed like FFMPEG and ImageMagic, but ones it is done it is supper easy, but that is topic other sites, not here.


text:
Blender + iPad (sidecar) - how can i quickly use undo
I can use Blender on iPad via Sidecar - no problem with that.
Just the "handling" isn't that clear to me.
e.g. For "undo" - do i really have to tap 2 times on the command button on the left side, then open keyboard and tap on z? This sounds a bit too complicated for me. Does anybody know a quicker way to undo in Blender on iPad/sidecar?


text:
why does my parent to 3 vertices object jump on my chain animation?
I have made a chain animation with array + curve modifier.
I applied the array modifier and i am moving the chain by the y-value via drivers (a custom scene property).
I parented the object to the chain via 3 vertices, but on frame 55 it "jumps" weirdly. I have no idea why.
Why is that and how can i repair it?

blend file:

Your Chain part is being deformed by the Curve modifier and the parent vertices are distorted in such a way that causes the child object to flip at that specific point. The elements are being deformed by the curves which is visible in top view. If this is not important then you should consider using an Empty with Follow Path Constraint and parent the 3 Bars to it. The offset of the Follow path could also use a driver.  Here is your blend file with the above adjustments https://blend-exchange.com/embedImage.png?bid=n4Pk4rJB You should consider another way of animating to avoid bending .

that makes sense. Thank you!

You're welcome. Let me know if you need help setting up a simple roller chain rig.

of course...just tell me how you would do it! I love learning new ways!

With a little bit of delay here are two posts about Follow Path and Bike Chain that you may find useful: https://curiousblends.blogspot.com/2023/11/drivers-match-curve-modifier-position.html and https://curiousblends.blogspot.com/2023/11/creating-roller-bike-chain-rig.html

thank you! nice site you made there!!!


text:
control colorramp by a driver by a shading value

I want to control the "pos" value of the color ramp (here the 0.5) by a driver.
This would be easy, but...
the driver should be controlled by a value from the same shader nodes tree.
Is this possible? Or some clever workaround?
so e.g. i want to change the pos value by the y value here:

This is just an example - i need the driver. ;)

Does this answer your question? 'color' and 'position' input for Color Ramp node? Here I explained how you can either use drivers or - in your case probably better - simulate the Color Ramp with a Map Range node to mix colors. You can plug the Y value into the From Max input. But look at the other answer there, too. There is a more complex setup for building a color ramp with more sliders.

Ah sorry, my fault - your color ramp is set to constant. In this case you can use a simple Mix Color shader and for the mix factor you plug the Y value into a Math node set to Greater Than with the slider position as Threshold. But when you say this is just an example it may be important what exactly you need the driver for - different ways to use it might need different kinds of solutions. The more I think about it the less I understand how this actually should work - let's say the Y value varies along the geometry, then you want the slider position to vary as well?

for two values your solution proposal would be no problem, but if you have several stops and you want to control them, it would be soon become a pretty messy shader nodes setup with lots of mix nodes. I hoped i could output and input a value via shader nodes (or somehow else). That's why i wanted to use a driver driven by a shader value.

...that's why I said the solution might depend on what you actually want and not only the example. Also when you say several - for example, if several means 3 or 4 I would say, maybe a bit messy but better than nothing if you don't have any other solution. If we talk about 10 to 20 stops... well, that's gonna be really messy ;)

that's why i wrote: it's just an example, i need the driver ;)

Yeah, I see... the problem is you won't get that as driver, which would be the most simple solution. Since you can't get a driver, we need a workaround - and for the workaround it is helpful to know in which way the example differs from the real use. So in this case it is more or less you want to position many sliders instead of just one, is this correct? Or do you need them somewhere else as well, not only for the sliders?

Also the source for the drivers might get important: Object texture coordinates are dependent on location, rotation and scale of the object so you could get the Y values somewhere and maybe use them as driver. But if you use them only in the example and the real values come from a different source it might be more complicated.

yep, just many sliders, and yes, the y object value.

Let us continue this discussion in chat.


text:
Mesh lagging behind another mesh in the same target bone
I am currently making a hinge armature and there are a few meshes that is attached to the target bone (via object constraints). It looks like this:

However, when I rotate the selected bone on the X-Axis to move the hinge up and down, the tracks lag behind the rest of the other objects:

I have tried to weight paint all of them equally but it still prevails the same issue. The track has is parented to the curve and no object is parented to the armature (except the circular and box empties). Does anyone have a solution?

Okay, found out while accidentally messing around with the object constraint. I noticed the main gear piece was going in front of the armature itself. I set the bone influence to 0 on the object and now its moving with the bone properly.


text:
Error "Reported texture size limit is lower than output size" How I can render large res images in Eevee?
I'm trying to render a large resolution image for a wall graphic using Eevee but I get the following error message - 'Reported texture size limit is lower than output size'
My res is 23780x7913. The client likes the look of the Eevee render so would like to avoid using cycles if possible.

Hello :). There are some resolution limits for Eevee. You might need to split the render into parts and then combine. Related: Possible to set render border exactly

Okay, I'll give that a try. Thanks.


text:
join multiple objects together depending on the distance
Is there a way to select many objects and join only those that intersect or touch each other.
For example, I have a scene with houses and chimneys (seperated objects) and I want to batch join each house with its chimney.
I searched a lot for an addon or script but had no luck.
Thank you


text:
How can I make a sunset?
Ive been making a warehouse and the lighting is supposed to be like a sunset, but how can i do this and make it look nice?

I'd recommend just grabbing an HDRI  background off the Internet. There's plenty of free ones to choose from.

@JohnDvorak Thanks for the tip, but i would like there to be light rays falling in from the window, and i havent found out how to do that with a skyhdr and the rays without it being solid black

You could have visible air inside the room but not outside of it.

@JohnDvorak Thats pretty much what I'm looking for, Any idea how?

You want an object with a volume shader to hold the air, then tweak the density to determine how much light is captured.

I have a cube set up with colume scatter, is that what can hold the air? And which kind of light source can I use, because with a skyhdr it turns everything black

@cegaton Thanks alot for the info, I'll see how far I can get


text:
How to I cut a specific part of an object in order to have 2 separate objects?
I'm completely green to Blender.  Whilst I've used 3DS Max in the past, I haven't got a clue how to use Blender and it isn't striking me as very comprehensive, so I thought I'd reach out.  I've downloaded a public domain telephone box through STLFinder which someone expertly made but as one solid object. I've successfully finally managed to rescale it to the size I wanted and cut a hole in the base, but that's as far as I could figure out.
 I'd really like for the door to open then 3D Print the 2 sections and assemble it.  In edit mode there are countless thousands of edges and I'm feeling overwhelmed.  I've looked at various forum posts and youtube videos which talk about cutting an object clean in half, but I don't want half, I only want to cut out the door as an entirely separate object so I can design some sort of hinge for it ... but that would require cutting 3 dimensionally.  I wondered if a modifier like Boolean would achieve this and if so, how do I go about it?
Big thanks to all who responds!

I would try to press "L" key in edit mode with cursor over some part of the model. This selects "Island" in case the model is not merged together. if it is merged, you can try to select one face somewhere in the middle of the part you want to separate then press "ctrl +" to start adding faces to your selection. To separate your selection you can use "P" key then "separate selection"


text:
my object isn't being rendered
the door to my fridge isn't being rendered
this is it in modeling area

and this is it rendered

how do i get it to render the door

Have a look at the camera icon of your door object in Outliner. If it fades in like this then it won't be rendered.

You can turn it on with a click on this stuff.

actually the camera button its for rendering the a rendered image, and eye icon its for viewport rendering, i think the eye unchecked affects the other way of rendering too.

@MichaelBenDavid I tested it myself and I find turning off the eye won't make it disappear in final render process, but hidden in viewport rendering. So I think
the switches of visibility of "viewport rendering" (after all it's in viewports) and "final render" (by pressing "Render" button) are separated as "the eye" and "the camera".

If that is a viewport render then the eye has to be active.
And if you are using render layers and a viewport render make sure you have the door's layer selected and not just checked.
This can also apply to fully rendered layers if you are using Render nodes as well
checked layers will only show up in the full render where as the layer that is selected shows up in the viewport render
when the eye is active


text:
my objects glitch through plane when i try to make them particals
how do i fix this so the pear objects are actually on the plane instead of inside

its fixed i just had to go to edit mode on my pear and select all of it and move it away from the center which is the little orange dot


text:
how do i get the hair particles to stand up straight

The wheat is lying down and I do not know how to get the wheat to stand straight up like i would in real life.I do not know what i could try to fix this

You can increase the stiffness value of the hair if this is after animation

Also look here:https://blender.stackexchange.com/questions/39192/making-hair-go-straight-up-instead-of-following-the-shape/39194

While selecting the particle emitter mesh, go to the properties tab to the particle settings and under "render", check the box which says rotation.  Now you can go over to the wheat object and rotate it (in object mode) until the hair particles on the other object are standing straight up.  You will probably be rotating it by a 90 degree angle.
Let it be known, that in order for this to work correctly, the wheat has to have its origin at the bottom of its stem.


text:
Remove faces inside object
So I have a cube coming back inside of another cube ( it's the trigger guard thing going inside the gun handle ) and I want it to not go inside ( merge with the handle ) thanks !

Hello, Rex, welcome. Please try and  put yourself in our shoes.We do not have the advantage of context, and so have no idea what the 'trigger guard' and 'gun handle' are. All we see is a box and some stripes. Please illustrate from a meaningful angle, and explain very clearly what you mean by 'merge'.

You can select individual faces in edit mode and delete them by pressing "X", then select "delete faces".
For this scenario you could also (with that face already selected)press "G" to grab and "Y" to lock it to the Y axis, then enable snap to faces and hover your mouse over the face that's black in the picture(it's normals appear to be inverted but that was not the question). .

Move, along an axis and Snap To enabled, the opposite face that's inside. If the handle is sheared snap edges as well. Having done that you may remove the unnecessary face to save resources.


text:
Objects disappearing in animation render
I made a short animation with the camera following a path in between some floating objects (zooming in effect)
When I go to render, the objects disappear whilst they should still be in view of the camera as it moves closer.
If I change the clip start to 0.01, the same thing happens. If I change the clip start to 0.001 they still disappear and the topology of my objects looks really corrupted and bad.
I have tried resizing my entire scene bigger and also smaller, I have tried increasing the size of my objects and positioning them furthur away from the camera. I have tried making the path longer, therefore pushing my camera away and increasing the focal length, but none of these solutions make my objects visible for the whole shot.
Any other suggestions on how to fix this would be great!

please provide your blend file

It's possible your camera is too close to your objects origins, thus excluding them from view when the camera clipping is zoomed in.

@Chris Here's a link to the blend file https://we.tl/t-BHKUSYX6IW

weird. i have no idea why this happens. sorry.


text:
Image Texture material not showing properly on faces
I have a problem with an assigned material.
For the context: I have created a PNG image with Photoshop and saved it in PNG. Once I've done that, I went to blender, created a new material with the image texture node plugged into color and alpha channel. The preview shows me the correct visualisation but once I applied through an additional slots, but I get a full black rectangle instead in the render.
Do you have any idea how I can get this to display only the black part of my PNG?
Is there also a way to get some volume from the visible part of the PNG (visible = non-transparent parts of my image)?
Here is the original image (the PNG):

Here is my material nodes:

And finally the slot window:

Here you can see what I currently have with it:

If you are using EEVEE, you need to change the Blend Mode of your material (the transparent one) from Opaque to something else (Alpha-Blend often works well)

Is it UV mapped?

Hi Nathan,
Yes, the whole object is mapped.


text:
Merging keyframes from separate actions for 2 armatures with API
I'm honestly out of ideas with this one.
Basically I have 2 armatures, each one of them has it's own action.
In the end I want to still have those 2 armatures separated but only one action to drive both of them. I technically know how to do it via interface using some copy-paste shenanigans, but how can I access the full data set to duplicate it and place it in one of the actions along existing data?

Lots of poking and prodding but i figured it out.
Once I found out where the data resides I managed to pull it into array, sort it into usable multi-dimensional table and inject data to other actions.
bpy.data.actions[].fcurves.keyframe_points.co # [keyframe_nr, value]
bpy.data.actions[].fcurves.data_path #RNA path to property
bpy.data.actions[].fcurves.array_index #RNA index


text:
does anybody know the name of that menu so that i can extend it?
I know how i can extend a menu in python.
Unfortunately i don't know the menu-id/name of this menu:

Does anybody know it?

Possible duplicate: How do I access Context Menus with Python? (unable to flag since the suggested dupe has no upvotes or answers)

Hovering over that menu entry gives "bpy.ops.object.parent_set(type='BONE',...)" for the Bone entry if you have Python tooltips enabled under Preference > Interface > Display.

@Joachim: I think you are right

@JohnEason: Thanks, but i think this won't work for me.


text:
how can i compare whether an armature is the parent of an object?
i tried:
>>> armature
bpy.data.armatures['Armature']

>>> C.object.parent
bpy.data.objects['Armature']

>>> id(armature)
5263333632

>>> id(C.object.parent)
5263335552

>>> C.object.parent.as_pointer()
5630907912

>>> armature.as_pointer()
5304812232

as you can see, they are different, although it is the same armature.
I don't wanna compare by name because this is not safe according to another answer here on BSE.

I think this is intended. See https://developer.blender.org/T88914

thanks! so should i compare via name then? or what is the way to go?

I think comparing by name is the most reliable here, if you don't change them somewhere in your code beforehand. Could you add the link to the answer where it says you shouldn't do it so I can explore why ?

Also be careful, bpy.types.Armature is accessed via obj.data so you should test C.object.parent.data.as_pointer() and armature.as_pointer() instead. The same way you can't compare bpy.data.objects["Cube"] and bpy.data.meshes["Cube"]

link here: https://blender.stackexchange.com/questions/5950/testing-identity-of-two-data-blocks


text:
how to use poll in object and edit mode?
I want to assure in my add-on that the user has selected some edges.
I use poll to do so, but i got this error here:
ops.py", line 113, in __call__
    ret = _op_call(self.idname_py(), None, kw)
RuntimeError: Calling operator "bpy.ops.object.mode_set" error, can't modify blend data in this state (drawing/rendering)

I understood it in that way, that i must not change object/edit mode in a poll statement, i hope this is right?
Here is my poll def:
  @classmethod
    def poll(cls, context):

        oldMode = getMode(context)

        bpy.ops.object.mode_set(mode='OBJECT')

        bm = bmesh.new()
        bm.from_mesh(context.active_object.data)

        # check whether edges are selected
        noOfSelectedEdges = len([ e for e in bm.edges if e.select])
        WM_OT_dialogop.edges = noOfSelectedEdges

        bpy.ops.object.mode_set(mode=oldMode)

        if noOfSelectedEdges == 0:
            print("my error was set")
            myError = "Please select edges"
        else:
            print("my error was cleared")
            myError = ""

        return True # errors will be shown as text

And i think i need to be in object mode to get the selected edges that way.
What i want is to get the selected edges in edit and in object mode so the user don't have to be in a special mode.
Is that possible, and if yes, how?
Maybe i am on a total wrong way...i am open for better/cleaner ways!

Seems to be the famous change data from draw method error. See batFINGERs answer here: https://blender.stackexchange.com/questions/92213/using-python-to-create-a-popup-that-changes-an-object-based-on-the-input

@relaxed: Thank you very much, exactly was i was searching for!


text:
how to make the animation looks like it would animate from a whole sphere without gap?

So i made this tiny animation, but i would like to improve it in that way, that it looks like that the parts are perfectly fitting to that sphere without gap.
How can i do this?

Apologies, but what's happening here? Are those things thin wedges that are shrinking into the shape, or are they panels like an aperture, sliding apart?

just wedges, scaling down and moving inward. like a part of an onion ;)

Like this? https://blender.stackexchange.com/questions/65877/how-do-you-make-a-torus-telescope-open

@DuarteFarrajotaRamos: Looks very promising...i have to try whether i can transfer that to a sphere ;)

@DuarteFarrajotaRamos: thank you. Got it. Wasn't perfect, but...with a weld modifier afterwards it works like a charm [1]: https://i.sstatic.net/VoQsZ.gif

Neat, complete with a cap! May alternatively be achieved with a screw modifier in a mesh object, if bezier objects are a disadvantage. See answer here https://blender.stackexchange.com/questions/7850/how-to-edit-parameters-for-an-object-after-it-is-created/165516#165516

Yep, also a nice one!


text:
how can i assign a material to my selected vertices on one object to multiple objects?
I can assign my material in edit mode by selecting my faces, then select my material, then tap "assign".
But i cannot figure out how to do this to multiple objects?
My objects are all the same...just copies.
So i want all the same faces to be selected on my multiple objects and then the same material should be assigned. I know i can use the same material for all with CTRL-L, but i don't know how to do that "assign" thing in edit mode for multiple objects.

it's not clear, if all your objects share the same mesh (linked duplications aka Alt D), they will all get the same material on the same face, unless you've unlinked their material (objects can share the same mesh but each mesh can have its own material). If you've simply duplicated (Shift D) your objects don't share the same mesh

I'm afraid it'd be hard to implement this :). You're not actually assigning materials, just material slots, and every object can have different slots in different order ;). But I get you, i ran into the same issue yesterday :)

Not the same mesh…unfortunately


text:
how can i set the timeline to a non integer value (float value)?
I made an animation via python which sets some values on non-integers.
Now i would like to manually change these values.
how can i set the timeline on a non integer value? e.g. 12.5
I know i can change the values in the graph editor. But i would like to set the timeline and change them here:

Unfortunately i can't get these field to yellow because the keyframed value is 12.5

That's a good question... Acutally setting the Timeline to a non-integer value is quite easy, in the menu under Playback just at the bottom you can enable Show > Subframes. Instead of 12 the frame value is then shown as 12.00 and you can slide the frame marker to 12.5 or enter 12.5 in the frame value. The big problem is, if you want the keyframes to show up 3D Viewport because it only displays full frames. Setting the Timeline to 12.5, the 3D Viewport will show 12. Or maybe 13 if you move further. But since the keyframe is neither 12 nor 13 the values will never be shown yellow.

I've ran out of space again... Unfortunately, I can't find any Playback settings for the 3D Viewport allowing to show subframes. It makes sense in a way, since the viewport also shows the camera view and rendered preview etc., you would never see a subframe when you render the animation, so why should it be shown in the viewport...? Apart from setting inbetween keyframes.

thanks. You can write this as answer if you want, i will confirm that. But it is a bit sad so that i cannot adjust my values in the panel afterwards.

Maybe someone else finds a solution for that - although it helps for display in the timeline, it is no use for your actual problem because you would still need to change the values in the graph editor.


text:
how to select all rigid bodies in my scene?
I need to bake all rigid bodies to keyframes.
How can i select all of my objects with rigid body?
I tried searching for such a function but i didn't find any.

Select one RB, then shift-g select grouped -> collection -> rigidbodyworld .

Great Nathan, thank you!!!! if you wanna write an answer -> you will get 1 upvote and a check

Ehh, it's too short and I don't want/need to expand :)  Nor do I need points.  Feel free though!

yeah, i will add it, because i forgot this in 2 weeks and i will search again ;)

Thanks to Nathan,

select one rigid body object

Press SHIFT-G

Choose collection

If this object is only in one collection, you are done.
if it has more collections, you can choose the collection:

i was thinking of writing a script but then i tried this which is definitely the way to go :D

that's what i thought would be necessary too...fortunately Nathan know the shortcut and fortunately Blender implemented it ;)


text:
is there a pendant to "select-> Shift select -> ctlr-P -> parent -> keep transform" manually settings parents in the properties?
is there a pendant to "select-> Shift select -> ctlr-P -> parent -> keep transform" parent settings in the properties?
I searched in properties but i couldn't find "keep offset" under "parenting".

Well, the problem with this is that "keep transforms" and "keep offset" are two different things. The transformations are what is done to the object in relation to its reference point's location, rotation and scale. This is either the world center or the parent's origin and transformation. The offset between two objects is determined by the differences in location, rotation and scale in relation to a mutual reference point, the world center usually. I'm sure you are aware of these things, I guess the question is (since there is no such option) what you would want as workaround? A script maybe?

thanks for that explanation. I didn't even was aware of that difference...♂ i still have a lot to learn...! - so you DO overestimate me

Of course I'm oversimplifying here. I think you can only do this by calculating the differences between the two objects and inserting them into the transformation values after parenting.

By the way, the Parent > Object (Keep Transform) option doesn't make any difference to the simple Parent > Object if you are not changing the parent from one to another.


text:
How to copy an animation from one bone to another bone?
Is it possible to copy animations from one bone to another?
I have one armature per leg in my robot rig.
Now i made a follow path bone constraint and animated the offset.
Can i copy that animation to the other bones?

Not quite what you asked for, but this YT video might give you a few ideas.

Thanks John, i already watched and rebuild that ;) i am working now on his successor video and he copied it manually and i hoped there would be a better way...

Ah ok. I did that one sometime last year.

that vid was also my inspiration to make my spider robot also with 6 legs :D https://youtu.be/PjK7SH9Y7Ik but it was a pain to animate the movement XD

For me personally: he makes the best Blender tutorials at the moment.


text:
what does the number aside the mesh symbol mean?

what does the number (2,3,4) in the outliner aside the mesh symbol mean?

i think it's children. if you parent an object to another object with Ctrl+P, it will increment

you are right - i just found out too :D

I think it's the price in dollars, you owe 19$

Thank you moonboots - you are just the best Blender expert I know‼‼‼‼


text:
Is there a way to clear sharp edges using bmesh in python?
I'm trying to speed up an addon that had to toggle into Edit Mode for sometimes thousands of object by staying at the object level using bmesh instead of object.editmode_toggle().
Is there any operation to clear sharp edges without having to enter Edit Mode for each object?

Related https://blender.stackexchange.com/questions/41351/is-there-a-way-to-select-edges-marked-as-sharp-via-python

You can set use_edge_sharp flag per edge on MeshData.edges in Object Mode:
import bpy

obj = bpy.context.object

# Clear sharp state for all edges
for edge in obj.data.edges:
    edge.use_edge_sharp = False

If there is no way around Bmesh for whatever reason, you can set the smooth state of all edges to True in Edit Mode:
import bpy
import bmesh

obj = bpy.context.object
me = obj.data
bm = bmesh.from_edit_mesh(me)

# Clear sharp state for all edges
for edge in bm.edges:
    edge.smooth = True

# Update the mesh
bmesh.update_edit_mesh(me, False, False)

Related: Is there a way to select edges marked as sharp via python?

While this is not the requested bmesh solution, this should be faster due to not requiring the bmesh conversion. If your workflow has bmesh conversion anyway, you can use this before or after the bmesh part, not during.

Yeah, absolutely right, should be indeed way faster without the conversion... Thanks @kheetor

Thanks. I'm going to experiment with different methods and see which combination of approaches works the fastest. The main method that I could only get with bmesh or toggling into edit mode was limited dissolve. I think there are other ways to do this as well, since I think it is mostly removing/merging colinear edges and coplanar faces.


text:
Making a chain with changing size

I want to make a chain with an increasing thickness or a increasing size.
Increasing thickness would be better, but a changing size is also okay because it effects also the thickness.
What I have so far is a closed curve with an array which follows a helix spline.
The helix spline is needed because I want to print a rather long chain (800mm).

Have you tried just animating an array modifier?

Note yet. The Setup is just one curve with a bevel and an normal array. But with the array I can just copy the first object a couple of time?

Does this solve your issue? https://blender.stackexchange.com/questions/58564/curve-bevel-function-scale/58567#58567

no, because this changes a single curve and I want to change it only in the array.

All what is needed is an Array Modifiyer and an empty.

Add an array modifier to the oject.
Add an empty to the scene at the red dot.
Scale and rotate the empty slightly. Thats to get a spiral and a decreasing size.

Adjust the fine tuning with the relative distance. (Y und X values in my case).

If the empty is rotated, it creats a chain ring.
If you want to print it: move the empty downwards, until all segments ar on the same hight.
Also there is an advantage because there is no curve modifier wich deformes the single sements of the chain.


text:
Make a Pie-Specials Menu, dependent on selection type
I want to do the following with Python:
I have 3 different menus, and I want them to appear, dependent on the selection mode.
So when I'm in faceselectmode, I want with the same button a different menu as if I'm in vertselectmode.
I think, with a for loop that could be possible, but I don't now how to set variables that makes sense and also the rest of that code could be complex.
So I just need a for loop which checks in which select mode I am in. Because it's possible that there could be more options chosen, I thought that the best solution would be to get only a special menu, when there is only one selection type.
So that's the code I have so far (doesn't work) the bool variables also could be one step too much.
import bpy
from bpy.types import Menu

select_vert=bool

select_edge=bool

select_face=bool

tool_settings.mesh_select_mode=tsm

for bpy.ops.mesh.select_mode in type #what?

    if  type ='VERT'
    select_vert=True
    select_edge=False
    select_face=False

    elif type ='EDGE'
    select_vert=False
    select_edge=True
    select_face=False

    elif type = 'FACE'
    select_vert=False
    select_edge=False
    select_face=True

In blenders text editor you can find a template for creating a pie menu. You will probably want to turn your script into an addon to make your menu available every time you start blender.
Starting with the pie template, you want to alter the menus draw() to work how you want.
In the context that you get in the draw method, you can access tool_settings.mesh_select_mode which is the three boolean values for the current select mode setting. You then test them to decide if you add the related items.
def draw(self, context):
    layout = self.layout
    pie = layout.menu_pie()
    sel_mode = context.tool_settings.mesh_select_mode
    if sel_mode[0]: # vertex on
        pie.operator('mesh.remove_doubles')
        pie.operator('mesh.merge')
        if not sel_mode[1]:
            # only vert select - don't show if edge sel is also active
            pie.operator('mesh.bevel', text='Vertex Bevel').vertex_only=True
    if sel_mode[1]: # edge on
        pie.operator('mesh.mark_seam')
        pie.operator('mesh.edge_rotate').use_ccw=False
        pie.operator('mesh.bevel', text='Edge Bevel').vertex_only=False
    if sel_mode[2]: # face on
        pie.operator('mesh.flip_normals')
        pie.operator('mesh.inset')
        pie.operator('mesh.poke')

Thanks, that was exactly what I needed. The templates you mentioned, I already used or got it from elsewhere. (I modifiy the official piemenus for my Spacemouse).

I've used your code to enahnce my specials menu suite and it worked well. You mentioned the addon template. Because I made a whole bunch of scripts (13) I would to enable it with an _init File but that doesn't worked. I Asked a Question but got no awnster, do you may know something? https://blender.stackexchange.com/questions/109570/python-code-problem-of-a-modifed-addon-using-spacemouse-pro-with-blender-with-m


text:
Don't know how to return to pose mode
I don't know how to return to Pose Mode. I went to Edit mode and know the Pose Mode don't appear. I've made Ctrl + Tab but it doesn't work.

it doesn't look like you have selected an armature

You have to select the armature to go back to pose mode, it looks like you have the mesh object selected instead.


text:
Screw Modifier On Top of Shape Key

I was trying out the shape key addon using this demo SVG. The morphing works fine, but when I apply the screw modifier the normals look reversed for both the shapes. How can this be fixed?

Have you tried the 'Flip' checkbox in the Screw modifier?

It looks like it's the problem, I think you can put it as an answer

@RobinBetts Yes, that was it. Thank you! If you could just put it in the answer, I would mark the question as answered. I have another related question. Will create a separate topic for that.

You probably need to set the 'Flip' checkbox in the Screw Modifier. ;)

Or, come to think of it, put a '-' in front of the Angle...

:) Yep! And apparently, Blender follows the right hand thumb rule here also, just as in case of setting normals to the faces. So another way of achieving this is to reverse the curves in the source SVG.


text:
how should i export the rig to use in AR
so i am in the middle of an internship and i have been asked to learn rig to implement the rig on jewellery models and the jewellery models are going to be used in AR(we can try those models in real time & the models gonna move according to your like snapchat filters) and i tried exporting the rig and the model in GLB format and then tried in facebook meta but its just placing the model onto the face but its not following the movement.
so how should i export the model and the rig? and should i have to add animation too in order for it to work?
i am attaching the .blender file of that model using https://blend-exchange.com/ and that model is for practice so you can download that without any hesitations.


text:
i'm adding camera for my scene to render but around my object unlimited camera is appearing and also i'm working on geometry nodes

blender2.93.1 camera issue in viewport

Looks like you have chosen the camera as Point instance object. Either choose another object or just remove the camera as point instance object.

if my solution doesn't help you, please show us your node tree


text:
move 3d cursor if i have enabled select with right click
I want to move 3d cursor using shift + right click but i have enabled select with right click instead of left click. i don't want to use cursor tool
is there any way to move cursor without using cursor tool or enabling selection with left click?
thank you for any help...

In the Preferences where you enabled selecting with right-click, there is an option called Alt Cursor Access. If you enable it, you can use Alt+LMB to place the 3D cursor.


text:
Imported genesis 8 female's vertex groups are not following bone they should be parented to (I'm a noob)
I recently brought my Genesis 8 Female to blender using the Daz to Blender bridge. I was happy with the results until I tried to pose the figure. It seems the vertex maps for the "upper jaw" and center forehead are not parented correctly so when I rotate the head, they do not follow (I believe this is the root of the issue). I feel like I've looked at dozens of solutions online but I haven't been able to find something that works. I have no idea how to simply tell those vertex groups to follow the head's movement. Please help if you can.

cool thanks guys

The weight painting is probably off. To fix the teeth find the vertex group with the weight painting for the head first. The bones of the armature have vertex groups with the same name. I don't know if the teeth in your model is a separate object. In my model, it is.
Select the head object, go to Weight Paint mode and search the list of Object Data Properties > Vertex Groups for the head bone. If the head turns red, you probably found the right one. Remember the name of the vertex group. In my example, it's "spine.006".
Disclaimer: I used Rigify's metarig for a quick pose and the weight painting is very rough and done lazy. But it does the trick for the non-animated pose.

Go to Object Mode and select the teeth object (ignore this step if the teeth are in the head object.) Switch to Edit Mode, select all vertices of the upper teeth and the palate (key L may help). Assign the selected faces to the "spine.006" vertex group. Create a new one if needed. The upper teeth should be in place now.
Repeat the steps for the lower teeth if needed and assign them to the jaw vertex group ("spine.005" in the screenshot). So you can open the mouth properly.

For the glitch at the forehead, you need to check the weight painting in the vertex groups to see what's wrong there. There is probably one vertex assigned to another bone/vertex group or not completely assigned to the head vertex group.


text:
Where do I find a button "Lock Layers and Used Camera to Scene" in Blender 2.92.0?
Where do I find a button "Lock Layers and Used Camera to Scene" (the lock icon in a 3D viewport) in Blender 2.92.0? Rendered Picture is not what active camera shows

Used camera is right here in scene properties:

and if you tap the filter symbol here:

and then press the arrow (selectable)

you can then tap on the collections selectable icon (to lock the layer)


text:
Gap between edge of lattice and mesh when using simple deform
I'm stumped, I can't figure out what's going on here. I've got a lattice and a plane with identical x & z dimensions. When I use a Simple Deform Bend of 360 degrees on the lattice, the edges meet seamlessly to create a cylinder - but the edge of the plane don't. It's as if there's a gap being created between the edges of the plane and the edge of the lattice.
All transforms are applied apart from the y scaling on the lattice. Changing that back to 1 doesn't change anything, and neither does moving the empty I'm using as the origin for the deform. The solidify is just there to show what's going on from the top view - removing it makes no difference.

In the Lattice properties, change the interpolation from B-Spline to Linear. There is by default a smooth interpolation between the control points when using a Lattice.

Side note, for this kind of transformation, you only need a 1-dimensional lattice.
Result, with a Weld and a Solidify modifier :

Thank you! This has indeed fixed the problem. And thanks for the tip about the 1D lattice!


text:
How can I animate multiple objects to be highlighted in a scene?
For an explanation video about my company's products, I have an animated scene in Blender 2.8 with a large number of mechanical parts of which I'd like to highlight a specific collection of parts, for example by making them flash in red.
The closest option would be to animate the material of these parts with a second shader that makes the objects stand out and keyframing the ratio between the regular and the highlight shader from 0 to 1 with a mix shader node. However, since I have 50+ parts with 50+ unique materials, that would be a lot of manual work to set up and keyframe for every individual material used, not to mention that every material would have a set of nodes that is only used once in the animation which makes the already big scene even messier.
What other ways outside of material editing would exist to highlight a large set of objects at the same time?

Swap out materials with a frame change handler
As a proof of concept, here is a handler that simply swaps out all of the materials of an object when frame is withing a range defined by a custom property
A dictionary of each scene objects name to material names is created and printed (xxx)
materials = {o.name : [
    s.material.name if s.material else "None"

    for s in o.material_slots
    ] for o in scene.objects
    }

print(materials)

for my very simple example scene has 3 objects, the lamp and cam have no materials, the cube has 3 slots set to, in order, "Material", "Red" and "Red".   If slot is empty it is given the name "None".
{'Cube': ['Material', 'Red', 'Red'], 'Lamp': [], 'Camera': []}

so instead could replace the generation (xxx) with (for my example)
materials = {'Cube': ['Material', 'Red', 'Red'], 'Lamp': [], 'Camera': []}

The handler script.  Creates the dict and on a frame change if any object in scene has custom property "highlight" and the frame is in the range defined by property a highlight material is used for all materials of that object.
The script only need be run once. As with all scripts make sure you save your file first.
import bpy

context = bpy.context
scene = context.scene
scene.frame_set(0)

highlightmat = "Red"

materials = {o.name : [
    s.material.name if s.material else "None"

    for s in o.material_slots
    ] for o in scene.objects
    }

print(materials)

def frame_change(scene, depsgraph):
    iframe = int(scene.frame_current)
    for ob in scene.objects:
        highlight = ob.get("highlight")
        if highlight and iframe in range(*highlight):
            for s in ob.material_slots:
                s.material = bpy.data.materials.get(highlightmat)
        elif highlight or not iframe:
            for key, s in zip(materials[ob.name], ob.material_slots):
                if s and key:
                    s.material =  bpy.data.materials.get(key)

bpy.app.handlers.frame_change_post.clear()
bpy.app.handlers.frame_change_post.append(frame_change)

Frame 0 is used as a default reset. Suggest don't include 0 when defining object highlight ranges.
Set the object highlight range
To highlight the current context object from frame 2 to 30, go to python console and type in
C.object["highlight"] = [2, 30]

(Not sure how to do the list with UI)
If you know the names of all your objects, could also hard code this into the script above.  Eg to have "Elvis" highlighted frames 20 to 444
bpy.data.objects["Elvis"]["highlight"] = [20, 444]

then with the handler active playing animation will cause all materials to swap to highlightmat  which I have set to use the material named "Red", change to suit
highlightmat = "Red"

EDIT
In as much as can swap the materials as shown above, consider setup materials to use the object info node utilizing  the pass index or object color to flag and animate a highlight.
Control object emission strength (not material)
Same Material with different key frames

Very nice : ). I'm still relatively inexperienced with coding. Could the line affecting the Elvis object be changed into something that would affect the "highlight"property of all objects in a certain collection? Something with bpy.data.collections.all_objects perhaps ? (I think that would make it easier to manually create the distinction between objects that need to be highlighted and objects that don't)

Yes.  Something like for ob in bpy.data.collections["Foo"].objects: to iterate thru all objects in a collection.

I got it to work. Thanks : ) I think it would benefit your answer and any anyone who wanted to use it and who isn't that familiar with coding. (I considered editing it but i wasn't sure if that was polite or appropriate, since there isn't anything wrong with your answer)

You could duplicate all the objects (perhaps scale them up a percent, and maybe put them all in a separate collection), and give the all duplicates the same material with Make Links (Ctrl + L) > Material. Then do something like make this material have a Mix Shader, with a Transparent BSDF and red Diffuse BSDF plugged into it. Then Animate the Fac value of the Mix Shader.

EDIT:
You could do the work but copy-paste the extra nodes and copy-paste a driver in the Mix Shader to decrease the amount of manual work.
Add an empty, add a custom property (Object Properties > Custom Properties), give it a nice name (optional), right click the value field and choose Copy Data Path.

Create a node setup with a Mix Shader as an alternative output for a material. Give it a nice frame (optional). Right click the Fac value and choose Add Driver.

Edit the driver right away when it pop up, or with the Mix Shader selected go to the Drivers window. Type: Scripted Expression, Expression: "var", for Prop target the empty object, and hoover over Path: with the mouse and press Ctrl+V to paste the custom property data path.

Sadly when you copy-paste the highlight nodes to another material the driver  isn't copied with it, but you can easily copy paste a driver by right clicking the field where the driver is applied. Connect it to the other nodes, and no need to delete anything; the last selected Material Output becomes the active one. (Once i had the nodes and driver set up, it took me only a few seconds to paste an connect them in to each material.)

Since all drivers share the data path they are all driven by the same custom property. And it can be animated.

This is not a bad method, the material linking works flawlessly. However, scaling up the duplicated object and making it overlay the smaller one has proven to be a small challenge. The downside to this method is that it basically doubled my active poly count, which makes the rendering quite slow.

Edited my answer. Maybe it can help : )


text:
Why are the textures on imported objects not displaying correctly in my scene?
I have a small scene with an imported CAD model in Blender 2.9. I have textured a vastly similar model before and imported the textures from the old project (Blender Version 2.82) into the new one.
The preview in the material tab displays the texture correctly (A).
When I apply the material to any imported object in my scene, I only get a solid color material without texture. This applies to the viewport as well as a rendered image (1).
When I copy the object the material was originally applied to from the old project file, it is displaying correctly in my current scene (2).
When I create a new mesh and apply the texture on it, it is also displaying correctly (3).

What could be the reason for the tiled texture is not displaying on the imported objects?
You can download the full project file and take a look yourself.
https://filebin.net/1jzdwh6t52jtfioi/Texture_issue_scene.blend?t=pm3p6t1q

I didn't check your file, but isn't that your CAD model is missing a UV map?

I tried to work with UVs and I unwrapped the object in question. It didn't solve the issue and the old object wasn't unwrapped either, yet it still seems to be working.

Please for a next time share just simplified blend file, like only object 123 seems to be enough to see issue.

Object 1 doesn't have an UV map, object 2 have.
When I Unwrap object one, like Cube projection or if you go to top view and Unwrap from View, it works for me.

Well, that makes me look like an idiot :)
Apparently, when I tried unwrapping last time, I did something wrong. After reading your comment I tried it again with cube projection, now it works. Classic issue, classic solution. Thanks for your effort.

No problem. We all have those ... :) We use to say "The greatest darkness is under the candlestick".


text:
Issue with Multiresolution sculpt: parts of the object cannot be sculpted

Parts of the object I am sculpting have stopped responding to the brushes.

A chunk of the object, divided by a harsh line, is no longer capable of being edited in sculpt mode by any means I can find. When looked at from particular angles, the un-sculptable section disappears as well. The dividing line seems to be based on the geometry of the low-res base mesh that was sub-divided by the multiresolution modifier.

I noticed the issue first on the legs of the model, which were not attached, but were part of the same object. I deleted them in the hopes of just creating another object for them later. The issue then appeared on the head after I undid a grab which moved a lot of the face.

Reverting to a recent save sometimes allows the whole face to be edited, but as soon as something is undone, the chunk goes back to being unresponsive.

Changing the sculpt settings (threaded sculpt ect.) had no effect. Changing in and out of object, edit and sculpt mode had no effect.

Thank you for your time.

you should check 2 things:

Is there any "mask" applied (ALT + M to remove any mask applied)
you can sculpt only the selected mesh: if the lower part of the head is another mesh, you need to select it in object mode or join all the meshes so they are 1 single object


text:
How can I make an animation using importing several x3d files to Blender by scripting?
I have some x3d files made by ParaView. I need to write a script to import these objects sequentially to Blender and make an animation. When each object is imported to 3D View Editor, a keyframe should be created. Then this object is deleted and the next object needs to be imported to make the next keyframe.
After doing the same for all objects, the made animation will be played.
There are some scripts to make jpeg files as each frame of animation and save it as mpeg or avi format. But,I need to export the above made animation as an Alembic file and import it to Unity.
I would be grateful if anybody can help.
Thank you so much.

Method suggested looks unsound. Please add more detail, eg are imported objects different or could they be considered shapekeys of each other.  ... are you mixing keyframe with shapekey above?

The imported objects are the time dependent CFD simulation results. They are velocity vectors at different time steps which have been post processed using ParaView and exported as x3d files to Blender. They are different and cannot be shapekeys of each other.

I have the same problem. I somehow managed importing the .x3d files. However I couldn't animate it. Here is my detail information: I have 11 .x3d files representing a simulation at time of 0 second, 10 seconds up to 100 seconds. I want to set frame 0 to the file at 0 seconds, frame 1 for the file at 10 seconds and so on. I hope the importing scripts will help. My importing script is:
    import bpy
    import os
    import sys
    from mathutils import Vector

    importFolder = "./x3d" #the relative path of the folder containing the files
   # Fixed parameters
    geoName = "imported_geometry1"
    blenderVersion = bpy.app.version
    if blenderVersion[1] >= 79:
      x3dImportString = 'Shape_IndexedFaceSet'
   else:
       x3dImportString = 'ShapeIndexedFaceSet'
      #--------------------------------------------------------------------------#

      # Turn relative into absolute paths
      importFolder=os.path.join(os.getcwd(), importFolder)
       # Get a list of all files in this directory - these are going to be the files we
       #import and visualize
      importFiles = os.listdir(importFolder)
      importFiles.sort()
      # Start the rendering loop over all import files
      for frame in range(len(importFiles)):
    importFile = os.path.join(importFolder,importFiles[frame])
    print("Processing frame ",frame+1," importing ",importFile)

    bpy.context.scene.frame_set(frame+1)

    # Import the current object, either supplied as a .ply or a .x3d file
    # The geometry will always be renamed so it can be easily used later on
    bpy.ops.import_scene.x3d(filepath=importFile, filter_glob="*.x3d;*.wrl", axis_forward='Y', axis_up='Z')
     # check for geometries / meshes, lamps and cameras
    imported_geo_exists = [item.name for item in bpy.data.objects if x3dImportString in item.name]
    nImportedGeo = len(imported_geo_exists)
    imported_lights_exists = [item.name for item in bpy.data.objects if ("TODO" in item.name or "DirectLight" in item.name)]
    imported_cameras_exists = [item.name for item in bpy.data.objects if "Viewpoint" in item.name]
    # rename geometry
    if imported_geo_exists:
        for i in range(0,nImportedGeo):
              bpy.data.objects[imported_geo_exists[i]].name=geoName+str(i)
        bpy.ops.object.select_all(action='DESELECT')
        # delete lights and cameras that blender creates after import
        if imported_lights_exists:
            #bpy.ops.object.mode_set(mode='OBJECT')
            bpy.ops.object.select_pattern(pattern="TODO*")
            bpy.ops.object.delete(use_global=False)
            bpy.ops.object.select_pattern(pattern="DirectLight*")
            bpy.ops.object.delete(use_global=False)
        if imported_cameras_exists:
            #bpy.ops.object.mode_set(mode='OBJECT')
            bpy.ops.object.select_pattern(pattern="Viewpoint*")
            bpy.ops.object.delete(use_global=False)

```

Thank you for the script, but I had imported the files but I still have the animation problem.


text:
Blender 2.8 Eevee depth of field "geometry clipping" issue
I have a problem with strange depth of field artifacts in Eevee on my Mac Pro (tech specs on the pictures below). It looks like everything is what it should be.  defocused is cliped by the camera (but its not the case of wrong camera parameters). Render is transparent in this areas. Sometimes even if the viewport shows me the proper Depth of Field, the render has still the same issue.
Thanks for any help!
Maciek S.
Screens are from Blender build 2019-02-12.

Yes in Cycles everything looks ok. I found some workaround using defocus node in post. Enyway the bug is still there.

My understanding is that Eevee depth of field has significant limitations. See this video:
https://www.youtube.com/watch?v=HdTgf4gRXgc
I'm finding this to be a serious impediment to using Eevee.
If you render your scene in Cycles, does the issue go away?

Please add an excerpt of the video, for the benefit of those with tight bandwidth constraints


text:
Create vertex groups (with names) when joining 2+ meshes
Is there some what I can in 2.8:
Join multiple objects together to a single object (Ctrl-J) and use the original collection object names (Head,Arm.R,leg.R etc) to auto create vertex groups for each object (inside the new object)
I ask as I have a character who's parts are al cleanly separated as objects, parented , collection-ed and now I would like to rig it.
If there's a "right" way to move forward, I'd love to hear it, but I'd also love to solve this question too.

It seems that you are creating a workflow for yourself. I would suggest that you create a script that creates a vertex group on all your object naming it as you want and assign it to all the objects vertices. There are no such function in place but it shouldn't be too complicated to do.


text:
proper link left/right assets for rigging (2.8)
Can you help me understand the error of my ways?
In 2.8

have a standard character with nicely detailed & mirrored left/right sides.
The character is rigged with vertex groups.
Arm.L and Arm.R are WERE linked duplicates - but I broke the link to assign left/right vertex groups.
If I now want to modify an arm, I have to relink the objects (ctrl-L), modify them, unlink them and reset the vertex groups (manually?).

So, point 4 obviously can't be the right way to go about this. In fact it's only manageable since the model+armature is quite simple.
Q) How do you keep assets separated (say a rigid armour piece) while using it in an armature modifier or "child-of"-bone constraint.
Thanks for your time.
Marc


text:
Blender Blendshape meshes, UVs, and textures
Here is what I want to achieve
Input: Three face models that are correctly UV mapped different textures.
Goal: Create a blendshape and animate between them.
Say A is a face with mouth and eyes closed, B is a face with eyes open, and C is a face with mouth open.
Then for, A(0%), B(50%), C(50%), I want eyes and mouth half open, and this can be achieved by simply using shape key. Morphing 3 textures are also possible by changing the balance of diffuse of 3 materials.
But the problem here is that it uses the UV coordinates of A, not blending of B and C, so now the morphed texture doesn't make sense.
Is there any way to solve this? eg. something like shape key for UVs?

You already have the MESH part covered in your setup (standard) shapes. Good.
Now you also need to setup drivers to the SHADER aspect of this.
And it´s due with a simple FACTOR setup (greater than) Evaluation. If it returns a number above ZERO, expression is true, it SHOWS the texture. If it´s false, return TRANSPARENT (or default texture).
You may thank me enough to have searched for you this jewel, and thank you for voting me up as the answer.
https://www.youtube.com/watch?v=0glf-acMvcw


text:
Eyes as second mesh not following head as first mesh
My problem is this:
I made a fox and rigged the head which moves perfectly.
I made a second mesh for the eyes which are rigged perfectly.
BUT I can't manage to 'glue' the eyes to the head so that when I move the bone of the head the eyes move with the head!
Any idea? Cant find anything with google.
Best,
jb

"I made a second mesh for the eyes which are rigged perfectly" > Are you sure the eyes are correctly parented to the head bone? You have to check out in Weight Paint mode.

Join the objects and armatures together as one object and one armature, then parent the eye armatures to the head.


text:
Following Path Bone Jumps at the end of the path
When I select the bone, then Path, then ⎈ Ctrl+P Follow Path the bone goes straight to the end of the path.
I tried Clear origin, parent, offset etc etc but no luck.

Fixed it... I did a parenting from the bone to the mesh with Keep Transform...


text:
(2.8/9XX) Addons show up in the list but not in the interface!
I read lot of questions on forums and all, but mine is slightly different.
Sometimes I click install, choose the addon etc. Most of the time it appears in the list, but sometimes I only get a notification in the status bar "module installed..."
Now my real problem is that while it is installed in the preferences, it doesnt show up anywhere!
Just cant use it!
It was happening in 2.8x and still does in 2.9x (I tried the beta and 2.92 alpha as well)
I did not mind so much but I really need some of those now...
Which ones I tried?

Sverchok
2 addons for more sculpting brushes
animation nodes...

Any idea for me? :)
EDIT: I also tried while running blender as administrator (I am on windows 10)
Thx
pyrrhon

My first idea would be that you've just downloaded the repository as .zip and not the proper release. See this answer for reference.

My problem is not the same as in your link. I do get the addon in the addon list, it is enabled... It just doesn't appear anywhere in blender, no menu, no nothing...

Check if there are any error reported on the console (Window > Toggle System Console). Additionally make sure that you don't filter add-ons in Sidebar > Tool > Workspace > Filter Add-ons. Also make sure that you're following the install instructions. For instance Sverchok provides a "Troubleshooting Installation Errors" section in its ReadMe.

one of areas on screen you have to change to type Sverchok


text:
3D Space Mouse in Manjaro Linux
I keep getting the 3D Connexion space mouse to work in Linux, not using it for a while, and coming back to find it not working again.
This time, I went through the Arch wiki page on 3D Mice, first trying to install the Proprietary driver, forgetting that it doesn't work.
Next, I went through the spacenavd installation, realized I already installed, and tried reinstalling it.  However, when I got to the step that says to fun # spacenavd -v -d, it never printed out anything, and I had to CTRL+C out of it.
Finally, I came across the part where it says that Blender has built in support for 3D Connexion space mice, and I remembered that once upon a time, after laboring over installing the proper drivers, I realized that it was working all along in Blender.  I tried it... it didn't work.  I tried it in the Snap, Flatpak, and Official Repository versions of Blender, and none of them worked.  I tried it with spacenavd -v -d running, and it still didn't work.
I'm on Manjaro KDE and have the wired 3D Connexion mouse.  lsusb and grep 3Dconnexion /proc/bus/input/devices both recognize the device, and the LED lights are on.  Also, if I try running the proprietary driver, the demo files work but not blender; and when I stop it, the LEDs turn off until I plug the device back in.
Does anyone know why the built in support for space mice isn't working for me?

perhaps this will be useful for you.
In this link, eearcher says that theirs wouldn't work with any apps until this was done:
sudo cp ~/.Xauthority /root/
sudo spnavd_ctl x11 start
sudo systemctl restart spacenavd

Then their log files looked good:
Spacenav daemon 0b3f9c8
reading config file: /etc/spnavrc
adding device.
device name: 3Dconnexion SpaceExplorer
using device: 3Dconnexion SpaceExplorer (/dev/input/event13)

Then they could successfully try out the (must compile yourself) examples from here: https://github.com/FreeSpacenav/libspnav/tree/master/examples
Note that they couldn't get it to work with the flatpak version of FreeCAD, but it worked fine with the community package "freecad".  Unsure if Blender is similar, but suspect so.


text:
My global axis are all wrong and tilted
so im animating, and ive realised that when i use move a bone in pose mode along the global z or y axis (using the curve graph or by editing the transform) that the z axis is actually completely different. i think the difficulty arose when i moved something on its local axis, and now all of the data is messed up somehow
i have tried reinstalling to check if it was blender being weird, but it must be something within the project

the axis that goes from bone's head to tail is the Y axis and not the Z axis, maybe it is what confuses you?

Try tapping the Z button twice. You should see the axis line change. One tap* on the Z key moves along local axis, the second tap* on the Z key glides along the global ("true") axis.
Think of it like in Astronomy with time and sidereal time. It's the exact same thing.

it worked for me by tapping the actual Z axis.


text:
Viewport navigation center snapping to surface (like in CAD software) for simpler use of 3d mouse
I was using the 3D connexion space mouse for the first time within blender and was missing a critical navigation feature when comparing the 3D mouse behaviour to classical CAD software. In CAD the viewport navigation center (pivot) always snaps to the closest surface in the middle of the screen, making it far easier to navigate through more complex scenes.

As this feature was missing, I created a python script that emulates that exact behaviour. It works in three steps:
First it detects if the camera is currently moving. If the camera stops, it then defines a ray trace from the center of the viewport camera into the scene, looking for any surface to hit. If the trace hits a surface, the viewpoint center is then set to the trace hit, without actually moving the viewport camera, just moving the camera pivot.
Issues:
The script attaches itself to a handler and is then continuously ticking in the background, but currently it has to be manually started each time you boot up blender. There is also currently no way to stop the script from running (besides closing blender). Ideally this would be packed into some kind of addon, where this behaviour is either activated on blender startup or can be activated and deactivated with a button on a sidebar.
Below is the working code in the current format, I hope this helps for people searching for the same solution:
import bpy
from mathutils import Vector

# Variables to store previous location and rotation of the viewport camera
previous_location = None
previous_rotation = None
camera_stopped = False

def check_viewport_camera_movement():
    global previous_location, previous_rotation, camera_stopped

    # Get the active 3D view region and the corresponding region_3d object (viewport camera data)
    area = next(area for area in bpy.context.screen.areas if area.type == 'VIEW_3D')
    region_3d = area.spaces[0].region_3d

    # Get the current location and rotation of the viewport camera
    current_location = region_3d.view_location
    current_rotation = region_3d.view_rotation

    # Check if this is the first time or if the camera moved
    if previous_location is None or previous_rotation is None:
        # Initialize previous values on the first run
        previous_location = current_location.copy()
        previous_rotation = current_rotation.copy()
        return 0.1  # Short delay for quick initial updates

    # Check if the camera's position or rotation has changed
    if current_location != previous_location or current_rotation != previous_rotation:
        # Camera is moving; reset stop flag and update previous values
        camera_stopped = False
        previous_location = current_location.copy()
        previous_rotation = current_rotation.copy()
        # print("Viewport camera is moving...")
    else:
        # Camera has not moved; check if it has stopped
        if not camera_stopped:
            camera_stopped = True
            # print("Viewport camera has stopped moving.")

            ###########  RAYTRACE FOR SURFACE ####################

            def raytrace_from_viewport_camera(threshold=1000):
                # Get the active 3D view region and the corresponding region_3d object (viewport camera data)
                area = next(area for area in bpy.context.screen.areas if area.type == 'VIEW_3D')
                region_3d = area.spaces[0].region_3d
                region_3d.update()

                #update scene
                context = bpy.context
                scene = context.scene
                context.view_layer.update()

                # Get the viewport's camera location and rotation from region_3d
                # Use region_3d to get the camera's view direction
                camera_rotation = region_3d.view_rotation
                camera_location = region_3d.view_location + ( camera_rotation @ Vector((0.0, 0.0, 1.0)) ) * region_3d.view_distance

                # Calculate the direction of the ray based on the camera rotation (forward direction)
                ray_direction = camera_rotation @ Vector((0.0, 0.0, -1.0))  # Forward direction in camera space

                # Add an offset to the start position to prevent starting the ray at the camera's exact location
                ray_start = camera_location + (ray_direction * 0.1)  # Small offset in the direction the camera is facing

                # Set the endpoint of the ray
                ray_end = ray_start + ray_direction * threshold

                # Perform the raycast
                hit, location, normal, index, object, matrix = bpy.context.scene.ray_cast(
                    bpy.context.view_layer.depsgraph, ray_start, ray_end
                )

                # Check the result and print appropriate messages
                if hit:
                    region_3d.view_distance = (camera_location - location).length

                    region_3d.view_location = location

            # Run the raytrace function
            raytrace_from_viewport_camera(threshold=5000)

            ######################################################

    # Continuously run this function with a short delay
    return 0.1

# Register the check function to run repeatedly
bpy.app.timers.register(check_viewport_camera_movement, first_interval=0.1)

If you want to try the script out yourself, open a text editor panel in blender, create a new blank script and paste the code. Then run the script either with the Run Script button or by pressing Alt + P
If you aren't sure about the effect of the script, I can recommend enabling the navigation guide in Edit > Preferences > Input > NDOF > Show Navigation Guide.
Feel free to modify the current code or pack it into an addon, I am curious what other people will do with it.
I also know this post is not a question and more a call to discussion, but the code itself was not enough for a full plugin I could upload on Blendermarket or similar sites. If there is a better platform to share this code and information, just let me know.


text:
Deform a hole on a torus
I'm new to Blender.
Is there some way to animate a deformation of a hole on a torus by expanding it?
Like in this video. (until 2.5 second, I don't need to completely shrink it)
I tried to use shape keys and manually sliding edges, but that would be a long process, as I can't merge vertices, so with every slide I need to move more and more copies of edges:

I've also tried using parts of Nurbs Circles with Screw modifier to reverse animate it using angle, but I would still need too change curve points' positions for better animation, it would be easier if curve had something like 2 angles, one around axis and one capturing part of used curve. Moreover, curves are not connected.

Related https://blender.stackexchange.com/questions/56994/animating-a-punctured-torus

This can be done by building the torus from 8 different vertex objects, each with 2 Screw modifiers.
One Screw modifier for making a circular section of the torus, and another one to rotate or loop this circle around a center (with an offset) thus creating a torus. The torus turning into 2 rings, and the 4 corners of the hole, warrants the total number of vertex objects and modifiers.

Linking the Screw modifier Angle values with drivers allows a single Angle value to deform the torus.
Making the inverse of this was my starting point so all the drivers are linked to a modifier on the initial vertex I used to make this. In hindsight a bit of a weird place but it works just the same. (So changing the Angle value of the top modifier on the "Vert" object makes it all move.)
I intent to elaborate on this solution a bit when i have more time (especially if you are new to Blender, drivers might take some explaining), but in the meantime...
...Here is the file:

And here is another file utilizing Mirror modifiers on only (and reducing the number to) 2 vertex objects:

Wow, that's heroic. Can't be sure, I haven't dug deep into your .blend, but could this be simplified with some mirroring? When I tried, I had problems with normals, but those could be tricked away..

Oh, I'm so stupid! Figuring it out I never considered using Mirror modifiers. : ) You are right. It considerably simplifies thing, and reduces the needed vertex objects to 2. I'll update my file/answer. I must say, your answers are both very nice as well: 2x +1. I especially think your geometric option is an elegant solution.

@Fjoersteller How can I contact you? Unfortunately, I couldn't find any private messages here. Thank you.

@geomEssence No thanks needed; happy i could help, and i had fun figuring it out.  (and just in case you need contact otherwise, check my profile info)  : )

Here's a shader-only option, using Blender's default UV unwrap of a torus, and keyframing the threshold Less Than values in the following tree:

Another geometric option:
Start in the flat, giving a plane a couple of shape-keys, expanding the size of a deleted inset face.

Using a Subdivision > Simple, and 2 Simple Deform  > Bend modifiers, bend the plane into a torus.

Now, sliding between the shape-keys will increase the size of the rectangular window.

..which, looking at the vertices in your reference, must be something like the way the original was done.

Nice and simple solution, I only have few questions:

What is being recorded in the shape key? As I understood, I need to create a plane, press "I" to create inset faces and then delete middle face. After that you scale hole by selecting 4 edges and pressing "S"?
Subdivision surface modifier is used to automatically create new faces for bending, so I don't need to create faces manually using loop cut?

@geomEssence 1. That's right. The Base key is with as small a hole as you like, the 'Key 1' is with the hole expanded.. it's not  a uniform scale,  it's SX and SY, each, because of the stretching.. the proportions of borders depend on major and minor radii of the torus, to get nice even bands at the end. Tell the truth, I just faffed it. You could Alt-D make an instance of the plane, without mods, and adjust that, while looking at the one with mods, to make it a bit easier to see. 2. No need for extra cutting, Subdiv > Simple  does it.. not ideal topo, but the same as your ref. I think.


text:
Where is the "average" setting in the vector math node?
I'm currently following CG Geek's mountain tutorial and he uses the "Vector Math" node and sets the type to "Average". But with blender 2.8, they removed the "Average" setting so, is the "Average" setting in a different node or is there a new setting in the "Vector Math" node that replaces "Average"?

Blender automatically converts old nodes when copied into newer versions.
So Average becomes Add + Normalize

Well, that's very interesting. ... If that was what Average was doing, it wasn't very well named.. I've always thought of averaging two (arbitrary length) vectors as producing the vector which would take you to the midpoint between them, given all vector origins at 0. ((V1 + V2) / 2).This substitute produces a vector in the same direction, but of unit length.

I've made a kit to help you view the vectors, and the functions of the vectors, produced by shader trees. Perhaps you could use it to see whether Average is the same as the automatic substitution.

First, that's a great illustration, thanks :). Second, I couldn't make it work in 2.8 (crashes instantly), but from my tests, the automatic conversion and the solution by Chris Bennett give the exact same results as the original Average node.

Ahh.. Sorry about that, I wonder why that is? Works for me in 2.83, I even downloaded it back to check.. On the answer, I was put off by the divisions by 2 in CB's answer, so didn't notice the Normalize at the end of his tree. (Because of the Normalize, the division is redundant, it makes no difference to the result) So yes, the old 'Average' wasn't Average(A,B), it was Normalize(A+B), (which is a rotational, angular average of 2 unit vectors)

... which presumably explains why they renamed it ;)

I think it's gone for good, but this is what it looked like under the hood. I used two texture coordinates as proxies for the input vectors that are to be averaged. You can make this into a node group if you wish, so it's always there.

Do you need to split? Vector Math Add and Divide are still available.. but I guess this helps show what those are doing


text:
Rigid Body | Copy from active
I',m struggling with a change from blender 2.79 to 2.8. When you apply a rigid body to something and want to apply it to a lot of other objects, you you use dto (in blender 2.79) go over to your tools panel and hit "copy from active". But now, in blender 2.8, the tools panel no longer exists. Where is the new copy from active setting? The help I've gotten is "object>rigid body>copy from active" but I couldn't find it there.

On the top left of the screen, there is "View", "Select", "Add" and "Object". Select Object, then go down to "rigid body", them "copy from active".

Thanks! Your da best. HUGE problem now solved thanks to you!


text:
Can you render using the CPU with Eevee
Is there a way to render things in eevee using the CPU or is it just a GPU render engine?

The Blender EEVEE render engine uses OpenGL for all the rendering, so YES, rendering on the CPU should be completely doable, as long as a viable CPU-based OpenGL implementation is also installed and enabled.
In particular, Blender lists system requirements of only "OpenGL 3.3", which is officially supported by at least softpipe, LLVMpipe, and OpenSWR.
Linux distributions of Blender additionally include a blender-softwaregl launcher script which runs Blender using bundled CPU OpenGL libraries.

Base Knowledge
OpenGL is just a standard interface that programmers can use to perform operations that are commonly related to computer graphics. What happens when a program actually runs that code is completely up to the system it's running on.
In most cases, a program that runs OpenGL code will have its processing redirected  by the OS to the GPU, because the GPU is specifically designed to be more efficient than the CPU at running the kinds of operations that OpenGL is used for.
However, there is nothing fundamentally different about the mathematics that the CPU is capable of doing and that the GPU is capable of doing, so it is also possible for the OS to simply compute the result of each OpenGL operation entirely on the CPU, without the program ever touching the GPU (or knowing any better).
Analogy
Imagine that the CPU is a secretary, and the GPU is a group of workers. Usually, when a blueprint (OpenGL call) comes in, the secretary passes it along to the workers to do the heavy lifting (rendering).
However, there's nothing that's actually stopping the secretary from rolling up their sleeves and helping with the work themselves— so long as they have the proper training (OpenGL software implementation). They might not be as skilled or in as great shape, so they'll be slower, but they can still do it.
Caveats
There are only some limited situations where this would come in handy:

You do not have access to a GPU, for either a lack of compatible hardware or software.

You have a surplus of CPU power, and you want to squeeze out as much rendering speed as possible from what you have without caring about the efficiency and electricity usage.

Basically, if you have the choice, using the GPU will almost certainly be both faster and more efficient than the CPU. In order to match the speed of a \$50, 30 watt integrated GPU, you would probably need a \$400, 150 watt server-grade CPU. But in cases where GPU-rendering simply isn't an option, setting up a CPU pipeline should be fully possible too.
Addendum
Wikipedia has some information on the software OpenGL capabilites on most Linux desktop and workstation computers:

https://en.wikipedia.org/wiki/Mesa_(computer_graphics)#Software_renderer

The following software projects all purport to offer some degrees of support for CPU-only software rendering of OpenGL (and potentially other graphic APIs):

https://www.openswr.org/index.html

https://dri.freedesktop.org/doxygen/gallium/softpipe.html

https://www.mesa3d.org/llvmpipe.html

Phoronix.com has also done a performance benchmark of two of the above options:

https://www.phoronix.com/scan.php?page=article&item=llvmpipe-swr-xeon

(Note that the above tests were done on an 80-thread server-grade CPU— and it still struggled to reach a playable framerate in simple video games.)
These guys seem to have successfully run Eevee using openswr:

https://www.highperformancegraphics.org/wp-content/uploads/2018/Posters-Session/HPG2018_BlenderRenderingAbstract.pdf

https://www.highperformancegraphics.org/wp-content/uploads/2018/Posters-Session/HPG2018_BlenderRenderingPoster.pdf

For reference, I have run Blender completely in software when all I had access to was a cloud VM with four cores. The performance wasn't great, as you may expect, but it was entirely usable.

How-To
It may be enough for you to simply run Blender using the blender-softwaregl launcher script that should be included with your installation of Blender:
Source.

This answer says YES and the one below says NO... which one is correct?

@Alexis.Rolland My answer is technically correct as I wrote it explicitly to refute the other one, but it should be emphasized that in almost all cases where you care about render times, hardware costs, or energy/environmental efficiency at all, there is likely little justifiable reason to actually render OpenGL/EEVEE on the CPU. A $2,000 workstation's CPU will probably struggle to keep up with the tiny GPU in a $200 smartphone for these types of applications.

Thanks, actually I was thinking about doing simple rendering tasks on a server which does not have a GPU. This is why I am looking for a solution to use EEVEE with CPU.

This is a theoretical and not very useful answer. Of course, it is true that virtually anything can be done in software without any limit on human work and computation time. A useful answer would explain step by step how to do it in Blender, benchmark the result and conclude whether it makes any sense to do it in practice.

@divenex Feel free to write your own, better answer if you have the time and money to test out hundreds of hardware configurations across all three major OS's, in order to be able to give "useful" data on whether it "makes sense to do" for all potential readers of the question. I wrote this as a direct refutation of the other equally theoretical but wrong answer that was accepted at the time, included links to proof it can be done and examples of how to do it, specified the necessary software, and touched on the approximate probable performance characteristics.

Blender EEVEE uses OpenGL for all the rendering, so NO, no CPU rendering is supported at all.
Base knowledge
The way the CPU and GPU run commands (instructions) is different, CPU is for more general tasks with higher frequency and shorter latency; GPU is for parallel computation like graphic pipe-line. So they don't really understand the same instructions, OpenGL uses mostly GPU instructions that CPU is bad at it. CPUs (x86) can only simulate the instructions instead of directly supporting them.
Example
Imagine that CPU is a secretary or housekeeper, GPU is a group of workers. You told the secretary to render your scene, so the secretary gathers those object information and convert it to a blue print (OpenGL). Then those workers do the rendering job based on the blue print (instructions) and their tools (GPU hardware).
So your question is basically telling an office secretary build a house by hand, with no tools.
That's why the development Wiki sais it would be very inefficient to run on pure CPU structure. Maybe there might be some strange guys trying to force the secretary to build things by hand, who knows?
Addition
So will we ever be able to use CPU on EEVEE?
No we can't, EEVEE stand for Extra Easy Virtual Environment Engine using the power of OpenGL to achieve something, and the structure is stable right now, it is almost impossible and meaningless to make it compatible with CPU instructions. If there must be a CPU version, it might not be called EEVEE but something else like Cycles v2, and that thing will be hugely different from EEVEE for sure.

This answer says NO and the previous one says YES... which one is correct?

@Will Chen is correct. Just forget this post, I didn't answer the question but rather given an opinion base information

The official Blender 2.9 reference for Eevee HERE states that CPU rendering is currently not supported and there are no plans to support it.

Limitations: Being an OpenGL engine, Eevee only uses the power of the GPU to render. There are no plans to support CPU (software) rendering as it would be very inefficient. CPU power is still helpful to handle high complexity scenes as the geometry and modifiers are still prepared on the CPU before rendering each frame.

This implies that, although it is true that in principle OpenGL can be rendered (very inefficiently) on the CPU, there is no plan for this to work with Eevee.
What remains to be seen is whether it is possible to use a software implementation of the OpenGL API, as Will answer suggests without practical details. More details would be needed to show if that is feasible in practice and how, and if it is not too slow to make it usable.

This answer misunderstands how OpenGL works, and deliberately overlooks the existence of software renderers. Blender doesn't need to be "trick[ed]" "into thinking it is using a GPU", because it doesn't actually care about the existence of physical GPU hardware— Only that it has access to a standards-compliant OpenGL API, of which there are many mature and proven software implementations.

Will's comment is addressed in my edited version thanks.


text:
How to adjust viewport clipping
I'm building a 3D model and it's huge but when I zoom out enough, it's clipped off sort of like when your camera clipping is too low. Is there a way to adjust the viewport clipping?
Reference image here.

It is in the right hand tool bar, under View tab. You can open it with N in Blender shortcuts or Ctrl + ] in Industry Standard shortcuts.

Thank you so much. I feel stupid now for not doing that lol

How can I save the new value as the new default value? I have to re-type it everytime I open the viewport in a new window or a new project...

In your viewport press N  to open the Sidebar.
Go to the View tab and adjust the Clip Start and End values.

Thank you so much. Should have been a duh lol