text:
Alpha Brush Image Problems
So I have a huge problem with my alpha brushes that I made in photoshop. I'm working on a small personal project for my gf and for a piece of the model I want to put her name on it and a little symbol that I drew up. So I basically made a grayscale image of the symbol and one of her full name. So I used just the text tool for any letters needed. And I used the pen and curvature pen tool for the shapes in the symbol.
Then I exported as a JPG and bring into Blender. But when I use the brush it's pixelated for some reason. This happens no matter what res I have the image on. I have no idea what's happening. I did a test where I did a scribble stroke on an image and exported it the same way to see what would happen. And this came out how it should, not pixelated at all like how the text or shapes turn out with the alpha. I've been trying to fix this for days and resizing down to let's say 256x256 or even 512x512 get rid of a bit of the pixelation. But not even close to all of it. And this is not a geo problem, I know this since when I scale my brush and look at the preview, the preview itself is pixelated. Can someone help me out to figure out what's going on? And I know that this also deals with a software outside of Blender, but I just had to post since I want to finish this for my gf already.
Thank you to anyone who helps in any way possible. Here are some images of what I was talking about earlier, these are in a new doc and not in my project one and the both of the images for the alpha brushes are 2K each. So every setting here is untampered with for the most part(aside from messing with the curve so that the gradient effect goes away). And one more weird thing that happens is that when I try to anchor down her name on the part where I want to stamp it, the anchor oddly curves when it shouldn't. Which is very odd looking.
 Once again, thank you all so much.

Please use paragraphs, walls of text are very unwelcoming to read

Sure thing, will do!

Blender does not automatically create geometry for you (by default) when you sculpt. Try making your mesh more dense (multiresolution or subdivision surface modifiers should work) or play around with "Dynotopo" (dynamic topology) settings in the sculpting panel.

If you press "z" you can toggle wireframe mode to see how much detail your model has.

I can try to see if it is my geo. But at this point, I know that it is in fact not my geo. As I've already applied a Sub D mod with Sub D lvl of 3 on it, alongside a Multires mod also bumped up to about 3 or 4. But I can try using dynotopo as well. Also, if you really look at the second pic with the text, you can see that the actual brush itself gets pixelated, which causes the result to be pixelated as well. This happens no matter what the res of the image is. But I'll check out my geo as well.


text:
Twisted Cylinder (Hyperboloid of one sheet)
I want to create a mesh like this:

with a vertex on every edge-crossing so that every face is kite (nearly rhombus) shaped.
The above image was created just by rotating the top of two cylinders in different directions and placing them on the same position.

But here I wouldn't have these many small faces and the result of the overlapping twisted cylinders looks like this in solid display:

Can you please tell me if there is a way the create these kite-faces. Is there a tool that automatically creates a new vertex and a face for every intersection of edges?

For reference, this surface is called Hyperboloid of one sheet. The property that you've discovered (the surface can be approximated with the rotation of a long, thin flat polygon) makes this shape easy to build and it's the reason why powerplant cooling towers look like this. There are many experiments with this shape.

I think this solves the issue with moonbots answer. Use the TinyCAD addon to create vertices at the edge itersections
EDIT steps:

rotate top face 90 degrees (R, Z, 90)
duplicate (Shift-D) and mirror along any axis (e.g. Ctrl-M, X)
press W and select TinyCAD ⯈ XALL
press F to fill faces
press W and select Remove Doubles

It’s difficult to follow what’s going on in that gif. It would be good to improve the answer to describe the steps in words.

@Pharap we must have posted it around the same time, I didn't see your answer when i added mine

Sorry then, there was only moonbots answer when I started making the gif to mine

@Pharap 4 minutes difference is negligible considering how long it takes to write an answer. It happens.

Edit: Ok this is not what you need. What you need is to use the TinyCad addon as explained in another answer. Anyway I thought you wanted this:

Create a cylinder and subdivide it horizontally
Triangulate with alt P
Delete vertical and horizontal edges: Select an edge and shift G > Select Similar > Direction, or if it's not enough select the Edge Loop with the B selector then shift G > Select Similar > Direction. Delete with X > Delete > Edge Loop. Now you only have triangles
Select the middle of your shape, activate the Proportional Editing, and squeeze with shift Z so it constraints on X and Z axis
If the shape is not symmetrical you can cut the top or the bottom half and copy bottom/top, rotate it 180° and merge with its opposite

Maybe there are cleaner solutions, I don't know  ;)

Nice answer, but I'm not sure that with this method it would be possible to achieve the OP shape: edges look straight and doesn't rely on the fibonacci spiral pattern

oh ok I've missed something then    ;)

Thank you for this detailed post. It is almost what I want to achieve. As @Carlo pointed out, there is only one problem I have with your solution: If you select a chain of edges from top to bottom (Alt-Click) it is not a straight connection between the upper and the lower end.

so I guess you could find a solution with the following question: How can I add vertices to intersection of two edges? https://blender.stackexchange.com/questions/2976/how-can-i-add-vertices-to-intersection-of-two-edges

Take those two cylinders you've got, and apply the script discussed in this other answer to create points where the edges intersect each other:
How can I add vertices to intersection of two edges?
The script provided by @Zeffi:
import bmesh import bpy from mathutils import geometry

def add_vertex_to_intersection():

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

    edges = [e for e in bm.edges if e.select]

    if len(edges) == 2:
        [[v1, v2], [v3, v4]] = [[v.co for v in e.verts] for e in edges]

        iv = geometry.intersect_line_line(v1, v2, v3, v4)
        iv = (iv[0] + iv[1]) / 2
        bm.verts.new(iv)
        bmesh.update_edit_mesh(me)

add_vertex_to_intersection()

The answer also discusses a similar option available from mesh_tiny_cad.
Specifically the X part of the VTX operations:

Or perhaps the XAll operation:

Once the add-on is enabled, you can access it from the context menu like this:

source: Stack Exchange

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

sort: votes


text:
Normals look different from Edit and Object modes
Face orientation is different from Edit mode and Object mode. In object mode, they are all red. In Edit mode, they are correct. How to resolve this issue? Thanks a lot!

Can you show us your modifiers?

It is uploaded to the original post. :D

You have 'Flip Normals' checked in your Solidify modifier. Is that it?

OMGoodness, I do! Thanks! I did not even know i did that. lol

I checked "Flip Normals" under Solidify Monifier. Thanks for Robin Betts pointed out.

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


text:
Questions about Displacement and modeling
Question 1: these lines appear after I did those dripping drops. They do not look odd in the final render, but I wondered how to remove them.
Question 2: the donut looks like made from Polyethylene. Please see the Nodes blew.

There is the final one, looks like a one-week-old donut. lol

There is the node.

Thanks for your time~

maybe share your file? https://blend-exchange.giantcowfilms.com/

The file is apparently too big to upload here.

Answers found by myself.
1. there are duplicated vertices because I hit E and did not do anything then hit E again.
2. Aged donut because I forgot to give subsurface to the donut.
I hope this can help anyone who has the same problems. It is just so much to learn.


text:
How to fix the connected edge problem?

The picture on the right should be the right result. I am following a tutorial.
Mine is on the left. There are gaps on the top and bottom, they would not close up. Can anyone help?
I used Array modifier and use an Arrow empty to make the circle closed.

I did twist the value of the Merge, but it still gave me problems. Until I set a small value then set a bigger value then set a small value again, it finally worked. Maybe it is a bug on mine.

You have to check "Merge" And also "First and Last" in the array modifier. You can tweak the merge distance if there is still a gap. Your relative distance should be 1.00 on the array axis for it to work out of the box.
Alternatively, with Blender 2.82 and onward, you can use the weld modifier and set the distance threshold accordingly. This modifier merges vertices which are closer than the threshold.

... also, make sure any subdivision is below the array.

I did check MERGE and FIRST AND LAST but it does not do anything. and if the DISTANCE is 1, then the shape becomes deformed, uploaded above.

Did you by any chance tweak the "auto smooth" angle settings in the object info ?

No. I did not use it.


text:
How to animate paper tissue pulled out from a box?
how to make the animation of pulling out a piece of paper tissue out of this container? I am a freshmen of animation, not sure which would be the right direction to dig into. Seems like it could be a combination of curve and rigid body? Thanks a lot!
In the picture, it is just a still model.

Aug.9th
Alittle update on this issue. I made a premature anime of pulling the paper tissue out.
Inspired by a toothpaste tutorial on youtube. Links: https://youtu.be/46DgMdxEhRQ
There is my paper tissue anime.
Graph editing is confusing, comments are welcome.

is it supposed to be pulled by a hand? I guess you need to use Cloth physics and give your object a vertex group in order to use the cloth's Pinning option

No hands, but like you said it will be pulled out from a corner or the edge, pin will be definitely involved. Is there a feature paper tissue above this surface will show and below the surface will be hidden? Or, how to hid the rest of the tissue? Or just fold it?

There is the final animation of the paper tissue flying out of the container.
Paper tissue flying out the container
There is the set up.

oh nice, yes maybe it was more reasonable to achieve it this way, I tried to find a solution with physics but it seemed hard to achieve as it would have necessitate 2 points of tension, perhaps it was possible with one of the vertex modifier?

@moonboots vertex modifier? Please explain more. :D

with Vertex Weight Proximity modifier for example you can make the vertex group change through time, which maybe could have allowed to change the cloth pinning group? I'm not sure it is possible though

@moonboots it is a very interesting thought. I want to give it a try. or would you? :D

I did give a try but it gave me headache   ;)  actually if I had to do it I would have fake it like you've done, surface deform etc, I would have avoid physics because I'm not an expert enough, but it's an interesting challenge


text:
is it possible to make a setting enabled by default?
I would like to make Smoke Adaptive Domain enabled by default whenever I create a Smoke Domain.
However, when I tried creating a smoke domain, enabling Adaptive (and setting the Margin to 2) deleting the domain, and saving the startup.blend,  it only remembered that the Smoke Adaptive Domain settings were expanded, rather than hidden as they are by default.
Is this possible? (it seems that it should be, as I was able to make both the Border setting enabled and make the preview samples value 0 by default.)

Short answer no.
Well not really, the closest thing you could get this would be...

Define your own operator in Python which calls the regular operator and makes some adjustments after.
Modify the defaults in Blender's source code (ok, this isn't a real solution, just noting that its possible and not that hard if you build blender already)

Both are clunky workarounds.

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


text:
How to remove line sample?
You can sample the pixels of an image in a line with the Sample Line option in UV/Image editor > Properties Region > Sample Line, then dragging a line across an image.
However, I can't figure out how to remove the line afterwards. (I can zoom out and sample a new line far away from the image so it is less distracting, but this can't be the right way to do it)
How to remove or hide the sample line?

Click the Sample Line button again, then RMB to cancel - and the previous line will be gone.
If you want a button to directly remove it, edit the space_image.py script like shown below:
class IMAGE_PT_sample_line(Panel):
    bl_space_type = 'IMAGE_EDITOR'
    bl_region_type = 'PREVIEW'
    bl_label = "Sample Line"

    @classmethod
    def poll(cls, context):
        sima = context.space_data
        return (sima and sima.image)

    def draw(self, context):
        layout = self.layout

        sima = context.space_data
        hist = sima.sample_histogram

        # Add a remove button for sample line
        split = layout.split(0.9, align=True)
        split.operator("image.sample_line")
        sub = layout.row()
        sub.operator_context = 'EXEC_DEFAULT'
        split.operator("image.sample_line", icon='X', text="")

        layout.template_histogram(sima, "sample_histogram")
        row = layout.row(align=True)
        row.prop(hist, "mode", expand=True)
        row.prop(hist, "show_line", text="")

Odd, I just tried this and it didn't work.. (I was rendering, but that shouldn't have anything to do with it?)

Hm not sure, better wait for a dev to answer this question. There should really be a "remove" button IMO and it should work while rendering as well.

Should I wait to post a bug report?

I tested removing the line with your UI button while rendering, and it works.

Great :) But still, better report and add a link to the tracker.

added report: https://projects.blender.org/tracker/index.php?func=detail&aid=36981&group_id=9&atid=498

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


text:
How to separate locked areas?
If you move an area to match up with another area, the get "locked" and I can't figure out how to separate them without joining and splitting a new area.
You can see that at the beginning the areas are separate, but at the end they are locked:

It seems to be made as intended. I don't think it is useful in most cases, either. Good question. I'm also waiting for a possible answer. :}

@LeonCheung It is useful for joining areas that don't share a complete edge, however it's really annoying when they get locked by accident and I have to redo my layout..

For easy understanding, let's just call the areas in your image as "Left" and "Right"; and "Middle" for the new split area:

A Three-click Way:

Right Click on the border of the right area;
Choose "Split Area", move the mouse to the area you want to split;
Click and drag on the little triangle at the upper-right corner of the left area towards the middle area, to join them as a new one. Release the mouse button.

As shown below:

A Two-Click Way:

Click and drag on the little triangle at the upper-right corner of the left area;
Click and drag on the little triangle at the upper-right corner of the middle area towards to the right area, then turn back to left. Release the mouse button.

Good answer, Leon. Glad to know there is a way to un-stick it, but there really ought to be a "Separate" or "Unlock" option in the Area Options contextual menu when you right click on a four-window intersection. I think a right-click is the first thing people try when they get stuck like this. If any devs are reading this, please consider adding it. :-)

I think there are already a UI refactor project going out there. Let's pray to see that soon. :)

authors: Максим Орлов


text:
How to control a short "animation" with a single bone?
I've never really rigged something before (not counting automatic weights ;).
I've made a simple rig of a landing gear, and I'd like to have a single control bone control the whole unfolding sequence.
I've made a simple animation mostly showing what I want to bone to do by moving it along the Z axis:

I tried to setup various transform constraints to rotate the various bones according to the Z location of the control bone, but I must be doing something
wrong, as they don't work as I expect.
Blendfile
Is this even a good approach to rigging something like this?

What do you expect? The little flap (last moving part) should be moved before  the 'foot' reached the ground? I don't know about conventions,"Death to the Armatures by Christopher Kuhn" describes how to animate mechanical parts completely without bones.

@stacker I'm trying to make it so that moving control_bone on the Z rotates all the bones so that moving the control bone up retracts the landing gear, and moving it down extends it. Are armatures considered bad practice for    mechanical animations?

For this approach, I've always been using shape keys and the I rotate the elements using the 3d cursor and then use one bone to control the speed of the animation.

@gandalf3 You basically want the 'Action Constraint', which allows an object to act as a driver for an 'action'. I couldn't get it working enough to feel I could post an answer but the Tears of Steel quadbot has examples of it working.

What is the Suzanne.004 on layer 20 for?

@David That's just a manifold Suzanne that I keep in my startup .blend. Not related to anything in this case.

Blend file
I took your blend, made a copy of the landing gear and rig and deleted the animation.
I then added Transformation Bone constraints to four of your bones; arm1, arm1.001, pad, and pad_backflip. Notice the different values of the Min and Max for the Source Z axis on the Transformation constraints. That is how I timed the different parts to happen at different times. Your Control_bone drives all of the Transformation constraints.


text:
Is there a way to delete unneeded keyframes automatically?
I made an animation by keying every bone in the rig on every keyframe.
Now I have a lot of extra keyframes, as some bones didn't move at all, remaining the same for all keyframes.
Is there a way to delete these extra keyframes automatically?
And are there any "good practices" to help prevent this happening?

Yes you can.
In the Dope Sheet, select all channels by pressing A while hovering over the list of channels, then press O. All unnecessary keyframes will be erased.

Doesn't this also mess with the clamps/tangents?

@Laambi What are these clamps/tangents?

@GiantCowFilms They are the handles/sticks you manipulate in the Graph Editor. They are highlighted in this picture: http://wiki.blender.org/uploads/thumb/b/b2/Doc26-fcurve-extrapolate2.png/300px-Doc26-fcurve-extrapolate2.png

And I don't remember where I read so, but I think "O" resets them to a preset. Just worth noticing, so you don't erase days of work ;)


text:
Is it possible to find the nodes connected to a node in python?
Is it possible to find nodes connected to a node?
For example, could you trace your way back through a node tree from the material output node by finding the node connected to the material output node, then finding the node(s) connected to that node, then the nodes connected to those nodes, etc.?
How is this possible?

The python path to the links between each node is
bpy.data.materials[].node_tree.nodes[].inputs[].links[].from_node

So for each material we want to start at the Material Output node then loop through each array of inputs[] and links[] to move through the connections. Going this way (using from_node) there should only be one link for each input, but if you want to reverse the order (by using to_node) you can have multiple links for each output.
import bpy

def followLinks(node_in):
    for n_inputs in node_in.inputs:
        for node_links in n_inputs.links:
            print("going to " + node_links.from_node.name)
            followLinks(node_links.from_node)

for mat in bpy.data.materials:
    print("Traversing " + mat.name)
    for mat_node in mat.node_tree.nodes:
        if mat_node.type == 'OUTPUT_MATERIAL':
            # we start at the material output node
            print("Starting at " + mat_node.name)
            followLinks(mat_node)

I have thousands of objects for which I need to update their materials' nodes/links using Blender's Python API. I am pretty new to nodes stuff in Cycles and I haven't been able to wrap my head around how I can do that. It seems that some version of your solution here should work for what I want to do. I wonder, could you please take a look at my question here? It would be great if you know how I can do what I want.

Hi, could you show a code sample how to get the inputs index of connected node to the output of a given node? For example, if I have a normalMap node connected to Principled BSDF, I can get the Principled BSDF by mat.node_tree.nodes['Normal Map'].outputs[0].links[0].to_node, but is there a way to find it's connected to inputs[19] of Principled BSDF?

@JuneWang you would be better asking that as a new question

Just in case it will help someone, this is also true for geometry nodes.

Hello from 2024.
Here's a non-recursive (as in the function doesn't call itself over and over. Nodes are retrieved recursively through a stack), customizeable variant. Works with the latest Blender (4.1.1), can traverse insanely large materials.
Basically, this is a "pro" way of traversing trees.
Hope this helps.
import bpy

# material =       Material to traverse
# starting_point = Start at this node
# yield_reroute =  Whether to yield reroute nodes

# 'material' can be none, if 'starting_point' is provided
def walk_node_tree_backwards(
    material=None,
    starting_point=None,
    yield_reroute=False
):
    # Realistically, most materials only have one 'Material Output'.
    # Don't traverse potentially large trees twice, if possible.
    root = starting_point or material.node_tree.nodes.get('Material Output')

    # Couldn't get the starting point node the easy way.
    # Find the material output manually.
    if not root:
        for node in material.node_tree.nodes:
            if node.type == 'OUTPUT_MATERIAL':
                 root = node
                 break

    # If still no starting point - give up
    if not root:
        raise LookupError(
            f"""Could not get the starting point. Current starting point is: >{root}<. """
            f"""There's either no starting point in material >{material}< """
            f"""or provided starting point >{starting_point}< is invalid """
            """OR BOTH material and provided starting point are somehow invalid..."""
        )

    # Walk DOWN the tree
    stack = [root]
    while stack:
        node = stack.pop()

        if node.type == 'REROUTE' and not yield_reroute:
            pass
        else:
            yield node

        for input in reversed(node.inputs):
            for link in input.links:
                stack.append(link.from_node)

if __name__ == '__main__':
    # Sample usage.

    # Go through every material in the blend file.
    for mat in bpy.data.materials:

        # A material can be not node-based
        if not mat.node_tree:
            print(f'=== Material >{mat.name}< is not node-based. Skipping ===')
            continue

        print(f'=== Traversing >{mat.name}< ===')
        for node in walk_node_tree_backwards(material=mat):
            print('\t', node)

I'm also not a fan of recursion it's just not efficient, a programming noob-trap like linked-lists. Also in Blender Python the limit of depth is only 995. In many languages the limit is much bigger but it's still hard to avoid a hard crash using it - whereas putting a limit on the stack size or detecting if you run out of memory for that stack is trivial by comparison… BTW, both this and sambler's answers have a potential problem of hanging, if a node tree has a circular reference - unlikely, because such a node tree is "invalid" (red link error), but possible.

Consider using root = next(n for n in material.node_tree.nodes if n.type == 'OUTPUT_MATERIAL'), without a 2nd "default" argument it will error out if nothing is found, though probably you still want to catch the error and redefine a more readable one as you do… BTW what's the point of printing the root in the error message if it's always going to be None?
if <condition>: pass else: <block> can be simplified to if not (<condition>): <block>, and in this case further simplify to if yield_reroute or node.type != 'REROUTE':

@MarkusvonBroady

@MarkusvonBroady
Thanks for slimmer solutions for certain areas.
If the one using this python snippet needs to catch super edge cases, then chances are they can totally modify these 20 lines of code or literally just only leave the traversing mechanism and supply the starting point themselves.
As for printing root... Nature of habit, I guess... I always print everything, because otherwise I start developing schizophrenia, such as
"am I TOTALLY sure it's what I think it is !?",
"Is it ACTUALLY None or is it some other rubbish somehow ?!"...
you got the point...


text:
How to change the Blender Console number of spaces used for indentation?
As I make myself comfortable scripting in Blender I use the Scripting workspace: the Text Editor and Python Console in particular.
I've noticed that the Text Editor uses 4 spaces for indentation while the Console uses 5 somehow.
This makes it cumbersome to copy tested snippets from Console into Text Editor as I need to manually edit every single indentation.
Here is a short sample copied from Console:
 for o in C.view_layer.objects:
...     print(o.name)
...

Is this normal behaviour ? Is it possible to change Console's indentation to 4 spaces instead of 5 ?
What is the recommended workflow that would allow consistent copy/pasting between Console and Text Editor ?
(Note this is on Windows 10 using Blender 2.82a)

The indent is 4 spaces.

The console indent is 4 spaces.
>>> C.space_data.prompt
'>>> '

The prompt is ">>> " notice the space at the end, you are counting it as being in indent.  Can select console code and choose "Copy as script" effectively chopping length of prompt from start of each line.
Copy from image pasted here
import bpy
from bpy import data as D
from bpy import context as C
from mathutils import *
from math import *

#~ PYTHON INTERACTIVE CONSOLE 3.8.2 (default, Apr  2 2020, 03:24:36)  [GCC 7.5.0]
#~
#~ Builtin Modules:       bpy, bpy.data, bpy.ops, bpy.props, bpy.types, bpy.context, bpy.utils, bgl, blf, mathutils
#~ Convenience Imports:   from mathutils import *; from math import *
#~ Convenience Variables: C = bpy.context, D = bpy.data
#~
for i in range(20):
    print(i)

Notice it copies all the console buffer and adds the imports, not just the selection.
Would be simple enough to use standard copy and chop 4 from each line of the clipboard.
>>> for line in C.window_manager.clipboard.split("\n"):
...     line[4:]
...
'for i in range(20):'
'    print(i)'

>>>

I am so happy I was so wrong :) Thank you so much for the detailed explanation (+1). Would it be possible to copy the Console text selection as a script (as opposed to the whole content) ?


text:
Duplication with rotation only on the Z axis
I'd like to know if it's possible to duplicate an object along a curve so that it follows the curve but only rotate on one axis (Z axis), and not on the X or Y axes. First picture is the result I want, second picture is the result I get with an Array + Curve Modifier. Dupliframes doesn't give any good result either. Thanks in advance!

file is here: http://pasteall.org/blend/index.php?id=48706
EDIT : solution found with a Dupliframes, then a Constraint > Limit Rotation for my object... Thanks everyone

Add your blend file to the question via http://blend-exchange.giantcowfilms.com/. That way people don't have to guess at how you've set up things, and can give you an answer that you can actually use.

Thanks dr Sybren. Ok I've found a solution, I use Dupliframes, then I use a Constraint > Limit Rotation for my object, and I click on Limit X and Limit Y. Thanks everyone!

Please write this as an answer, ideally with a screenshot of the setup, so that others can easily find your solution as well. It's the least you can do for the community after asking for help ;-)

Until 2.79: I use Dupliframes, then I use a Constraint > Limit Rotation for my object, and I click on Limit X and Limit Y.
Since 2.8: See Gorgious solution here.

can you add more detail to this question/answer? Now the question has a broken link, it would be helpful to have more information so that other users can learn.

sure, that's what I was planning to do, now the method has changed, plus there are the geometry nodes, I'll do it soon


text:
How to make emitted particles disappear when they hit a surface?
I'm wondering, how to make emitted particles disappear when they hit a surface? Is it even possible? The Boolean modifier (Difference mode) doesn't seem to work...
My question came after watching a (nice) Dereck Elliott tutorial. He creates the boat splashes with particles, you can't see the particles going through the boat because the boat is closed, but if it was open, how to fix this?
Using the Lifetime can only work if the 2 surfaces are parallel.
Thanks in advance.

Related https://blender.stackexchange.com/questions/28739/how-can-i-make-particles-remain-stationary-on-a-surface/29029      https://blender.stackexchange.com/questions/87691/particles-collide-with-first-object-then-die-on-second-collision  https://blender.stackexchange.com/questions/72609/how-to-create-convincing-rain-with-a-particle-system

On the object that should make particles disappear when they come into contact with it, set the 'Kill Particles' option after enabling 'Collision' on the Physics tab of the Properties editor:

oh ok thanks a lot  ;)


text:
2.8's Grease Pencil: Is it possible to scale several frames at the same time?
I was wondering if it was possible, in Draw mode, to select several (or all) shapes of the same Grease Pencil object and scale/move/rotate them together. For example here select both the star and the spiral, here displayed all at once because the "Onion skinning" option, and scale them up, which would mean have an simultaneous influence on different keyframes.
Thanks in advance!

(It might be useful to point out that you are talking about shapes at different frames, here displayed all at once because the "Onion skinning" option is enabled)

thanks, it's done, I hope it's more understandable

Multiframe editing
Make sure to have both the Dope Sheet and the Viewport visible, then

in the Viewport, Tab into Edit mode
in the Dope Sheet, box select (B) the keyframes you want to be affected (they will turn yellow):

in the Viewport, make sure that the button next to "Multiframe" () is selected in the top bar
Make your edits

As of today, you won't be able to preview the effect on the other keyframes (except the current frame) while editing. But going back into object mode will reveal that the edit has taken place for all of them.


text:
How to make the Black pattern repeated on the ring? Resolved
The black color pattern only shows on the front and back. What method could make it shown on the left and right sides? The black part is made with a colorramp node and controlled by a vector map in size and position.
Thanks for your time to review and answer my question.

Update 01-21
This is my result from using the node set-up.

There was a similar question here https://blender.stackexchange.com/q/26889/115533

Does this answer your question? How do I repeat a gradient color ramp?

Thanks, guys! However, this setup does not work for me. I got weird results.

Here's a simple setup using Gradient Texture's Radial option.

As long as you land on an integer for the value it should distribute evenly.

Hi Allen, the method works. Thanks!

I did adjustments to my situation based on Allen's node setup.


text:
How to resolve these artifact looking after apply normal map?
There are so many black areas showed up after the normal map connected. Thanks for answering my question. :D

I guess this image representing problems better.

Can you provide the file?

There is trouble to upload the file. I uploaded a screenshot, I guess that's the problem? Maybe? It is in the original post. It looks like there is missing information from baking.

The problem has been resolved. It is caused by the missing info from the normal map.
To fix the normal map, I used Photoshop to clean those spots, and it works just fine without baking another one.


text:
Need an practical method to model this bike wheel
I have been struggling all day today to get this modeled right and failed. Would anyone give me some tips? The result I have is beyond bad. Can not even get the rim done.
Thanks a lot~ This is driving me crazy. :D

Please do not laugh at me. This is what I have done (the fifth version. lol). Its passed midnight, can not sleep by thinking about it. lol

Hi. Which part is the issue?

The Rim so far. lol I have not gotten any further than that.

Don't forget that in real life, the parts are not joint.

I tried this way, it also worked. A little more work than the answer LEMON provided. Thanks again. And I am really happy with the outcome. Journey continues! lol The same method, I made the disk break.

The principle can be around this:
We are in top view here, there is a mirror modifier along Z and a subdivision surface:

From left to right:
Add a circle with 6 edges. Shift it a bit along Z (for the mirror and rim thickness).
Extrude all and scale down ES.
Rotate the center part.
Select all the faces and inset I.
Extrude along Z E to the mirror center.
Delete the faces X, faces only.
This is only an approach. Of course you need to work a bit more to make it accurate to the picture.

Was about to delete this answer seeing your current result... But anyway, if that can help...

Lemon, thank you so much for the detailed explanation. Really really appreciate it. Your answer helps A LOT! I am going to work on it right away to figure it out.


text:
How to duplicate these animated Tentacles?
I made one tentacle work, but there should be 5 of them. What is the practice method to duplicate them? I tried to use Instances, and they did not work. Thanks, all!
There is the blender file.

parent the object + armature to an empty, move and rotate the empty the way you want, parent it to the main object?

if moonboots answer doesn't work, pls provide blend file

@moonboots, I tried that, but when the IK's location changes, the claw does not open correctly.

@Chris the blender file is uploaded to the original post.

I have found one way to make these Tentacles work.

Duplicate the entire Tentacle
Reparent the IK targets and curves.

The solution is not perfect because this guy only has 5 tentacles. If he has 20, I have to repeat this process 20 times. If anyone has an easier way to reduce the workflow, please advise.
Thanks for the suggestions from @Chris and @Moonboots.

I'm sorry, but I did not understand the solution, could you please post pictures of the process?

hide body
select all (box select)
press SHIFT-D and move
test out whether all works as expected

I tried your way, but the claw does not move correctly along with the Body, and tentacles are detached from the Body. I will show you later.


text:
Armature Deform Not Working Cased by Mesh Size [Solved]
Solution: Objects were too small. After scaling them up 4 times and re-parenting, bones are working. Discovered the answer from one of the comments in this post.
There is the problem:

The objects are parented to Armature Deform->Automatic Weight.
After parenting, objects move along with bones. However, when bones are rotated in the Pose mode, the top 9 pieces are not rotating.
The error message from Blender is:

Thanks for your help!

There are dozens of questions here that address this.  Basically, your mesh has a problem, probably that it is non-uniform.  See this question for a discussion of the problem and the answer.  Edit your mesh and merge by distance to remove dups as a start towards fixing the problem. Automatic weights will continue to fail until you fix the non-manifold issue.

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

Thanks, everyone! The problem is the scale. My mesh was too small. After I scaled it up 4 times, bone works.


text:
How to draw text and shapes to a Texture?
Using Python I'm trying to generate a texture with a few lines and text.
I've got a proof of concept using Pillow and a function to convert from PIL Image to Blender Image,
but I would like to avoid having the extra dependency.
Is there a built-in 2D Graphics API I could use to draw shapes and rasterise/sample pixels for a texture ?
I had a look at the Grease Pencil API which looks great for drawing.
Would it be possible to get an Image/pixels from Grease Pencil ?
If so, how ?

Unfortunately I haven't found a way to easily render text using the GreasePencil API nor a way to capture GreasePencil text/lines into a texture (Blender Image).
I ended up using PIL and copying the pixels over to a Blender Image (method described here). Other than the conversion using [:] to access pixels slightly faster the other speed up was using a bitmap font (as opposed to a true type font which was slow to rasterize):
font = ImageFont.load(os.path.join(os.path.dirname(os.path.abspath(__file__)),"fonts","haxor.pil"))


text:
Is there a way to bake animated/ deformed geometry?
Is there a way to bake/cache geometry deformations (in this case, an animated character)? This would be handy if I wanted to import an animation to another scene, or just to save computation power if I wanted to add, for instance, a cloth-simulation on top of it.

You can export most animations as point cache files (*.pc2) and read them back in using the Mesh Cache modifier. The export addon is not active as default so you have to enable it beforehand.

To read it back in, use the Mesh Cache modifier. The option to read PC2 files is under the format option.

The PC2 format works well with 3dsMax's Point Cache modifier as well, so you can use it to transfer animations between the two programs. Not sure about Maya.
One thing you should keep in mind is that PC2 cannot save fluid simulations. Point caches require that the number of vertices remain the same between objects, and this is not the case with fluids. However it seems that a modifier for reading OBJ sequences is in the works, but that's still coming.


text:
Is there a way to set initial state with rigid bodies?
Let's say I set up a Rigid Body simulation in Blender (not in GE), and then run the simulation for a number of frames. Is there a way to tell Blender to use the current state and position as the initial state? So that when I go back to frame 1, the rigid bodies stay in the same place they did in frame X.
For instance, if I want a pile of bricks, I first place the bricks in the air and then let them drop down on the ground, coming to rest. When they have come to rest, I want to use that position as the starting position.

Use the "Apply Visual Transform" operator. You can find it in the "Apply" submenu of the "Object" menu in the 3D view header or by pressing ctrl+a.
This way you don't need to bake the simulation and don't loose the rigid body settings.

Select all the rigid bodies and choose 'Bake To Keyframes' from the
'Rigid Body Tools' panel.
For v2.8 use the menu Object > Rigid Body > Bake to Keyframe

Set both the 'Start Frame' and 'End Frame' values to be the frame number that you want to be the new start position, e.g. you may want frame 20 of the simulation to be the new starting position, so 20 is the frame number to use.
Via the 'Dope Sheet' delete all the keyframes that have just been created for the rigid bodies.

This will remove all the rigid body settings and will create 1 keyframe per object to store the object's position at the desired frame. You can then delete this keyframe and the object will stay at that position.
New rigid body settings will then have to be applied to the objects to start a new rigid body simulation.

For 2.8 use the menu
Object>Rigid Body>Apply Transformation

An Apply Transformation button was added to the Physics tab of the tool shelf in 2.70.

This will do pretty much the same thing as Apply Visual Transform as in sergof's answer, but I thought I'd mention it anyway.


text:
Freestyle rendering problem (REALLY big gaps/"fur")
Okay, so I have this cartoon rabbit Im working on. I've set up the freestyle rendering so that it used to look like this:

Had tiny gaps but I could live with it. Now, I made some kind of small change (Im still not sure what exactly caused this, but Im pretty sure I didnt modify my freestyle settings), and now it looks like this:

I can fix that a liiiitle bit by disabling the "Face Smoothness" option, but it still looks terrible:

Can anyone help me fix this bug? I looked around on the internet, but no one has had a freestyle gap problem quite this bad or even similar to this. The usual "huge gaps" people complain seem quite tiny in comparison. Unfortunately I dont have any backups of the old version (that tpose render is all I got of), or else I could backtrack or compare what went wrong...

As always: In this case, consider uploading your blend file, so that someone can have a closer look at it. I would guess you have double vertices or something.

Yes, Grimm was right, I had double vertices, I must have duplicated the model accidentally! This is solved now. Thanks a lot!

That's great. So please, mark your answer as accepted so this topic is complete.


text:
Normal Map bad shading in Rendered display
I have a Normal Map problem: I've baked a high-poly sphere to a low-poly, but whatever I try there's always a bad shading on the surface of the low-poly in Rendered display, between the light and the shadow. It disappears if I unplug the Normal Map. What am I doing wrong? Is it inevitable? Am I missing something? Thanks in advance.
Edit: Solved by Serge, it looks like it's the terminator issue, fixed with a bigger light size. Answer also given here by IkariShinji, and as Leander pointed out, here by Crazycourier.
file:

Looks like terminator problem

wow you're right and it seems like the solution is to increase a bit the light size, thanks a lot, please give an answer so that it can be considered as solved. It took me the day to understand  :p

Possible duplicate of Some areas of the mesh are dark. Related and related (autosmooth).

thanks for your suggestions, Crazycourier answers correctly in your second link when he talks about light setups, in my case the solution won't be to Smooth shading (it's already smoothed), nor increase the topology (it would ask a very high level of subdivision and anyway it would make no sense in that case, Normal Map is used to avoid high-topology), nor Auto-smooth (doesn't work), but increase the light size.

https://blender.stackexchange.com/questions/27982/how-to-avoid-terminator-artifacts-while-still-using-smooth-shading-and-the-new-p

Terminator issue hasn't got a proper solution for Cycles yet. Increasing Lamp's size makes penumbra bigger and issue becomes less visible.
Size setting is here:


text:
Object following an Empty and deforming along a curve
I would like to find a simple solution for my animation:
I would like an Empty to follow a Curve + an Object following the Empty and deforming along the Curve, like for example a trail behind a spaceship
If I parent the Object to the Empty and use a Curve modifier for the Object it won't work because the Object will follow a line that is not straight, so it goes away
I could unparent the Object, keep the Curve modifier and synchronize its speed to the speed of the Empty so it would look like it follows, I could also rig bones to my Object, etc... but I was wondering if I was missing a simple solution, keeping the Object parented to the Empty?
What are the simplest solutions to this request?
Thanks a lot in advance!
the file: http://pasteall.org/blend/index.php?id=49514


text:
How to go back to previous Collection visibility setting?
Edit: Still a legitimate topic for 2.9.

Let suppose that I have a complex visibility setting, with some collections visible and others invisible.
If I want just one collection to be visible I press ctrl and click on the eye icon (isolate). Now only this specific collection is visible.
But how can I quickly go back to my previous visibility setting? For the moment ctrl click brings back ALL the other collections visibility, not the previous setting where only some of the collections were visible. Is there a way to do it or do I have to click again on all the eye icons I want? A little bit tedious... but maybe I'm missing the simple solution ?

I start with this setting, collections 1 and 2 are invisible:

I just want to see collection 3 so I Ctrl click on collection 3:

I want my previous setting back (with collections 1 and 2 invisible), I press Ctrl click on collection 3, but it brings all the collections back:

I've also been wondering if the 'Local View' has been discarded from 2.8 and now we should use the 'Hide from Viewport' buttons instead. They're not as handy in my mind.

I think Local View will be back like many other things


text:
Incompatible operator return type in simple empty adding operator
I have a simple script:
import bpy
from bpy.types import Panel,Operator

class MarkerAdd(Operator):
    bl_idname = 'marker.add'
    bl_label = 'Add Marker'
    def execute(self,context):
        bpy.ops.object.empty_add(type='PLAIN_AXES',radius=0.5,location=context.scene.cursor_location)
        return '{FINISHED}'

class AddObject(bpy.types.Panel):
    bl_label = "Add Object"
    bl_idname = "add_object"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "scene"
    def draw(self, context):
        layout = self.layout
        scn = context.scene
        row = layout.row()
        row.operator('marker.add')

def register():
    bpy.utils.register_class(AddObject)
    bpy.utils.register_class(MarkerAdd)
def unregister():
    bpy.utils.unregister_class(AddObject)
    bpy.utils.unregister_class(MarkerAdd)

if __name__ == "__main__":
    register()

Which seems to work, but after pressing the button, a huge error appears:
RuntimeError: class MARKER_OT_add, function execute: incompatible return value , str(, Function.result expected a set, not a NoneType)
which I have no idea why. Is the execute function from MarkerAdd operator supposed to have a different result type? It does not matter whether I put there '{FINISHED}' or not.

OK, I realized that I made a typo/mistake. In the MarkerAdd operator, in the function execute I've put
def execute(self, context):
    (....)
    return '{FINISHED}'

which is a string, while it should be a Set:
def execute(self, context):
    (....)
    return {'FINISHED'}

Notice apostrophes. That simple mistake caused me to get lost in and I waste hours trying to understand what's wrong. I hope somebody could avoid similar mistake.

this error can also arise if u dont have return statement atol
just like me


text:
Cloth Sim-Same value but different results, why?
I am an amateur to Cloth Sim. These 2 results under the same values. Why are they different?
Which setting controls the size and quantities of the wrinkles? Somehow, the more I try the more confusing.
Thanks for your time. :D

There is the mash and one testing above. How could I achieve big folds and higher quantity?

Cloth sim is very dependent on underlying geometry. It would be helpful to update you question with more information - especially showing the geometry of your garments that appear to be behaving differently. This will help soneone replicate the problem to try and explain the difference.

Hi Rich, I just updated my original post. There is the mesh and setup. Thanks!

What is the scale of your model? For realistic simulations you really need to fit to real-world scales - so it should be, say, 1m top to bottom. Don't forget to 'Apply Scale' on your mesh (otherwise it will still behave at its old size). I'm not familiar with the 2.8x cloth settings (I'm more used to 2.79) but 5kg vertex mass would seem way too high. If my assumptions are correct that is the effective weight of each vertex in the mesh. So if the whole garment would normally weigh 500g, if there are 500 vertices each should be 1g, not 5kg! I'd suggest get the scale and mass correct and re-try.

Check the scale of your model. For realistic simulations you really need to fit to real-world scales - so it should be, say, 1m top to bottom. Don't forget to 'Apply Scale' on your mesh (otherwise it will still behave at its old size). I'm not familiar with the 2.8x cloth settings (I'm more used to 2.79) but 5kg vertex mass would seem way too high. If my assumptions are correct that is the effective weight of each vertex in the mesh. So if the whole garment would normally weigh 500g, if there are 500 vertices each should be 1g, not 5kg! Set the scale and mass correct for ‘real world’ physics and re-run the simulation.

Thank you Rich, it is the scale and the geometry. I made mistake I did not make even square faces, so there are heavy area and light area.


text:
How to make camera Rotation smooth?
I got a problem when animate the camera. When it changes the angle, the turn is hard. How can I make it a smooth transition? Graph attached. Thanks!

There is a closer look of the rotation. I can not even add more frames to make it smooth.
I guess this video will explain more clear of this problem.
Camera Rotation Problem
There is the file.

hard to say what's the problem, you probably need to give it more time to make its rotation?

The rotation supposed be transferred in 20 frames. Location is find, but the rotation is like taking a sharp 90 degree left turn.

Thank you Robin, I watched the video, have not figure out how to fix this problem. it is confusing. lol

Robin, it does not look like a gimbal lock problem. I switched XYZ Euler, the result is the same.

File uploaded. :D

It's because the track to constraint.

One uploaded you need to share the link to us so we can access it.

@Leander is on it .. use Damped Track to Z axis, and explicitly key the roll (Z-rotation). this sort of thing?

@L0Lock the file is at the end of the original post.

@Robin Betts I am totally lost. How can I accomplish that?

@BlenderNueva  .. as in the .blend I posted? Is that close?

@RobinBetts Just seen there is a file. Sorry. it is working. You Changed the Euler angle and Damp tracking instead of Track to. Is there anything else I am missing?

@BlenderNueva I adjusted a couple of Z rotation keys on the camera, to level the roll at the bottom position, and knocked out a couple of others, so it held. I guess others could go, to clean up. Rule of thumb for me, let the constraint do the work, then introduce a minimum number of keys, which don't fight what the constraint is doing. We're pointing with Z, so around Z is OK.


text:
Blender Python EXCEPTION_ACCESS_VIOLATION while adding and deleting objects from thread
I am trying to create Conway's game of life in blender, but every time I am getting the error
Info: Deleted 13 object(s)

Info: Saved "untitled2.blend"

Info: Deleted 12 object(s)

Info: Saved "untitled2.blend"

add_operation: Operation already exists - 4)Parameters Component : LSLineStyle( affects_directly_visible: false) has PARAMETERS_ENTRY() at 0000015542C29588
add_operation: Operation already exists - 4)Parameters Component : LSLineStyle( affects_directly_visible: true) has PARAMETERS_EVAL() at 0000015542C29448
add_operation: Operation already exists - 4)Parameters Component : LSLineStyle( affects_directly_visible: true) has PARAMETERS_EXIT() at 0000015542C29308
add_operation: Operation already exists - 13)Audio Component : SCScene( affects_directly_visible: true) has AUDIO_ENTRY() at 0000015542C28E08
add_operation: Operation already exists - 13)Audio Component : SCScene( affects_directly_visible: false) has SOUND_EVAL() at 000001551D479A88
add_operation: Operation already exists - 13)Audio Component : SCScene( affects_directly_visible: true) has AUDIO_VOLUME() at 000001551D479D08
add_operation: Operation already exists - 9)Sequencer Component : SCScene( affects_directly_visible: true) has SEQUENCES_EVAL() at 000001551D479948
add_operation: Operation already exists - 10)LayerCollections Component : SCScene( affects_directly_visible: true) has VIEW_LAYER_EVAL() at 000001551D478B88
add_operation: Operation already exists - 4)Parameters Component : SCScene( affects_directly_visible: true) has PARAMETERS_ENTRY() at 000001551D479088
add_operation: Operation already exists - 4)Parameters Component : SCScene( affects_directly_visible: true) has PARAMETERS_EVAL() at 000001551D4791C8
add_operation: Operation already exists - 4)Parameters Component : SCScene( affects_directly_visible: true) has PARAMETERS_EXIT() at 000001551D4787C8
add_operation: Operation already exists - 4)Parameters Component : SCScene( affects_directly_visible: true) has SCENE_EVAL() at 000001551D478188
Error   : EXCEPTION_ACCESS_VIOLATION
Address : 0x00007FF60DEB1C59
Module  : blender.exe
Thread  : 00002cf4
Writing: C:\Users\****\AppData\Local\Temp\untitled2.crash.txt

Here is the code
# adding system packages
import sys

sys.path.append("C:\\Users\\***\\AppData\\Roaming\\Python\\Python39\\site-packages")

import bpy
import numpy as np
import random
from scipy import signal
import time
import threading

# remove exixting objects
bpy.ops.object.select_all(action='DESELECT')
bpy.ops.object.delete()

# set of active objects
active_objects = set()

#set the grid size
grid_size = 20
grid = np.zeros((grid_size,)*3, dtype=int)

# randomly place some 'n' 1s
#n = 10
#for i in range(n):
#    grid[random.randint(0, grid_size-1),
#        random.randint(0, grid_size-1),
#        random.randint(0, grid_size-1)] = 1

grid[10, 10, 10] = 1
grid[10, 10, 8] = 1
grid[10, 10, 12] = 1
grid[10, 8, 10] = 1
grid[10,12, 10] = 1
grid[12, 10, 10] = 1
grid[8,10,10] = 1

# now place the cubes
for cor in zip(*np.where(grid == 1)):
    bpy.ops.mesh.primitive_cube_add(size=1,
                                    calc_uvs=False,
                                    location=cor)
    obj = bpy.context.object
    obj.name = str(cor)
    active_objects.add(cor)

# now in next step we will calculate Conway's conditions
kernel = np.ones((3,3,3), dtype=int)
kernel[1,1,1] = 0

def loop_generation(generation = 10, delay = 1):

    global active_objects

    for _ in range(generation):

        time.sleep(delay)

        convolution = signal.convolve(grid, kernel, mode='same')

        # extract the living cells
        new_living = set()
        for cord in zip(*np.where((convolution == 2) | (convolution == 3))):
            new_living.add(cord)

        to_kill = active_objects.difference(new_living)
        add_new = new_living.difference(active_objects)
        print(convolution)

        for del_cor in to_kill:
                bpy.data.objects.remove(bpy.data.objects[str(del_cor)])

        for new_cor in add_new:
            bpy.ops.mesh.primitive_cube_add(size=1,
                                        calc_uvs=False,
                                        location=new_cor)

            obj = bpy.context.view_layer.objects.active
            print(obj)
            #obj = bpy.context.object
            obj.name = str(new_cor)

        active_objects = new_living

if __name__ == '__main__':
    threading.Thread(target=loop_generation).start()

Blender and threading do not always play well together. See first few posts https://blender.stackexchange.com/search?q=%5Bpython%5D+threading+  For what you are trying to achieve here, look at the Text Editor > Templates > Python > Modal Timer Operator  Objects can be added removed based on its elapsed time.

https://blender.stackexchange.com/questions/181400/why-does-blender-crash-when-trying-to-place-objects-with-threading-timer

Thanks for the suggestion, it is working nicely, but there is lack of smoothness during function executionn

Finally solved the problem using timer, thanks @batFINGER
import sys
import bpy
import bmesh
import numpy as np
import random
from scipy import signal
import time
import mathutils

# globals
color_turn = True
mask = None
new_living = None
to_kill = None
add_new = None

# remove exixting objects
bpy.ops.object.select_all(action='DESELECT')
bpy.ops.object.delete()

# set of active objects
active_objects = set()

#set the grid size
grid_size = 20
grid = np.zeros((grid_size,)*3, dtype=int)

# randomly place some 'n' 1s
#n = 6
#for i in range(n):
#    grid[random.randint(0, (grid_size-1)//2),
#        random.randint(0, (grid_size-1)//2),
#        random.randint(0, (grid_size-1)//2)] = 1

for i in range(6,9):
    grid[10, 6, i] = 1
    grid[10, 10, i] = 1
for i in range(7,10):
    grid[10, i, 5] = 1
    grid[10, i, 9] = 1

# red material
mat = bpy.data.materials.new("PKHG")
mat.diffuse_color = (1.0,0.0,0.0,1.0)

# now place the cubes
for cor in zip(*np.where(grid == 1)):
    bpy.ops.mesh.primitive_cube_add(size=1,
                                    calc_uvs=False,
                                    location=cor)
    obj = bpy.context.object
    obj.name = str(cor)
    active_objects.add(cor)

# now in next step we will calculate Conway's conditions
kernel = np.ones((3,3,3), dtype=int)
kernel[1,1,1] = 0

def create_cube(name, loc):
    bpyscene = bpy.context.scene

    # Create an empty mesh and the object.
    mesh = bpy.data.meshes.new(name)
    basic_cube = bpy.data.objects.new(name, mesh)

    # Add the object into the scene.
    bpyscene.collection.objects.link(basic_cube)

    # Construct the bmesh cube and assign it to the blender mesh.
    bm = bmesh.new()
    bmesh.ops.create_cube(bm, size=1.0, matrix=mathutils.Matrix.Translation(loc))
    bm.to_mesh(mesh)
    bm.free()

def loop_generation(delay = 1):

    global active_objects, color_turn, mask, to_kill, add_new, new_living

    # calculating the mask
    if mask is None:
        convolution = signal.convolve(grid, kernel, mode='same')

        # Any live cell with 5-6 live neighbors survives
        mask_1 = ((convolution == 5) | (convolution == 6)) & (grid == 1)
        # Any dead cell with 4 live neighbors becomes a live cell
        mask_2 = (convolution == 4) & (grid == 0)
        mask = mask_1 | mask_2

        # extract the living cells
        new_living = set()
        for cord in zip(*np.where(mask)):
            new_living.add(cord)

        to_kill = active_objects.difference(new_living)
        add_new = new_living.difference(active_objects)

    if color_turn:
        for del_cor in to_kill:
            bpy.data.objects[str(del_cor)].active_material = mat
        color_turn = not color_turn

        return delay

    # update the grid
    grid[:] = 0
    grid[mask] = 1

    for del_cor in to_kill:
        bpy.data.objects.remove(bpy.data.objects[str(del_cor)])

    for new_cor in add_new:
        create_cube(str(new_cor), new_cor)

    active_objects = new_living
    color_turn = not color_turn
    mask = None
    return delay

if __name__ == '__main__':
    bpy.app.timers.register(loop_generation)
```

Yah, works like magic with timer instead of Thread. Incredible, thanks for sharing your solution!


text:
Preventing Blender from automatically changing Texture Color Space: A Design Flaw?
I've just discovered that Blender automatically changes the Color Space for newly loaded or replaced textures. For example, I wanted to replace a Normal Map with another one and realized way too late that Blender had set the color space for this texture from "Non-Color" to "sRGB". This is, of course, nonsense, and I can't understand why this design decision was made. Why should the color space be changed? This just leads to even more errors if you forget to change it back!
So, my questions are: 1) How can I prevent Blender from autonomously changing the color space? And 2) is there a reason blender is behaving like this that I just don't understand?
Thank you!
Edit: What I meant is when I replace an image, for example, replacing one PNG with another PNG. In this case, Blender shouldn't make any assumptions or estimations; it should simply not alter the color space. I could understand if I chose a different file format, but not when the file format remains identical.

For 2) I do not know what kind of image format you are using in this normal map. Blender usually decides on each new file when it is opened which color space could be correct and decides this from its format. JPG, PNG and TIF files (no matter which bit depth) are usually interpreted as images using the sRGB color space. A file like EXR or HDR will be opened as linear. Basically every normal map is just a simple color image. How should Blender know you want to set it to non-color? Even if plugged into a specific socket it could be you want to use sRGB.

"for newly loaded or replaced textures" where exactly do you do that, in an image texture node in the shader editor?

Perhaps I didn't express myself clearly. What I meant is when I replace an image, for example, replacing one PNG with another PNG. In this case, Blender shouldn't make any assumptions or estimations; it should simply not alter the color space. I could understand if I chose a different file format, but not when the file format remains identical.

@taiyo yes, swaping a texture image in the node editor. e.g. PNG texture with another PNG texture

You're misinterpreting what you see. An Image Texture node is not an image, but uses an Image. These are two distinct classes in Blender. When reading Image somewhere in Blender, think of an instance of the class Image, not an image file (like .png) on disk. I'll refer to Image as "image object".
When you click either the New Image or the Open Image button in an Image Texture node, Blender will always create a new image object and connect that as a data block for use in the node.
Note that the name left to the buttons is just a name taken from the filename when you chose Open Image or your selfchosen name (default "Untitled") with New Image. In that regard, Open Image is slightly confusing because it really means New Image from File.
Have a look at the following image (haha), I paired a Shader Editor and an Image Editor and opened the side bars (the little < icon in the top right corner):

I also paired identical menus with the colored boxes. As said, the red boxes are for creating new image objects (or switching to another existing one with the icon left to the name) but they are not for changing settings of existing image objects. This is what the yellow boxed menus are for. They show the settings of an existing image object and this is completely independent from an Image Texture node. Changing these settings is bound to the image object and the Image Texture node just reflects that (for example the Color Space). Try it: if you change the Color Space in any of the green boxes, it will change too in the others.
If you want to change the actual image (that is the file on disk), you can do that in the blue boxes with the folder button. Note that this folder button looks identical to the button from Open Image, but is actually a different thing, Browse Image. I think that's a bit unfortunate but now you have Reload Image next to it, which makes sense again.
By now, you should see that changing the source file does not change the image object's name or any other setting. You just changed the source file of an existing image object. That is the "replacing" you want.
If you don't like to change an existing image object for that, a quick way to keep all settings is to duplicate the Image Texture node and make a single-user copy of the image object by clicking the 2 in the duplicated node. In the screenshot you can see that I created that way a new image object normal1.png.001 (just a name, right) with a different image .../normal2.png (a real image) and the Image Texture node settings are unchanged as well as the other image object settings.

Thank you for the comprehensive response! I've been using Blender for more than 5 years and didn't realize that the Image Node doesn't directly load an image but instead creates an image object. This has been truly enlightening! Thanks again!

Welcome, i had my time with this fact too, that's why i've put up this extensive answer. Scripting helped me a lot to see behind those curtains.


text:
PopCorn Particle Background
Anyone have an idea of how to make popcorn fill up my screen using practices, or got some video that would help me out, thanks!
I am trying right now, but they keep jumping up and down and not staying in place, how can I fix that at least, would help tons.
Okay an update, I am getting there, but my popcorn right now has no collision, I checked on size deflect, but that's not it. Currently, I have 5000 emitters and it still won't fill up the whole box.

I are almost there!
If you want your background to be static, the important settings are:

a very high Number of particles
Frame Start = Frame End = 0
a very high Lifetime
emit the particles from the Volume of a cube, so that the density is even (this is important)
remove all Velocity from the particles
remove all Field Weights

For the collisions, emitting particles from the volume greatly reduce that problem: the distribution is more even and if you want you can set the Distribution (in the Source section) to Grid and play with the Random value

What I did what generate the popcorn using the particle system and then convert them to actual meshes, and use the rigid body to simulate the rest, I reduced the poly count greatly on em tho.

Why did you use a rigid body? do you want to make an animation?

Well yes, I need to fill like an empty box with popcorn and the camera is inside.

Ah, ok, you should edit your question though, because it seems you want a static image


text:
Boolean + Subdivision Modifier: How to cut a perfect round hole?
I have two Cylinders. To the first I apply a Subdivison Surface Modifier first (see the right object in the picture). Then I create a second object (cylinder left) and apply the Boolean Difference Modifier. The result is not a hole as I expected. How to cut a perfect round hole?

I just tried this and it creates a perfect hole, if the Subdivision is above the Boolean Modifier, but that is what your screen shot shows. There must be something else about your Meshes/setup that is causing the issue. Conversely, when I put the Sudivision below the Boolean Modifier then I get the hole problem you show. If applying Modifiers remember to apply them top down.

It looks from the screenshot that you don't have an object selected. This, in and of itself, is an odd behavior, as nothing at all should be happening, but it may possibly fix itself as you continue. Click on the orange cube in the Boolean Modifier (a list should pop down) and select the other object, or click on the eyedropper and select the other object that way.
As a note, no aspersion intended on rob, I'm certain it was a mistake, when applying modifiers, you apply from the bottom of the list upwards.
CLARIFICATION: Whatever order modifiers appear, they should be applied in the order they're affecting the object. First in, first out.

Interesting. If I try to apply the bottom modifier first I get an info warning that "Applied Modifier was not first results may not be as expected"

What, really? Did they change the order of modifiers? I'll edit to be more specific as to the intended result.


text:
How do you delete specific objects without deleting everything?
I'm sorry for asking such a simple question, but I'm new to Blender, and even after much research I couldn't find a solution to this problem.
When I try to delete a specific unneeded object in object mode, all of the objects I entered get removed. How can I get rid of the unneeded object without getting rid of the vital ones?

In Object mode you can create several objects, and to delete one or several of them, just select and press X.
If you select one object and enter in Edit mode, you can create several distinct meshes within this object, "distinct" meaning not linked between them by any edges.
Example: in Object mode, create a cube. Then select it, enter in Edit mode, and press shift A to create another cube within the object. The object now consists on 2 cubes.
As explained by Ashutosh, as long as these meshes are distinct you can select one or several of them, hovering your mouse over their vertices, edges or faces and pressing L. Or click one of its vertices, edges or faces and clicking ctrl L.
Now you can delete what you've selected or make it a separate object pressing P (Separate) > Selection. If you select all the meshes of an object and press P (Separate) > By Loose Parts it will create as many objects as you have distinct meshes.

what do you mean?

Did you add that new shape when you were in edit mode of another object? Adding a new shape while in edit mode, adds it to the object that has been previously selected when you entered edit mode. I'm not sure how to select whole objects while in edit mode but maybe this helps.

To select the whole objects in edit mode, hover your mouse over any one object and press L. After that, press P and choose 'By Selection'. This will create two seperate objects in the object mode.


text:
Is there a way to mirror faces without the normals being flipped?
I need to create a mirrored version of my mesh. In edit mode I press M plus the axis. But the normals on the mirrored faces are flipped, so I have to select all faces and recalculate/flip the normals.
I want to eliminate the last step. Is there a way to make the mirror function keep the normal direction of the original faces?

I don't think there is.

@Millard is right, unless you use the mirror modifier, you can't do that.

Using the mirror modifier is a good way to mirror an object and it solves your problem.


text:
How to modify something in two dimensions at the same time?
One of the biggest mysteries which I cannot understand is how do you modify something in two dimensions at the same time. I tried to solve it myself by pressing two keys at the same time but unfortunately it doesnot help me. If someone doesnot understand what I am talking about: I want to do something like this artist on this video on 0:44 time. The Artist is modifying the mesh in two dimensions at the same time but there are no tips in left-bottom corner so it is still the mystery for uninitiated pupils like me. I searched in Google but it seems to be a secret. If someone of you can reveal this magic power, please tell me and I swear I will use it in good deeds.
0.44
https://www.youtube.com/watch?v=qrYngJmrEFA

As I see.
If you want to move the object by 2 dimensions.
1. Select the object
2. Press G
3. Press Shift + Z (Or Shift + Y, Shift + X demand on which dimension you don't want to change)
4. Move as much as you want.
Do the same with Scale.

Thank you for help, SHIFT + Z was the spell which I was looking for!

In Edit mode, select the Edge Select mode (bottom horizontal menu bar)
Select both the up and bottom circular edges with alt right click and shift alt right click
Type E to extrude, then Enter
Scale with S and constraint your scale on both X and Y axis with shift Z.

/

Thank you for help, SHIFT + Z was the spell which I was looking for!


text:
How to create smooth strokes with the Grease Pencil?
The strokes I drew with the grease pencil are jagged.

How can I draw smooth strokes with the grease pencil in Blender 2.82?

There are anti-aliasing issues in 2.82. please update to 2.83 or, even better 2.9.


text:
Why does the armature move when I move the lamp?
When I move the recently added sun lamp it moves and distorts my model's armature.
I have not selected my model when I added the light so what am I doing wrong?

Maybe your armature is parented to the lamp.

or maybe because you've enabled the Proportional Editing option?


text:
How to add a displacement map on a plane using procedural textures with a layer mask
I have mixed two textures together using black and white values from a noise texture which is connected to a color ramp.
How can I apply a displacement map on a plane so that either the texture "A" or "B" is the limiting factor that determines
which parts are affected by the displacement modifier within a plane? I want to use a mask layer to adjust the intensity
of the displacement with a noise texture, but at the same time limit it to only some parts of the texture combination.
I have applied a rough displacement on my scene which covers the whole plane, but I'm asking this beacuse I want to
add some fine details with two (displacement) modifiers. I know you can assign vertex groups to mark off the affected area,
but in my case that's not possible, for you can't see any textures in a vertex select mode and it forces you to select them
randomly.
There's a link below to give you a better idea about the problem. Areas which I want to add some extra displacement to are
marked as red.
Link: https://drive.google.com/file/d/0B4NHszZHPR_1OVFEWEt2UkdON28/view?pli=1

I dont think is currently possible.
Why?
Because there is no Texture node editor for the Displacement modifier.

You'll need to mask the two textures with the procedural texture (excactly how as been done for the diffuse color), make some tweak an put this custom texture, created with the built-in node tree, in the Displace modifier.
This is not currently possible (2.75a) because, as said here (as far as I know things has not changed yet about this) there are some issue implementing this, so you'll not see a Displacement modifier slot next to the four under the arrow in the image above.

and none of the provided texture type is capable to be mixed with another as needed.

You could try to mask the displace modifier with a flipped copy and a Shrinkwrap modifier with limit enabled...but there are a lot of limitations in this kind of approach, so I won't suggest you.

You can also try baking the textures and combine them in Gimp or PS if you don't really need procedural.


text:
Different materials on different sides of a mesh
In Blender 2.80 I modeled a bottle cap and want a different material on each side - metallic with logo on the top, metallic silver inside. I set up a node tree that worked and then hit a snag: both materials appear in edit mode and rendered edit but only the top materials show in object mode and object render. What is causing this?
Below are screen shots:

Thanks for your thoughts.

Finally found the answer - backfacing on the Geometry node doesn't work when there's a Solidify modifier in play.  A bit more hair torn out but I got there!


text:
Why is my Smooth tool causing the surface of my sculpt to be reflective?
While sculpting something - inexplicably after I boolean joined two meshes - the newly joined mesh has an issue where the smooth tool will cause the normals to become reflective!
I've tried recalculating surface normals to no effect. What the butt is going on?

There is no reflection. (Blenders viewport isn't able to show reflections.) Instead you see the back faces from the inner side. What you see is a hole.

That's what i initally thought, but when i rotate the viewport the faces are in fact the surface. If i use the draw sculpt tool, the geometry raises and the color shifts.I can select the faces in edit mode as well.

feel free to share the .blend file https://blend-exchange.giantcowfilms.com/

The culprit is actually the Solidify modifier. When i applied the mirror I was under the impression that i needed to use solidify to make the mirrored geometry physical.
Solidify will make an internal geometry. when sculpting, i would only be hitting the upper mesh and it would clip through the lower.
Lesson learned: do NOT solidify objects you intend to add to a sculpt.

More correctly: Do not solidify objects at all unless your model requires solidification (e.g. a non-manifold mesh).


text:
Blender Suggestions
Where exactly can I discuss/suggest ideas/areas where improvement could be made? The problem I am having is finding a place among all the various sites where I can actually submit a suggestion. Can anybody give me an address or email anything that will let me make my suggestion?
I am not a coder and all the places seem to revolve around being a contributor, where do users put in improvement ideas?
I worked in engineering for many years and the biggest problem I have is trying to work to scale in blender (used Solidworks), there are some simple things that could be done to make this very powerful.

I'm voting to close this question as off-topic because it is not about using Blender

@DuarteFarrajotaRamos but it around blender, it is actually on-topic.

The best place were you can put your sugestions is rightclickselect site.


text:
Subdivision modifier's name is red
My subdivision modifier's name is red preventing me from using it. I followed a tutorial and this happened.

What another modifiers are used? I don't think this is happening on default cube, right?

Increase the levels of subdivisions so that it is higher than 0

Hello :). It can also mean, that you enabled Simplify, with 0 max levels :). Please add an image of your modifier settings.

How do I post an image 1st time using this site

When the modifiers settings are zeroed out the modifier has no effect. So it shows a red icon.

Check the Render Properties there is tab Simplify.
If active, it can clamp all the subdivisions to a maximum number using the Max Subdivisions setting.


text:
texture in material preview differs from rendered preview
My minecraft character's head has the preferred texture in material preview but it is pink in (cycles/eevee) rendered view.

Maybe check your uv map or look to see if the location of your picture file has changed.

Make sure the location of the skin image hasn't changed. If it has, try putting the skin on the character again.


text:
How to animate deforming scratches?
I would like to create the following animation: one mesh scrapes the other.
I think the best option is to animate the boolean modifier, but the boolean difference disappears as the object moves. I would like the difference remain to make it look like a scratch.

The next idea was to use dynamic paint (displacement), but it leaves a lot of "artifacts", I believe due to dragging the outer vertex?

Could you suggest me other solutions that may work as intended?
I tried searching for it on the internet but with no luck so far.
Edit: The above examples are simple, but what about more complicated scratches?

Hello, what is the mesh density of your bigger cube ? (ie how subdivided is it ?)

Hi, I did this just for an example and did not care about the resolution, it's just for the illustration. I'm looking for solution that starts carving in one edge of object and ends on the other edge. Dynamic paint works great when you start somewhere in the center of the object, pushing vertex to the inside like here https://www.youtube.com/watch?v=Kcy_KBCsx70. But when you start from the edge it drags the outer vertex making something like artifacts.

I once made a couple of suggestions in answer to a similar question, here.. I wouldn't know how suitable they are..

If you inset a plane, so the inner quad has vertex normals going up, and then assign a new material to that quad only, and in the material use vertex color as displacement, you get something that looks like a cube. You can scale down the ring around the displaced quad, or you can assign a transparent material to these faces. Then subdivide the inner quad a lot, add the dynamic paint canvas, and add a dynamic paint brush to the small cube with which you scrape off material. I get no artifacts, but again in order to get somewhat smooth results, I had to subdivide a lot:

GIF

In the first example why not use a rectangle instead of a square for the boolean so the backside is longer and doesn't disappear as it goes over the bottom cube. You could animate lots of strange shapes for options.
You may also want to do something like in the unrelated answer to this question here:
Animating appearing/extending strip with gaps


text:
Infinite Zoom Blender

https://drive.google.com/open?id=1gtvROMb59WXV3SZNH1_DZnJhHFueWp4C
I need a smooth infinite zoom like this
https://drive.google.com/open?id=1_UxbldMl9jNphuOYLkA9DFLwCH8obNOE
But here is mine, it looks very dirty and doesn't quite fit right, any idea how can I fix this?
I need the camera to infinite zoom in to a city road.
What I do is render out tele/medium and wide-angle so that's 3 shots from one camera and then change the camera and make another doing the same approach, in the end I parent them up and just play with the scale to get the effect, but how do I fix them together when I have to like go forward the first camera renders doesn't fix with the second.

Way better formatting.

Thank you for pointing it out.


text:
Copying a single object, but transfers whole scene all together
Quick question, I have 2 scenes, one from which I want to copy the camera alone, but when I do copy-paste it transfers the whole scene together with the camera.
What I do is copy and paste the camera into the new scene, and it doesn't appear but it's in Scene.001 I have to go there remove everything, and take the camera, which makes my .blend file unnecessarily big.
Hope I do sound clear on what I am trying to say here. If you have a quick solution would be great, thanks.
also, I tried this single-user thing with Hotkey U but doesn't do a thing.
link from the comment below:
https://drive.google.com/file/d/1AGcR24mrB6iVzIxbB7j41TNx_FTDJi3s/view?usp=sharing

maybe you can make a short screen recording how you are doing that? i can copy paste a camera alone with no problems at all.

https://drive.google.com/file/d/1AGcR24mrB6iVzIxbB7j41TNx_FTDJi3s/view?usp=sharing

That is okay, but this happened only to the current camera from the current scene, and it has happened multiple times before as well in other "projects" that I have been doing. So it's quite annoying, cause I remake the scene multiple times so I do the whole copy-paste a lot. And it happens only when I copy the camera. For the rest of the objects, it's working fine.

Would it be possible to get a video or screenshots to see the complete program window including menus etc.? But anyway, as far as I can see you have constraints and animations with drivers on the camera. When you copy an object that is dependent on other objects, these objects will be copied as well to keep those relationships functional. This does not happen if you duplicate the camera with Shift+D, because there the relations are relative and use the existing objects. With Ctrl+C they are absolute, even pasting the camera in the same scene will additionally paste the related objects.

@GordonBrinkmann Fixed! Thanks

@ahkai Hi. 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.

Have you tried to Append instead of copy-pasting? Menu File > Append, navigate in the source file > Objects subfolder > your camera

That's another way yeah!  @L0Lock

Try to Append instead of copy-pasting:
Menu File > Append, navigate in the source file > Objects subfolder > your camera

Learn more on Link & Append — Blender Manual.


text:
How to make a growing cloth animation
I need to make a veil that should start short and grow, then follow to the floor, and also have cloth animation. Any suggestion would be helpful.
The mesh wrapped around her is just for collision so don't mind it.

Hello, it's a bit vague, do you have a storyboard or some pictures?

There, I uploaded an image, hope it gives an idea

You can create 2 shapekeys, one with a short veil, one with a long one:

Give a Cloth simulation to your object, create a vertex group that will be your pin group, enable the Dynamic Mesh option so that it will take the shapekey animation into account:

Give Collision to the body and floor, animate the shapekeys of your veil:

Thank you, good sir, I will give this a try now.

To give you an update about it, I have succeeded in getting the desired results following your steps. Thank you very much.


text:
Blender crashing when I open preferences
I'm running on EndeavourOS 6.6.4 kernel, gnome 45.2 with radeon 7800xt.  rocp/hip is the lastest version, everything is newly updated.  My GPU, including hip/rocm works for everything else....  Stable Diffusion, gaming, hashcat, etc...  When I open blender it loads and runs fine until I go into the edit menu > preferences and try to chose a gpu at which point the whole thing hangs, and a few seconds later gives an option to quit now or wait. I've tried this with 3.3.14, 4.0.3 and 4.0.2 including one version I removed and forget the version number.... 3.6something.  I've tried running it from the terminal and no errors are reported on termination.  I'm not sure what to look at.
Running "blender --factory-startup --debug-all resulted in the following:
https://pastebin.com/VYSP8y2P

3.3.14 doesn't exist and 4.0.3 is a beta version. 3.3.12 is the latest 3.3 LTS version and 4.02 the latest released version. I assume the version you've deleted is 3.6.5 LTS which is the last version before the graphics requirements were changed with version 4. That being said, there are no Blender developers here, nor does anyone here have any association with the Blender Foundation. If you suspect a bug, read this and report it accordingly.

3.3.14 does exist, it's listed right on the daily builds page.  The point I was making mainly was that I've tried a number of versions starting with the current stable version so I wasn't sure it was a bug.  Thank you tho, you're right... still a good direction to go.  I'll jump over there in just a moment and get something posted.

The daily builds pages are not release versions. This is the release page for 3.3 LTS which I checked before posting my comment.

My apologies and thank you.  Didn't mean to be argumentative and I appreciate the info.  It was late and I wasn't paying attention to myself.  I've pulled everything, reinstalled from flatpack and will re-attack everything correctly via the report a bug option (if needed).

No problem. Thanks for the update. Good luck!


text:
Is there a Snap option in the Graph Editor?
I want to move my vertice #2 up to the Y position of my vertice #1.
Is there a Snap option that would allow me to do it? I can't see it on the horizontal menu bar, perhaps I'm blind...
Thanks in advance!

ok, thanks, it's done, and your method is actually simpler

Ok so Mr Zak suggested me the best method to do it:

Select the vertice #1 which is the Y position reference.
ctrl G to make the cursor move to the vertice position.
Select the 2D Cursor as the Pivot Point.
Select all the vertices you want to snap to the Y position.
Scale down to zero with S Y 0

and a quite similar way:

Select the vertice #1, which is your Y reference, ctrl G to move your green cursor up to this vertice.
Select the vertices you want to align on the same Y position
shift S > Cursor Value to Selection, and again shift S > Flatten Handles, if necessary.


text:
2.8: How to enable Eevee on a Macbook pro?
EDIT: So now I have my answer, 2.8 doesn't work with my OS (10.9.5), but it works with a more recent one like Mojave.
I wonder how to enable Eevee on a Macbook pro. For the moment if I choose Eevee as Render Engine, here is the result I get (image below, Rendered mode with no material). I also screenshot my Preferences if it helps. My Macbook Pro is a Retina, 15 pouces, mid-2014, the video card is Intel Iris Pro (GPU type), OS X (version 10.9.5).
Thanks a lot!!!

It would be helpful if you could add the specs of your MBP. There should be some kind of Compute Device showing up. It could be possible that your GPU is not supported. Have you added any kind of materials to your objects yet? - Also, are you in rendered view?

Hello Michaelh, thanks for your answer, the screenshot is in Rendered mode, the objects have no material, the MBP is a Retina, 15 pouces, mid-2014, the video card is Intel Iris Pro (GPU type), I hope it helps

I just installed the latest build of 2.8 on my MBP mit 2012 and Eevee works just fine. ("fine" meaning very slowly, but it works). It is odd, that you have only "none" for Cycles Compute Device. There should be more Tabs and AT LEAST your CPU should show up. Are you on Mojave? It looks like something on your System is just not supported, yet. You could check other applications if they show your hardware, just to be sure it's Blender related and not sth. else. Also, always try the latest builds. Amazing Blender Devs keep fixing stuff all the time.

my OS is 10.9.5, and same problem with the latest version of Blender 2.8. If I switch to Cycles I can choose between Device > CPU or GPU Compute (but I still have a None on the System Preferences). If you have any idea please tell me, I'm also going to ask on devtalk.blender.org, thanks  ;)

Oh, that's Mavericks. That's really old by now. Hard to tell if that's the issue, but I'd assume that 2.8 is mostly tested on more recent versions of macOS and it could take a while until bugs with the old versions get ironed out. (Certainly not a priority right now, as the focus is on the beta release atm.) You should definitely mention that right at the beginning when you post on devtalk. Hope you can find help there. But I suggest you should consider upgrading your OS at some point.

Ok that would explain the bug, thanks a lot   ;)

I've tried Mojave and it works. My problem is that for the moment it will be a bit complicated to switch to Mojave, but I least I know where the problem comes from. Thanks to you!

It's not something you have to enable, EEVEE is just here and you have to chose it as your current render engine, just like before.
Go in the properties editor, you'll find a drop-down menu for choosing your render engine at the very top of the render tab :

EDIT: As the OP is already in rendered view in EEVEE and without materials, then it looks like a bug.

Hello Lolock, actually I've already chosen Eevee, the screenshot I show is the result I've got   ;)

Then you have nothing else to do \o/

I don't know what you mean

Me neither, what are you trying to do? Once you've switched your render engine to be EEVEE, that's it, nothing else needed to use EEVEE.

looks what I've got when I switch to Eevee (screenshot). Don't you think there's a problem?

Oh yes. Since I don't know what display mode you're using and what are your materials, I can't really tell. If you are in rendered display and that your materials are not supposed to look like this, then it might be a bug. (And to me, it looks like you're rendering some output from a texture coordinates node, maybe check your materials ?).

This is the Rendered mode with no material

Let us continue this discussion in chat.

Ok, then it might be a bug.

Lolock, it works with Mojave, so I guess 10.9.5 is too old. Thanks for your help

I communicate this topic out here : https://devtalk.blender.org/t/hardware-requirements-for-blender-2-8/3440/7
Wait'n'see.


text:
Display as > Wire in Eevee problem
In Cycles, if I enable the object's Viewport Display > Display as > Wire option, my object will be displayed as wire in Solid mode but as soon as I switch to Rendered mode it will be displayed as a normal solid object, as expected.
It allows for example, in Solid mode, to work on objects without being bothered by a big one, but the big one is back as soon as I switch to Rendered mode, which is good.
In Eevee though, if I enable the object's Wire option, the object will be displayed as wire in Solid mode as expected, but il will also be displayed as a wire in Rendered mode, which is not expected and is very annoying, as it requires to select it again, come back to Display as, and choose Solid. If I render an image the object will be normally displayed though, as expected.
Is there anything logical here? Am I missing something? Is there a way around?
Thanks in advance.

Hello :). This does seem weirdly inconsistent. The same thing also used to happen in renders but it was resolved. I'd ask the devs, this doesn't seem logical.

thanks for your answer, so yes you confirm that there's a problem here  :(


text:
No Restore button for a custom shortcut
It looks like, for 2.9, the Merge shortcut is M for everyone. In my case it is AltM, so I must have set a new shortcut. I've checked the Preferences for the currently selected keymap setting, and here is what I see (image below). As you can see there is no Restore button that would allow me to go back to M. Souldn't there be one? If I change it to M the Restore button will appear (but to go back to AltM!). If I switch to one of the default keymaps in the top dropdown list I can find a setup where M is indeed the default setting. So I must be missing something here in the Preferences management.
Edit: So it looks like exporting and reimporting my own custom keymap (whatevername.py file) makes the new keymap its own default. Once this keymap is loaded there's no Restore button available to go back to some factory settings. If you create a new shortcut within this setting then the Restore button will appear, but to go back to this keymap default setting. I find it weird, there should be a way to go back to a default 2.9x keymap setting.

Comments are not for extended discussion; this conversation has been moved to chat.

So it looks like importing a given keymap (it is a .py file), will make this imported keymap its own default. There's no quick way to go back to a factory setting (or is there?). If you change one shortcut within this keymap, the Restore button will be available, but to allow to go back to this keymap original setting, as it was when imported.

the quick way back is - as Christopher proposed - just to set it to preset Blender settings, then it will be default again. Well - there is a "specific" kind of logic here, if you see it this way: if you save your keymap, you do this, when it is "ready" and "good" and your "default" and you want to use this keys. So this is your "new" default. If you e.g. now change your key from the imported again, you can restore it again to your saved version - which makes sense ;)

I will look into this, thanks for your help  ;)

Just as @Chris says, this logic here is, since this is a keymap you have saved and loaded (so it didn't destroy the default by overwriting it), this is your new default. And if you've spent a lot of time on it and are happy with it, I guess it won't make sense if you now try new shortcuts for some keys but don't like them, but restoring them will set them to the Blender default instead of your "custom default" which worked for you.

@ Gordon Brinkmann yes but sometimes it's hard to get Blender's logic  ;)  for example if you create a Diffuse node, change its color (or even don't change it), and want to bring back the default color with a right click > Reset to Default Value, it will load a black color (?!? it seemed to me that a 0.8 white color was the default value when I created this node). And so on...   ;)   it would be great to have a restore to basic 2.9 settings function

Yeah, the color default I don't understand either... I was puzzled by this as well. Maybe it's best to always create "default files" to come back to. A startup file that you save somewhere else, the default keymap saved separately and so on... so that you can load them all if something isn't restored as expected :D


text:
How to add empty object not using bpy.ops?
How to add an empty object with python using bpy and not using any ops? My code so far is doing this:
bpy.ops.object.empty_add(type='PLAIN_AXES',radius=RADIUS,location=loc)

For normal object like mesh or lamp there is object_data created using normal bpy.data.object.new calls, but for empties it seems that this method does not exist. So is this possible to avoid using the operators? The reason I'm asking is because when I add an empty using bpy.ops it changes the active object, etc. causing the script to be more bloated with unnecessary code lines.

This is possible by placing None as the object data:
#                          Name,   Data
o = bpy.data.objects.new( "empty", None )
bpy.context.scene.objects.link( o )

You can later access its unique empty props like any ol' empty:
o.empty_draw_size = 2
o.empty_draw_type = 'PLAIN_AXES'

For Blender 2.8, the API change a little bit:
o = bpy.data.objects.new( "empty", None )

# due to the new mechanism of "collection"
bpy.context.scene.collection.objects.link( o )

# empty_draw was replaced by empty_display
o.empty_display_size = 2
o.empty_display_type = 'PLAIN_AXES'

WOW!!! That was what I was looking for! Thank you. To not waste B.SE service I would like to point out that this was not mentioned in any documentation I could find about objects. It seems to be very easy, much simpler that creating any other objects.

For Blender 2.8: bpy.context.scene.collection.objects.link( o )

I made a function based on the answer by TLousky
(Tested in Blender 3.2)
# Makes an empty, at location, stores it in existing collection
def make_empty(name, location, coll_name): #string, vector, string of existing coll
    empty_obj = bpy.data.objects.new( "empty", None, )
    empty_obj.name = name
    empty_obj.empty_display_size = 1
    bpy.data.collections[coll_name].objects.link(empty_obj)
    empty_obj.location = location
    return empty_obj