text:
How to fix: "KeyError: 'bpy_prop_collection[key]: key "NodePies" not found"
I'm getting the following error everytime I trigger a certain operator (open_node_Pie1):
Python: Traceback (most recent call last):

File "C:\Users\Kaspar\AppData\Roaming\Blender
Foundation\Blender\3.2\scripts\addons\NodePiesEXPbackup.py", line 252, in execute
if context.preferences.addons['NodePies'].preferences.menu_amount == '1':
KeyError: 'bpy_prop_collection[key]: key "NodePies" not found'

'NodePies' refers to the addon name __name__ .
I'm not sure what is causing this error, since the name is correct and also referenced correctly in the class defining preferences.menu_amount, node_Pie_Preferences (line 392).
In the class causing the error I'm trying to call different pie menus depending on the value of menu_amount definded in the addon preferences.
Any help is appreciated, thanks in advance!
Code:   (the "node type" classes can be ignored, since they aren't important for this problem, as far as I know)
bl_info = {
    "name": "NodePies",
    "author": "Olliboy",
    "version": (0, 3),
    "blender": (2, 80, 0),
    "location": "Shader Editor > W",
    "description": "Adds pie menus for adding nodes more quickly.",
    "warning": "",
    "doc_url": "",
    "category": "Node",
}

import bpy
from bpy.types import Menu, Operator

# node types --------------------------------------------------------------------

class addAO(bpy.types.Operator):
    """Add An Ambient Occlusion Node"""
    bl_idname = "ext.add_ao"
    bl_label = "Ambient Occlusion"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeAmbientOcclusion")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addMath(bpy.types.Operator):
    """Add A Math Node"""
    bl_idname = "ext.add_math"
    bl_label = "Math"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeMath")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addVMath(bpy.types.Operator):
    """Add A Vector Math Node"""
    bl_idname = "ext.add_v_math"
    bl_label = "Vector Math"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeVectorMath")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addColorRamp(bpy.types.Operator):
    """Add A ColorRamp Node"""
    bl_idname = "ext.add_cr"
    bl_label = "ColorRamp"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeValToRGB")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addGradient(bpy.types.Operator):
    """Add A Gradient Texture Node"""
    bl_idname = "ext.add_gradient"
    bl_label = "Gradient Texture"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeTexGradient")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addNoiseTex(bpy.types.Operator):
    """Add A Noise Texture Node"""
    bl_idname = "ext.add_noise_tex"
    bl_label = "Noise Texture"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeTexNoise")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addImgTex(bpy.types.Operator):
    """Add An Image Texture Node"""
    bl_idname = "ext.add_img_tex"
    bl_label = "Image Texture"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeTexImage")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addPrinBSDF(bpy.types.Operator):
    """Add A Principled BSDF Node"""
    bl_idname = "ext.add_prin_bsdf"
    bl_label = "Principled BSDF"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeBsdfPrincipled")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addSepXYZ(bpy.types.Operator):
    """Add A Separate XYZ Node"""
    bl_idname = "ext.add_sep_xyz"
    bl_label = "Separate XYZ"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeSeparateXYZ")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addSepRGB(bpy.types.Operator):
    """Add A Separate RGB Node"""
    bl_idname = "ext.add_sep_rgb"
    bl_label = "Separate RGB"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeSeparateRGB")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addObjInfo(bpy.types.Operator):
    """Add An Object Info Node"""
    bl_idname = "ext.add_obj_info"
    bl_label = "Object Info"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeObjectInfo")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addHueSat(bpy.types.Operator):
    """Add A Hue/Saturation Node"""
    bl_idname = "ext.add_hue_sat"
    bl_label = "Hue Saturation Value"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeHueSaturation")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addCombXYZ(bpy.types.Operator):
    """Add A Combine XYZ Node"""
    bl_idname = "ext.add_comb_xyz"
    bl_label = "Combine XYZ"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeCombineXYZ")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addBump(bpy.types.Operator):
    """Add A Bump Node"""
    bl_idname = "ext.add_bump"
    bl_label = "Bump"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeBump")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addNMap(bpy.types.Operator):
    """Add A Normal Map Node"""
    bl_idname = "ext.add_n_map"
    bl_label = "Normal Map"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeNormalMap")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addMapRange(bpy.types.Operator):
    """Add A Map Range Node"""
    bl_idname = "ext.add_map_range"
    bl_label = "Map Range"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeMapRange")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

class addDisplacement(bpy.types.Operator):
    """Add A Displacement Node"""
    bl_idname = "ext.add_dis"
    bl_label = "Displacement"

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

    def execute(self, context):
        bpy.ops.node.add_node(type="ShaderNodeDisplacement")
        return bpy.ops.node.translate_attach_remove_on_cancel('INVOKE_DEFAULT')

#------------------------------------------------------------------------------

class open_node_Pie1(bpy.types.Operator):
    """Open The NodePie Menu"""
    bl_idname = "ext.open_pie1"
    bl_label = "Open Menu"

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

    def execute(self, context):
        if context.preferences.addons['NodePies'].preferences.menu_amount == '1':
            bpy.ops.wm.call_menu_pie(name="OBJECT_MT_node_Pie")
            print("Pie1 Called")

        elif context.preferences.addons['NodePies'].preferences.menu_amount == '2':
            bpy.ops.wm.call_menu_pie(name="OBJECT_MT_node_Pie2")
            print("Pie2 Called")

        elif context.preferences.addons['NodePies'].preferences.menu_amount == '3':
            bpy.ops.wm.call_menu_pie(name="OBJECT_MT_node_Pie3")
            print("Pie3 Called")

        elif context.preferences.addons['NodePies'].preferences.menu_amount == '4':
            bpy.ops.wm.call_menu_pie(name="OBJECT_MT_node_Pie4")
            print("Pie4 Called")

class open_node_Pie2(bpy.types.Operator):
    """Open The Secondary NodePie Menu"""
    bl_idname = "ext.open_pie2"
    bl_label = "Open Secondary Menu"

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

    def execute(self, context):
        bpy.ops.wm.call_menu_pie(name="OBJECT_MT_node_Pie2")
        print("Pie2 Called")
        return {'FINISHED'}

class open_node_Pie3(bpy.types.Operator):
    """Open The Tertiary NodePie Menu"""
    bl_idname = "ext.open_pie3"
    bl_label = "Open Tertiary Menu"

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

    def execute(self, context):
        bpy.ops.wm.call_menu_pie(name="OBJECT_MT_node_Pie3")
        print("Pie3 Called")
        return {'FINISHED'}

class open_node_Pie4(bpy.types.Operator):
    """Open The Quaternary NodePie Menu"""
    bl_idname = "ext.open_pie4"
    bl_label = "Open Quaternary Menu"

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

    def execute(self, context):
        bpy.ops.wm.call_menu_pie(name="OBJECT_MT_node_Pie4")
        print("Pie4 Called")
        return {'FINISHED'}

#----------------------------------------------------------------------------

class node_Pie(Menu):
    bl_idname = "OBJECT_MT_node_Pie"
    bl_label = "Add Node"

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

        pie.operator("ext.add_math")
        pie.operator("ext.add_v_math")
        #pie.operator("ext.open_pie2")
        pie.operator("ext.add_cr")
        pie.operator("ext.add_gradient")
        pie.operator("ext.add_noise_tex")
        pie.operator("ext.add_sep_rgb")
        pie.operator("ext.add_sep_xyz")

class node_Pie2(Menu):
    bl_idname = "OBJECT_MT_node_Pie2"
    bl_label = "Add Node"

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

        pie = layout.menu_pie()

        #pie.operator("ext.add_ao")
        pie.operator("ext.add_n_map")
        pie.operator("ext.add_img_tex")
        pie.operator("ext.add_obj_info")
        pie.operator("ext.add_hue_sat")
        pie.operator("ext.add_comb_xyz")
        pie.operator("ext.add_map_range")
        pie.operator("ext.add_dis")
        pie.operator("ext.add_bump")

class node_Pie3(Menu):
    bl_idname = "OBJECT_MT_node_Pie3"
    bl_label = "Add Node"

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

        pie = layout.menu_pie()

class node_Pie4(Menu):
    bl_idname = "OBJECT_MT_node_Pie4"
    bl_label = "Add Node"

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

        pie = layout.menu_pie()

#----------------------------------------------------------------

class node_Pie_Preferences(bpy.types.AddonPreferences):
    bl_idname = __name__

    menu_amount: bpy.props.EnumProperty(
        items=[
            ('1', '1 Menu', '', '', 0),
            ('2', '2 Menus', '', '', 1),
            ('3', '3 Menus', '', '', 2),
            ('4', '4 Menus', '', '', 3)
        ],
        default='2'
    )

    #menu_amount: IntProperty(
    #    name="Amount of Pie Menus",
    #    default=2, min=1, max=4
    #)

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

        layout.label(text=" Coming Soon!", icon="FUND")
        row = layout.row()
        layout.label(text='Choose the amount of NodePie menus:')
        row = layout.row()
        row.prop(self, 'menu_amount', expand=True)

from bpy.utils import register_class, unregister_class

classes = [
node_Pie,
node_Pie2,
node_Pie3,
node_Pie4,
open_node_Pie1,
open_node_Pie2,
open_node_Pie3,
open_node_Pie4,
node_Pie_Preferences,

addAO,
addMath,
addVMath,
addColorRamp,
addGradient,
addNoiseTex,
addImgTex,
addPrinBSDF,
addSepXYZ,
addSepRGB,
addObjInfo,
addHueSat,
addCombXYZ,
addBump,
addNMap,
addMapRange,
addDisplacement
]

addon_keymaps = []

def register():
    for cls in classes:
        bpy.utils.register_class(cls)

    # Add the hotkey
    wm = bpy.context.window_manager
    kc = wm.keyconfigs.addon
    if kc:
        km = wm.keyconfigs.addon.keymaps.new(name='Node Editor', space_type='NODE_EDITOR')
        kmi = km.keymap_items.new(open_node_Pie1.bl_idname, type='W', value='PRESS')
        addon_keymaps.append((km, kmi))

def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)

    for km, kmi in addon_keymaps:
        km.keymap_items.remove(kmi)
    addon_keymaps.clear()

if __name__ == "__main__":
    register()

    #bpy.ops.wm.call_menu_pie(name="node_Pie")

Hello ! Most likely because something didn't register properly so the addon as a whole didn't register properly, so it's not in the addons dictionary. side note your node operators would greatly benefit from dynamically creating and registering classes eg https://blender.stackexchange.com/q/56741/86891

This will only work if you register this as an add-on otherwise the entry is not added to the context preferences lookup dictionary. I suggest you work directly from within the addons folder or create a symlink to your working directory that way you only have to go to Blender Icon > System > Reload Scripts to see your edits live.

You can find the addon installation folder by following this link

Make sure your file is named "NodePies.py" otherwise this won't work, the entry isn't based on the addon name but on the python file on disk, or the zip file name if you're distributing an addon with multiple files.

PS : If you manage to make it work, you'll get an error because your operator must return a set, usually {"FINISHED"} for regular operators.


text:
Changing viewport anti-aliasing through code
I'm currently working on a script to help me optimize my viewport for better performance.
One way is changing the viewport aa. I have already found the line of code in which I can reference aa:
import bpy

bpy.types.PreferencesSystem.viewport_aa

But I can't figure out how to set a variable. My best guess was:
import bpy

bpy.types.PreferencesSystem.viewport_aa = "FXAA"

When I run that script, I don't get an error but nothing happens either. It's probably something simple I'm missing.
Thanks in advance!
If it helps: Blender API help link

This is accessed through the ever intuitive  bpy.context.preferences.system.viewport_aa
You should be able to write directly to this variable:
bpy.context.preferences.system.viewport_aa = 'OFF'
for example.

This worked, thanks! Unfortunately it looks like I'll have to order a set of keycaps, ctrl, c and v are already starting to wear down...

source: Stack Exchange

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

sort: votes


text:
How do I fix my object dimensions to fit real dimensions?
I have an object (an eggshell fragment) that I want to scale to its real size to get a volume calculation. I pulled the mesh as an STL file from another software and the scale is completely wrong, but I assume that the proportions should be the same. I have tried changing the unit scale to match millimeters and for some reason, the size is still wrong. When I use the measure tool the object is off by about 4 mm. Also, the dimensions say it is over 5000 m in size. Where did I mess up, and how do I fix it? The volume calculations are for research purposes so I want to be as accurate as possible.

I'd say there is a bug when setting the unit scale to 10^-6. I usually use 10^-3 as most STLs I've seen assume 1unit = 1mm. You seem to be using 1unit=1µm. Not sure, but it could be a problem with floating point representations. Perhaps you could scale your model by a factor of 1,000 then work in mm instead of µm?

I tried changing it to a factor of 1,000 but am running into a similar issue. The dimensions still don't make sense. In the original program where I rendered the object the top of the eggshell should be about 7 mm across, so I'm confused as to why it isn't matching.

Can you share the stl?

Sure, I could do that. I poked around a little more and noticed that the same thing happened with ZBrush.

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


text:
Torch not showing an emission node
I have recently been working on a Minecraft animation. I wanted to use a torch to light up the inside of my house, but there is no emission node in the node editor. It works on blocks such as glowstone, but not on torches.
I have tried creating an emission node but it messes it up. I am following a tutorial from Black Plasma Studios on YouTube (12:30 seconds into the third episode). Please help. Tell me if you need more info.

This isnt the best way for this but it should work for what you need.
The problem with the set up below is the brown stick part is also illuminated not just the fire part. The best way to do that is to have 2 different materials one for the stick and one for the fire (with just the emission on the fire.) Or you could use a vertical falloff ramp but that may be overkill for what you are looking for. Hope the below set up helps you.
Or you can skip this whole step and just put a point light where your torch is.

This will be a fairly lengthy reply. (BTW someone named David turned my reply into a comment. This is helpful to the question David. I think.)
1.) My "something random" says "inn" because that is the name of the scene I am working in. The animation I will hopefully create is set in an inn/bar.
2.) When I created my scene in Minecraft I had placed down torches in game and brought them into blender using Arbiter 617's tutorial instead of appending the torches manual. I appended a torch along with "Torch point" and "Torch flame" as shown here.
As soon as i did this and rendered it out i got a glowing torch (I don't think that "Torch Flame" is needed.)

The "Torch point" must have been a point light that you can append with the torch to make it glow like the chest and chest bones. I probably need to delete all of the torches that are already on the walls and replace them with there appended lookalikes with the "Torch point" attached to each one, like the chests. (do you happen to know a shortcut to replace all torches with there lookalikes instead of going to each one, but its fine if you don't.)

There is no built in way to do that, you would have to write a script.

Here is a way to set up the nodes so as to make the handle not glow. This is specifically for ZeFluffyNuhpkin.

This is what i get when i set up those nodes.

Just try this on one torch and see if it works.

Please avoid that much text in the image. Firstly it is not searchable and secondly those letters filling all the space distract from the image itself

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


text:
Can addons be written in C to modify parts of Blender inaccessible through Python?
My experience with and understanding of coding is currently limited to three college courses on programming for business with Java, but I'm trying to learn how to code stuff for Blender.
I want to write some addons for new modifiers and texture nodes (like real texture nodes that would be listed along with Image, Noise, Musgrave, etc, not just "custom" nodes).  I've read that modifiers are written deep in the guts of Blender's C-based files, and are inaccessible through the Python interface; I figure the same would go for textures.  Are these files accessible, (if so, what/where are they), and can addons be written in C that would interact with them and expand on them?

I'm not sure if this would help, but you can check out Curtis Holt's video on the topic of Python + Blender: youtu.be/XqX5wh4YeRw

Not really.  Suggest the C / C++ part would be a patch adding your new modifier or new node also wiring it into the python API.  The user would have to build blender from patched source.  There are always a number of unofficial patches and those by way of git branches that are adding to or improving functionality (or neither) of blender.  Look for more info on https://developer.blender.org

@batFINGER Sorry, you'll have to pardon my coding ignorance; what are patches and branches?


text:
Advanced Lava Simulation
I'm to figure out how to create realistic lava.  I've watched pretty much every Blender tutorial out there on it, and they all seem to present results similar to this:

Which looks cool, but it only takes a quick look at some real lava footage to see that this isn't how lava behaves.  Observe the crust in these clips:

3

It moves around, breaks apart, etc, but nothing like what the above attempt makes it do.

Additionally, lava doesn't lose its shape easily.  For example, if one glob of lava lands on another glob of lava, unless both are white hot, you're going to still be able to make out those two globs for a while, and the crease between them will pretty much never go away; you can kind of see this in action here:

Another example is lava crumpling up like in this clip:

This preservation of shape is something I continue to see absent in all fluid sim demos; it seems like all demos showing "viscous" fluid still have pieces absorbing into each other pretty quickly, like in these videos below:
Flip Fluids Viscosity Comparison - Blender
High Viscosity Flip Fluid - #Blender
Blender FLIP Fluids Addon
Blender - Fluid Simulation
Is it possible to make lava with these elements in Blender?  Could the Molecular Script addon do it?  I've seen some pretty amazing stuff done with that addon, but I haven't been able to really figure out how to do much with it myself.

Actually, Can Blender Stack Exchange do gifs?  These don't seem to be playing.

I don't know how well Blender would be able to do it in the base flip fluids simulator. The diffusion settings only go so far. Also, I found a post on blender artists that might help you. https://blenderartists.org/t/lava-flow-help/488305


text:
Reflectivity in Principled Shader?
Before 2.79 I used a dialectric node setup outlined by Andrew Price for PBR materials.  This involved "reflectivity" maps among other maps, which I used, and many PBR texture maps include the reflectivity map.  But I see no "reflectivity" value in the new Principled Shader.  Where do I plug in this map?  I know it's not roughness, because that's its own thing, and I know that the "specular" value probably isn't it, because I've heard multiple people say that that value isn't for when you're trying to do physically accurate shading; that it's not a PBR-related setting.  I know there is some other PBR-related value I'm not using that affects reflections, because I plug in roughness and normal maps for very rough, dull materials, and they still look shiny.
Thanks for any help y'all can give!

if i remember correctly from blender gurus video, he says that the reflection map is not needed when using the principled shader because with the principled shader, the reflective data is in the color map

Actually, it is the specular value input, specular is reflectivity. It's just that in some non PBR setups specular is a way of faking a reflected highlight without calulating actual reflections, and they called it specular. But in the principled shader specular means reflection and that's where you would put the reflection map, also sometimes called a specular map.
Play with the specular value and you'll see you can go from zero reflection to 100% mirror reflection. Roughness is basically your way of dulling down or polishing up the reflectivity, it's like a gloss value

Ok.
This is from Blender guru.
He shows where is the reflections.
A short explanation of principled:
link: https://goo.gl/fgsyxN

It doesn't seem that he specifically addresses the PBR reflectivity parameter in the video.  I just found that setting the roughness up to one pretty much gets rid of the shininess.  Am I correct in concluding that any PBR texture pack that includes a reflectivity map has the roughness map not bright enough to do this, since the creator of that pack expects there to be a separate reflectivity parameter to crank down the actual reflectivity?  If so, can the problem be solved by simply brightening the roughness map?

A glossy shader with a roughness of 1.0 is very close to a diffuse shader. A reflection map connected to this will effectively control the reflections over the mesh.

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


text:
Real Translucency (NOT Transparency or SSS) in Principled Material Setup
I'm trying to create an effect where a creature has a part of its body that's really thin and translucent, and the blurry silhouettes of the bones can be seen inside it when light is behind it.
In technical terms, this means I need to have an object where light rays can pass through it, but only if it's thin enough and there are no obstructions inside the object.  Translucency, really.  (NOT transparency or SSS.)
This is actually exactly what the Translucent shader does (I tested it, and it does exactly what I need), but that shader literally only has parameters for color and a normal map, making it practically useless unless I can find a way to intelligently mix it with the Principled BSDF node.  I don't know why the Principled BSDF shader has no parameter for translucency.  I mean, sure, SSS is basically the same effect as translucency in theory, so maybe the developers thought it would be redundant, but with SSS (or maybe it's just Blender's SSS), external obstructions between the SSS object and the light source just aren't as clearly visible as with the Translucency shader, and obstructions inside the the SSS object are completely invisible for some reason.
I could try to fake it with rough transmission, but I need a way to use the thickness of the mesh (or, in more technical terms, how far a light ray must travel to get from its entry point to its exit point in the mesh) to control the transmission, and I haven't figured out where to get that data.  Using a hand-painted texture map to manually control the transmission looks like crap, because it just lacks the detail.
Does anyone have any ideas of how I could go about this?

Hello :). This is a good question. I usually just mix Principled BSDF with Translucent, but I'd be really nice to have it all in one shader.

Related: Translucent leaf using Principled BSDF

I'm not sure why there is no Translucency option on the Principled shader. Perhaps there is a way to get translucent behavior from the Principled shader, but not that I know of. Here's a possible way to combine the two shaders, which should take thickness into account.
There's an answer here that goes over a way to find the approximate thickness of an object and use it in a shader by using the Ambient Occlusion node with Inside enabled.
While I'm not sure of your exact situation, I think it could be a reasonable way to mix the main shader with the translucency. I'd start by seeing what the Ambient Occlusion node outputs. It might be good enough as is. You'll probably need to adjust the distance though. I'd set it a bit higher than the thickest point on your mesh that you want to be translucent.
In some quick tests I did, I found the output might not be perfect on it's own. However, it's a pretty good start. You may want to mix in the Pointiness output of the Geometry node to isolate any raised sections (bumps, veins, etc.) that shouldn't be translucent. Mixing the two outputs using a Math node set to Maximum seemed to work well.
A quick hand painted texture could be used to "mask" the general areas that you want translucent. Add a Math node set to Multiply to add in the texture. This would just ensure that nothing is translucent that shouldn't be.
Here's a really quick test I did as a proof of concept. Far from perfect, but I think the idea is there. The dark spot is a Suzanne that I placed just underneath as a test. The mesh is just a subdivided cube with a thin section in the center and a couple sculpted "veins".

And the node setup:

As you can see there is a few spots on the outer edge that ended up translucent. With some tweaking of the ColorRamps it might get a bit better, but manually masking might be the way to go.

Thanks, that really helped!  I used the AO node with "Inside" toggled on, fed it through a color ramp for control, and plugged it into the transmission socket.  One problem is that it the silhouette of the bone is very sharp, even with the transmission roughness set to 1, but maybe I'll be able to find some way to fix that.


text:
Is it possible to set the image of the image texture to be a camera in that scene?
long story short, I am trying to get a cartoony artstyle where the mouth is a 3d object being rendered by an orthographic camera to give it a 2d look, then put that image onto the finished model. it would be really convenient if I could have it so I didn't need to render them both separately, is there a way to set that orthographic camera as a texture?

Hi could you explain a bit more what is "camera as a texture"? Could you add some illustrations for instance?

You'll need to do some compositing to make this work, because you can only have one active (rendering) camera per scene. So yes, you will have to render both, but Blender can auto-composite your results.
Make a new scene. You can do a Full Copy if you want to copy everything over, and delete all but the mouth and the camera. Keep the background camera as perspective, and make the camera in the new scene orthographic. In the new scene with the mouth, make sure you have Film -> Transparent checked. You might want to copy the lights over as well.
In the compositor, check "Use nodes," and duplicate the existing Render Layers node. Change its scene, so that both scenes are present. Connect the two nodes' image outputs to an Alpha Over node, which will layer them. Connect that to the composite output, or the viewer output if you'd like to preview what's going on. Look up some compositor tutorials if you're not sure what all this means.

dang I was hoping it would be easy. thanks for the answer!


text:
Constrainted objects displaced during rendering animation
Faced the following problem. When I've rendered an animation, some details were not where they should be according to the timeframe. This problem occurs only when rendering an animation (3 problematic frames out of 100), if each “problematic" frame is rendered separately, each detail is in its right place. I guess this is not entirely correct from the point of optimization, but all the moving parts of the model are sets of constants and drivers, no rig (not yet, but I will return to this later). Please, tell me in which direction to look info about the missing and shifting parts? I have feelings that this is somehow related to the loading objects into the memory, because before i've upgraded from 16Gb to the 32Gb RAM i've could render only 3 consecutive frame, after that all progress have been freezing.

Here is my blend file if it helps
https://drive.google.com/open?id=16xDPaeUxWG3jUMsxfpa8RL2BmdRj3AU7

If you use Blender Drivers, it can be a bug.

Thanks. If it so, it seems that the only workaround is to re-render problematic frames one by one


text:
IES lights in Blender 2.82
Since Blender 2.8 there is the built-in feature to use IES-files for realistic lighting. In 2.80 you could just select a point light source, click on "Use Nodes" and add an IES-texture node in the Shading tab.
In 2.82 I can't find the "Use Nodes" option anymore and when selecting a light source and going in the Shading tab, there are no nodes yet.
Does anyone know where to activate the "Use Nodes" option?

Make sure you're using the Cycles render engine.
It's not there when using Eevee :).

You're absolutely right! Thanks a lot.

@Tongamann Happy to help :). No idea why Eevee doesn't support this.


text:
i need help, my 3D model looks broken

idk what happened, i just finished modeling the this and after i exit the edit mode this just happened, i reloaded the file and the same thing keep happening. i need help please thankyou..

Hello :). Don't you just have two identical models on top of each other? Because it seems like z-fighting.


text:
Help moving around edges and vertices
(sorry if this is a noob question, I am a noob)
So I want to grab an edge of a cube and push it inward to create a dent in the cube. (I'm trying to put a fuller in a sword model I'm making for context) However, when I do this, it looks like it just creates another set of vertices and leaves the ones I'm trying to move in the same place.

Hello :). It should work just as you expect. Can you please add an image of your 3D viewport, to better illustrate the issue?

In the screen captures you provide ... can you read the number of vertices of your [cube?]?... Is it what you think it should be? Do you think you have defective duplicated vertices which can be merged by distance?  Back file up and try merge by distance.There are plenty of video tutorials on the website that has a name that rhymes with noonube.  Make sure you are not extruding vertices by accident.  Try your  work on a simple new mesh ,such as a cube subdivided once. Make sure your maneuvers with an extremely simple object are correct.


text:
Bad quality rendereing videos with Eevee
I'm trying to render a video with Eevee but I'm getting a really bad video quality.
When I render an image it looks perfect, everything looks smooth: https://i.sstatic.net/PAyhR.jpg
But when I render a video, the background gets pixelated and with really bad quality: https://i.sstatic.net/juj50.jpg
These are the settings that I'm using: https://i.sstatic.net/88vXR.jpg
WHen I render it with Cycles it looks good but I need to render it with Eeevee so I would like to know if there are any way to fix this.
Thanks :)

Hi. Please use the built-in uploader when adding images. See: https://meta.stackexchange.com/questions/75491/how-to-upload-an-image-to-a-post . Thanks.

Recommend, always render as image sequence (preferably exr), then use the VSE to compile the images into a video: https://blender.stackexchange.com/questions/52230/how-to-convert-image-sequence-to-video-using-the-vse

How can I render as image sequence?

Pretty simple: in the "Output Properties" -> "Output"-dialog, choose "EXR" (or PNG) as file format.
Blender will automatically save the images with incrementing numbers, so you can later combine the frames into a video


text:
Can't GPU render with NVIDIA GTX 1650 mobile

I'm using linux mint 20 and it says No compatible GPUS found for path tracing. I am using blender 2.83. Here is the system info.
=====================================
= Blender 2.83.1 System Information =
=====================================

Blender:
=====================================

version: 2.83.1, branch: master, commit date: 2020-06-25 09:47, hash: 8289fc688b3e, type: Release
build date: 2020-06-25, 10:29:26
platform: Linux
binary path: '/home/prateek/Blender/blender-2.83.1-linux64/blender'
build cflags:  -Wall -Wcast-align -Werror=implicit-function-declaration -Werror=return-type -Werror=vla -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wunused-parameter -Wwrite-strings -Wlogical-op -Wundef -Winit-self -Wmissing-include-dirs -Wno-div-by-zero -Wtype-limits -Wformat-signedness -Wnonnull -Wuninitialized -Wredundant-decls -Wshadow -Wno-error=unused-but-set-variable  -fuse-ld=gold -std=gnu11   -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing -msse2 -D_GLIBCXX_USE_CXX11_ABI=0
build cxxflags:  -Wredundant-decls -Wall -Wno-invalid-offsetof -Wno-sign-compare -Wlogical-op -Winit-self -Wmissing-include-dirs -Wno-div-by-zero -Wtype-limits -Werror=return-type -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wunused-parameter -Wwrite-strings -Wundef -Wformat-signedness -Wuninitialized -Wundef -Wmissing-declarations  -fuse-ld=gold -std=c++11   -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing -msse2 -D_GLIBCXX_USE_CXX11_ABI=0
build linkflags:  -Wl,--version-script='/home/sources/buildbot-worker-linux_centos7/linux_lts_283/blender.git/source/creator/blender.map'
build system: CMake

Python:
=====================================

version: 3.7.4 (default, Oct  8 2019, 15:23:02)  [GCC 6.3.1 20170216 (Red Hat 6.3.1-3)]
file system encoding: utf-8:surrogateescape
paths:
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/startup'
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/modules'
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/python/lib/python37.zip'
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/python/lib/python3.7'
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/python/lib/python3.7/lib-dynload'
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/python/lib/python3.7/site-packages'
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/freestyle/modules'
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/modules'
    '/home/prateek/.config/blender/2.83/scripts/addons/modules'
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons'

Python (External Binary):
=====================================

binary path: '/home/prateek/Blender/blender-2.83.1-linux64/2.83/python/bin/python3.7m'
version: Python 3.7.4

Directories:
=====================================

scripts:
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/modules'
    '/home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts'
user scripts: '/home/prateek/.config/blender/2.83/scripts'
pref scripts: None
datafiles: '/home/prateek/.config/blender/2.83/datafiles/'
config: '/home/prateek/.config/blender/2.83/config/'
scripts : '/home/prateek/.config/blender/2.83/scripts/'
autosave: '/home/prateek/.config/blender/2.83/autosave/'
tempdir: '/tmp/blender_FLCA8W/'

FFmpeg:
=====================================

avcodec:   '58, 18, 100'
avdevice:  '58,  3, 100'
avformat:  '58, 12, 100'
avutil:    '56, 14, 100'
swscale:   ' 5,  1, 100'

SDL:
=====================================

Version: 2.0.10
Loading method: dynamically loaded by Blender (WITH_SDL_DYNLOAD=ON)

Other Libraries:
=====================================

OpenColorIO:  1,  1,  0
OpenImageIO:  1,  8, 13
OpenShadingLanguage:  1, 10,  9
OpenSubdiv:  0,  0,  0
OpenVDB:  7,  0,  0
Alembic:  1,  7, 12
USD:  0, 19, 11

OpenGL:
=====================================

renderer:   'Mesa Intel(R) UHD Graphics 630 (CFL GT2)'
vendor:     'Intel'
version:    '4.6 (Core Profile) Mesa 20.0.4'
extensions:
    GL_3DFX_texture_compression_FXT1
    GL_AMD_conservative_depth
    GL_AMD_depth_clamp_separate
    GL_AMD_draw_buffers_blend
    GL_AMD_gpu_shader_int64
    GL_AMD_multi_draw_indirect
    GL_AMD_performance_monitor
    GL_AMD_pinned_memory
    GL_AMD_query_buffer_object
    GL_AMD_seamless_cubemap_per_texture
    GL_AMD_shader_stencil_export
    GL_AMD_shader_trinary_minmax
    GL_AMD_texture_texture4
    GL_AMD_vertex_shader_layer
    GL_AMD_vertex_shader_viewport_index
    GL_ANGLE_texture_compression_dxt3
    GL_ANGLE_texture_compression_dxt5
    GL_ARB_ES2_compatibility
    GL_ARB_ES3_1_compatibility
    GL_ARB_ES3_2_compatibility
    GL_ARB_ES3_compatibility
    GL_ARB_arrays_of_arrays
    GL_ARB_base_instance
    GL_ARB_blend_func_extended
    GL_ARB_buffer_storage
    GL_ARB_clear_buffer_object
    GL_ARB_clear_texture
    GL_ARB_clip_control
    GL_ARB_compressed_texture_pixel_storage
    GL_ARB_compute_shader
    GL_ARB_conditional_render_inverted
    GL_ARB_conservative_depth
    GL_ARB_copy_buffer
    GL_ARB_copy_image
    GL_ARB_cull_distance
    GL_ARB_debug_output
    GL_ARB_depth_buffer_float
    GL_ARB_depth_clamp
    GL_ARB_derivative_control
    GL_ARB_direct_state_access
    GL_ARB_draw_buffers
    GL_ARB_draw_buffers_blend
    GL_ARB_draw_elements_base_vertex
    GL_ARB_draw_indirect
    GL_ARB_draw_instanced
    GL_ARB_enhanced_layouts
    GL_ARB_explicit_attrib_location
    GL_ARB_explicit_uniform_location
    GL_ARB_fragment_coord_conventions
    GL_ARB_fragment_layer_viewport
    GL_ARB_fragment_shader
    GL_ARB_fragment_shader_interlock
    GL_ARB_framebuffer_no_attachments
    GL_ARB_framebuffer_object
    GL_ARB_framebuffer_sRGB
    GL_ARB_get_program_binary
    GL_ARB_get_texture_sub_image
    GL_ARB_gl_spirv
    GL_ARB_gpu_shader5
    GL_ARB_gpu_shader_fp64
    GL_ARB_gpu_shader_int64
    GL_ARB_half_float_pixel
    GL_ARB_half_float_vertex
    GL_ARB_indirect_parameters
    GL_ARB_instanced_arrays
    GL_ARB_internalformat_query
    GL_ARB_internalformat_query2
    GL_ARB_invalidate_subdata
    GL_ARB_map_buffer_alignment
    GL_ARB_map_buffer_range
    GL_ARB_multi_bind
    GL_ARB_multi_draw_indirect
    GL_ARB_occlusion_query2
    GL_ARB_parallel_shader_compile
    GL_ARB_pipeline_statistics_query
    GL_ARB_pixel_buffer_object
    GL_ARB_point_sprite
    GL_ARB_polygon_offset_clamp
    GL_ARB_post_depth_coverage
    GL_ARB_program_interface_query
    GL_ARB_provoking_vertex
    GL_ARB_query_buffer_object
    GL_ARB_robust_buffer_access_behavior
    GL_ARB_robustness
    GL_ARB_sample_shading
    GL_ARB_sampler_objects
    GL_ARB_seamless_cube_map
    GL_ARB_seamless_cubemap_per_texture
    GL_ARB_separate_shader_objects
    GL_ARB_shader_atomic_counter_ops
    GL_ARB_shader_atomic_counters
    GL_ARB_shader_ballot
    GL_ARB_shader_bit_encoding
    GL_ARB_shader_clock
    GL_ARB_shader_draw_parameters
    GL_ARB_shader_group_vote
    GL_ARB_shader_image_load_store
    GL_ARB_shader_image_size
    GL_ARB_shader_objects
    GL_ARB_shader_precision
    GL_ARB_shader_stencil_export
    GL_ARB_shader_storage_buffer_object
    GL_ARB_shader_subroutine
    GL_ARB_shader_texture_image_samples
    GL_ARB_shader_texture_lod
    GL_ARB_shader_viewport_layer_array
    GL_ARB_shading_language_420pack
    GL_ARB_shading_language_include
    GL_ARB_shading_language_packing
    GL_ARB_spirv_extensions
    GL_ARB_stencil_texturing
    GL_ARB_sync
    GL_ARB_tessellation_shader
    GL_ARB_texture_barrier
    GL_ARB_texture_buffer_object
    GL_ARB_texture_buffer_object_rgb32
    GL_ARB_texture_buffer_range
    GL_ARB_texture_compression_bptc
    GL_ARB_texture_compression_rgtc
    GL_ARB_texture_cube_map_array
    GL_ARB_texture_filter_anisotropic
    GL_ARB_texture_float
    GL_ARB_texture_gather
    GL_ARB_texture_mirror_clamp_to_edge
    GL_ARB_texture_multisample
    GL_ARB_texture_non_power_of_two
    GL_ARB_texture_query_levels
    GL_ARB_texture_query_lod
    GL_ARB_texture_rectangle
    GL_ARB_texture_rg
    GL_ARB_texture_rgb10_a2ui
    GL_ARB_texture_stencil8
    GL_ARB_texture_storage
    GL_ARB_texture_storage_multisample
    GL_ARB_texture_swizzle
    GL_ARB_texture_view
    GL_ARB_timer_query
    GL_ARB_transform_feedback2
    GL_ARB_transform_feedback3
    GL_ARB_transform_feedback_instanced
    GL_ARB_transform_feedback_overflow_query
    GL_ARB_uniform_buffer_object
    GL_ARB_vertex_array_bgra
    GL_ARB_vertex_array_object
    GL_ARB_vertex_attrib_64bit
    GL_ARB_vertex_attrib_binding
    GL_ARB_vertex_buffer_object
    GL_ARB_vertex_shader
    GL_ARB_vertex_type_10f_11f_11f_rev
    GL_ARB_vertex_type_2_10_10_10_rev
    GL_ARB_viewport_array
    GL_ATI_blend_equation_separate
    GL_ATI_texture_float
    GL_EXT_EGL_image_storage
    GL_EXT_EGL_sync
    GL_EXT_abgr
    GL_EXT_blend_equation_separate
    GL_EXT_demote_to_helper_invocation
    GL_EXT_draw_buffers2
    GL_EXT_draw_instanced
    GL_EXT_framebuffer_blit
    GL_EXT_framebuffer_multisample
    GL_EXT_framebuffer_multisample_blit_scaled
    GL_EXT_framebuffer_object
    GL_EXT_framebuffer_sRGB
    GL_EXT_packed_depth_stencil
    GL_EXT_packed_float
    GL_EXT_pixel_buffer_object
    GL_EXT_polygon_offset_clamp
    GL_EXT_provoking_vertex
    GL_EXT_shader_framebuffer_fetch
    GL_EXT_shader_framebuffer_fetch_non_coherent
    GL_EXT_shader_integer_mix
    GL_EXT_shader_samples_identical
    GL_EXT_texture_array
    GL_EXT_texture_compression_dxt1
    GL_EXT_texture_compression_rgtc
    GL_EXT_texture_compression_s3tc
    GL_EXT_texture_filter_anisotropic
    GL_EXT_texture_integer
    GL_EXT_texture_sRGB
    GL_EXT_texture_sRGB_R8
    GL_EXT_texture_sRGB_decode
    GL_EXT_texture_shadow_lod
    GL_EXT_texture_shared_exponent
    GL_EXT_texture_snorm
    GL_EXT_texture_swizzle
    GL_EXT_timer_query
    GL_EXT_transform_feedback
    GL_EXT_vertex_array_bgra
    GL_EXT_vertex_attrib_64bit
    GL_IBM_multimode_draw_arrays
    GL_INTEL_conservative_rasterization
    GL_INTEL_performance_query
    GL_INTEL_shader_atomic_float_minmax
    GL_INTEL_shader_integer_functions2
    GL_KHR_blend_equation_advanced
    GL_KHR_blend_equation_advanced_coherent
    GL_KHR_context_flush_control
    GL_KHR_debug
    GL_KHR_no_error
    GL_KHR_parallel_shader_compile
    GL_KHR_robust_buffer_access_behavior
    GL_KHR_robustness
    GL_KHR_texture_compression_astc_ldr
    GL_KHR_texture_compression_astc_sliced_3d
    GL_MESA_framebuffer_flip_y
    GL_MESA_pack_invert
    GL_MESA_shader_integer_functions
    GL_MESA_texture_signed_rgba
    GL_NV_compute_shader_derivatives
    GL_NV_conditional_render
    GL_NV_depth_clamp
    GL_NV_fragment_shader_interlock
    GL_NV_packed_depth_stencil
    GL_NV_texture_barrier
    GL_OES_EGL_image
    GL_S3_s3tc

Implementation Dependent OpenGL Limits:
=====================================

Maximum DrawElements Vertices:  3000
Maximum DrawElements Indices:   3000

GLSL:
Maximum Varying Floats: 128
Maximum Vertex Attributes:  16
Maximum Vertex Uniform Components:  16384
Maximum Fragment Uniform Components:    16384
Maximum Vertex Image Units: 32
Maximum Fragment Image Units:   32
Maximum Pipeline Image Units:   192

Cycles:
=====================================

CPU device capabilities: SSE2 SSE3 SSE41 AVX AVX2

OpenCL device capabilities:
No OpenCL platforms found

CUDA device capabilities:
No CUDA device found

Enabled add-ons:
=====================================

io_anim_bvh (version: (1, 0, 0), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/io_anim_bvh/__init__.py)
io_curve_svg (version: (), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/io_curve_svg/__init__.py)
io_mesh_ply (version: (1, 1, 0), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/io_mesh_ply/__init__.py)
io_mesh_stl (version: (1, 1, 3), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/io_mesh_stl/__init__.py)
io_mesh_uv_layout (version: (1, 1, 1), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/io_mesh_uv_layout/__init__.py)
io_scene_fbx (version: (4, 20, 3), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/io_scene_fbx/__init__.py)
io_scene_gltf2 (version: (1, 2, 75), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/io_scene_gltf2/__init__.py)
io_scene_obj (version: (3, 8, 0), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/io_scene_obj/__init__.py)
io_scene_x3d (version: (2, 2, 5), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/io_scene_x3d/__init__.py)
cycles (version: (), path: /home/prateek/Blender/blender-2.83.1-linux64/2.83/scripts/addons/cycles/__init__.py)
```

Most of the  time issues like this are caused by problems with GPU drivers or them not being up to date. Maybe try other driver version.

are you installing blender from the file from blender.org?

I did install it from Blender.org which was supposed to be built with CUDA, I have yet to try other versions. It works perfectly fine in windows.


text:
Ctrl+M (interactive mirror) is not taking the object's rotation into account
I am having a trouble mirroring a duplicated object in the Object Mode. The problem is: Ctrl+M only mirrors the object's location but not its rotation.

First I created a cube and used Shift+D to duplicate it.
Then I used Ctrl+M -> x to mirror it essentially about the y-z plane, using the 3-D cursor at the global origin as the pivot point. What I got is shown in the following figure.

The duplicated cube is the one on the LHS after mirroring, but its rotation z value is still the same as that of the original cube on the RHS. What I hope to achieve is shown in the next figure.

This can be done by manually adding a minus sign to the rotation z value, but it is not practical to do this for every object that I select for mirroring using Ctrl+M in the Object Mode.
I am reading a Blender tutorial book and following the steps in this book. According to the author, I should be able to use Ctrl+M to mirror all the selected objects, inluding their rotation, about the y-z plane in one step in the Object Mode. But when I tried, I had to manually adjust the rotation for the duplicated objects after using pressing Ctrl+M -> x. If I do this for ten selected objects, I'll have to manually adjust rotation ten times and that is not what I hope to do.
I have read many posts online including these two:
Mirroring in Object Mode, taking rotation into account
(The object is duplicated using Alt+D, not Shift+D)
Interactive mirror (Ctrl + M) doesn't mirror object
(The problem is the pivot point)
I also watched tutorial videos on Youtube. They are not helpful for solving this problem that I have. They do not have a rotated object or they use a modifier that I'm not using. I know that what I hope to do can be done in the Edit Mode for each individual object but it may not be practical to do if I select many different objects. I started to wonder if this operation (using Ctrl+M in the Object Mode to mirror the rotation too) can be done with the current version (v2.83), or if the author of the book wrote something wrong in the book, or if I missed something so obvious that others didn't. If this cannot be done in the current version, I'll simply give up trying (already spent more than 4 hours on this simple step in the book).
Please help. Thank you so much!

I have tried and tried, but I can't duplicate your problem. It always works for me, and both location and rotation are mirrored with Ctrl + m. If applying your transforms has no effect on this, the only other thing I could suggest is to close this file and open a brand new one, and perform a new test. It may just work. If you don't want to do that, you could use a Mirror modifier as a workaround, and choose the option that leaves the two halves unmerged. Then separate them afterwards with 'p'. Not ideal, I know.

Hi R-800. Are you saying that in Object Mode you can mirror an object with rotation z 14 deg about Global x and get a mirrored object that has rotation z -14 (minus fourteen) deg? I can't do that but it is what I hope to do.

I have more clarity now. I didn't understand that you wanted the rotation channel values to be numerically inverted and preserved after the mirror. I thought all you cared about was the visual orientation of the cubes, and them being the inverse of one another after mirroring. I could get them inverted by applying all the transforms before mirroring. That works, but it doesn't leave you with -14 degrees on the z axis afterwards for the copy. It leaves you with zero for all transforms, of course. But it LOOKS right. I don't know how to mirror it so that you have inverted transform channels.

Thank you! The visual orientation is not correct for me either in Object Mode if I use Ctrl+M directly. Emir's solution works for me for now, but still if I apply all transforms the Lattice Deform effect will all be broken. I'm not going to apply transforms for now and hope that won't cause more problems.

Not sure if this is what you need, but if you use Collection instance.
-Create a new collection, add the object there
-Right Click on the collection > Instance
-Then right click on the viewport > Mirror >X Global

Also, you can add more object to that collection and it's going to have a mirror object automatically

I made a video using this technique for an animation here: https://vimeo.com/417302896 or here (same one) https://youtu.be/deIwRZt-U80
Around minute 3:04.
Hope that helps

Thank you! It seems that the instance created in your way is linked to the original collection. Could you please tell me is there anyway to unlink or to make the mirrored object independent? I tried to unlink but the instance was deleted automatically.

Oh.. It's called "make instances real". Thank you! Your method works for me. I can mirror whatever I want now. Thank you!

Yes, indeed. Glad that helps


text:
How would you cut out these table legs?
Sorry if this is a dumb question to ask, I did try to search on here and on google to get my answer but I could only find cutting out circles, mostly. I did watch some youtube vids on cutting out holes but I'm stuck with how to work w/the legs in the middle. I'm trying to create this table from scratch and I'm not sure how I would go about to cutting my mesh to get the legs like this? Once the cut outs are done how can I then create the criss-cross legs? Extruding from sides loop cuts I've done and mirroring?

Again apologies if this can easily be done, I'm still new to blender so I'm feeling kind of stuck w/this. Any help is appreciated!

Hello :). There are no dumb questions. I'm sure someone will help out. Mirroring surely sounds like a good idea :).

@JachymMichal thank you for nice words! Hopefully someone will be able to help me with this :)

Since it's symmetrical, you can use Mirror Modifier.

Create bottom right part of the X stretcher (I used Knife project tool to cut the end part)
Position origin to the center of the table
Use mirror modifier on X and Z axis

Thank you so much! This really helped me see what I can do :)

Glad to be of help :).


text:
How would I curve this cushion around this chair's outline?
, Hello! sorry if my question isn't very clear as I'm not sure how to describe what I'm trying to achieve. I'm still new to blender and learning best I can, so also sorry if this is an easy fix to do.
I'm in the process of creating this chair and I'm trying to create the cushions that follow the shape of the chair's outline.

I'm mostly done with the outline of the chair (photo below), still tweaking and finishing some things, but I'm kind of stumped on how to create the back cushions and also the seat together.

I've tried so many times to get it how I want but I really am stuck on how to correctly do it. If someone could point me in the right direction I would appreciate it a lot. I've looked up on youtube and also on here and still am confused on how to about it. Much appreciated any help!

Hi! See my edit to the answer, I hope it helps you make your profile curve.

This is a very general, sketched approach, but maybe enough to get you unstuck.
The basic structure of the back cushion can be created by sweeping a curve profile around a curve path.

Select an appropriate edge loop of your chair, duplicate it, separate it to a new object,and convert it into a Curve. That's your path.
Make a profile curve to be swept round it, bearing in mind that its own Z-axis will be the one following the path,and its origin will lie on it.
Assign the profile curve as a Bevel object for the path. While it's still a swept curve, you can still edit the profile. The illustration shows the Data tab > Geometry panel for the path.

Convert back to a Mesh. Possibly working under a Mirror modifier..

Grid Fill the open ends of the sweep. you need an even number of vertices in the perimeter for this.. you may have to add or delete an edge-loop to get that, and use Proportional editing to puff the front of the arm out a bit, when it's filled.
Select a set of faces which can be duplicated to form the back and sides  of your base cushion, duplicate, and separate off to a new object

Bridge Edge Loops the front edges,of the base-cushion rim, choosing the number of cuts to give you an even number of vertices in the perimeter, so you can ..
Again, grid fill the top. Select a central vertex, and under Proportional Editing, pull it up to plump up the base cushion a bit.

See what it looks like under a Subdivision Surface modifier.
The whole thing would then need tweaking, loops removed or added, edges made crisper or reshaped, maybe seams put in, etc. But so long as the basic topology is good, and you don't have too much geometry, it should be a pleasant job.

If you need to weld the base and the arms together, you can bridge some of those edge-loops together easily enough - they started off as duplicates, so their topologies will match.
Supplement: Creating the profile curve.. with Transform Pivot set to 3D Cursor ...

Create a Curve > Circle. It's a Bezier curve, by default.
CtrlX dissolve the leftmost control point
Select the two points on the left, and V convert their type to Vector
Select the bottom left point, and ShiftS snap the cursor to selected.

You can move the handles about to adjust the curve with the usual constraint options, (GX, GY, etc.) snap them to the grid, use the cursor as pivot point for scaling, and so on...

When you're done, in Object Mode, ShiftAltX > Origin to 3DCursor. The origin will lie on the sweep path.

In the profile's Object Properties tab > Viewport Display panel, switch on 'Axis' to check that the object's Z will point along the path. If not, rotate the whole curve in Edit mode by 90 in whatever, until it will.
You can assign it as the Bevel object to the path curve in the path's Data tab > Geometry panel,as shown in the top illustration.

Thanks for your in-depth explanation! I'm doing the first part of it now and I'm kind of stuck on what you mean 'make a profile curve'? I made the loop into a new object curve like how you gave the instruction but kind of confused on how to do the profile curve. I understand how to assign it to go around the first curve you did, but just stuck on the next part. I guess I mean how to sculpt the cushion shape to go around. So sorry, I'm still learning more about doing curves :(

@ bacon, the profile is a second bezier curve that your first curve will use in the Properties panel > Object Data > Geometry > Bevel > Object, as shown by Robin's screenshot. To get the right profile shape, you need to edit this curve in Edit mode, for example to get 90° angles, select the vertex, press V and choose Vector, etc...

@moonboots hi! Thanks so much for that info, I actually was having trouble also getting it to that angle so that did help me. So I have the outline of the cushion now but I'm still confused how I bevel it into the cushion shape? Here is a photo for example where I am at (https://i.imgur.com/wmfTQY6.png). Sorry again if this is noob stuff, I am not the fastest learner.

not sure what you're doing, maybe follow some tutorials about curve bevel, like this one: https://www.youtube.com/watch?v=cjT8c2uuDXg  ... this is just a way to do the chair, you could have done it directly with a mesh, but if you don't know curve bevel maybe it's the opportunity to learn it

@moonboots, thanks so much for your  help, (I'm GMT.. been asleep). bacon .. Don't apologise! This site exists to help, at least, those people who are making an effort, and getting stuck. Blender's Curve editing is awkward. To say the least, not the most polished part of the interface. And tutorials which don't wander off into irrelevant topics are hard to find. The manual is my best suggestion, I'm afraid. See my edit, which is a bit specific to this case, but may help.

@moonboots P.S. thanks for turning me on to 25games' YouTube channel! Phew! someone who makes tutorials which do what they say on the tin! He's a good, concise, clear teacher, who bothers to learn stuff before considering himself qualified to teach it to others!

I just linked one tutorial that seemed good for this particular topic, I don't know if I ever followed one of his tutorials, actually there are too many good Blender tutorials

@RobinBetts Wow thanks so so much for giving more explanation and so clearly! I appreciate it a lot. I'm still struggling with doing the grid fill and I do have same exact vertices to match so I guess that it's just something to practice more on. I'll have to read the manual to understand things better and not just watch tutorials although I'm a very visual person that's why I tend to watch them a lot to learn. I really appreciate all of your help and your kindness!

@bacon np. If you get really stuck with Grid Fill, post another question

From the picture the seat's base is part of the back/side cushion with a seat cushion on it.  For the seat base you could select a line of faces near the bottom on the inner curve of the back/side cushion that you've modeled, extrude (e then escape key), scale in on the x & y axis (s then shift-z then move the cursor inward, click when they're a little bit in), flatten the line of faces (s then y then 0 if the front of chair is facing front in Blender's screen space, otherwise you may need to use the x axis), then pull the faces to the front of the chair.
For the seat cushion you could select faces on the inner curve of the back/side cushion that will be next to the seat cushion, duplicate them (shift-d then escape key), scale them in a bit on the x & y axis (s then shift-z then move the cursor inward, click when they're a little bit in), then continue modeling from there.  You'll probably need to flip the normals on the faces of the seat cushion (alt-n).

Hi! Thanks so much for your explanation! It does make sense how you described. Any advice is really appreciated! Thank you!


text:
How would I make the back of this chair?
I'm having a difficult time trying to figure out how to create the back and bottom part of this chair (not the legs, just the outline of the chair). I thought about doing some extruding from creating the bottom but then I got very confused on how to create the circular backing and its seams. I'm still learning each day and this chair might be too advanced for where I am I guess but any pointers would be appreciated!

You can begin with a 60 vertex cylinder, make an inset:

Extrude a quarter of the border faces:

Move up some vertices to make the bumps:

Push a bit back the whole top:

Create some edge loops to round the shape and to prepare the seams:

Select all and make a Mesh > Symmetrize:

Some additional edge loops:

This is so helpful! Thanks so much! If I wanted to make the last two bumps on either side ends more curved out (like in the photo) would you know how to then make that happen? Would I just need to add some loop cuts and extend them manually? I hope I'm making sense!

I've edited my answer, yes add some edge loops, the back will be a bit tricky but don't hesitate to create separate meshes as there are seams you don't have to make it with one unique mesh

thanks for clarifying! I'm going to try and practice it a bit more as mine isn't turning out like how yours is, I think I'm just stuck on the back getting disfigured and some other things. I really appreciate your help!


text:
Motion Tracking + MatchMoving -- What am I doing wrong?
I'm trying to track the camera in this piece of footage and then also track the object on the stick (to replace the object with a 3D object and remove the pole).
I am a newbie, but I think I got the trackers to a low solve ERROR, so it should be working right --- I also plugged in my camera lens (35mm) and my sensor size, (Fujifilm T3 -- I looked up it was 28mm but maybe I read it wrong).
The results are horrible -- with the camera shaking hysterically. I do not know what is happening but this happens often when I try to motion track and match-move this kind of footage.
Can anyone help this idiot? lol. If you want to contact me privately, I will tip you a little bit for your time.
Here is a link to the videos that illustrate what the camera track is looking like: https://f.io/smQOQvPd
Picture with specs here:  https://f.io/gX-H3BrI

If the camera is static you need a different kind of solver then the default. Use tripod solver for the camera, and exclude the trackers for the object in the camera solution.
Then track again the object only, and solve the object separately.


text:
Change background color in render
I am running the latest version of blender I can find (2.82).  I can't change the background of my rendered image (or the one I view for that matter) no matter what I do.  I've read all the previous times this question has been asked, but the answers looks very complicated and worse, the Blender versions used are different than mine with menus and settings in places that I can't find.  I've read the manual and looked at numerous help tutorials.  This can't be that complicated, can it?  Can someone tell me where to change the background color on the render? (I suppose it's too much to hope someone will someday allow me to right click on the background and pull up a color menu.) In the meantime, how is this done?
P.S., if it isn't obvious, I am a complete webtard and new to Blender. I just can't believe how frustratingly difficult it is to change the simplest things in this application. Though it is obvious that Blender is very powerful and the hard work of many contributors, it is completely non-obvious to me.  Any help will be appreciated.

In Cycles In your World properties change this color to whatever you want but it'll will affect how your objects are lit, if you don't want that just copy this node set up. In Eevee it's the same set up.

It also works basically the same in Blender 3.4


text:
Add horizon line and grid lines to render image
Can anyone tell me how to make grid lines and a horizon line show when I render from Blender?  I am running version 2.82 and I can find no toggle for these.  I do NOT have any drop down that says "Overlays".  In the top right corner I have something that says "Options."  I am new to Blender.  I have been trying to change the background color and toggle grid lines and a horizon line on for about 5 days with no luck.  Any help would be appreciated.

Maybe show us  a capture  of your 3D view? (reduce the size of the window to give a reasonable size image, but not so far as to conceal any headers you do have)

The feature you are looking for does not exist, The laziest solution would be to just create a plane and sub-divde it a few times and apply a wireframe modifier.

I dont know how to enable them for normal render like you say but there are ways to get around it. Like you can recreate them as 3d models. (edges with wireframe modifier)
Or you can render viewport it self from top left just by clicking: view and then sellect you viewport render preference.


text:
Blender 2.8 Texture Paint not Painting
I am still a novice in Blender and was following BlenderMania's Blender tutorial here https://www.youtube.com/watch?v=ahx15oEvv5g.
When it came to the texture painting part I cannot seem to get it working.Nothing I do seems to get applied in any way. Could somebody help me figure this out?

Hi, the problem with paint is not working is usually because there is texture missing. Not sure tho. Post your file for better inspection.

Have you applied the texture image to the object? You can also try changing the Blend mode of the brush to Draw.\


text:
Rotate Wheel with camber applied
Hello everyone, I’m trying to create an animation of an F1 car driving down a road.
I’m using a pre-made 3D model, and the problem I’m having is that the wheel model already has a slight tilt (camber) applied to it.
So when I try to rotate it around the X axis it just wobbles around. Does anyone know how to fix this?

Does this answer your question?

Change your Transform Orientation (Top center - says "Global") to "Local" or "Normal" before rotating your object and/or adding keyframes to the rotation. The object's rotation axes will become localized, based on the objects rotation.


text:
Can't see through objects with X-ray mode
I am having an issue with X-ray mode. When I am in Material preview viewport, I turn Xray on and objects don't display as see-through like default settings.

But if I switch my workspace to UV editing, it displays the see-through view again.

I guess I adjusted some settings (or even addons that I set up, been switching to Blender for 3 weeks).
Still I am wondering how to get the X-ray react like the first case, so maybe in the future, there can be some use case for that (select backface elements while still keep the opacity solid)

That's an interesting question, I would like to know the answer as well. I know that X-Ray in Material Preview is disabled when you're in Object Mode, and even in Edit Mode you can only see the selected object, but not others behind or inside it. The only difference I can see here is in the first screenshot you're in Vertex Select mode and below in Face Select mode, but that shouldn't make a difference. I guess without seeing all your settings or inspecting your file I cannot find a reason for this. But is it reproducable or was it just once? Might have been some glitch or bug.

When I'm in Material Preview mode and I click the Toggle X-Ray button a message pops up in the bottom bar saying "X-Ray not available in current mode" Also, as a side note, for some reason in the drop-down menu, the setting for X-Ray seems backwards to me. 0.0 = fully transparent, and 1.0 = fully opaque... Just something to be aware of.

@Psyonic The message appears when in Material Preview and Object Mode, the button is greyed out as well. When you switch to Edit Mode you can turn on X-Ray, however it is limited to the selected object - i.e., you can see the hidden geometry of the object you're editing, but not the other objects inside or behind it (just as I said in my comment before). About the "backwards" problem: the slider is an alpha value, not the opacity percentage. It works like all alpha channels: 0 = transparent, 1 = opaque. If you are not sure what a slider does, you can use the mouseover help.

@GordonBrinkmann I understand, I was just remarking that the value it adjusts the alpha of is called "X-Ray", therefor a higher number "should" be "more" X-Ray... Just my humble opinion. Perhaps it should be called "Opacity" rather than "X-Ray"?

@Psyonic It is called "X-Ray" to indicate that the slider is relevant for X-Ray mode. Below is the "Shadow" slider for example, also an opacity slider. Actually most sliders that deal with transparency in some way are opacity sliders even if it is not stated there - since most of them are using alpha transparency, where 0 is transparent and 1 is opaque.  An exception are the Glass BSDF and the Transmission channel of the Principled BSDF, because transmission is something different than alpha transparency, it can be refractive, blurry etc. whereas alpha is just how much see-through it is.

I'm having the same problem. It's popped up in the past and it just popped up again. Toggling X-ray doesn't turn the object see through and there's no error message.

I had this problem as well (works in one viewport but not others). It's because they all have their own viewport settings. Try going into the Render modes dropdown (upper right corner of the workspace) > Under Options > X-Ray, try enabling it and lowering the value all the way down.

Just got this problem, turns out I was just in Rendered Mode, not in Solid Mode.


text:
Blender on a web server to generate pictures for a configurator
I am just at developing a house configurator. The first simple part is finished, creating a PDF showing all selections.
The next task is to create pictures. All the information about the configuration is in a query string.
For example:
https://configurator.gemini-next-generation.house/?ba_hb=hb_2_1400_480&ba_chest_n=chest&ba_chest_s=chest&ba_to=simple&ba_tub=simple&ba_wm=NABO_WM_1511_SLIM&br_bed=bed180x200&br_chest=chest&ha_war=wa240&ki_block=block230&ki_chest=chest&ki_ref=NABO_KGN_3471&lr_me=chest&lr_mw=chest&lr_we=swf120&lr_ww=swf120&to_hb=small&to_to=simple
Configurator for GEMINI next generation house
Configure your future home from empty house to fully equipped with furniture, heated garage, ice and snow free sidewalks and driveway.
There will be in future much more parameters about surfaces, also camera position and look at.
The server is best equipped for the task: 6 RTX 3080 graphic cards.
Blender and the most objects should be all time loaded for not loosing time.
Now is the big question about the interface:
The server receives a picture request and how can Python in Blender receive this request?
When Python receives the request, the script will place all the objects,
start rendering and return the picture to the client.
So how could be the communication between the web server software and the Python script in Blender?

Looks like an interesting and ambitious project. Once working, I imagine the results will be impressive. If it were me I would probably hire a Python developer who is versed in Blender, at least to get the foundation up and running. I'm curious, how much of the Python script have you written so far? (I mean for generating 3D mesh data, etc.)

Hi. This site is focused on questions about using Blender from an end user point of view. This question seems to be about coding and software development, which are out of scope here. It also seems to be too broad to be easily answered in a Q&A format, bordering on a full time job assignment, since this most likely will be a non trivial development job.


text:
How should I go about selecting the transparent faces of a plane via scripting?
Ok, so I've written an addon that allows me to import an image as a plane, and then subdivides that plane based on the dimensions of the image. Now though, I need the script to select all of the subdivided faces that are transparent (the alpha pixels of the imported texture) and delete them.
Select faces:

Delete faces:

Deleting the faces once they are selected is obviously very simple, but unfortunately it seems that due to the fact that all of the faces are using the same material identifying the transparent faces isn't quite as simple. Does anyone have any advice?
If it helps, this is what I am trying to accomplish (ignoring the bad UVs for now):

As you can see I need to get rid of the transparent faces before extruding. Thanks in advance!

If the faces have been assigned all the same material then can't you just select these faces with bpy.ops.object.material_slot_select()? Of course, first, you have to figure out which material slot has the transparent material in it and set the material index in the context to this slot (e.g. bpy.context.object.active_material_index = 1).

Hard to say without seeing the script, but wouldn't it be easier if you didn't spawn these cubes in the first place ? Seems like you want something like this https://blender.stackexchange.com/q/205539/86891


text:
Change left and right handles of a keyframe using blender python

I have this code that selects a particular fcurve (Z location in this case) and moves a single keyframe.
However, the keyframe handles don't get updated and are all messed up.
The python tooltip is incomplete and doesn't work as well.

import bpy

# Configuration
action_name = 'CubeAction'
data_path = 'location'
index = 2                # Z axis

# Find the appropriate action
action = bpy.data.actions.get(action_name)
if action:
    # From this action, retrieve the appropriate F-Curve
    fcurve = action.fcurves.find(data_path = data_path, index = index)
    if fcurve:

        fcurve.keyframe_points[1].co.x += 2

        print("changed")
    else:
        print("no fcurve")
else:
    print("no action")

print("end")

import bpy

# Configuration
action_name = 'CubeAction'
data_path = 'location'
index = 2                # Z axis

# Find the appropriate action
action = bpy.data.actions.get(action_name)
if action:
    # From this action, retrieve the appropriate F-Curve
    fcurve = action.fcurves.find(data_path = data_path, index = index)
    if fcurve:

        kps = fcurve.keyframe_points[1]
        kps.co.x += 2
        kps.handle_left[0] += 2
        kps.handle_right[0] += 2

        print("changed")
    else:
        print("no fcurve")
else:
    print("no action")

print("end")

Thank you, this works perfectly.

When the tooltip is incomplete, turn to the manual, in this case the entry for Keyframe  where you will find entries for handle_left and handle_right.
All you need to do is add
fcurve.keyframe_points[1].handle_left[0] += 2
fcurve.keyframe_points[1].handle_right[0] += 2

to your code.

Thank you for the manual suggestion.


text:
Select individual keyframe in an fcurve using blender python
I have this code that selects a particular fcurve (Z Location in this case) and moves keyframes 2 frames forward.
But it selects the entire fcurve with all keyframes in that fcurve.
How can I select a single keyframe in a fcurve?
Suppose I want to only move keyframe on frame 48 to frame 62. How can I do that?
import bpy

# Configuration
action_name = 'CubeAction'
data_path = 'location'
index = 2                   # Z axis

# Find the appropriate action
action = bpy.data.actions.get(action_name)
if action:
    # From this action, retrieve the appropriate F-Curve
    fcurve = action.fcurves.find(data_path = data_path, index = index)
    if fcurve:
        # Iterate over all keyframes
        for kfp in fcurve.keyframe_points:
            # Print current keyframe info
            print('Frame = {:04}; Value = {}'.format(kfp.co[0], kfp.co[1]))
            # Change keyframe data
            # Push back in time by 2 frames
            kfp.co[0] += 2

keyframe_points has [] semantics, so you simply look them up:
for index in range(48, 63):
    fcurve.keyframe_points[index] += 2

Note that range has "less than" semantics so if you want to include frame 62, you have to use 63.

Thanks Marty. It works.

@jugaadanimation you're welcome.


text:
How do I activate an option in a dropdown menu without a button in Blender Python
I want to select an option in a dropdown menu and have it activated instantly. The code I have makes me push a button to confirm the option.
I don't want the Add object button, I want to add a sphere as soon as I select the Add sphere option.
This is what I have right now

This is my code:
import bpy

class MyProperties(bpy.types.PropertyGroup):

    my_enum : bpy.props.EnumProperty(
        name= "Enumerator / Dropdown",
        description= "sample text",
        items= [('OP1', "Add Cube", ""),
                ('OP2', "Add Sphere", ""),
                ('OP3', "Add Suzanne", "")
        ]
    )

class ADDONNAME_PT_main_panel(bpy.types.Panel):
    bl_label = "Main Panel"
    bl_idname = "ADDONNAME_PT_main_panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "New Tab"

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        mytool = scene.my_tool

        layout.prop(mytool, "my_enum")

        layout.operator("addonname.myop_operator")

class ADDONNAME_OT_my_op(bpy.types.Operator):
    bl_label = "Add Object"
    bl_idname = "addonname.myop_operator"

    def execute(self, context):
        scene = context.scene
        mytool = scene.my_tool

        if mytool.my_enum == 'OP1':
            bpy.ops.mesh.primitive_cube_add()

        if mytool.my_enum == 'OP2':
            bpy.ops.mesh.primitive_uv_sphere_add()

        if mytool.my_enum == 'OP3':
            bpy.ops.mesh.primitive_monkey_add()

        return {'FINISHED'}

classes = [MyProperties, ADDONNAME_PT_main_panel, ADDONNAME_OT_my_op]

def register():
    for cls in classes:
        bpy.utils.register_class(cls)

        bpy.types.Scene.my_tool = bpy.props.PointerProperty(type= MyProperties)

def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
        del bpy.types.Scene.my_tool

if __name__ == "__main__":
    register()

You can use the bpy.props.EnumProperty's update method to add custom behaviour when its state changes.
Add this line to the enum annotation :
update=lambda self, context: bpy.ops.addonname.myop_operator()
You should note however that using an operator  in an update method is not supposed to be supported, so it may or may not adversely affect your file afterwards or cause random crashes. I can't find the source but I read it from a developer note not long ago.
The "Blender" way to do it is to select the item, then click on the button, like you're doing right now.

It works. Thank you.


text:
Particle effect on Instances
I am trying to make a particle effect on the flowers (instantiated using geometry nodes) on the skull mesh:

I tried doing it in geometry nodes, but the random points distributed on the flowers do not show up in the simulation zone at all.
Here are the points on the flowers:

But not in simulation zone:

My question is if this is the right way to add partciles, as adding the particles to the original flowers object doesn't work anyway?
Geometry nodes:

I suspect it's a bug. What Blender version are you using? Here's my view in B4.1.1 https://i.imgur.com/DKMMwtB.png Sorry I see now you also use 4.1.1...

@MarkusvonBroady The particles appear if they are instantiated and then connected to the viewer node. If you restart from the first frame, they disappear and don't appear throughout the animation.

You set the scale to 0 at the beginning so the faces have no area so no points are spawned on them.


text:
Multi GPU performance in Cycles
I have a question about multi GPU rendering with cycles.
Recently I installed a RXT 3080 in my system alongside a RTX 2070. Things work fine on the system with them. One of the reasons I wanted to use both was to have faster render times in blender. Doing so I noticed a few things and I was wondering if anyone could shed light on it. The following is the render times for the scene shown below at a resolution of 2000px X 1000px:

RTX 3080 Only- 00:39
RTX 2070 Only - 01:02
Both GPUs - 00:40
CPU Only(AMD Ryzen 9 3900X) - 01:31
GPUs + CPU - 01:58
The idea I had was that if I use both GPU's it should be fastest, but in this case there is virtually no difference compared to just using the RTX 3080 by itself. And what surprises me also is that if I combine things with the CPU it makes things slower.
Thanks for any help in shedding a light on this for me.

Just a guess, but since two GPUs cannot work on one tile at the same time, and once the slower GPU’s working on the tile, the faster GPU can’t take over… see?

In Preferences > System > Render devices what option did you select ?


text:
Isolate a person from a video, turn to silhouette and back
apologies for the chaotic description, I've been at this for a while and brain no worky properly.
I have a video added via "Images as planes". I would like to animate the girl in the image from person to silhouette / voronoi texture and back.
I managed to isolate the person from the black background and add a texture, but I cannot seem to properly switch between displaying the person and displaying the textured silhouette. What am I missing?
Thanks!

Hi :). You need a 1 or 0 value to fully switch the Mix shader node. The Distance node outputs some value in between. You can use Math > Greater Than node to get 1/0 values.

Ďakujem! :) This helped, I did try using the Greather Than node but either in the wrong place or I messed up the values, sticking it after Distance and set properly to 0 did the trick.

You need a 1 or 0 value to fully switch inputs of the Mix shader node.
The Math > Distance node outputs some value in between.
You can use Math > Greater Than node to get either 1 or 0 values.


text:
How to make a bone location change another bone rotation?

Hi , can someone show me the correct way  to set up  the bones so when lower bone moves forward ,the upper bone rotate backward? And when the lower bone moves backward the upper bone rotate forward? ( Both bone are on a single armature )
No one could foind the solution so far on reddit and other blender forums.

Give a Transformation constraint to the bone that is supposed to rotate, enable Extrapolation, click on Map From > Location (with a Min and Max values on the axis you want), and Map To > Rotation. For the axis rotation of the constrained object, determine what is the axis source of its rotation (for me its rotation on Y will be determined by the other bone X location, so I need to set the Y Source Axis to X), and choose the latitude in degrees. As you have enabled extrapolation it will extrapolate the movement according to the ratio you've set:

Also you can constrain the location and rotation of your controller object.

It seem i have tons tons of testing to do , because no matter what settings i use it barely does anything( it makes my bone rotate ,but  just a little , and strangely enough , most of axis i use don't do anything at all )

note that I haven't used the same axis as you, maybe it's your problem here?

The other axis do not work , i am setting them up the way i understand from the example to  , but upper bone only react to one axis no matter what values i use in other axis.

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

( It's currently mapped to X axe   , when i delete X axe and try setting up other axe , it just wont do anything ) https://pasteall.org/blend/1520b642007b4491996e01ff08e50b5e

The X rotation of your vertical bone will depend on the Y location of your horizontal bone, so you need to choose X Source Axis > Y, and -20/+20°, then in Map From choose something like Y > -1/+1

the bone still isn't doing anything no matter what setting i use in all axis/location/rotation .

it works here, here is your file modified: https://pasteall.org/blend/e84bee6335384205be3c6a25713f9cbc

How come you have greyed out areas and i don't (EX: X mIn / Max) ? It does not seem like you locked any axis

it's deactivated as X lotation is not selected in any of the rotation sources in the Map To section, but if you select Y Source > X for example it will be displayed

Since it doesn't worked even with copying the sames values , i just found a tutorial on how to set up Bone Drivers , the stuff to write in drivers is annoying but it's working well so far!

yes Drivers is the other solution, you should easily find why the constraint doesn't work though, you can share your file again if you want


text:
A problem with texture changes when joining meshes
I have a "wing" model that is made to look like it is made from palm fronds rather than feathers, so the color texture is designed for that - each leaf on a frond has a shaded color (using a color ramp) to give it a leaf-like look. The outer parts to which they are joined are a simple green vine color. When I join them, I lose the subtle shading on the leaf meshes. I have given them all the same UV name, but the shading is still lost when I join them. I'm not sure why, and it's frustrating.
Here it is joined:

And the texture node setup for the shaded color:

Hello could you please share your file before joining? don't forget to pack the images https://blend-exchange.com/

Maybe the two wings have been shaded in different ways? I know that if you join a Smooth Shaded object with a differently shaded object it can become messed up, but except for that I really don't know.


text:
Creating a 3d scene from a footage
I am new with Blender. I want to know which skills have to be learned to put a footage of someone talking in front of a camera (with some movement of the camera) in a 3d scene from Blender (any kind of room).
Camera tracking? 3D Integration? Etc.
I checked different tutorial but I didn't grasp exactly what I have learn.
Thank you!

This will get you started with the greenscreening effect you will need to isolate the person talking from the scene - https://www.youtube.com/watch?v=Sp4aWuBeNqQ

That is definitely a beginning. Then, I will have to know how to put that person in a 3D scene. Any suggestion?

Try here - it's long, and for an older version of blender, but it covers pretty much everything, and you should be able to translate anything that's different rather easily: https://www.youtube.com/watch?v=34OGr4Nwj4k

Seems to be exactly what I needed. Thanks!

Look for a series of videos called "track, match, blend".


text:
How to switch between two fonts using a decoding animation while the letters rain in from the sky
So far ive found a tutorial for the decoding animation and got that setup.

I want the random letters to be font-A and have them decode into into font-B while falling into place from the sky, then decode backwards into another word. The falling from the sky part is kinda optional, i just need to know how to use 1 font for the random characters and another english font for the decoded word

You can try per character animation using Decompose Text node. I think this node is much more flexible to use.
In this example i used falloff to offset size between two text instead of slicing.

For multiple text we can create text list. To appear each element once in a circular fashion we can use Shift List node. The setup below makes text element appea every 40 frame one by one.

Full node tree with a above setup added:

For back and forth effect we can create switches for matrices. Each switch will have two inputs reversed and non-reversed matrices list and output is altered using modulo function.

Okay I think i understand what you're doing here. So basically its 2 text objects and one is being revealed while the other is being hidden simultaneously each with their own fonts. Very clever, exactly what i was looking for thank you! Im curious if you would know how to make it pause once a word is completed, then animate in reverse to reveal a new word? Im hoping to make this loop forwards and backwords for however many text inputs I want to add

@DevinForrestKennedy Hi, I have updated my answer.

@Hari Sreedhar, do you have a channel in Youtube?

@RitaGeraghtystandsbyMonica Yes i do. https://www.youtube.com/bluefoxcreations

@Hari Sreedhar, oh my goodness, I know you in Twitter. I just subscribed. Great works. Btw, I have some of your works in my scrapbooks. Study purpose only. Sorry for confession .

@RitaGeraghtystandsbyMonica No worries :)

I did not succeed to set the font of a text object from Animation Nodes.
Though, you can use two texts objects, each with its font and set the result string to it (or an empty string for the one you don't want to display).

Here the nodes compare the decoded length to the text length to choose the text object that will receive the text or "".

This might work if it could be done so that each letters font gets changed as it decodes, instead of the the whole word changing font at the end. I found that there as an option for fonts in the text object output node if you enable it in the "N" Panel, although im not sure what to do with it yet.

@RitaGeraghtystandsbyMonica, or you are kidding or you underestimate what Omar can do.

@Lemon, I just deleted my comment before you answered. I have always thought of Omar as a wizard at maths & node compositing. I wish I could steal his brain for cloning.

@RitaGeraghtystandsbyMonica, you see from this bad answer (did not understand what the OP exactly wanted) that I'm certainly not him! Though prefer these ones for instance: https://blender.stackexchange.com/a/144493/19156 or https://blender.stackexchange.com/a/76788/19156 which are much more fun ^^

@Lemon, do you have channel in Youtube? You have bags of tricks (I have viewed your other posts.)

@RitaGeraghtystandsbyMonica, yes... but nothing of interest... little things (few things) Thanks for your comments though. Do you think I should? (my English speaking is so bad...)

Though you can might not have good English speech, viewers can observe what you do in videos and understand what they see. Instead of speaking, you can always use overlay captions and add music in background.

@RitaGeraghtystandsbyMonica You're nice to tell me all that... so... but... could you point me out some answers that would be part of this youtube channel?

So after messing around with it for a bit I found a solution. I ended up making my own TrueType Font using fontLab that had the letters A-Z of one font for capitol and the other font for lowercase letters. I then set the random letters to only be lowercase and made sure the text input only had capital letters. To get the different words, i just duplicated the string of nodes for each new word and changed the text input node for each string. I then keyframed the words disappearing as the next word appears. the results...

The issue im having now is Blender keeps crashing while trying to render it (I think i was careless duplicating the strings of nodes like that). I ended up rendering as an image sequence and then used an online tool to convert it to a gif.


text:
Add bezier curve to vertices along a plane?
Newbie to Blender here.
I'm wondering how to get some knife-cut edges to follow a more precise path along the black doorway section of an "image-to-plane" piece I have here.
Is it possible to add a bezier curve to an edge in edit mode? If not, what workarounds would you recommend I try to trace around this door?
Thank you!

https://blender.stackexchange.com/questions/50538/how-to-cut-an-object-along-a-curve/50560#50560

You can apply a bezier curve to a plane using the knife project tool.
Heres my process:
As a separate object, make the curve that you want (mine is pretty bad for a door):

Next, covert the curve to a mesh using the "convert to" tool:

Now, select first the curve mesh, and then the plane, go into edit mode, and do knife project:

The knife project does it from your view, so you want to use align view to make sure you are looking at the plane head-on.
Now, you will have the curve cut into your plane:

This worked like a charm! Thank you for your help!!


text:
Alpha Layer + Transparency Shader Glitch in Eevee
I am following the CG Geek tutorial in which he details modeling a tree in one minute. (https://youtu.be/y7PdiGXbrD0)
I'm running into problems when it comes to shading. When I add a transparent shader to my tree-branch texture, the alpha layer becomes opaque. Here is my node set-up and the result.

I've tried adjusting the blending mode settings in the material window. Going from "Alpha Blend" to "Alpha Clip" does result in the opaque alpha layer disappearing, but it introduces some strange artifacting involving white dots (they appear to be the outline of the alpha-layered image textures).

This is all in EEVEE. When I switch to Cycles, these issues go away, but my GPU pays the price with all the branches being rendered. Any suggestions for trouble-shooting are greatly appreciated. Thank you!

Your nodes are wrong (you're using Transparent Shader instead of Translucent). Here, from the tutorial you are referring to:

Great catch--I didn't realize I made that mistake. Unfortunately, the problem persists. Hundreds of small white dots when on alpha clip, and the full opaque layer of the alpha channel on alpha blend.

Did you check your source texture alpha in photoshop or Gimp?

Yessir! The alpha layer is as it should be, a 0% opacity value.

well, may be test your image texture in Blender with a fresh default scene and the most basic alpha material: https://i.sstatic.net/hyhNI.jpg


text:
Can't use pen to navigate in viewport
When I middle click, as soon as the pen is in hover distance, the blender viewport starts to rotate, and if I were to try to rotate again, the rotation will snap depending on where on the screen I put my pen.
I want it to behave like when I touch the pen to the surface, it starts to rotate as I move the mouse from that position and when I take the pen off, the rotation stops. But basically anytime I have middle mouse down even without touching the screen, it rotates wildly. The same is true if Im trying to zoom or pan.
Also, the emulate middle mouse button doesn't do anything.
How do I fix this? Thanks!

the emulate middle-mouse button does not directly navigate for you when you use the pen, rather it adds a key or keys that in combination with the pen touching and moving navigate like with the mouse.
In that regard, once activated, the Alt button held down will be used to rotate with the pen like you would with the MMB.
If you use Alt+Shift, you can pan the screen like you would with Shift+MMB.
And using Alt+Ctrl gives your pen the zoom based on moving up or down movement like you would normally do with Ctrl+MMB.
As you can see, the emulation essentially replaces the MMB with the Alt key. So some other functions like loop select that would normally use Alt+LMB, will have other keys like a double LMB(click).
Happy Blending.

awesome, that works! thanks!


text:
Corrective shapekey bone rotation
When i set up my shapekey to react to a bone rotation , it will only react to a positive value.
How can i make it react to a bone negative rotation instead? I only get " x rotation " in my driver's "TYPE" option. I do not have a " -X rotation " or anything like that , so my bone won't trigger my shapekey as i wish.

You can use a scripted expression driver, which gives you access to reasonable amounts of Python math.  For what you're asking about, you might consider an expression like abs(var), which will give you the absolute value of your rotation.

There may be another way but you can create a Modifier > Generator for this driver and give a x^1 value of -1:


text:
Preserve volume Vertex group
Is it possible to use "Preverse volume" from the Armature modifier but only for some body parts? Because it's really usefull for some parts of the mesh but not for most of the models.

Create 2 new vertex groups, one containing only vertices you want to preserve volume, the other all others vertices.
Add a new armature modifier targeting your rig, and use the vertex group limit function to have the desired result.

Another method using one new vertex group only: