text:
How do I select a set of Blender elements with a common characteristic?
I'd like to be able to select in one operation a set of blender elements (vertices, edges, and faces) with a common characteristic, for example a certain value (or range of values) on a particular axis, or a set of elements which lie a specified distance from the designated pivot point. I know some particular instances can be accomplished by existing tools, for example, going to front or side view, one could use box select to obtain a set of vertices with a certain value of Z-axis co-ordinate, but I'm asking more generally. For example, to be able to select all edges of a certain length, or faces with a certain area.

For a mesh in edit mode with

vertex selection see the menu Select Similar.
face selection see the menu Select Similar Area
edge selection menu Select Similar Length
Many other options

Circle Select with the Letter C Selects a circular distance in 2D in many, not all, cases.
To select a ring, first select objects by radius A, then second scroll mouse wheel to smaller radius B, then press Middle Mouse to button to remove the middle.  A minus B (A - B)
Still in mesh edit mode, if you are making a selection repeatedly, consider creating a vertex group for that selection.
Suggestion.  For Objects only.  If you are making the same selection many times. Consider Grouping those objects and thus select group.  Or more drastically create a common parent and select children.

Circle select (C-key) selects all of the elements within the current diameter setting of the tool; I'm wanting to select only the elements that lie on the circumference of the tool.


text:
Is there a shortcut or hotkey that I could use to access the Transform panel of the properties shelf in the 3D viewport?
While working on vertices, and wanting a bit more precision than I can get with a mouse, I use the transform panel of the properties shelf in the 3D viewport. But to do this, I have to move the mouse over to the panel, make my adjustments with the keyboard, and then mouse back over to the vertices I'm working with. Is there a shortcut or hotkey that could eliminate the mouse moves?

You can type the amount you want to transform the vertices when using G, S and R.
E.g. GX -3 will translate the selection -3 blender units on the X axis.

I agree. But what I usually want is to move a vertex that has a dimension on the z axis of 31.873 to 30.742. It's quicker to use the z parameter in the transform panel to enter 30.742 than it is to calculate the difference (-1.131), and then use the key combination "GX-1.131". Achieves the same result, but not as fast or efficient as if there was a hotkey or hotkey combination, for example, "Z that would directly access that parameter.

You can type in an expression if you press =, e.g. G X = 31.873-30.742

True, and that's a capability I use frequently in Blender (and in GIMP, too, which supports regular expressions), but not so much when using g, s, and r. Thanks for reminding me.

Or to improve on the idea, "GZ might be a good hotkey combination for directly accessing the Z dimension in the translation panel in edit or object mode; "SY might similarly be a good combination to directly access the X dimension in the Scale panel in object mode, and "RX might be a good combination to access the amount to rotate the value around the x axis.

source: Stack Exchange

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

sort: votes


text:
Where are the repositories for Blender add-ons and scripts?
I want to create a 3D representation of data where the representation is a plot of a set of values as displacement differences along one axis, relative to the other two axes. Since I've never had what I though was a really good idea that someone else hasn't had first, I'm sure that a script must exist that would take a table of data as input, and map it to the vertices of grid object. But I have been unsuccessful in finding the right combination of search terms either to find such a script, or to find a listing of Blender scripts where such a script might be located (somewhat like the GIMP repository). Does such a repository exist, and I'm just too inept to find it? And even if the repository does not yet exist (and I think it would be a really good idea to have one), does such a script exist?

See http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts

This blog lists a lot of addons, the rss feed helps keep you up to date as new ones are found. This blenderartists category is another source.

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


text:
Is there a wagon rig tutorial?
For a couple of millenia now, people have been using towed objects,

either towing the objects themselves, using animals, or more recently, machines.
Given the number of carts, wagons, trailers, farm equipment, and the like, I would expect that someone would have created a tutorial on how to rig such a model, but after several hours of searching, I've not found one and would like to find either a tutorial, or a rig to study.

These things are done by simulating rigid bodies. You need to find or study a rig implementing rigid body physics.

Roubal's rigs for 2.49 http://3d-synthesis.com/tutorialsenglish.html in particular http://3d-synthesis.com/tutorials/Trucks-AutodriveSystem-V2.blend  Needed to rotate the road.y 90degrees, and the rotate wheel script needs upgrading.


text:
Is there a standard set of benchmark files to compare Blender installations?
It would seem a reasonable proposition that there should be a standard set of Blender files that could be downloaded by a user for the purpose of benchmarking a Blender installation. I'm not aware of such a suite of files, but that does not mean that I just don't know were to look. If there is such a suite, where can I download it?

The benchmarking file often used is the 'BMW Benchmark' file by Mike Pan, available on the blender.org site under 'demo files':
https://www.blender.org/download/demo-files/
There are other files on that page which are sometimes used by developers to test Cycles improvements, called 'Production benchmark'.
If you then want to compare your 'BMW Benchmark' results with other blender users you can use the 'Blender Cycles Benchmark' spreadsheet:
The Blender Artist's thread for that spreadsheet is here, just in case the link gets changed at some point.


text:
Bones aren't grouped perfectly when I rotate them two times on the X axis
I'm rigging the foot of the bird Piero training course of the CG Cookie and I get stuck on episode 26 : piero rigging leg. The author has selected all the bones of the foot and he rotates them on the X axis two times and the fingers are grouped perfectly,but it does not happen to me. Why ? Added two screenshots.

I found the solution to this problem by myself. I have to rotate the z axis on the top.


text:
Stadium Seating Letters
I'm trying to add letters to stadium seating, to make a custom version of the title sequence of Ted Lasso.

I modeled a simple version of a seating block, but now I have to add the letters to it, and I'm wondering what the best method would be to do this. I've already done it manually, just by applying materials and creating the letters just like that. But I was wondering if there is a way to do this more dynamically.
I was thinking in the lines of placing a single letter (as text) beneath each block, and then somehow applying different materials to the seats that overlap with the letter on the xy axes. Is this possible with geometry nodes or just shaders?
I have a simple example set-up here:

So the idea is that all cubes that overlap with the cylinder get a different color. (Ideally with some margin so that the cubes that barely overlap don't get colored).
I've found some examples of using multiple booleans to change materials with intersecting meshes, but ideally I would change the color of the entire seat when it overlaps with the underlying geometry.

If you're using array modifiers and therefore have just one object, then use Texture Coordinate node like so:

Now use "Separate XYZ" and "Math: Less Than" nodes to discover the width of your setup: (of course you could calculate it instead)

Repeat the same for the y coordinate.
Put reciprocals of found values in the scale of the "Mapping" node. In my example the width is 58.88, so I type 1 / 58.88 as x scale and Blender calculates the reciprocal for me: 0.018. Then do the same with y scale.

The chairs are painted "too well"; to make each chair have only a single color, snap the coordinates to the nearest chair using Vector Math: Snap node:

I have 20 rows, therefore I put 1 / 20 (= 0.05) into the y field, and I have 50 chairs in a row, therefore I set x to 1/50 (= 0.02).
Each chair's color depends on a single sample from the texture, so for the best effect use 2D software scale your texture to have the same number of pixels as the number of chairs:

Alternative 1 - UV coordinates
You can ignore spacing and allow yourself to move stuff around (by modifiers or by applying the modifiers and moving manually) by using the UV offsets in the Array modifiers - keep in mind, if you don't use planes but something more complex like a chair, you need to unwrap it as in Moonbot's answer (but unwrap a single chair, not all chairs at once).

You can now move stuff around:

Alternative 2 - Object coordinates
If you have multiple objects, use Object coordinate, and specify the Object field:  to the object with the lowest x and y coordinates:

subtract the current object's coordinate, to snap to the centers of chairs;
add x:1; y:1, because object coordinate system starts at -1, and you want to start at 0;
multiply by the relative spacing you used in array modifiers to get the width together with spacing (object coordinate defines a range between bounding box boundaries);
when calculating the reciprocals, I'm using .5 as dividend instead of 1 to avoid adding another node dividing by 2; the reason to divide by two is that the base object coordinate system is in range -1..1, we added 1 so it's now 0..2, either way it's twice bigger than normalized range.

This setup is also spill-safe:

In your case, if you want to have all sectors defined by a single texture, snapping is a little bit more tricky, but I think it deserves a separate question.

Thanks. This does seem to work pretty well. However, my image is pretty stretched. When I dial in the mapping scale to reduce the stretch, the colors begin to spil out into nearby seats. How do I either fix the snap, or calculate the ideal image size to use as texture?

@Puzzles this solution works if you want to divide an area into columns of equal width and rows of equal height. In other words, the chairs have to be distributed uniformly. But you need to be rigorous in defining the data, if you're sloppy at figuring out the width/height, or off-by-one when counting the rows/columns, you will get the spill. Likewise if the distribution is not uniform...

@Puzzles added 2 alternatives

Thanks for the alternatives. As I understand these can be helpful if the seats are not distributed equally or if I want to move them. But what if I want to move the image, let's say to only cover half of the seats? The first method is working brilliantly for me, but I don't seem to have any control to scale/move the image, since then the snapping does stop working.

@Puzzles try using Vector Math: add node https://i.imgur.com/RZfR2Oi.gif

You can select all your seats and unwrap from view:

Then in the UV Editor select all, enable Pivot > Individual Origin and scale down the UVs a lot (like S 0.01):

You may need to move some UV islands a bit so that they don't overlap with anti-aliasing colors, or slightly move them all on X or Y until it's good. You could also scale the islands down to 0 but in that case I don't know how to scale back to a non-0 size.

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


text:
How to Animate a letter giving it the stretchy effects
Good day, please how do i make a letter bounce in blender? like the cartoon-ish effect. Example: Just the way the letter I bounces in Pixar intro logo
 (https://youtu.be/eWGoXdpjU5g).
Something like that. Thank you.

Technically you could either animate it with hand and deform it with some other object or simulate it with soft body/cloth sim, it really depends on what exactly do you want to acomplish

maybe you could make use of the shape keys, https://docs.blender.org/manual/en/2.93/animation/shape_keys/index.html

Just two of many ideas:
Simple
Simply make the letter wider when you make it shorter. You can use a Maintain Volume constraint so that when you scale the object on one axis, it automatically scales on other axes to keep the same volume:

Cloth pressure
Using increment snapping , duplicate the default cube to create a letter:

In Edit Mode apply this script. CtrlI Invert Selection, X Remove, F Faces, to get rid of internal geometry.
Select 3 bottom-most and 3 top-most faces,  Object Data,  Add Vertex Group,  Assign, name it PIN.
Tab Object Mode, add two shape keys, leave the 2nd active, Tab Edit Mode, select only a bottom-most face, change  Transform Pivot Point to  Active Element, A select everything, S Scale Z on Z axis, so the letter is shorter.
Tab Object Mode, Ctrl2 Subdivision Modifier.
 Physics  Cloth,  enable Pressure, two sections below in section Shape → Pin Group input PIN.

Animate the 2nd shape key value starting after the cloth stabilizes.
Now draw the rest of the owl, I tried self-collisions, Pressure of 2.0, Tension = 1.0 and Compression = 2.0 for both Stiffness and Damping

It's a quite old animation. Don't you think they used a lattice? ... in the days of softimage?

@brockmann I didn't analyze it thoroughly, looks like simple scaling to me, but maybe it's more nuanced. Surely not cloth sim.

Yep, appreciate the answer either way.

@brockmann I was at college doing 3D in the 90's.. we had FFD, (Lattice) and we wrote our own  stretch-and-squash, crudely approximating volume preservation, back then. My guess, it's that.

Interesting @RobinBetts Seems to have paid off, there are still new ideas around it: https://hal.archives-ouvertes.fr/hal-00599442/file/HBBEH12-preprint.pdf

@brockmann Ahh!  Thanks! Theirs much more sophisticated than ours. Ours didn't minimise a deviation.. we simply defined one dimension as squash, and allowed the others to be driven by it. (No computation on the GPU available for us, either)

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


text:
Model a clamshell or blister packaging from retail stores
I'm looking for what you see on hooks in a store. I've just started to use Blender for all my 3d modeling so forgive me if I'm not being clear.
The photos are what I'm trying to recreate.

I'm not sure what you are expecting us to do. Without knowing where exactly you are stuck or what you have tried so far there's nothing I can help with. These are not even the same kind of packaging. The left one is a card with a transparent plastic shell glued on top of it, the other one is a card hot sealed between a front and back plastic hull. Try to model the shapes of those parts, then you have to make materials for them, probably with image textures for the cards and a transmissive material for the plastic.

Related https://blender.stackexchange.com/questions/125116/how-to-do-vaccuum-sealed-pack-modeling-in-blender/ https://blender.stackexchange.com/questions/78769/how-to-create-vacuum-packaging https://blender.stackexchange.com/questions/194246/does-anyone-know-how-to-make-the-plastic-part-of-a-blister-pack-used-in-the-medi https://blender.stackexchange.com/questions/231764/how-can-i-simulate-thermoforming/

As to such packaging you add eg a cylinder, remove bottom face, array it first X then Y by the same relative offset. Then you add "the bottom" cube, align it with  cylinders arrayed and combine the two. Done, you modeled a nice calculator cell or tablets packageIf you want a package as that STANLEY you showed, you make the tools outlines, knife project and extrude them.

thank you, I'm new to Blender and you've pointed me in the right direction, thank you.


text:
how can I animate array of lines with geometry nodes?
I am trying to get a node setup for animating curves - lines with geometry nodes.
A am able to create a line which holds instances (lines or curves) but I am stuck here.

It all depends how you want to animate it. For example, you can move the points passed to "Instance on Points: Points", this way you instanced curves will be moving (their shape will remain constant, but their bases will move around)

I would like all the instances also to be animated based on noise or wave texture, so their shape should also change

Surely a duplicate but I couldn't find a good fit to link, so made a simple setup:

Blue Frame: Random Value node to get some random positions for points, all at Z=0.
Orange Frame: Noise Texture node differs from the above in that neighboring values are similar (Perlin Noise). This way, as time passes, the noise is sampled in a different position, so the output value changes, but doesn't change abruptly (e.g. from $0.3$ to $0.7$ in one frame), instead changes smoothly (e.g. from $0.3$ to $0.305$ in one frame). However, I don't want all points to move in a similar direction, so I increase the scale of noise to $50$ (zoom the texture out 50×). Now there's 50× more space between points, meaning there's much less consistency between them. But this means there's also much less consistency between frames, so I multiply the frame by $1‰$ (effectively the Z dimension has scale $50×0.001=0.05$, so very small changes between frames, very smooth changes between offsets = very slow movement). Multiply Add converts the range from $0..1$ to $-0.50..+0.50$, so it makes sure the displace happens in both ways, it is small, and it is none in the Z axis.
Green Frame: Make a 50 points vertical curve and spawn it 3 times (once for each point).
Navy Frame: This time the Noise Texture is 3D, because we're operating not on a plane, but in 3D space (each point has also a height), and we don't want neighboring points of a single curve to displace in the same direction. So to animate, we use 4th dimension. This time Multiply add produces a much bigger range, giving more freedom for the curves, making them wiggle out of their base more than their bases move around (artistic choice). Finally, the effect is scaled based on height.

You could capture curve factor and use that instead of Z (especially if you don't spawn curves on a horizontal surface), you could use new Simulation Zone to make the movement more realistic etc. but this is the basic idea.


text:
How to Model Archimedean Snub Cube?
I need to create the Snub Cube - 'right' and 'left' versions (It is a chiral polyhedron). My blender knowledge is not very good.
Right:

Left:

There's an STL file on the Wikipedia page about it, you can import it into Blender.

The Snub Cube as well as MANY other polyhedra are available from the Mesh Extra Objects Addon (a default Blender Addon).
Install it from Edit / Preferences - Addons
Search for: Extra Objects
Pick: Add Mesh: Extra Objects (Click the Check Box to Enable it)
In Blender's View Screen, use Shift-A / Mesh and scroll down to "Math Function"
Open Math Function and click on "Regular Solid"
In the "Presets" drop down select "Snub Cube" then left or right from the options.

Here's a video.  What I'm talking about is about seven minutes, 30 seconds in: https://youtu.be/br_dwbZe2P0?t=446


text:
Solved: Incomplete baking of a lighting situation with environment to the map
I'm trying to bake a relatively simple situation(with cycles, of course).
I'm getting weird combinations on some faces and incomplete renders on others, some are completely mid-grey without any shading. As you can see, a large area below the object (lower left) is rendered correctly.
What I made sure of:
– UV maps are laid out with some island margins
– They don't overlap
– The render in the viewport by Cycles on the right shows expected lighting
Any Ideas?

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

So, what I finally found out: We used a lot of Boolean operations to build the architecture. As you may have experienced too, that may leave some very small gaps between neighbouring faces. Sometimes you notice these only when checking your results after the bake. BUT, when you try to fix these locally, your UV maps may change places massively! So, always do a fresh UV mapping after any such corrections, as small as they may seem.


text:
How to embed file browser into the Blender addon interface
I'm trying to find a way to display the items in the target folder in the addon interface, i.e. like in the Blender file browser:

I tried to make a text picture for an example:
|     File Browser     |
|- Folder_1            |
|--> Folder_2          |
|----> File_1          |
|----> File_2          |
|--> Folder_3          |
|----> File_3          |
|______________________|

Tell me please, what extensions use this solution or what solves this task in Blender?
I looking for this solution to decide this issue (link to GitLab).
And I apologize if the answer was on the surface, but I didn't find it.

There is no treelist widgets in Blender. You will have to improvise. Like that: https://blenderartists.org/t/blender-treelist-expanding-subelements-ui/1191260

Thank you! Got it. I'll give it a try and let you know how the result is :)

Here's what came out: https://gitlab.com/cadbase/cadbaselibrary-blender

Have you tried to do the tree? I thought just the usual flat approach with a path bar could suffice.

This is currently C only: https://developer.blender.org/docs/features/interface/views/tree_views/

Yeah, I guess I didn't ask the right question in the beginning. Thank you for the new information! I think it will be possible to update the UI in the future.


text:
Unable to change color for part of an object
I am trying to set color to red for the lower spherical part of the object (shown in the picture). It seems that there is a strip of surface whose color cannot be changed despite being selected. Would really appreciate any help on how to resolve this issue.

have you checked normals?

overlapping UVs? Please show the settings (in particular Uvs, I think).

@Cloud_In_A_Bottle Yes, the normals of the strip are facing outwards, just like the other faces.

@lemon excuse me if I didn't understood correctly (I'm new to Blender), but I have attached the UV editor screenshot here. I cannot tell if anything is wrong from this.

ok, you have two materials. Part of the faces of the red sphere are assigned to the green material. In edit mode, select these faces and assign them to the red material. (nothing to do with UVs, finally)

@lemon That's what I did exactly. The problem is that the green strip cannot be assigned to the red material, for some reason.

If so, could you share your file? please use https://blend-exchange.com/

@lemon Thanks! I have shared my file. Its at (https://blend-exchange.com/b/LY4S82oE/).

This is due to duplicated vertices, which make the wanted faces unselectable, except if X Ray is turned on.
To solve the issue, select all, merge by distance and assign the material again to the wanted faces.

It works like a charm!


text:
How to create UV maps to a heavily meshed 3D human head in blender?
I am new to blender and using 3.5 version. I am trying to add hair to a 3D head, which is meshed heavily. After adding empty hair property to the head, in modifiers section, it is showing that "Surface UV map not defined". I watched tutorials to create UV maps, but it's not helping with this level of mesh. Can anybody help me with this?

While you should retopo this if you want to do stuff like particle systems, to just create an ugly, functional UV map you can use Smart UV Unwrap

If you put the mesh in Edit mode, you could try the menu item "Mesh :: Clean Up :: Decimate" and slowly adjust the factor from 1.0 (no decimate) downward to perhaps 0.5 (50% less/merges vertices).  You can end up with a very acceptable mesh with a much lower file/memory requirement, and then a simpler UV.


text:
Face loop duplicating deformed
The selected face loop is the one I want to duplicate.

When I duplicate this face loop, it is deformed in three faces in oval shape.

As you can see, the two faces have oval shaped ends and one is completely disconnected from others.
I have Bevel and Subsurf modifiers active. I haven't applied them yet since it will complicate the shape of the wall. I tried applying all transforms, and seems like it does not have any effect on it.
Why is this occuring? and how can I fix this?
Why is this error

It appears that you have some modifier(s) applied to the object, perhaps "Subdivision"?  Please include a screen image of the modifiers, completely expanded.

This happens for disconnected edges. Use Merge by Distance.


text:
Automatic weight painting does not deform the mesh of my character?
I found a situation that I don't understand. It seems that the automatic weight painting does not work with the girl that I have rigged using rigify. I don't understand the reasons of this behaviour,because :
1) I'm trying to deform the parts of the mesh that are attached with the DEF bones
2) I'm repeating the steps that I did previously with the boy and it worked
3) I split the mesh into several pieces and I have attached each piece to the rig called "rig.girl" under the armature modifier tab
Let's take as example the bone called "DEF-forearm.L.001". I would like that it deforms the "braccio_sx_girl" aka arm_left_girl. What I do to achieve this output ?
a) I select the bone "DEF_forearm.L.001" ;
b) I press SHIFT and then I select "braccio_sx_girl" ;
c) I change from object mode to weight paint mode ;
d) I do weights / assign automatic from bones ;
but the mesh is not deformed....
NB : I repeated again the steps from "a" to "d" with the boy and it worked.
This is the blender file.

My friend, you have "Face selection masking for painting" enabled. Disable it by clicking on the icon in the red circle on the image attached, and everything will back to normal.

I'm trying to fix this problem since 2 days. You come back and boom. You fixed it. You are the man. How did I not notice it ? I don't know.


text:
Image texture is not applied on the hairs when I reopen Blender (2.8)
I'm trying to texturize the hairs of the 3D character using the projection painting tecnique. At the beginning the hairs are separated objects from the body. Then I spread the texture taken from a picture over their surface and finally I attach them to the rest of the body and I save the file.
But,when I reopen Blender (2.8),the base color is applied,but not the image that I want. I tried to join the objects in two ways. Before I have selected the hairs and then the body and I have joined them,but it didn't work. Then I tried to select before the body and then the hairs and I have joined them,but also in this case the image texture is not applied when I reopen the file. What's the solution here ? You can see what I did going here.

Did you save the painting texture as an image to disk from the Image Editor?

something like this ? https://drive.google.com/open?id=1u5FODroNTUNcQaLgGyfzUEFfEUsEhR1x --> after this,what should I do ?

problem is that the hairs are attached to the body in one only object,so what should I do in this situation ?

The problem is that you are joining the mesh together but not fixing the UV mapping - you can see in your example frame that your uv islands are all overlapping. If you combine the meshes into one object or not, the image texture painted has to be saved and has to be referenced in the node tree.

can u show me how to reference the texture of the hair on the node tree ?

If you make sure your UV map is clean enough to paint, then you can paint and then save the image to disk so it will keep the changed pixels. Using the image texture through an image texture node, you can specify the uv map to use so that it stays put in case you have multiple uv maps for other materials in your object.


text:
The colors of the layers of my first 2D animation are wrong for some reason
I've just created my first 2D animation and I used separate layers and the "voxel heat diffuse" addon that you can find here.
With it I've been able to make the 2d animation faster. But,anyway,there is a little problem and I don't know if it's caused by the addon. I rendered the first frame and I saw that some layer have odd colors. Can someone suggest to me where could be the mistake ?
This is the first rendered frame of the animation :

and this is how it appears on the 3D view :

You can find the blender file here. Thanks.

Voted the anwer up as this is quite specific issue (sorry that I cannot help you directly).

Found the solution with the help of "Mingfen Wang",that's "Just click the 'Diffuse BSDF' item, and select 'IAP_SHADELESS' shade, then render".


text:
How do I simulate z-fighting of low poly against high poly for a single mesh?
I'm fairly new to shading and materials. While playing around with my low poly and high poly model I came across this effect, and I really like it. I got it like this by viewing both models at the same time so both their surfaces peek through. Is this something that can be done with procedural shading? I'd like to apply this as a material on my low poly model.

Is baking to a texture a satisfying workflow? Ideally please provide your .blend file.

I need to use the model in unreal engine. So ideally I need to bake it. Unfortunately I cannot provide the .blend file

On your high poly you could emit the object space position:

Bake that onto low poly UV space, float32 linear image texture, and use it in the low poly to differentiate between the two colors:

The Greater Than threshold is arbitrary:

In a more realistic scenario (yours) instead of mixing flat colors, you want to mix another baked image texture from high poly, with the original color of the low poly.


text:
How to alternate red/green color for a line chart based on segment direction?
I am working on a project to create procedural line charts (e.g. share market charts):
https://drive.google.com/file/d/1WlDstmXDMZRSIO0d8xzP-R15kM1hdkp7/view?usp=sharing

Here's how I did it:

I took a plane and deleted three edges.
Next I subdivided the remaining edge 10-15 times to get some detail.
Then I used a displace modifier with a clouds texture.
Then I slapped on a skin modifier.
Now I can manipulate the chart by changing the strength of displace modifier and size, depth attributes of clouds texture.

Modifiers:

Texture:

Topology:

Problem: I want to shade the chart such that if the Y-axis value of a vertex is less than the vertex before it then the area between it and the vertex before appears red else it appears green(The color should also change if the chart changes). So that I get something like this:

Blend file: https://drive.google.com/file/d/16HB8sMU0jNejUW6g_YmPL77N9NuH3y76/view?usp=sharing

I've decided to use normals, as they are perpendicular to the direction of the line, so from them you can read the direction of the line:

Above red and blue vectors (arrows) mark the rising line, while cyan and violet vectors mark the falling line. Problem is, those are the normals of the faces that aren't actually visible by the camera - the camera only sees faces facing the camera, which all point in one direction:

Fortunately, by enabling Smooth Shading in Skin modifier, you can make those information bleed to the front and back faces:

Smooth shading is effectively faking more geometry - we could achieve a similar effect using Subdivision Surface modifier, so let's do that (and disable smooth shading for the time being):

In this case it should be apparent that the visible part of the shape no longer faces just one direction - because the geometry is smoothed. A single level of subdivision surface actually completely eliminates faces parallel to the camera.
Now, by separating XYZ, we can separately investigate Y:

From that we can see that the top half of the curve always has positive (approaching white) Y component of the normal, while the bottom half of the curve always has negative (clamped to black) component.
...And separately investigate X:

When the top part is rising, it has negative (black) X component, which gets positive (white) when it falls. For the bottom part it's the opposite. Our logic can therefore be:
If Y > 0: [top]

if X < 0: green [rising]
if X > 0: red [falling]

If Y < 0: [bottom]

if X < 0: red [falling]
if X > 0: green [rising]

Or in the nodes language:

You are a legend     You saved me a lot of trouble


text:
Any way to get UI order of workspaces using Python?
Workspaces while being displayed in UI have different order comparing to while being stored in bpy.data.

For example, UI order is ["Workspace 2", "Workspace 3", "Workspace 1"]:

But in in bpy.data.workspaces these workspaces are ordered alphabetically:

It seems like there is no direct way of retrieving UI order...
But what about workarounds?
➤ Is there any workaround to retrieve the UI order of workspaces?

maybe the patch could be accepted if the prop was set as readonly (?). But I guess the workaround is needed for the current version of blender?

@lemon  — >>"I guess the workaround is needed for the current version of blender?">> — Correct, Blender 4.3.2 still doesn't have a direct way of retrieving this info. Though since mentioned Devtalk.Blender topic is 3 years old - there are chances that in last three years someone finally found a workaround – that's why I'm asking.


text:
How to do circle array with custom vertices with geometry nodes?
Hi any idea to do mesh like on picture?

It can be easy using mesh primitives:

+1 I cannot believe I tried to do this with complicated math for hours….♂♂♂

Works like charm. Thanks


text:
Python: for a given edge, create a circle, which radius is this edge
I'm working on an add-on to automate the generation of a specific 3D model.
I have to add circles which centers must be at the ends of selected edges.
The radius of each circle must be the length of the relevant edge (see pictures at the end).
I've created a dictionary with information on the edges but now i have to filter it to obtain only the center and the radius in my dictionary.
Example of the dictionary when 2 edges are selected :
Edge:446 Point: 443 / x:-67.67 / y:58.39 /z:0.0 / d:89.38
Edge:446 Point: 437 / x:-53.61 / y:46.26 /z:0.0 / d:70.81
Edge:447 Point: 444 / x:-66.07 / y:59.97 /z:0.0 / d:89.23
Edge:447 Point: 438 / x:-52.25 / y:47.43 /z:0.0 / d:70.57

The Edge 446 is made with points 443 and 437. The d is the distance between the origin and the point.
I just want to keep the point for which d is the greatest. And I want to add the difference between distances of the two points (the radius for the circle).
Edge:446 Point: 443 / x:-67.67 / y:58.39 /z:0.0 / d:89.38 / r:18.57
Edge:447 Point: 438 / x:-52.25 / y:47.43 /z:0.0 / d:70.57 / r:18.66

    def execute(self, context):

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

    scene = bpy.context.scene

    obj = bpy.context.object

    dic_v = {}

    for o in bpy.context.objects_in_mode:
        bm = bmesh.from_edit_mesh(o.data)
        print(bm)
        for v in bm.edges:
            if v.select:
               for p in v.verts :
                   d = math.sqrt(p.co[0] **2 + p.co[1]**2)
                   print(f"Edge:{v.index} Point:{p.index} / x:{p.co[0]} / y:{p.co[1]} /z:{p.co[2]} d:{d}")
                   Segment = {(p.index) : (p.co[0],p.co[1],d)}
                   dic_v.update(Segment)

This seems to be more about Python techniques than about Blender: Python dictionaries work the same way in external Python. Am I wrong, here?

Isn't the end of an edge the point farthest from the origin? Isn't it, the point with the highest d value?

Thanks Rivin. Yes you 're right. But when i said origin i would like to say the origine of the selected object. So in this case it's equal to d value.

I think your problem is not about the dictionary at all...
Spawning a circle on an edge, where the edge becomes a radius of the circle:
import bpy, bmesh
from bpy import context as C
from mathutils import Matrix

ob = C.object
me = ob.data
bm = bmesh.from_edit_mesh(me)

for edge in bm.select_history:
    if type(edge) is not bmesh.types.BMEdge:
        continue  # not actually an edge...
    vert = edge.verts[0]
    delta = (vert.co - edge.verts[1].co)
    r = delta.length
    Q = delta.to_track_quat('X', 'Y')
    M = Matrix.LocRotScale(vert.co, Q, (1, 1, 1))
    geom = bmesh.ops.create_circle(bm, segments=20, radius=r, matrix=M)

bmesh.update_edit_mesh(me)

Notice how the circles are not always aligned, because there's another problem - figuring out which vertex to choose as the center of each circle... You need to somehow traverse the mesh and figure out an algorithm deciding which vertex to pick, e.g. the closest vertex to the center of the previous circle...

Thanks a lot Markus. That's exactely what i want. I'm beginner in Python so i will analyse your answer especially the problem.

Markus. I take time but i think i've all understand. That's perfect for my case. The index of the vertex in an edge depend of this order of creation. The first created vertex take the index 0 and the other index 1. All the vertices which are used to be the circles centers are created before others vertices. So index of centers are all 0. Thanks a lot for your help.


text:
Material Problem: nougat filling of a chocolate bar
I'm barely new to Blender and I'm trying to create this chocolate bar. I have serious problems with the inside material. I've tried various shaders but nothing is close enough. Are there any suggestions?
Thank you in advance

First off, this is looking great so far! One of the issues I am seeing is the lighting is very sharp, it looks like the reference has a lot of light from the bottom filling in those ugly shadows for example.

Just as a more general tip: the colors of the node connectors should (almost) always match. You are plugging color into a vector socket. That probably messes up your SSS. Start with the Principaled BSDF alone. Simply increase the SSS from the default node values and go from there.


text:
Geometry nodes, selecting random edge per island
with this node setup, I can select one edge per island, the problem is I don't know how to define or randomize the selected edge.

To select a random edge per mesh island, all you have to do is count the number of edges per mesh island, generate a random value between $0$ and $Edge Count -1$ and compare this with the edge index per mesh island.
Something like this:

(Blender 4.0.2+)
...or even more simplified:


text:
How to count the number of faces of each vertex group?
Hi everyone I am making an addon for my degree thesis, I have a problem with the following: I have to count the number of faces of each vertex group present in my scene and i use this function
           for x in list(bpy.data.objects):
               list_vertex = []
               for vertex in vs:
                    for g in vertex.groups:
                        if (g.group == i):
                            list_vertex.append(vertex.index)
                            break
               for face in list(bpy.data.objects[x.name].data.polygons):
                    isFace = False
                    count = 0
                    for vertex in face.vertices:
                        if vertex in list_vertex:
                            isFace = True
                            count+=1
                        else: isFace = False
                        if isFace == False:
                            break
                    if count == len(face.vertices):
                        count_face += 1

If I try to run the addon on a mesh with few vertices then everything works, if instead I use a bigger scene blender stops working immediately so I think my problem is related to the performance of my code, I'm new to addon programming, could anyone tell me if there is a more optimal method to do this?

What is vs? What is i? They're defined outside of the quoted code.

IIUC you count a poly as being in a vertex group if all of its verts are in the group (no matter their weight) and you want the total number of polys in each group?

Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking.

You can probably accelerate it a lot by just using a set() instead of a list for list_vertices. Doing vertex in list_vertex will be very slow. Also don't use list() on the data.polygons.

Any Corner
Consider a face belonging to a vertex group if it's affected by it - at least one of its corners belongs to the vertex group:
import bpy
from bpy import data as D
from collections import defaultdict

for ob in D.objects:
    if ob.type != 'MESH':
        continue
    print(f"--\n{ob.name}")
    me = ob.data
    g2f = defaultdict(set)  # group to face mapping
    v2f = defaultdict(set)  # vertex to face mapping
    for f in me.polygons:
        for v_index in f.vertices:
            v2f[v_index].add(f.index)
    for v in me.vertices:
        for g in v.groups:
            g2f[g.group].update(v2f[v.index])
    for g_index, faces_set in g2f.items():
        g_name = ob.vertex_groups[g_index].name
        print(f"{g_name}: {len(faces_set)} faces")

All Corners
A face belongs to a vert group only if it's entirely built from vertices belonging to the vertex group:
import bpy
from bpy import data as D
from collections import Counter

for ob in D.objects:
    if ob.type != 'MESH':
        continue
    print(f"--\n{ob.name}")
    me = ob.data
    group_counter = Counter()
    for f in me.polygons:
        size = len(f.vertices)
        verts = (me.vertices[i] for i in f.vertices)
        cnt = Counter(g.group for v in verts for g in v.groups)
        group_counter.update(i for i, c in cnt.items() if c == size)
    for g_index, num_faces in group_counter.items():
        g_name = ob.vertex_groups[g_index].name
        print(f"{g_name}: {num_faces} faces")

Bmesh - Any Corner
This will display info also for unused meshes and won't display info for the same mesh multiple times. Also I don't know how to access a vertex name without an object, though you could create a temporary object just for that...
import bpy, bmesh
from bpy import data as D
from collections import Counter

bm = bmesh.new()
for me in D.meshes:
    print(f"--\n{me.name}")
    bm.from_mesh(me, face_normals=False, vertex_normals=False)
    layer = bm.verts.layers.deform.active
    if not layer:
        continue
    group_counter = Counter()
    for f in bm.faces:
        group_counter.update({g for v in f.verts for g in v[layer].keys()})
    for g_index, num_faces in group_counter.items():
        print(f"Group #{g_index}: {num_faces} faces")
    bm.clear()

Bmesh - All Corners
import bpy, bmesh
from bpy import data as D
from collections import Counter

bm = bmesh.new()
for me in D.meshes:
    print(f"--\n{me.name}")
    bm.from_mesh(me, face_normals=False, vertex_normals=False)
    layer = bm.verts.layers.deform.active
    if not layer:
        continue
    group_counter = Counter()
    for f in bm.faces:
        groups = (v[layer].keys() for v in f.verts)
        groups_set = set(next(groups))
        for g in groups:
            groups_set.intersection_update(g)
        group_counter.update(groups_set)
    for g_index, num_faces in group_counter.items():
        print(f"Group #{g_index}: {num_faces} faces")
    bm.clear()

Doesn't this count a poly as belonging to a group if at least one of its verts belongs to it (vs all of them belonging to it)?

@scurest yes, I thought that's the idea.

Here's the fastest I found. It first collects a set of vertex indices for all groups, then iterates over all polys using issuperset to detect if the poly's verts are contained in a group.
import bpy

ob = bpy.data.objects["Your Object Here"]
mesh = ob.data
ngroups = len(ob.vertex_groups)

# set of all vertex indices that belong to each group
group_verts = [set() for _ in range(ngroups)]

for vi, v in enumerate(mesh.vertices):
    for g in v.groups:
        group_verts[g.group].add(vi)

# number of polys in each group
# (poly is in group if all its verts are)
poly_counts = [0] * ngroups

for poly in mesh.polygons:
    poly_verts = list(poly.vertices)

    # check whether poly belongs to each group
    for gi in range(ngroups):
        if group_verts[gi].issuperset(poly_verts):
            poly_counts[gi] += 1

print(poly_counts)

This was a bit faster than lukas_t's answer, but uses a lot more memory, so I don't necessarily recommend it.
Test mesh was 125k verts, 125k quads, 32 groups randomly assigned, ~3k polys in each group.


text:
How to re-create the folded sheets effect like in the attached images?
I hope this is the right thread for my question. Trying to re-create the "bendy/folded" pages effect. Can you please tell me a few methods on how to achieve this look and feel? i played with the proportional editing, but was wondering if this is the way to go.

hello, what are you struggling with, shape? material?

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

take a look at this question:  https://blender.stackexchange.com/questions/156669/pageturn-duplicate-animated-objects-with-time-offset-animation-nodes
The lattice modifier can help you here

Create a plane, subdivide, create a curve, flatten it on Y, put the 2 objects at the same location:

Give a Curve modifier to your plane with the curve as Curve Object, move the plane so that it deforms along the curve:

Duplicate the plane and curve, modify the new curve so the plane deform the way you want:


text:
How can I create a maze with an indented path in a mesh?
Sorry for being unclear the first time. I was in a rush and haven't noticed my silly mistakes (also english isn't my native lang.)I'll re-edit the question to be clear: How can I create a maze with an indented path in a mesh? I'd like to to re-create this image.
The method I tried was: 1. Imported an SVG maze I created in Illustrator. 2. Used the SVG to build my maze. 3. Used Boolean's  Difference to create the dents in the plane.
Unfortunately it didn’t look quite the same and the edges were too sharp. Since the mesh was a mess, I couldn’t bevel the edges, so I turned to you guys and amazed by all the solutions. Thank you for your help!! You're truly awesome. This was my first time ever asking here.

Would you mind at least sharing a few screenshots in your question to see what you're talking about? I have no idea what "punch an imported illustrator mazstrong texte" means and since I cannot see what you have so far I need a crystal ball to find out why you cannot fine tune the sharp edges - or even what fine tuning sharp edges is. Make them sharper? In some way more exact? Or bevel them so that they are not so sharp anymore?

Hello, do you need to use an existing svg or can you start from scratch?

I wonder what's the logic behind up-voting. Up-vote button tooltip says "This question shows research effort; it is useful and clear". It does show some effort, but as it is formed right now, is it truly useful and is it clear? The way I see it this question could definitely be useful for the community if it was formed clearly, but it's not clear at all, is it? "How do I model a maze with round track for a glass ball?" would be clear, but what does "I cant fine tune the sharp edges that created from the embedded maze. Any other way you think is better?" mean?..

@MartynasŽiemys Not everybody reads the tool tips, some people just upvote because they think it means "oh, good question, I would like to know the answer to that as well" or something like this (and other reasons surely, but I can't look in people's heads). And if we wanted to be very strict, the comments section is supposed to ask for clarification of certain aspects... so you asking for the logic behind up-voting is completely irrelevant to this specific question ;) But I get what you mean and this comment of me is completely irrelevant for the question, too.

I am just trying to understand to be honest. I down-vote quite a lot and before all the editing, I thought this question deserved a down-vote for sure and so I just wanted to understand the different perceptive and see if maybe I am missing something. With the title changed I retracted the down-vote. I still think the question is formulated very poorly, but I guess it is possible to understand it with the current title.

@MartynasŽiemys The problem is, the people up-voting might not even see your comment asking for understanding, and the one who asked the question will see your comment but might not be able to give you a reason either, since you only can see your question being up-voted but neither by whom nor why... so what I mean is you should rather ask for it on blender meta.

It's still sort of feedback to the question at the same time.

I upvoted, because the image is nice. BTW: gorgeous maze generator

Sorry for being unclear! I was in a rush and haven't noticed my silly mistakes (also english isn't my native lang.) I'll try to be clear now:
All I wanted to know is how to re-create this image.
The method I tried was:

Importing an SVG maze I created
Used a Boolean modifier on a plane

Unfortunately it didn’t look quite the same and the edges were too sharp.
Since the mesh was a mess, I couldn’t bevel the edges, so I turned to you guys and amazed by all the solutions. Thank you for your help!!

I upvoted it as it was formulated at the beginning because even though you're right, it was very badly formulated, I decided to translate it as "how to do that", and how to do that seemed interesting to me   ;)

Guys it's my first time here and it was a typo because I was rushing. I re-framed the question. Thanks for all the help!

If you have Illustrator you can save as SVG and import into Blender ...

Under Curve properties > Geometry > Bevel choose type Profile and adjust curvature ...

Convert to Mesh  and use Loop Tool addon > Bridge to fill the gaps ...

Under Object Data Properties > Normal > enable Auto Smooth ...

Thanks so much for the help!! Appreciated

Since I haven't used geo-bool in a while… [I have no idea if it won't fail miserably while starting to write this answer]
Create a subdivided plane. Too little and the maze is too easy, too much and boolean murders you.
Enable proportional editing, select middle vertex, G, Z to move it up, $\color{#888}{█}\color{green}⬇\color{#888}{█}$ mouse wheel down to increase the range by a lot (so near vertices aren't visibly biased), move your mouse to scramble heights.

Then in Numpad 7 Top Orthographic View click on the maze start, and ✲ Ctrl-click creatively to reach the maze end. Avoid boundary edges. You could 2 and click to select one edge on boundary, then ⬆ ShiftG, A "Amount of Faces Around an Edge", H to hide temporarily, but as you can see below, I'm too skillful to need this step:

Assign selection to a vertex group. Then A select all, ., D switch to 3D cursor orientation, S, 0 Flatten everything back.
Add Geometry Nodes:

Name this node tree e.g. "Labyrinth Generator", create a new tree and insert it as a custom group. Now convert the labyrinth to curve, fillet it, convert to mesh giving it thickness.
I'll spare you trying to use Boolean, it doesn't work and takes a lot of time:

Time for Plan B: spawn a dense grid, and shrinkwrap (raycast) on the pipes. Either use a switch in case of misses to also move up to a 0 level, or join another grid with the pipes that will make sure all rays are stopped:

Smooth:

Result:

Unmuting the "Transform" node, reducing grid resolution to 500×500, increasing smoothing to 15 iterations, and maximum (clamped) fillet radius:

For better topology and much faster generation, consider replacing the shrinkwrapping with this technique:
how can I make instances responsible to each-other

That's crazy!  It's def advanced for me but I must try it. Appreciate the help

A quick method that will create something close to what you want, subdivide a plane, select some faces:

Inset (i) and move down:

Bevel the edges in order to sharpen them (or CtrlE > Edge Crease):

Give it a Subdivision Surface modifier and shade smooth (now you can begin to create some edge loops with the knife in order to change the shapes):

Quick, but the main issue with this technique is that corner radius is the same on outer-inner side (ends are not circular, but that is a cosmetic) ... https://imgur.com/KpY9Q3S

I agree, it's far from perfect, it needs some adjustements

Thanks for your help! I appreciate this.


text:
VSE - Move Markers and Strips Simultaneously
I love the markers feature in VSE but they don't stay in sync with strips as I edit them down (cut portions out). Is there a way to have a marker link directly with a moment in a strip so they are always in sync? A similar question was asked here in 2013.
Alternatively, is there a way to move strips and markers simultaneously? My workaround is whenever I move a strip I pay attention to how many frames I move it. But markers move in seconds so I have to divide by the framerate to move them the same amount (e.g. 300 frames / 30fps = 10 seconds). Very tedious. I also like to press "]" to select all assets after the playhead but it doesn't select markers.

i think an add-on might do this or you write a python script for it. AFAIK a marker is just fixed to a frame - not to a strip.

Good suggestion but I haven't found any addons that have this functionality. The VSEQF add-on has some useful features and it even lets you make tags that can mark a moment in a strip but it's not quite enough. I really should learn Python...

Selecting markers and clips, you can type -> G (to move) -> Number#frames
This will move both simultaneously by frame count.


text:
Applying scale makes object puffed up

Hello, I am a newbie in blender and I have no idea what is happening.. When I apply scale(ctrl+a > scale), the object becomes puffed up. Can someone please tell me how to fix this problem? Thank you for your help!

Your solidify modifier's thickness is basically the value you enter times the object scale, so when you apply scale that calculation changes and the value needs to change to compensate

It's a great rule-of-thumb never to scale in object-mode during modelling. If you do, it should make you feel all tingly and want to reach for the apply-button as soon as possible :) .. (Nice boots, BTW)

Thank you so much! I changed solidify modifier's thickness to 0.01 and it solved the problem! You guys are genius! Thank you!!!!


text:
Bevel ruins the geometry instead of creating new one
I tried to bevel an edge, but it acts weirdly, snapping the nearby point.
The wireframe shows that everything is ok, but the shading looks like a complete mess.
I'm a total newbie, so I think I'm doing something wrong here, any advice or a solution would be much appreciated, thank you.

You showed there what you do not want, but what is it that you want? How exactly would you suggest should Blender connect a beveled edge to the surrounding edges? The problem is you split something up into several edges/faces/vertices while the connected edges and faces are not beveled... beveling does not disconnect edges from their surrounding geometry, so the question is how do you want it to look?

Pardon me? Of course it disconnect. Blender usually does new nicely calculated geometry out of your bevel with no problems, the detail I'm working now has several similar edges I have modified, except this one edge. Added an image for clarification.

Splitting vertices is not automatically disconnecting. The resulting geometry is still connected. The difference between the "work fine" version and the one you had to rebuild is the angle between edges and faces (and also the number of edges). When you bevel edges, the split vertices slide along the connecting edges opposite to the bevel the same length and keep the connection to the start and end vertex of the bevel. In the area where it does not work the problem is actually two things:

The corner vertex is connected with edges in opposite directions making it impossible to stay in the same plane when following all directions. It would slightly be better if there was no separating edge between the two adjacent faces in the same plane (like you have in the "work fine" bottom right, otherwise that wouldn't have worked either), but still the faces below the beveled edge form an "inner" corner, which gets overlapped when the vertex sliding away from the bevel connects to the outer vertex of the bevel. I'm sorry I don't how to explain it well in English.


text:
extruding a mirrored object goes wrong

so this how what happen when extruding my object to inside. The faces go inside as will which is completely the opposite of whats happening in the tutorial  here is the link https://youtu.be/QXNRrt8EcEg it start at minute 13  so what should i do

hello please share your file: https://pasteall.org/blend/

It looks like you have selected the faces and extrude them. In the tutorial he selects only the top edge and extrudes it in.

i didnt understand ..so i should extrude  using the edges  not faces?

oh it worked thank you


text:
Soft Body Baking ridiculously slow
I'm working on a soft body simulation and baking it takes like HOURS for just 5 frames. I got an Intel Core i5 9400F, 1060 6G (I don't think GPU is the problem, I'm just baking physics), 16 GB of ram 2666mhz and a 5000 rmp 1TB hdd. Soft Body object has 211 faces and colliding edges is enabled, is hardware fault or something else? It even happens that the colliding object stucks inside the collision and it's kinda frustrating. Since I need this for work I need to speed it up, it's seriously gonna take months and I can't wait that much time...

Depends on your other settings…can u provide blend file?

How can I do it?

open https://blend-exchange.com/ and follow instructions

@ArisynILY Go to Blend Exchange and upload it here. Here is the link: https://blend-exchange.com/

Ok, so I fexed it up by recalculating normals direction, and disabling edges collision. Thanks for helping guys :)

Fixed with:

Recalculating normals
Disabilng Edge Collisions
Unassigning collision physics where there will be no collision with the object


text:
texture stretching
I am using the blender to do modeling and UV unwrapping, rendering in general. Also, I am new to blender. For texturing, I use Substance painter. Recently I faced an issue with texturing. I placed some decals to the model in substance painter and they are looking what it is should be, but when I assigned the exported texture back in the blender it is stretched. This is a low poly object. I looked for the solution, non of they are not helping. Can you all plz help

No modifiers in Blender, which can stretch things.  2) Triangulate models before painting in SP.  Not sure if those are the causes of your problem, but they could be.

thanks Nathan, I'll try you suggestions


text:
Teeth always broken when I rig every character with auto-rig pro
Someone here uses Auto-Rig pro ? Sometime I use it,sometime I use Rigify. The problem is that as soon as I rig every humanoid mesh with Auto-Rig pro I have a situation like that you can see below. I don’t know if I rig the character in a wrong way,but the teeth are always broken and I should spend sometime to fix them with the manual weight painting. Instead,this does not happen when I use rigify. I mean,I know how to weight paint a character manually,the problem is that it takes time. I would like that auto rig pro behaves like rigify : the armature should deform correctly the mesh as soon as I bind it to it. Someone of you has a similar problem ? thanks.

Automatic weights are a feature of Blender, not any individual rig or addon.
The weight calculation uses the bones' size and position relative to the mesh and each other to calculate which bones receive which weights. Changing this can have an effect on the weight calculation, but can also lead to bad pivot points for bones, so be careful. The algorithm used is also designed to blend weights smoothly between nearby bones, so for things that have fairly rigid assignments such as teeth, having to correct afterwards is very common. It seems like you have got lucky previously with rigify.
In my experience, automatic weights will always require some manual correction for good deformation.

yes,I agree. Sometime the automatic weights works ok,but not in every situation. For this reason,when it does not work,I use some other tecniques/ addon. I don't think that I'm lucky with rigify,because each time that I rig a character,the teeth are deformed correctly,probably because the armature is placed better than in auto-rig-pro ?

Hi, Marietto. I just wanted to let you know that I've created an Auto Rig Pro chatroom. I'm hoping that whatever few ARP users there are on this site will eventually begin discussing it there.


text:
With the particle system,when I render the carpet I see no bristles,but I see them in object mode
I have a problem with the creation of a carpet using the particle system ; when I render it,I see no bristles,but I see them in object mode. But this problem appears only in the blender file in which I have copied and pasted the carpet,i.e. in the toilet blender file. Instead,in the carpet blender file where there is only the carpet,when I launch the rendering,I can see the bristles.
this is the carpet blender file.
this is the toilet blender file.

Because of applying scale to copied and scaled rug, your settings become wrong. To obtain the same result in toilet file as in carpet file, you would need to increase number of particles, hair length and thickness in particle settings. I can't give you exact numbers, cause it would require some experimentation.
In the meantime, what you can do fast and easy way, is to delete the carpet and copy it again from the carpet file, but this time only scale it without applying the scale. This way you'll get exactly the same look without changing settings.

yeah,thanks. maybe like this ? https://drive.google.com/file/d/0B_vrhf_PTNauT1BoUi16Qm5YUk0/


text:
How to rotate the arms on the x axis on a lot of keyframes
I have imported an adobe fuse/mixamo character/armature/fbx file into blender and I realized that the arms pass through the thigh,as you can see here :

I would like to rotate the arms on the x axis a little upper in pose mode,but since the animation has 288 frames,should I do it for each frame ? It will take a lot of time !!!. I changed the first and the last frame only,but the frames on the middle aren't changed. I don't know why. Is there a faster way ? thanks. You can find the fbx file here.

I think this is the same problem as this.

If you go to the Graph Editor with the relevant bone selected in the 3D view, you can select and manipulate the handles controlling the keyframes for the particular value you want.  So for the left forearm, I think the value you may want to control is "W Quaternion Rotation".  Type A once or twice to make sure nothing is selected, then select one of the control point handles for WQuaternionRotation, then type L (select linked).  Then type G to move the values up or down for all of the keyframes.


text:
How to find quicly a duplicated bone name
I'm rigging the tail of the bird Piero training course of the CG Cookie and I made again and again the episode 29 : piero rigging spine. I created a new bone and I renamed it "MCH_mindsEye",as indicated by the tutorial,but that name has been converted immediately to "MCH_mindsEye.001",so probably already exists a bone with the first/same name. I tried to look where it could be but I didn't find it. What can I do ? I have also unhide all the bones that I had previously hidden,but that doesn't help.

On the upper right of your screen capture you can see a search text box, in the outliner panel. Type "MCH_mindsEye" in it.

I found it : https://postimg.org/image/7r8pv8hnf/ ; but now how can I remove it ? I can't see where it is on the 3d View

Select it using RMB in the outliner (in edit mode for your armature) and choose select. Then delete it normally in the 3D view

If you don't see it, that can be because it is accidentally hidden. Try "alt+h" if the previous steps do not work

no man,don't work. I tried to unhide it,but I can't see where it is on the 3d view : ---> https://postimg.org/image/cfv8kp6o5/

try doing that in edit mode, your last image is in pose mode

I deleted the bone "MCH_mindsEye.001" and also "MCH_mindsEye" has gone. But I couldn't see where it was.

Highlite it in the list as suggested, look in the 3D window for the gismo arrows.  That's where it should be, even when you cannot see it.  Sometimes these things appear as just a highlited dot in the 3D screen.
Good luck - it's a perplexing problem that one!

It happened again. This time I tried to create the bone "MCH_eyeINT.R",but it is converted to "MCH_eyeINT.R.001". I found "MCH_eyeINT.R" on the outliner,but I can't see it on the 3d View. Can you check by yourself ?---> https://postimg.org/image/o5fwkqhgl/

This happens to me a lot so I end up expanding the text slot where the .001 name is and find my original name, select it.  The bone I've created then takes on that name.  So far nothing untoward has happened each time I do this.   This occurs when I create a new material channel also, and frequently.  Again I simply force it to take the original name from the expanded list.  I'll have a play to refresh my memory as to the fine detail and get back to you...

I've revisited the problem but apart from the .001 name being added to the list, cannot get anything to disappear.  Hope you've got on top of it by now.

yes I found where I wrong. I'd hidden the first copies of the bones using the "bone layer management" addon by alfonso annarumma.


text:
Part of the armature is not copied and pasted correctly
I would like to copy and paste mesh and (rigify) armature from a blender session to another blender session of even in the same blender 3D window,but part of the armature is not copied and pasted correctly and when I select the root bone to move the copied version,part of the face armature does not follow the rest. Do you know why it happens and how can I fix this behavior ? I have recorded a video to show you. You can find it here. Thanks.

So, I would NEVER use Copy and Paste for a Mesh and Armature combination. I would always duplicate in the same Blender project by selecting BOTH in OBJECT mode and then key SHIFT+D and move the copies.
To move to another Blender project, I would ALWAYS append the mesh and armature in one operation from the first blend file to the second. To append, click Append in the file menu and select mesh object, if you have parented them properly, the armature will come with it, in its entirety.
At around the 1 minute mark in your video there is an error message at the top, look in the console and tell me what that was…
Clockmender.


text:
How to add a unit in the input field of a node group (also Geometry Nodes modifier)?
Some nodes like Vector Rotate or Mapping have scalar and vector fields with $°$ symbol or $m$ or yet another unit in them:

This also affects how the value is stored in memory – without the $°$ symbol it is stored basically without a change, but degrees are stored by being multiplied by ${π\over180} = 0.017453...$:

So I need to add "Degrees" to the field name to make it clear I ask for a value in degrees, and I need to divide it by 0.017453 or use Math: To Degrees node. How do I instead just set the input to display a value in degrees?

I'm not a %100 on this, but I don't think you can. Blender puts those degree signs automatically when you link a rotation socket into the input, but there's no option to do it manually afaik. If you link a Rotation value into an input socket and then choose "Vector" from the Type menu, for instance, even though it was already a vector type to begin with, it actually loses the degree sign. What does your "Inclination" value come from? From a "Vector Rotate—Angle"?

You're right. You have to plug an input from a node that has this type of widget (e.g. the “Fac” Input of the MixRGB node) into the group input. It will automatically match the exposed input to the socket you plugged in.

You can use Vector Rotate and Align Vector to Euler to achieve this effect.
As Kuboå mentioned in the comments, GN will "keep" this setting when you insert it into the Group Input:

You can even change e.g. the maximum value in the group settings for the slider - it will still be a slider.

Blender 3.6 update
Most of these sockets (not a 'normal' direction gizmo, not a ghost socket) can now be set from the interface:

To get to this menu, simply press the N key with your mouse within the node editor (or click on the small "<" arrow on the right side of the area), and click on the Group tab.
Before Blender 3.6

⭾ Tab Enter inside the node to which you want to add a socket.
Select any node (this solution needs active_node in context).
Press ⬆ ShiftF4 to switch to Python Console.
Paste one of the codez below, depending on your needs:

⚫ Scalar angle$°$
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketFloatAngle', 'Angle')

⚫ Scalar distance (unit depends on settings, e.g. $m$)
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketFloatDistance', 'Distance')

⚫ Scalar percentage $\%$
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketFloatPercentage', 'Percentage')

⚫ Scalar time (unit depends on settings)
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketFloatTimeAbsolute', 'Time')

⚫ Scalar factor ("slider")
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketFloatFactor', 'Factor')

 Integer (If you want to limit a custom shader/compositing group input to whole numbers)
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketInt', 'Integer')

 Integer factor (filling the field from left to right)
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketIntFactor', 'Factor')

 Integer percentage $\%$
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketIntPercentage', 'Percentage')

 Vector translation (unit depends on settings, e.g. $m$)
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketVectorTranslation', 'Translation')

 Vector velocity (unit depends on settings, e.g. $m/s$)
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketVectorVelocity', 'Velocity')

 Vector acceleration (unit depends on settings, e.g. $m/s²$)
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketVectorAcceleration', 'Acceleration')

 Vector Euler rotation$°$
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketVectorEuler', 'Rotation')

❗ Vector direction (
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketVectorDirection', 'Direction')

❗ seems buggy and shows a black circle but that's because the default value is $(0, 0, 0)$ - set the default to to $(0, 0, 1)$, then delete the node and create a new one from the ⬆ ShiftA menu.

 Vector XYZ (components have X/Y/Z labels)
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketVectorXYZ', 'Vector')

❗ Virtual (⚠ CRASHES BLENDER IN GEONODES ⚠ gray color like geonodes last input/output socket)
C.area.type = 'NODE_EDITOR'; C.active_node.id_data.inputs.new('NodeSocketVirtual', 'Fancy Socket')

I decided to not litter this list with: NodeSocketObject - outside of geonodes it behaves just like float but has an orange color. Some people might consider it nice to have an unusual color in their setups, but it can be misleading so I don't want to promote that; same goes for NodeSocketCollection, NodeSocketGeometry, NodeSocketImage, NodeSocketMaterial, NodeSocketShader, NodeSocketString, NodeSocketTexture.
I also removed the Boolean node (NodeSocketBool) - it would be useful if it worked like a float socket, but allowed only 2 values when no link is connected to the socket. At least the integer socket type works.
NodeSocketFloatTime seems to not add any units, so I omitted it, as well as NodeSocketFloatUnsigned and NodeSocketIntUnsigned, as I don't know what they're supposed to do, they do display and pass negative values…


text:
Make a stack of cubes in Geometry Nodes
I wonder if it's possible to build a stack of cubes as seen on the image:

This is what I tried (not the result I want):

Here's one way [out of many] to do it:

Thanks! This will do the trick. I wonder of it’s possible to make this more scalable. If you could input any number for the bottom row and the stack builds up automaticly.

I think you need a loop to do any number of stacked cubes. The upcoming Blender 4.0 will have Repeat Zone nodes

Many thanks. I guess I’ll have to wait until November.


text:
Problem with UV unwrapping. Why this happening?
Why this is happening? I'm trying to unwrapping part of object then pin it and add that square.

File you can download.

Hi Please use a title that reflects the content of the question. It should be descriptive but succinct, unique and identifying, summarizing the issue so that users can at a glance understand what your post is about. Use the [edit] link below your post and avoid anything not strictly essential to the post. Remember, your title is the first thing potential visitors will see, and makes your question findable for future users. See "What is the problem with posting an image or link and asking “How do I do this?""

Please don't post essential information like links, file downloads or additional details in the comments section where it can be easily missed. Instead edit them into your original post with the [Edit] button above. Comments are transitory by nature, are hard to index or search for, and may be erased at any moment.

I'm not native english speaker

This happens exactly when i use Transform to sphere but why i don't know.

I guess Blender does not like topology there.

Overlapping issue

Try A, M, B, also check if there are internal faces (hide the faces near the problematic area and see if there were faces behind that.


text:
NURBS Curve Animating Start/End Mapping For Unity
I'm trying hard to export this animation to Unity, but everything I have tried has failed and everything I google is about how to move an object on the path.

I have tried exporting to Alembic(AKA THIS LINK How to export an animation that uses a curve modifier? ) . Its making keyframes for each frame, but I need it as a mesh to use it in Unity.
although I explained clearly this is not moving an object or bending it along a curve for some reason my question is marked as duplicate!!!
I dont know how tf I can make this more clear just look at the picture in the link and my gif if you have trouble understanding this.

https://blender.stackexchange.com/questions/57531/fbx-export-why-there-are-no-materials-or-textures

i didnt know i had to say this but theres literally 0 material or textures in this


text:
Creating a Product Mockup: Export Specular Map to image to use as Highlights layer in Photoshop
I am fairly new to Blender and I am using EEVEE to render my scene.
The reason for taking this route:
I do repro design for product labels. Part of our process when working on new pbriefs, is to create visual mockups to present to clients. I work as part of a team and no-one has 3D modeling experience. I need to in the end, create a Photoshop file that I can share with the rest of my team to enable them to create said mockups.
Let's use the following images as example (I did not create them; these are just for ease of reference):

(Image of base model created in blender)

(Image of specular map/highlights created in blender)

(Photoshop Layer Composition)

(Photoshop Image Result)
Just as a note: the bottle images above are from a Photoshop mockup file.
My plan of action:

I want to create a studio with infinity curve & lighting setup in Blender. - I am more or less ok with doing that.
Add my created product mockup to that environment - I am ok with doing that (all materials/textures will be created in Blender, will not be importing external images of any kind).
I want to in Blender using Eevee, render and export the base model image (see image for reference). - I am ok with doing that.
I want to export the highlights (specular map render?) of the model as a standalone image as well - This is the part that I unfortunately do not know how to do.
Import the two images into Photoshop and create a useable product mockup from there. - I am good with doing that.

The typical layer setup for Photoshop will be from top to bottom as follows:

Your Highlights layer with blend mode set to Screen
Your colour tint layer with blend mode set to Linear Burn
Your base item/render layer with blend mode set to Normal

I was thinking as a novice workaround that in step 4, I can:

Apply black as the base colour of the model.
Increase the glossiness/ shine of the model.
Export that as an image to be my highlights layer in Photoshop

Can give me some advice on how to achieve this?

I found this setup helpful for product visualization: https://ibotpl.gumroad.com/l/studiolighting?layout=profile&recommended_by=search

I'm having the same problem actually, I tried the following solutions :

Exporting my file as an OpenEXR Multilayer format after rendering, and using EXR-IO addon with Photoshop to open the file (Look for compositing with photoshop) == this solution didn't help me because the final result was not as the render result after I opened the file in photoshop, it was very bright and the colors were a bit off.

Using compositor, I used a set of nodes (set Alpha, Denoise) to save the highlights and the colors seperately as .png files([check this post][1])

So far, these are my attempts, will update you based on what I figure out!
[1]: How to render specular highlights as a separate image with alpha channel?


text:
Texture Loss in Texture Node during Looped Baking (Python)
I am creating a Python script that bakes the textures for each object in the scene, and then deletes all the shader nodes of the materials of each object and replaces them with image texture nodes of the baked diffuse and roughness maps. However, I've noticed that, after running the program, all of the image texture nodes have been replaced with the baked maps of only the last object and the baked maps of the other objects have vanished.
This is the code that creates the images that get baked onto
def bakeObj(obj, dest, img_size):
    obj.select_set(True)
    bpy.context.view_layer.objects.active = obj

    imgDiffuse = bpy.data.images.new(obj.name + '_Diffuse',img_size,img_size)
    imgRough = bpy.data.images.new(obj.name + '_Rough',img_size,img_size)

In between I bake the textures of the object onto imgDiffuse and imgRough. Then this is the code for the assignment of the images in the same function.
for mat in obj.data.materials:
    print(mat.name)
    mat.use_nodes = True
    nodes = mat.node_tree.nodes

    # delete nodes
    for n in mat.node_tree.nodes:
        excludedNodes = {'Principled BSDF','Material Output'}
        if n.name not in excludedNodes:
            mat.node_tree.nodes.remove(n)

    diffuse_node = nodes.new('ShaderNodeTexImage')
    diffuse_node.name = 'Diffuse_node'
    diffuse_node.image = imgDiffuse

    rough_node = nodes.new('ShaderNodeTexImage')
    rough_node.name = 'Rough_node'
    rough_node.image = imgRough

    # stick baked texture in material
    principled_bsdf_node = mat.node_tree.nodes["Principled BSDF"]
    links = mat.node_tree.links
    links.new(principled_bsdf_node.inputs[0], diffuse_node.outputs[0])
    links.new(principled_bsdf_node.inputs[9], rough_node.outputs[0])

This entire function is called once per object via a loop. For a more detailed illustration of the issue, see the images below. This is the setup of the objects. The highlighted material "shader_crustacean" should have been assigned the texture files corresponding to its parent object "crustacean(1, 1).parts(0, factory=LobsterBodyFactory)"

Instead, it has the texture files corresponding to the last object "crustacean(1,1).parts(10).extra(BezierCurve.015, 10)". The same occurs for all other materials.

Meanwhile, the image dropdown menu seems to show that all the other files have actually disappeared or were overwritten somehow.

It seems that the last call of the function somehow causes all the other textures to get destroyed. Is this some kind of memory overwriting issue or weird bug with blender? For reference, this is all being run in headless mode.

This example is only for one object having its material ready to bake.
import bpy

obj = bpy.context.object
obj_mat = obj.active_material

img_dif = bpy.data.images.new(obj.name + "_diffuse", 1024,1024)
img_rgh = bpy.data.images.new(obj.name + "_roughness", 1024,1024)
img_nrm = bpy.data.images.new(obj.name + "_normal", 1024,1024)

obj.select_set(True)

image_texture = obj_mat.node_tree.nodes.new('ShaderNodeTexImage')
image_texture.image = img_dif
obj_mat.node_tree.nodes.active = image_texture

bpy.ops.object.bake(type='DIFFUSE')

image_texture.image = img_rgh
obj_mat.node_tree.nodes.active = image_texture

bpy.ops.object.bake(type='ROUGHNESS')

image_texture.image = img_nrm
obj_mat.node_tree.nodes.active = image_texture

nodes = obj_mat.node_tree.nodes
links = obj_mat.node_tree.links
for node in nodes:
    if node.type not in {"BSDF_PRINCIPLED", "OUTPUT_MATERIAL"}:
        nodes.remove(node)

principled_bsdf_node = nodes["Principled BSDF"]
diffuse_node = nodes.new("ShaderNodeTexImage")
roughnes_node = nodes.new("ShaderNodeTexImage")
normale_node = nodes.new("ShaderNodeTexImage")
normal_map_node = nodes.new("ShaderNodeNormalMap")

diffuse_node.image = bpy.data.images[obj.name+ "_diffuse"]
roughnes_node.image = bpy.data.images[obj.name+ "_roughness"]
normale_node.image = bpy.data.images[obj.name+ "_normal"]

links.new(diffuse_node.outputs[0], principled_bsdf_node.inputs[0])
links.new(roughnes_node.outputs[0], principled_bsdf_node.inputs[9])
links.new(normale_node.outputs[0], normal_map_node.inputs[1])
links.new(normal_map_node.outputs[0], principled_bsdf_node.inputs[22])

This example is for multiple objects:
import bpy

for obj in bpy.context.selected_objects:
#    obj = bpy.context.object
    obj_mat = obj.active_material

    img_dif = bpy.data.images.new(obj.name + "_diffuse", 1024,1024)
    img_rgh = bpy.data.images.new(obj.name + "_roughness", 1024,1024)
    img_nrm = bpy.data.images.new(obj.name + "_normal", 1024,1024)

    obj.select_set(True)

    image_texture = obj_mat.node_tree.nodes.new('ShaderNodeTexImage')
    image_texture.image = img_dif
    obj_mat.node_tree.nodes.active = image_texture

    bpy.ops.object.bake(type='DIFFUSE')

    image_texture.image = img_rgh
    obj_mat.node_tree.nodes.active = image_texture

    bpy.ops.object.bake(type='ROUGHNESS')

    image_texture.image = img_nrm
    obj_mat.node_tree.nodes.active = image_texture

    bpy.ops.object.bake(type='NORMAL')

And the last, this example is for one object having multiple material slots.
import bpy

obj = bpy.context.object

img_dif = bpy.data.images.new(obj.name + "_diffuse", 1024,1024)
img_rgh = bpy.data.images.new(obj.name + "_roughness", 1024,1024)
img_nrm = bpy.data.images.new(obj.name + "_normal", 1024,1024)
obj.select_set(True)

for slot in obj.material_slots:
    obj_mat = slot.material
    image_texture = obj_mat.node_tree.nodes.new('ShaderNodeTexImage')

    image_texture.image = img_dif
    obj_mat.node_tree.nodes.active = image_texture

bpy.ops.object.bake(type='DIFFUSE')

for slot in obj.material_slots:
    obj_mat = slot.material
    image_texture = obj_mat.node_tree.nodes.new('ShaderNodeTexImage')

    image_texture.image = img_rgh
    obj_mat.node_tree.nodes.active = image_texture

bpy.ops.object.bake(type='ROUGHNESS')

for slot in obj.material_slots:
    obj_mat = slot.material

    image_texture = obj_mat.node_tree.nodes.new('ShaderNodeTexImage')
    image_texture.image = img_nrm
    obj_mat.node_tree.nodes.active = image_texture

bpy.ops.object.bake(type='NORMAL')
```

Although this didn't directly solve the issue, I was having issues with successive baking passes interfering with each other and this fixed that, which allowed me to use an alternate implementation that circumvents manually recreating image tex nodes. Thanks!


text:
Using Geometry Nodes, how do I select the 'apex' vertices only
Got stuck on this for a while...
I have a mesh representing a roof. Now I need to pick those 'apex' points (circled in blue) for instancing specific roof tiles there.

My closest approach so far is:
For each vertex, evaluate all its neighboring vertices and check their height differences (Z of this vertex - Z of peer vertex), so if the min value is less than 0, delete this vertex from the geometry.
So the output geometry should only has those apex points in it.
I know mathmatically this is not the most accurate approach, just thought it might be easier to implement.
This is the GN group I came up with, but unfortunately it doesn't work. The Attribute Statistic node seems just go through the entire geometry and spit a constant value instead of one value per vertex.

How should I fix this issue, or is there a better way of achieving the end goal here?
Blend file:

Could you edit the question and share a .blend file to make it a bit easier for those who might attempt to figure this out? https://blend-exchange.com/

It was super messy, haha. But yea, can do. Let me clear it a bit.

Done, file uploaded :P

Here comes the solution.

The general idea is, to duplicate the mesh. Then, on the copy, we delete all vertices that are not an apex. Finally, we can turn the copy into points and instantiate objects on the apex.
How does it work
The instantiation should be clear, so I will not go into that. Instead, let’s start with the Delete Geometry node.

As you already wrote, an apex is the highest point of himself and his neighbors. This means, we want to delete a point, if there is any neighbor, that has a higher z-coordinate. And to show a bit of goodwill, we add an Epsilon to it ;-). That is what is happening here: The Delete Geometry node iterates over all vertices of the mesh and the others check for each vertex, if there is a higher neighbor.
The difficult part is, to access the neighbors and compare their heights. This is done by the following set of nodes:

There is no direct way, to compare all neighboring vertices of a certain vertex. But the Edges of Vertex node allows us, to sort neighboring edges by a weight and the Edge Vertices node allows us, to access the positions of the vertices of an edge. Only, it is difficult to access the z-value of the highest vertex of the edge, that we receive from the Edges of Vertex node. To solve this, we calculate this value separately and store it at each edge in the attribute max height (I will explain this later). This allows us to read this value right here.
What do the nodes above do? Evaluate at Index reads the stored max height of the edge, that it receives from Edges of Vertex. Edges of Vertex looks at all edges connected to the current vertex, sorts them descending by the attribute max height and returns the index of the first edge in this order. This is the one, that contains the highest vertex of all these edges.
Now let’s look at the nodes, that calculate the max height attribute for all edges:

Store Named Attribute iterates over all edges of the given geometry. Edge Vertices provides the position of the vertices of every edge. We take the z-coordinate of these positions and store the maximum of them in the attribute max height of the corresponding edge.
What is wrong with your node setup
First let’s take a look at these nodes:

Before, you should take a deep look at this chapter (Fields - Blender Manual) of the blender manual. Fields are a core concept of geometry nodes. You need to understand them thoroughly. Especially, you should understand the difference between circled and diamond-shaped sockets and you should understand the concept of field contexts.
What goes wrong with the above nodes is, that Attribute Statistic does not operate on a field, it operates on a value (circled output socket). This means, it does not give you different minima for every point but one single minimum for all points.
Now let’s take a look at the selection of your Attribute Statistic:

First you store the index of every point on the point itself. Then you use the Attribute Statistic node to iterate over all edges. And you use the attribute, that has been captured on the point in the context of the edge. This gives you the rounded interpolated value of the indices of the vertices of the corresponding edge. Let’s say, you have an edge with vertices with index 1 and 6. Than you will get 4 as the result ((1+6)/2 rounded).
Now you select those edges, where the index of one of its vertices is equal to this interpolated value. This is the case for all edges, that have vertices with subsequent indices (e.g. 1,2 or 5,6).
Finally let’s take a look at which values the Attribute Statistic node gets out of this selection:

If the index of vertex 2 is equal to the interpolated value (which is the same as: if vertex 2 has the higher index), then calculate (z2 – z1) else calculate (z1 – z2).
Overall you take the minimum value of this difference of all edges, that have vertices with subsequent indices and delete all points, if this value is less than -0.1.

Oh wow! I'm truly amazed by the comprehensive and detailed deep dive you provided into the fundamental basics. Indeed I knew I must have missed some of those basics. Really appreciate for both your brilliant solution and the thorough explanation. Thank you!

I guess the other thing I didn't form a correct understanding is 'context'. In my case with the use of Capture Attribute, my idea was because eventually all the outputs, including the one spit out from Attribute Statistic node, feed into the Delete Geometry node which is set to the domain of Point, so I thought, ok the main iteration is in a per vertex basis, as if that's the main loop in programming terms, and the rest of the nodes including Attribute Statistic node is a sub-loop that only goes through the edges sharing the same vertex. Well, clearly my ‘hypothesis’ is wrong there, lol.

You are welcome :-) - context is indeed no simple topic. And you have to clearly understand the involved nodes, to know when a context change happens.


text:
Associate Blender with file import in other format than .blend
Is it possible to associate Blender (in Windows 7 and later) to open files as it would be done via Import. I often import files in .dae or .fbx format to Blender and I would like to import them simply by opening the file in Windows explorer. Is that possible?
If I simply associate that file with Blender, it opens Blender in a default state with the cube.

How about making a .bat file which will open blender and load a python script, which will load your object? I've made a little proof of concept.
First, the python script. Save it somewhere. It could be next to the .bat file.
import sys
import bpy

pathToImport = sys.argv[-1]

if pathToImport.endswith('fbx'):
    bpy.ops.import_scene.fbx(filepath=pathToImport)
elif pathToImport.endswith('dae'):
    bpy.ops.wm.collada_import(filepath=pathToImport)
elif pathToImport.endswith('obj'):
    bpy.ops.import_scene.obj(filepath=pathToImport)
else:
    print('Add the specific format?')

As the import operators are not all in the same place (as you can see for the fbx and the collada) I've done this if/elif statement where you can add other formats.
Then the .bat file
SET blender="C:\bin\blender-2.70-windows64\blender.exe"
SET pythonOpenScript="R:\flavio\tmp\openAndImport.py"

%blender% -P %pythonOpenScript% -- %1

I set the paths to blender and to the python script here, easier to manage/change. The %1 at the end of the last line will be the fbx or collada file you want to open.
To finish, right click on any fbx file / properties go to the 'open with' and change it targeting the .bat. That will open the default blender scene and import your object. Any other fbx file should do the same thing. Proceed in the same way for .obj and .dae files.


text:
"Install from File" not working to install addon
I'm facing a problem with the installation of a downloaded addon. I press Ctrl+ALt+U to access preferences panel in addons I select INSTALL FROM FILE

Then a choose caliper script and press INSTALL FROM FILE

After that I go back to the preferences panel and type CALIPER in search bar to find a new installed caliper addons to activate it no such addons among installed !!!

What am I doing wrong?

When an add-on doesn't install correctly, try opening the console first (Window > Toggle System Console, or on linux/mac starting blender from a terminal). When you try to install the add-on, it'll show some errors where that will help you determine the problem.

Thanks people, the problem was in saving python scripts in html format, Thx Cegaton you really helped me. After I've just copy-pasted the scrip's body into Caliper.py and saved it the installation was successful. Anyway I don't get it how to measure distances between to edges of a mesh or two object. In edit more after selectiong two edges if I apply Caliper it shows up an error. In object mode after selecting two object on apllying Caliper it draws a thick arrow with TEXT over it (instead of measuring units ) and the arrow is pointing quite different direction.

possible duplicate of Archimesh installing problems

@user2264246 How in the world did you get an HTML document out of it? That's actually pretty funny! :) Glad you solved it.

I was having problems with this too. I copied the text from the website and pasted it into NotePad++, but it was full of empty lines between the code lines. Blender appears to import this duff code without error, but still doesn't list it in the addons. The solution? Don't use Internet Explorer! When I opened the same code.google.com page in Chrome and copied the text, it then pastes into NotePad++ without the superfluous line spaces, and then everything works as expected within Blender.


text:
Geometry Nodes:"Distribute Points on Faces" vs "Set Material" selection discrepancy
[I butchered the question with a heavy hand, you can still access the previous revision here - MVB]
I use the same field for Selection of those nodes:

Distribute Points on Faces
Set Material

and yet the first node distributes some points on faces, where a material wasn't set by the second node. What causes this discrepancy and how to fix it?

The Selection field:

Can you share your .blend? First thing I'd try is to remove "Points to Volume" and instance icospheres on the points, to make sure those pixels aren't some other artifact. Also perhaps you have some vertical faces that are invisible in this perspective, but spawn points which still are visible…

@Markus von Broady I am using some purchased nodes so I can't share the blend. I will try to generate the terrain without those nodes. As far as invisible faces there are only two materials on the separated plane, the blue water texture and the red selection color.

You can apply the geonodes before the problematic nodes, sharing only the product of proprietary custom groups, not the groups themselves.

sorry for the delayed response. I will attempt that.

Here is the link. link

From the docs:
Set Material

Selection
Whether to change the material of each face[…]

Distribute Points on Faces

Selection
The selection of which face corners[…]

Therefore the difference comes from the fields being evaluated in different domains: face vs face corner. Possible solutions:

using Evaluate on Domain node before one of the pair of problematic nodes, and switching the domain to the domain used by the other node,
capturing an attribute in face domain, and reading the captured attribute, as that face → face corner interpolation is an exact copy of a value,
setting a material first, and then using a material index for the selection.

That Did the job. Thank you for the answer along with the why things were behaving inconstantly. Very Thorough Great job :)

@Grandpa3D We tend to express a thank you with an upvote here. ;-)