text:
How to apply a real time constraint on a moving gear
Here are some examples of what I have already accomplished
https://i.sstatic.net/ryuK2.jpg
https://i.sstatic.net/Ful4K.jpg
https://i.sstatic.net/PuPCH.jpg
The next gif is where I run into a problem. Right after the ball hits the 'slider.' I can move the bone, but I can't move the entire selection, as seen in the previous gifs.
https://i.sstatic.net/rO19V.jpg
Now that you've seen the basic idea, and the main problem. I will now show you a  less complicated version of my end result.
https://i.sstatic.net/TPifE.jpg
I want the gear inside the lever to spin freely on the grounded gear in real time. I wanted this so in the long run, I don't have to animate the gear placement when at a certain point. Speeding up the process of my work flow.
My example file

My Lever Project file.

for the spinning effect, using either a Transformation Constraint or a driver would work just the same, and have the bonus of not forcing your to use physics at all. Would this be a viable solution for you? Or are there other reasons that force you going for simulation?

I thought I made this clear when I said "Real Time" animation. I don't want anything to spin or change without me having to handle the object. I want everything to move in result of other objects. "Say an animated character grabbed the handle and pulled it down. His hand moves the lever, and the teeth move the gear while the lever moves.

Both Constraints and Drivers would do exactly that. You would only need to pull The handle

I don't think you quite understand what I am trying to do. Because what you are imposing is basically cheating.

There's an old animation adage:  "Don't make it if you can fake it."  Do not try to do things a complicated way when it is easier to do something simpler that still works.

If this is for animation (even in a game) a driver would be least elaborate and most suitable. You would only have the lever control, it would be easy for an animator to handle and would work without playing back / calculating ALL the frames; a big drawback of the simulation.

Leander, I've tried that before. The driver stays in on place, it doesn't go around the gear. It just bugs out in one place eventually popping of the constraint even with all the necessary precautions have been placed.

Not sure if you're interested in this solution, as it does not deal with physics simulation but using traditional constraints instead. As mentioned in a few comments already, this is recommended for various reasons, like easier handling and setup, better stability, etc. For what you're really trying to achieve, this will work.
Here is the file rigged based on your provided Blend:

I'm using an Armature, parenting a few bones in there in a hierachy like this:

Main Bone and Lever Bone are purely for better flexibility later on when animating. Using the Main Bone you can relocate the whole rig, the gear bone allows additional offset. Both bones are optional, but recommended. The lever bone is a child of the Gear Bone, so it follows the movement of that, and the sprocket bone a child of the lever bone.
The rig itself looks like this:

I turned on Axis Display for each bone, so you can see the local bone axis and better understand why I set certain values later on in the Constraint. Speaking of the Constraint, I used a Transformation constraint to achieve the desired effect:

The logic is: If you rotate the lever bone by 8 degrees along the Z axis, the sprocket bone has to spin 36 degrees along the Y axis, but in the opposite direction, hence the -36 degrees. Where I got these values from? Simply count the number of teeth of gear and sprocket. The Extrapolate option makes sure that this math relationship is kept even if you exceed the values.
Now, if you rotate the red lever bone, the sprocket spins around the gear.

Sorry it took so long to respond. I thought this one was a lost cause. Thinking it was so complicated. Right now it's too late for me. I'll check this out tomorrow. Thank you for your time, and have a nice day.

This isn't quite the answer I was looking for, but it's another option I can live with until I find another option. When you said "transformation constraint" I thought you were talking about something else. Sorry I so brash in the comments. I've wasted about a month of my time trying to figure this out. And I was pretty much at my limits end.

One Question. Why does the sprockets transformation locks, all locked. How exactly does the gear rotate and transform when it's transformation locks says it shouldn't do that.

Alright Two Questions. How the heck did you get the Sprocket Green without a bone group color, or a texture.

@JaredWolf Both questions are targeting the bones, not the objects I suppose. Regarding the transformations, Constraints are allowed to manipulate transform channels regardless of the locking state. If you want to further limit constraints in regards to channels, there is the Limit Rotation, Limit Location etc. constraints to achieve this. The locks in the transform panel have the purpose to stop the user from accidentally moving the bones out of place. Since the sprocket is completely controlled by the lever, I decided to cut off any user interaction, and thus locked the channels.

@JaredWolf regarding the green color, that's a theme / Blender convention. If a bone has a constraint, it is colored in green (or yellow in case of the IK constraint), so the rigger knows about the existance of constraints on a bone. For the lever bone I used Bone Groups to colorize it, but this you figured yourself already anyways.


text:
Blender 3.0 GPU API and BGR colors
I want to use the new GPU API for Blender 3.0 to copy the content of a texture into a gpu.types.Buffer. Although this works fine with the following small code, I wonder how I can tell the API to copy pixel data in BGR(A) instead of RGB(A) mode. (i.e., the buffer should contain the data in reversed byte order).
buffer = gpu.types.Buffer('UBYTE')
framebuffer = gpu.state.active_framebuffer_get()
framebuffer.read_color(0, 0, 4096, 4096, 3, 0, 'UBYTE', data=buffer)

With the BGL API, I was able to pass the bgl.GL_BGR(A) parameter to the corresponding functions (e.g., glGetTexImage), but with the new API I don't know how to achieve the same thing. Is there a way?

source: Stack Exchange

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

sort: votes


text:
How to center rendered object in Blender script
I currently have a small Blender script that renders depth map images of OBJ files at different orthographic views. However, one thing I haven't been able to figure out so far is how to center the object in my rendered image. Right now, the object appears slightly shifted in one direction or another depending on the view, as you can see below (might be difficult with the Stack Overflow white background, but if you save it as a separate image you'll be able to see it's shifted to the right):

My question is, how can I modify my code such that I can make sure each of the rendered images are centered horizontally and vertically in output images?
This is my current code: https://pastebin.com/0Kd8JfqY
import bpy
import mathutils
import math
import os
import glob
import numpy as np

# Model directory
model_dir = '/home/yuerno/Downloads/test/'

# Specify OBJ files
model_files = glob.glob(os.path.join(model_dir, "*.obj"))

# Rendered image directory
rendered_dir = '/home/yuerno/Downloads/rendered_images/'

# Set up camera
cam_data = bpy.data.cameras.new('camera')
cam = bpy.data.objects.new('camera', cam_data)
cam_data.type = "ORTHO"
bpy.context.collection.objects.link(cam)
bpy.context.scene.camera = cam

cam.location = mathutils.Vector((0, 5, 0))
cam.rotation_euler = mathutils.Euler((math.radians(90), math.radians(0), math.radians(180)))

# Set up depth map rendering configuration
bpy.context.scene.use_nodes = True
tree = bpy.context.scene.node_tree
links = tree.links

for n in tree.nodes:
    tree.nodes.remove(n)

render_layer_node = tree.nodes.new('CompositorNodeRLayers')
map_value_node = tree.nodes.new(type="CompositorNodeMapValue")
file_output_node = tree.nodes.new('CompositorNodeOutputFile')

g_depth_clip_start = 0.5
g_depth_clip_end = 4
g_depth_color_mode = 'BW'
g_depth_color_depth = '8'
g_depth_file_format = 'PNG'

map_value_node.offset[0] = -g_depth_clip_start
map_value_node.size[0] = 1 / (g_depth_clip_end - g_depth_clip_start)
map_value_node.use_min = True
map_value_node.use_max = True
map_value_node.min[0] = 0.0
map_value_node.max[0] = 1.0

file_output_node.format.color_mode = g_depth_color_mode
file_output_node.format.color_depth = g_depth_color_depth
file_output_node.format.file_format = g_depth_file_format
file_output_node.base_path = rendered_dir

links.new(render_layer_node.outputs[2], map_value_node.inputs[0])
links.new(map_value_node.outputs[0], file_output_node.inputs[0])

# Set up image output resolution
bpy.data.scenes["Scene"].render.resolution_x = 512
bpy.data.scenes["Scene"].render.resolution_y = 512

# Process model files
for f in model_files:
    print(f)

    bpy.ops.import_scene.obj(filepath=f)
    print("Imported")

    imported = bpy.context.selected_objects[0]
    print("Selected")

    maxDimension = 7.5
    scaleFactor = maxDimension / max(imported.dimensions)
    imported.scale = (scaleFactor, scaleFactor, scaleFactor)
    print("Rescaled")

    imported.rotation_mode = 'XYZ'
    print("Set Rotmode")

    num_views = 8
    views = np.array([0, np.pi/4.0, np.pi/2.0, 3*np.pi/4.0, np.pi, 5*np.pi/4.0, 3*np.pi/2.0, 7*np.pi/4.0])
    phi_views = np.array([0, 0, 0, 0, 0, 0, 0, 0])
    print("Views created")

    sel_views = np.random.randint(0, num_views, num_views)
    sel_views = range(num_views)
    print("Views selected")
    print()

    # Render each view
    for i in range(num_views):
        imported.rotation_euler[2] = views[sel_views[i]]
        print ("Set view")
#        imported.rotation_euler[1] = np.pi/2.0 - phi_views[sel_views[i]]
#        print ("Set phi view")
        filename = f.split("/")[-1]
        print (filename)

        file_output_node = bpy.context.scene.node_tree.nodes[2]
        file_output_node.file_slots[0].path = filename+".v"+str(i)+".png"

        bpy.ops.render.render(write_still=True)

    bpy.ops.object.delete()

Thanks in advance for any assistance!

It is possibly simpler to orbit camera around object. https://blender.stackexchange.com/questions/130404/script-to-render-one-object-from-different-angles/130456#130456

Hey, thanks for the reply! This actually seems like a better option than what I'm doing now, would you have any tips on retrofitting your sample code into my current code? I'm very new to Blender scripting, so figuring it out as it goes.

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


text:
Python, How to get pose bone to rotate with another pose bone from a different armature? Finding Rotational difference
I have two Armatures with different bone structure.
The goal is to get the rotational difference of one bone from a one Armature and translate it to the bone of the other Armature.

Code **For a General approach:
import bpy

context = bpy.context
scene = context.scene

Rig_1 = bpy.context.scene.objects['__Rig']
Rig_2 = bpy.context.scene.objects['__Rig2']

Rig_1_RightArm = Rig_1.pose.bones["r_uparm"]
Rig_2_RightArm = Rig_2.pose.bones["r_uparm"]

scene.frame_set(1)
WorldSpace_RightArm_1-1 = Rig1.matrix_world @ Rig_1_RightArm.matrix

bpy.context.view_layer.update()

scene.frame_set(2)
WorldSpace_RightArm_1-2 = Rig1.matrix_world @ Rig_1_RightArm.matrix
WorldSpace_RightArm_2-2 = Rig2.matrix_world @ Rig_2_RightArm.matrix

bpy.context.view_layer.update()

I've tried multiple methods and would like to know what to do beyond here, like using rotation_difference to between WorldSpace_RightArm_1-1 from frame 1 and WorldSpace_RightArm_1-2 from frame 2.

The pose bone loc/rot/scale is already relative to the bone's rest position. Have you tried just copying the pose.bones[x].location/rotation/scale over? Or if you have an action, just put the same action on both armas.

Using the Action editor doesn't work in this case, or atleast I could not get it to work, The bones are in different rotations editing wise. I tried a direct copy it didn't work but what would the a copy code look like to you.

Object.convert_space
As mentioned in previous answer there is a convenience method available on the object that converts space.
Rather than totally doing my head in by trying to make a rotation difference am going to

Convert source and target pose bone matrices to world space
Decompose them, ie get their world space location, rotation and scale parts.
Recompose the target world matrix to have rotation part of source
Convert this to pose space of target bone and set as matrix.

Test method.
import bpy
from mathutils import Matrix

def snap_rotation(source, target):
    Ms = source.id_data.convert_space(
        pose_bone=source,
        matrix=source.matrix,
        from_space='POSE',
        )
    Mt = target.id_data.convert_space(
        pose_bone=target,
        matrix=target.matrix,
        from_space='POSE',
        )

    _, q, _ = Ms.decompose()
    t, _, s = Mt.decompose()
    M = (
        Matrix.Translation(t) @
        q.to_matrix().to_4x4() @
        Matrix.Diagonal(s.to_4d())
        )
    target.matrix = target.id_data.convert_space(
        pose_bone=target,
        matrix=M,
        to_space='POSE',
        )

if __name__ == "__main__":
    context = bpy.context
    scene = context.scene
    snap_rotation(
        scene.objects["Armature"].pose.bones["Bone"],
        scene.objects["Armature.001"].pose.bones["Bone"]
    )

Close but not exactly because the bone of Armature 1 is not meant be the same rotation as bone of Armature 2, But you are suppose to get the difference in rotation in the 1st frame and apply it to the 2nd

Ok, see what I am supposed to do now  Much the same, get the world space rot diff of A,, use on B then convert back. Might get around to fixing later.  Possibly related https://blender.stackexchange.com/questions/72120/create-pose-from-existing-armature as it appears you are converting a T pose to an A pose.

If you have the time can you take a look at this https://blender.stackexchange.com/questions/216082/python-how-to-convert-rotations-of-t-pose-pose-bones-in-armature-1-to-pose-bone .......... Its the same as comment above.This question is slightly different then the one in the link.


text:
Python Script - Operator context is incorrect
The script I'm writing contains a bpy.app.timer which is supposed to detect if the user has manually exited Grease Pencil paint mode, then convert the grease pencil object to a curve. No matter what I try I just can't get past the 'context is incorrect' error.
Everything up to the convert operator works; for a selected pose bone a GP-Emtpy is added and you enter Paint Mode, if you draw something and then switch to Object Mode the timer finds it and goes on to execute the script below it - until it hits the convert operator. I tried invoking the area but then I get 'missing window in context' as an error. How can I set a context?
bl_info = {
"name": "Swoosh Animation",
"author": "Anton Lux",
"version": (1, 0),
"blender": (2, 83, 3),
"location": "View3D > Pose",
"description": "Animates Bones using GP Strokes",
"warning": "",
"doc_url": "",
"category": "Object",
}

import time
import bpy
import os
from pathlib import Path
from bpy.types import Operator, PropertyGroup
from bpy.props import IntProperty, BoolProperty, FloatVectorProperty
from bpy.types import (
    AddonPreferences,
    Operator,
    Panel,
    PropertyGroup,
)

class Object_OT_applyAnim(bpy.types.Operator):
    bl_idname = "pose.apply_anim"
    bl_label = "Apply GP Animation"
    bl_description = "Apply the Animation to selected Bone"
    bl_space_type = "View_3D"
    bl_region_type = "UI"
    bl_options = {'REGISTER', 'UNDO'}

    def execute(self, context):

        #defining timer to call later
        def every_2_seconds():
            if bpy.context.mode == 'OBJECT':
                bpy.app.timers.unregister(every_2_seconds)
                #testing if timer found the new mode
                print("Cookies")

                #Converting GP to Curve
                bpy.ops.gpencil.convert('INVOKE_AREA', type='PATH', use_link_strokes=True, frame_range=500, use_realtime=True, use_timing_data=True)
                #Below here doesn't work either cause the context is noneType
                #Storing constraint target
                curve = bpy.context.selected_objects[1]

                #Setting up follow path constraint
                bpy.context.view_layer.objects.active = Armature
                bpy.ops.object.posemode_toggle()
                Bone.bone.select = True
                bpy.ops.transform.translate(value=(relative_zero), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL')

                Bone.constraints["Follow Path"].target = curve

                #Baking constraint into keyframes
                bpy.ops.nla.bake(frame_start=1, frame_end=70, visual_keying=True, clear_constraints=True, bake_types={'POSE'})
                #Decimating keyframes
                bpy.ops.action.clean(threshold=0.001, channels=False)
            return 2.0

         #Step 1 creating grease pencil stroke

        Bone = bpy.context.active_pose_bone
        boneName = bpy.context.active_pose_bone.name
        Armature = bpy.context.active_object
        Bone_tail = bpy.context.active_pose_bone.tail
        relative_zero =  (Armature.location + Bone_tail) * (-1)
        window = bpy.context.window_manager.windows[0]

        #Leaving Pose Mode
        bpy.ops.object.posemode_toggle()
        #Adding GP Empty
        bpy.ops.object.gpencil_add(align='WORLD', location= Bone.location, type='EMPTY')
        bpy.context.object.name = boneName

        #Entering Paint Mode
        bpy.ops.gpencil.paintmode_toggle()

        #Step 2 activating the timer defined above
        bpy.app.timers.register(every_2_seconds)

        return {'FINISHED'}

def menu_func2 (self,context):
    self.layout.operator(Object_OT_applyAnim.bl_idname)

def register():
    bpy.utils.register_class(Object_OT_applyAnim)
    bpy.types.VIEW3D_MT_pose.append(menu_func2)

def unregister():
    bpy.utils.unregister_class(Object_OT_applyAnim)
    bpy.types.VIEW3D_MT_pose.remove(menu_func2)

if __name__ == "__main__":
    register()

Consider  a modal timer operator.  https://blender.stackexchange.com/questions/135970/context-is-incorrect-when-calling-from-a-timer    https://blender.stackexchange.com/questions/146163/python-timer-is-not-working-for-me-in-blender  When context is passed as an argument ie def foo(self, context) use it rather than bpy.context in method code

Thx a lot. That did the trick. You're a legend.


text:
Scripting: Displacement modifier visual update required
started using blender recently (>2.8), and in particular I'm trying to do a lot of work via scripting and the use of modifiers.
In particular, I'm generating a circle via modifiers, with a changeable radius via the displacement modifier. However, when I create this via scripting, the displacement modifier doesn't update the visual until after I click on the mesh object.
How can I force this visual update programmatically?
(1) Before Script | (2) After Script | (3) After Click On Mesh Object

I don't want to apply the modifiers just yet either.
The Code:
import bpy
import bmesh
from math import pi

# 1: Generate Mesh Object
mesh = bpy.data.meshes.new("mesh")
obj = bpy.data.objects.new("object", mesh)
scene = bpy.context.scene
bpy.context.collection.objects.link(obj)

# 2: Generate Mesh - Verticies, Edges, and Faces
verts = [(0,0,0),(1,0,0)] #add a line
bm = bmesh.new()
bm_verts = []
for v in verts:
    bm_verts.append(bm.verts.new(v))
edges = [
    [bm_verts[i], bm_verts[i+1]] for i in range(len(bm_verts)-1)
]
bm_edges = []
for e in edges:
    bm_edges.append(bm.edges.new(e))
bm.to_mesh(mesh)
bm.free()

# 3: Create modifiers for object.
# length of the line object
radius_mod = obj.modifiers.new(name='length', type='DISPLACE')
radius_mod.show_in_editmode = True
radius_mod.show_on_cage = True
radius_mod.strength = -1
radius_mod.mid_level= 0.2
# create a circle
screw_mod = obj.modifiers.new(name="screw", type='SCREW')
screw_mod.axis = 'Z'
screw_mod.angle = 2 * pi
screw_mod.use_merge_vertices = True
screw_mod.merge_threshold = 0.01

Update the mesh
After writing changes to an object mode (from_mesh(...))  mesh with bmesh, to see changes call Mesh.update()
eg
bm_edges = []
for e in edges:
    bm_edges.append(bm.edges.new(e))
bm.to_mesh(mesh)
bm.free()
mesh.update()

The from_pydata method as suggested by @Gorgious is both quicker and AFAICT updates the mesh when called.  Weigh up its use against complexity of mesh to create.  For a  two vert one edge mesh definitely go with from_pydata.

There is a handy from_pydata method (doc) when you have relatively simple mesh data. When I used this, I didn't have this disconnect after setting the modifiers.
By the way you are setting attributes to the screw modifier which are already default like the Zaxis or the 360° and the merge threshold distance.
Updated code :
import bpy
import bmesh

mesh = bpy.data.meshes.new("mesh")
obj = bpy.data.objects.new("object", mesh)
scene = bpy.context.scene
bpy.context.collection.objects.link(obj)

# 2: Generate Mesh - Verticies, Edges, and Faces
verts = [(0,0,0),(1,0,0)] #add a line
obj.data.from_pydata(verts, ((0,1),), [])

# 3: Create modifiers for object.
# length of the line object
radius_mod = obj.modifiers.new(name='length', type='DISPLACE')
radius_mod.show_in_editmode = True
radius_mod.show_on_cage = True
radius_mod.strength = -1
radius_mod.mid_level= 0.2
# create a circle
screw_mod = obj.modifiers.new(name="screw", type='SCREW')
screw_mod.use_merge_vertices = True

It's really important that to recognize there are better methods for constructing objects, thanks. I'll accept @batFINGER's answer though for solving the specific code problem.

No problem with that :)


text:
macOS keyboard shortcut to show Blender app menus & toolbars
I chose Render > Render Image. I didn't like the composition and thought adjusting one of the menu items in the Blender Render window would resolve the issue (I forget which menu item).
But this removed the macOS Blender application menus & toolbars:

I quit Blender to start again. I didn't want to lose my edits, so I saved the file.
Blender displays fine for any other file, but when I open the file I was working on to resume work, the original issue occurs: the menus and toolbars are missing.

This answer worked for me.
Keyboard shortcut: ⌘ Command + ⌥ Option + Spacebar (Mac)
Keyboard shortcut: Ctrl + Alt + Spacebar (Windows)
(reversing the action: View menu > Area > Toggle Fullscreen Area)


text:
Why does my object follow the path, but with a weird offset?
I'm modelling a fictional solar system, and one plan has a very eccentric orbit. So I've set the planet's constraint to "Follow Path." It moves, but not along the orbit. See the screenshot below.

Make sure that the origin is at the center of the planet and reset the planet location (alt G)

Try zeroing the objects location :)

Make sure that the origin is at the center of the planet (RMB > Set Origin > Origin to Geometry, and reset the planet location (altG).

I did both of these, just now, and the planet is still offset from its orbit, though the offset is now parallel to the X axis instead of at some weird and variable angle to it.

please share your file (with only the problematic objects): https://blend-exchange.com/

Done. https://blend-exchange.com/b/Yr8M8LlZ

You've keyframed the location of the object, which keeps it far from the scene center, you need to delete these keyframes, then Alt G to bring your object back to the scene center

It worked. Thank you!


text:
How to prevent rendered image from being cropped?
My scene is set to 1920 x 1080 px.

The image is cropped to a square of about 600 x 600 px when rendered.

It doesn't matter where I place the camera; the render is always the same.
The rendered image matches the bounds of the dotted orange box in the left window of  Animation.

How do I increase this? It might increase the bounds of the final image.

..... do you have a key frame for the camera ? . if so add a new one or remove them all then place camera where you want again

The solution was to turn off Render Region.
Turn off Render Region to prevent Blender image render being cropped.

And if you are wondering why it was turned on: you probably have accidentally used Ctrl+B in camera view to define a render region, this enables the Render Region option (if you didn't just click the checkbox). To get rid of it you don't have to go to the Output Properties panel, you can simply hit Ctrl+Alt+B in the camera view. Or simply define a region with Ctrl+B larger than the camera view, this will let you render the whole image but renders the viewport only within the camera view, which can help with performance in rendered mode.

By the way, you can also define a render region in the 3D Viewport when you are not in camera view. This way you can limit the rendered mode in the viewport to a certain area. If you do it outside of camera view, it will not affect rendering the image (option Render Region is not enabled by this). Switching the render border off with the Ctrl+Alt+B shortcut is dependent on the view it was enabled in - if it was in camera view, you need to switch it off in camera view. If it was outside of camera view, you need to do it there. You can define different areas at the same time for each view.


text:
How to move the light source position while in the Shading tab
In the Shading tab, I'd like to move the position of the spot lighting source.
I cannot drag it into a new position if I left-click it and drag it.

Help appreciated.

This is one of the reasons why it's always good to learn the shortcuts... simply press G and move the light wherever you need it.
If you want to constrain the movement to a certain axis, let's say X, just press the corresponding key afterwards: G X
And if you want to move it a specific distance like 1.5 m on X, enter the values after the tool and axis keys: G X 1.5
Then left-click or Return to confirm the translation.
If you explicitly need the Move tool with its gizmo to do this, just enable the toolbar either by pressing T in the 3D Viewport or from the menu View > Toolbar and then choose the Move tool:


text:
How to open an image editor window and display an image file in it?
I'm looking to open a new image editor window and display a new image from a file in it -- all via python script. What is the best way to do this? Searched but only found how to load and display an image, but not how to do it in a separate window. Thanks.

By separate window do you mean a floating window torn away from the rest of the program interface, or do you mean dividing an existing editor and changing to an image editor? Tear away can still be done by holding shift while pulling the top corner I believe.

floating window where you can view and save the image

Related: How do I get a popup UV Image Editor and force it to show the Active Paint Slot? Also, what did you find exactly? What exactly does not work? Please add that to your question and show some effort (just trying to help making this question better, according to How to ask a good question?...).

Well, I already looked at the link you showed and realized it's not an image_editor with all the bells and whistles-- and I need to have the ability to save the image. I searched here and on BlendDev and on BA and Reddit and didn't find anything I could use.
My take is it's not that easy to do, so I'll try and work around this. Turns out learning Python is the easy part-- learning the Blender API is much harder! haha

I'm getting an image editor in a seperate window from my old answer linked above (with all the bells and whistles). Isn't that what you want actually? In case you're rendering anything before you can just call bpy.ops.render.view_show("INVOKE_DEFAULT") to open up the render window. Please elaborate on your goal and add more information to your question.

Blender does not support creating a new window officially. However, there are some workarounds.
bpy.ops.screen.userpref_show()
One way is to open up a new User Preferences window and change its Area.type to 'IMAGE_EDITOR' using bpy.ops.screen.userpref_show() operator:
# Call user prefs window
bpy.ops.screen.userpref_show('INVOKE_DEFAULT')
# Change area type
area = bpy.context.window_manager.windows[-1].screen.areas[0]
area.type = 'IMAGE_EDITOR'

bpy.ops.screen.area_dupli()
Another way is using bpy.ops.screen.area_dupli(), which creates a new window from a specific area of your screen. Find an area of interest, store the Area.type, set it to 'IMAGE_EDITOR' call the the opeator and reset the area:
Blender 3.2+
import bpy
from bpy import context

# Iterate through the areas
for area in context.screen.areas:
    if area.type in ('IMAGE_EDITOR', 'VIEW_3D', 'NODE_EDITOR'):
        old_area = area.type        # Store current area type
        area.type = 'IMAGE_EDITOR'  # Set the area to the Image editor
        with context.temp_override(area=area):  # Override the area member
            bpy.ops.screen.area_dupli('INVOKE_DEFAULT')
        area.type = old_area        # Restore the old area
        break

Blender 2.8+
# Copy context member
context = bpy.context.copy()

# Iterate through the areas
for area in bpy.context.screen.areas:
    if area.type in ('IMAGE_EDITOR', 'VIEW_3D', 'NODE_EDITOR'):
        old_area = area.type        # Store current area type
        area.type = 'IMAGE_EDITOR'  # Set the area to the Image editor
        context['area'] = area      # Override the area member
        bpy.ops.screen.area_dupli(context, 'INVOKE_DEFAULT')
        area.type = old_area        # Restore the old area
        break

Assigning the image
In order to display an image in that window, just load an image and assign its data block it to SpaceImageEditor.image eg using the active space: bpy.context.area.spaces.active.image = image. Complete example using the code to generate an image from: Is it possible to create image data and save to a file from a script?:

size = 640, 480
image = bpy.data.images.new("MyImage", width=size[0], height=size[1])

pixels = [None] * size[0] * size[1]
for x in range(size[0]):
    for y in range(size[1]):
        # assign RGBA to something useful
        r = x / size[0]
        g = y / size[1]
        b = (1 - r) * g
        a = 1.0

        pixels[(y * size[0]) + x] = [r, g, b, a]

pixels = [chan for px in pixels for chan in px]
image.pixels = pixels

# Call user prefs window
bpy.ops.screen.userpref_show('INVOKE_DEFAULT')
# Change area type
area = bpy.context.window_manager.windows[-1].screen.areas[0]
area.type = 'IMAGE_EDITOR'

# Assign the image
bpy.context.area.spaces.active.image = image

Note: bpy.ops.render.view_show("INVOKE_DEFAULT") might be interesting as well.

Thanks brockmann! :-)

Shot in the dark, glad this helps though. FYI: In case you didn't read my comment above, updated my old operator on How do I get a popup UV Image Editor and force it to show the Active Paint Slot? for you, had to change the icon to make it work out ouf the box in Blender 2.8x... @chippwalters

Is there any way to place image editor window in specific place when opens?

Pops up where your mouse cursor is. Suggest ask a new question referring to this one @SimonetosTheGreek

Thank you @brockmann I will!!! :)


text:
How to add an Empty to all selected objects?
I have about 30 planes and would like to add an empty to each one of them, is there a way to do it using python instead of having to do it manually?

What do you mean by "add an empty to each one"? Do you mean create an empty then parent it to an object? Or make the empty the parent? Or something else...?

For Blender >2.80 this will work.
Select all your objects and run this in the scripting panel.
import bpy

for object in bpy.context.selected_objects:
    obj_loc = object.location
    new_empty = bpy.data.objects.new( "empty", None )
    new_empty.location = obj_loc
    object.parent = new_empty # swap this line around to parent the other way
    object.matrix_world = object.matrix_parent_inverse
    bpy.context.scene.collection.objects.link( new_empty )

This will create new emptys at the object origins of all the selected objects, parent the object to the empty and remove any offset between the object and the empty.

when swapping the last line an empty is added but I'd like it to be at the object origin.

I have updated the answer


text:
How to import and use C3D data in 2.8x?
I would like to apply a mocap animation onto my armature but I don't know what to import C3D files properly. Almost all of the search results yield a link to this post and my Problem is that I can not find any "C3D Graphics Labs Motion Capture files addon" for 2.81a.
There are 2 or 3 other C3D import addons for Blender I found but they're all 3-6 years old, not maintained anymore and thus won't work with 2.8x. Another addon that is mentioned is "Motion Capture Tools" but I can not find this addon in 2.81a either.
Q: Is there any way to use my C3D data in 2.8x?


text:
How to create a chrome texture?
Is it possible to get that typical chrome-like angled look using the Shader Editor? I see a lot of tutorials making chrome on all types of surfaces but not on a knob geometry like the one in the following image:

Q: Is there any way to get that chrome-like surface appearance procedurally or should I just use a texture to fake it?

Easy peasy...that's just Anisotropic glossiness.  Just set Anisotropic to 1.0, and then play with the Roughness value to get the look you want.  No tutorial needed!

EDIT:
Use a Tangent node to control the axis of the anisotropy:

Hi Dale, thanks for your reply. Yours looks way cooler, than what I tried to do.
I'm copying your settings, but I'm not getting any angles. just a straight line. What am I doing wrong?
(I also changed the render to cycles)
https://ibb.co/mhTdsCw

Did you UV-Unwrap it? That might be necessary, if I remember correctly..

hmm, maybe it has to do with the rotation or how you modeled the cylinder?  you could try plugging in a Tangent node and see if trying X, Y, or Z gives you the results you want (see the image I added above)

you don't need to UV Unwrap or anything. I'm not using Blender 2.8x but I would hope they didn't change the behavior of something so simple.

The axis is in object space, and defaults to Z if nothing is plugged in.

It worked well using your settings.
Kind regards.

if that's the case then can you please mark my answer as "correct"?  thanks!

@blenderbreath Hey, accept the guy's answer, please. Or the other guy's if that's your preference.

If you're using EEVEE, you'll have to fake it.
One way:

.. The 'Tangent' axis is down the axis of the cylinder, in the object's space.

Using EEVEE certainly does speed up times within an instance, so your solution was on point.
Thank you for your reply.


text:
Make the movemouse event back to left when get to the edge of right
Just like we are using the middle mouse button to navigate the 3dview.
When we get to the right of the 3dview, it gets back to the left
Is there an easy way to do it?
Or we can just use the simple 'if else' to check when the mouse get to right and reset it to left
This is how I handle the mouse move envent in the modal, and it can only go to the edge of the window
radius: bpy.props.FloatProperty()

def modal(self, context, event):
    if event.type == 'MOUSEMOVE':
        delta = self.first_mouse_x - event.mouse_region_x
        obj.Rad = self.radius - delta * 0.01

I got it...
add this bl_option to the operator class can make it
bl_options = {'REGISTER', 'GRAB_CURSOR', 'BLOCKING', 'UNDO'}
# GRAB_CURSOR + BLOCKING enables wrap-around mouse feature.

and then fix the mouse event by using mouse_x
if event.type == 'MOUSEMOVE':
    self.mouseDX = self.mouseDX - event.mouse_x
    multiplier = 0.005 if event.shift else 0.02
    # multi offset
    offset = self.mouseDX
    obj.Rad -=  offset * multiplier
    # reset
    self.mouseDX = event.mouse_x

```


text:
When I try to render my scene, the only thing that renders is the sky. BI
I have looked over every setting and checkbox I could think of that might be the cause of the issue (including render restriction and camera obstructions), and I'm starting to think it has something to do with memory, and not settings. Though if that were the issue, I expect there would be some kind of error message, based on some answers to questions other people had on related issues.
Here is the .blend file
The objects in front of the camera

The rendered image

So I downloaded your file and I can reproduce the problem. I confirm Cycles renders the image properly, but not BI.

Don't know what caused it, but this doesn't appear, if you past the whole thing into a new blender file. You still need to re-setup the sky and the camera dimensions, but it's a workaround.


text:
Cycles: Final Render differs from Viewport
I'm attempting to use Cycles to render my procedurally generated planet, but the final render is different from what I see in the viewport. My clouds, generated using noise and a couple of other simple nodes, are reduced to a bunch of triangles of varying transparency.
Viewport:

Render:

Cloud Node Setup:

Link to .blend file: https://drive.google.com/file/d/1YWWlHg8np9970eA50umKagPwdwXuM12m/view?usp=sharing
Some things to take into account.

I have shaded all three, the clouds, atmosphere, and planet, smooth.
The sample amount for the viewport and render are the same

If any more information is needed, please let me know.

You still need the question to be seen by other if they got the same problem, your can append your status in question. But not delete the original part

What just happened to your clouds mesh?

It looks awful, this topology is far from reasonable mesh.
I kind of know you're probably want to make it thick then a surface ball. That's not how most of the CG render do, if you are making thing in volume rather than surface, the material should connect to output, and also you should use volume shader rather than surface shader (eg. Principled Volume).
You can still use a surface ball to mock the effect with better control, and please aware the problem of "z-fighting" if you setup your earth to three different mesh with little difference distance.

If you still want the thickness of cloud and atmosphere, use solidify modifier instead. It will give you a better control and a more convenience method to manage your object.

Thank you! I have no idea how my cloud mesh got so convoluted. I'll make sure to check my topology in the future when I have problems like that (which I definitely should of in the first place.)


text:
I want to remove void from volume of cube script
I have two problems

Getting Volume its return volume before object Edit and didn't change with editing object

I want here to remove Void From Cube what ever is it  (x,y,z)
For each cube selected Remove volume of Void inside selected Cube from its volume
Print ( "Void.name.0000" ,Dim x , Dim y , Dim z,"Volume=" ,result )

For Explain  Want to remove B Volume From A Volume
With Printing Name of void
lets Say B is another Cube

+----+----+----+----+
|   A               |
|                   |
+    +----+         +
|    |    |         |
|    | B  |         |
+    +----+         +
|                   |
|                   |
+----+----+----+----+

#*********************Getting Volume  *******************************
import bpy, bmesh

result =0

for sel in bpy.context.selected_objects:

    bm = bmesh.new()
    bm.from_mesh( sel.data )

    vol       = float( bm.calc_volume() )
    vol_scale = ( '%.0E' % vol )[-3:]
    result+=bm.calc_volume()

    # I want here to remove Void From Cube what ever DIM is it (x,y,z)
    Print ( "Void.name.0000" ,Dim_x , Dim_y , Dim_z, "Volume=",result )
    print( "Volume=" , Dim_x , Dim_y , Dim_z, result  )

Hi and welcome. What you want to do is a bit unclear. Are A and B two separated meshes?

Is the word "void" equal to "hollow volume"? You want to carve out a hollow cave from A cube using B cube?


text:
Can I subdivide a rectangle with rounded corners?
I created a new plane and applied its scale.
I selected the 4 corner vertices and using the SHIFT + CTRL + B shortcut, I made the corners of the plane round.

Now I would like to subdivide this plane a lot like this:

But when I try to subdivide the plane in Edit mode, the plane does not subdivide.

https://blender.stackexchange.com/questions/44693/beginner-faces-unable-to-subdivide https://blender.stackexchange.com/questions/66063/subdividing-a-simple-plane-does-not-work https://blender.stackexchange.com/questions/164019/why-cant-i-subdivide https://blender.stackexchange.com/questions/124678/subdivide-problem

The extra vertices you added made the plane into an n-gon (face with more than 4 vertices). Blender prefers to work in quads, so it;s best that you avoid n-gon's. Connect the new vertices to their "opposites" before subdividing.

Take a new primitive plane and subdivide it a medium amount, almost like the bottom picture, and then use a subdivision surface modifier.  Apply it if needed.

Even when I subdivide the rounded corners, it doesn't give the faces I create a center point and they cannot be selected... why? https://imgur.com/a/9GSus5y

@AllenSimpson I need a rounded corners plane which is very subdivided to make a pool. Crazy just how difficult something simple like this is

https://imgur.com/a/JkLgG5J

@AllenSimpson thanks Allen! That’s a much better answer than I’ve gotten so far


text:
Moving an object along two axes instead of one
One of my friends uses 3DS Max a lot, and he showed me when he was working that there are "angles" on his 3D manipulator that allow him to move (translate) objects in two axes at the same time. Looks something like this:

By clicking the square between X and Y for example, you can move the object around on X and Y and not on Z.
My 3D manipulator in Blender doesn't have that:

Therefore, moving an object along 2 axes requires 2 steps, which is more tedious than being able to do it in 1.
Is there a way to enable bi-directional transformation on the manipulator?

it stems from a rather spartan approach to ui. Some work has been done to recode blender's translate widget ( http://code.blender.org/wp-content/uploads/2015/09/widgets_07.png ) see https://code.blender.org/2015/09/the-custom-manipulator-project-widget-project/ - not sure when or if that will be part of regular Blender ..

You can shift-click on the axis that should not move.

Ok, that works. A bit complex, I'll see if someone adds another answer, maybe an addon exists... we'll see

@fabriced you should consider marking your question as answered anyways if it helped you out. Other people with different solutions can still answer and you can later "unmark" that "as answered" and mark a different answer.

It's generally a bad strategy to do that right away, unless you really like the answer. It does discourage others from answering.

Grab the object with
press <axis to exclude> IE exclude Z:
use the mouse to float to or the arrow keys to move it to the desired location and click to secure.

Ok, thanks, I understand. But imagine I have a view that is almost a top view, and want to move along Y and X only, that means I have to click the Z arrow, which will be hard to do since I'm viewing from above... Know what I mean? I mean maybe there's another way... Maybe not... Thanks a lot anyways

When you just press G the movement automatically occurs in the plane that is perpendicular to the view. This is also true for rotation but not for scale!

authors: Константин Васильев

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


text:
Unwrapped shapes overlap in editor
I'm trying to paint textures on different objects by UV mapping and painting - maybe I'm doing this wrong or in the wrong order, but whenever I select new shapes to work on and unwrap them, they open on the same image in the Image Editor, on top of each other - although I selected "New Image".

On the enclosed screenshot, you can see that the meshes are overlapping, which creates a confusing image.
I am trying to unwrap a new shape, which doesn't even shop up over the previous ones anymore...
To reproduce this problem:

create new file; in new file create monkey head and ico sphere in Object mode;
select monkey head in Object then in Edit mode, unwrap Monkey head and see it unwrapped in the UV/Image Editor
create new Image in UV editor, click OK
paint something on the unwrapped monkey head, save as image
select ico sphere in object then in edit mode, unwrap it: where does the unwrapped image appear? Even if you create a "new image" in the UV editor, the ico sphere doesn't seem to show up anywhere.

Another way to reproduce this:

create new file
go in Edit Mode, add Torus and Monkey Head
open UV Editor, create new image in UV Editor, in the Edit view, unwrap while all are selected
notice how all shapes overlap in the unwrapped view
create an ico sphere, unwrap it: where's the unwrapped version?

Does Pack Islands (Ctrl P) help?

Can you elaborate a bit? In which window would this shortcut be effective, and what am I supposed to see happen when I press it? (in 3D view it asks "make vertex parent?" and on the image editor, CTRL+P does nothing)

In the UV editor, but while in View mode. (Change Paint to View in the header, at the bottom of your screenshot). It should re-arrange separated parts of the UV map to cover as much area as possible without overlapping. You can tweak the margin and other settings in the Redo panel (F6) after running the operator.

Right, when I go to "View" mode in the UV Editor, I see a clean black image. But the old meshes are still there (visible in "paint" view). If I create a new image, the meshes from old objects are always visible in paint mode.

Are you in edit mode in the 3D view?

It should look like this.

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


text:
Why aren't objects in my viewport straight / parallel to my screen?
It seems that the 3D view within which I am working shows me the scene in a slightly angled / rotated way.
For example this TV Set is built from a cube, I never rotated it (just added cuts, etc). I added straight lines to explain what I mean:

It doesn't matter what object in the scene I look at, or how much I zoom back and forth or move things left or right, everything always seem to be slightly angled like that, even when starting scenes from a new file.
Quite annoying especially since I often align the camera to view, which then produces non-parallel camera angles.
Here is a GIF file reproducing the problem, right from the Startup File's cube:

Hello. I may say things you know. You have pressed numeric keypad views such as (1,3,7,9) and for othogonal view 5?  Can we see a picture of when you add a standard cube or uv sphere?

Thanks all. No numeric keypad on my 3d workstation (MacBook Pro). Cegaton, good comment... although, why is it angled in this direction even when I pan from the left to the right of the object and even when I rotate around it? Why not tilted the other way around? Impossible to tell if other question is related, pressing HOLD and SHIFT rotates the scene a LOT more than I need to straighten it.

The view menu has the same choices such as front, back etc.  The numeric keypad is not a requirement to get the view.  The least expensive usb keypad I have was $6.  It is entirely worth it.  Testing the standard cube, which by default is axis aligned, is a more trustworthy test.

Try aligning the view to the active plane, then aligning the camera to the current view. "View>>Align View>>Align View To Active>>Top" Then "View>>Align View>>Align Active Camera To View". If it comes out 90° from expected, you can always rotate the camera.

All these combined give good solutions to fix the slanting of the scene (although I can't accept them as answers since they are comments). I'm still not sure how every one of my projects end up skewed ("Turntable" mode is on, not "Trackball"). I've expanded my question with a GIF reproducing the problem starting from the Startup File cube.

The fastest way to make 3D view being aligned as by default is to enter some orthographic preset view (like Numpad 1) and exit it with MMB. I'm not sure is there any "skew" in your gif (probably that's perspective distortion, however perspective view is far from the best one to judge straight lines, orthographic is used for that (Numpad 5).

Thanks @MrZak, I know now how to fix the issue, I am interested in understanding why it shifts -1° on view axis after I create and move some objects around


text:
Planetary Gears: How to rig for rigid body physics engine?

The following image shows a planetary gear mechanism under a rigid body physics simulation. All gears involved are under a hinge constraint, and the central red gear is also under a motor constraint. The cylinders are used as Object 2 for the corresponding constraints, and marked "passive".
What I need, however, is for the outer (yellow) gear to be stationary and the centers of the satellite gears (blue) to move around the center. But I can't figure out how to rig this correctly.
Can someone please nudge me in the right direction?

Thanks in advance.

Done!

You have already done the most part of the job.

Connect the gray cylinder (the bottom one) to each of the pink cylinder with a constraint of type hinge.
The created empties (empties added by the previous constraints) need to be aligned on the center of the system (Z axis) as the pink cylinders need to rotate around this axis
Set all the pink cylinders to active as they need to move
Set the yellow gear to passive as it needs to stay in place

Thanks a lot, simple and elegant (but eluded me for some reason.)


text:
Stop hair from falling through emitter mesh
I have a simple sphere with a hair particle system on it. When I add hair dynamics, the hair simply falls through the mesh.
I would like the hair to fall around the mesh and collide with it (both the emitter object and other objects). I have read many other posts about how to get the hair from falling through the mesh, but all of them simply suggest turning on collision on the mesh ... which I have tried to do.

I am new to blender, so I am sure I am missing something obvious.

Possibly of help: How do I make hair collide with a mesh?

Thanks for the link, David. I have looked at that post and tried my best to follow the advice, but to no avail. The link you suggested is in relation to making the hair collide with a soft body object and I've tried changing my mesh to a soft body to more specifically follow the outline of the answers ... still no luck. I've included the blender file I'm working with in the question if that helps.

Enabling collision on the emitter doesn't work on the hair system, yet (2.77).
To achieve collision, you have to do a workaround with a collision mesh:
1. You have to duplicate your model.
2. remove the hair particle system on the duplicated Mesh.
3. Exclude the duplicated mesh from rendering (uncheck rendering in the outliner). 4. Enable collision on the duplicated mesh.
You may need to tweak the settings a bit though.

This is a good answer, but needs to be a bit more complete. Keep in mind that this is not a forum. Think of it more like you're writing a Wiki article. Your answer should be useful to someone else who is having the same problem.

Good to know that emitter collision is not a feature yet. Couldn't quite get your work around to function the way I want (i.e. turn stiffness down and the hair still goes through the mesh), but maybe the other settings mentioned in your last line would help ... any setting in particular?

Marking this as the correct answer because anything requiring a decent amount of physics doesn't work very well with a hair system (first sentence). I will likely re-implement with polygon hair to get better collision options.

https://blender.stackexchange.com/a/62133/1322 is a pretty good answer to a similar question.


text:
Text render has weird shadows
I made a super basic design just a 2 texts with curve modifier. But when I render it (cycles mode) it has weird shadows.

I tried to adding smooth modifier, edge split modifier, increasing sampling changing font and changing lights but they didn't work.

It looks like your mesh might not be flat in those areas.

Hello, and welcome to BSE. There is a good chance that it is a normals issue, so go to Toolshelf > Shading/UVs > Normals: and click on Recalculate. If this doesn't help, please consider uploading your .blend file to Blend Exchange, BSE's very own .blend hosting site.

@ShadyPuck Thank you but sadly it didn't work :(

The issue is related to how text is filled as a surface. It is done using a 'scan fill' method, meaning the surface is made with lots of horizontal lines, which isn't the best geometry for bending. Short answer: convert to a mesh and retopologise, maybe by using the remesh modifier as a starting point.

This is happening because text object, being a bezier curve of sorts, is filled with triangulated faces on  the tops. You text object then seems to be curved backwards causing the triangulation to become visible.
It appears to be  actually a problem of lack of subdivisions and bad topology.
This is one of the reasons quad based topology is always preferred, but in the case of bezier curves this is not possible without destructively converting it to mesh.
Make a copy of your text object if you haven't already (keep the original somewhere) and then try converting it to a mesh. Then either add a Subdivide modifier (this alone won't totally fix the problem) or manually remove all the top triangulated faces and try to fill them with a more uniform quad based grid where possible, or ideally do  both, so the curve modifier has more geometry to operate on.

Only then on top of the fixed mesh apply your curve deformation.


text:
Reduce Curve Deformation
Currently I am working on an animation that requires a scroll opening up. I added a Curve Modifier with a spiral curve to both parts of the scroll mesh, then I added another Curve Modifier with another curve to the mesh.
The result is this when it's only a bit open (good):

The result is this when it's halfway opened (bad):

How would I keep the wrapped-up part to stay circular like in the first image? Thanks in advance!

can you upload your .blend? http://blend-exchange.giantcowfilms.com/

Check if your deforming curve is a 2D curve, if possible. 3D curves tend to distort objects more than 2D ones

Updated OP with blend file. @DuarteFarrajotaRamos I changed the curve to 2d, but the problem persists.

Hum, that is bad, but unfortunately I don't know any other way, I don't think you will be able to do this with curves alone

I've never had much joy combining two curve modifiers - not even sure what your set is - perhaps curve following path? As curves do essentially modify, they work fine with things like cables and planes, but will distort objects especially around tight corners.
The example below I set up with a Nurbs curve with three Hooks: One to hold the centre form and the other two to animate. There is not much animation just a bit of rotation and placement. If you wanted the scroll to open more, you could just scale it on one axis.
Maybe not the answer you were looking for but think it could be usable...

I would use this suggestion if I had one curve and not two. It's important that I have the curve other than the scroll-like one for the effect I am trying to achieve, though.

This looks quite good, even if it doesn't solve the OP question

If you're keen to persue the method you're using then just skip what I've placed here.
If however all you want to do is show two scroll ends opening up to reveal it's contents then this is how I'd go about it...

Rather than use nodes and thence, forced to use Blender's internal renderer, (fantastic as it certainly is) I usually opt for the OpenGL render for most of my videos because of it's speed and also because
what I see in the 3D window is what I (usually) get in the output video.  At my age one can't sit around waiting!
The method...
The scrolled rolls or 'ends' are simply cylinders.  You can add handles or whatever.  I've knocked this up as a quickie.
The parchment is a textured 2D plane laid flat underneath, complete.
Two (what I call and explain below) 'Inviso Masks' conceal the left and right exposed sections that stick out from the scrolls.
That's pretty much it.
The scrolls and masks are moved sideways and in unison.  The scrolls rotate so you can't parent the masks to them.
With the above in place all you need is a few keyframes.  Two for each mask and another two for the scrolls, and you have it!
"Inviso Masks" are pretty much like chroma key green or crimson panels but without all the fuss from nodes and their settings.  They can be made to "cloak" selectively, anything that is behind them!  This makes them extremely useful for hiding bits and pieces that could otherwise ruin an effect.
You'll note the background masonary hasn't been affected at all and yet the parchment's outer sections have been completely concealed!
The masks themselves are only 2D planes with a common material channel and with a transparency setting of just 0.008.
This ensures they're invisible to the eye and yet by virtue I guess of Blender's coding, treat it's semmi-transparent material as it would a solid colour and blocking what's behind it.  (given certain other settings)
It took me an hour to work out with any degree of predictability exactly what it took to make them conceal 3D objects and what it also took to get them immune again.
The details - To cloak an object that is to end up behind one of these planes, simply parent it to the plane.  That's all it takes.
You can un-parent it again immediately after and the cloaking will still hold.
To remove the cloaking effect from an object, join it with the plane first up, and MAKE SURE YOU SELECT THE OBJECT FIRST, THE PLANE SECOND!!
Once joined, part them again by selecting the object, goto Edit Mode,
select all the object's faces and MAKE SURE NOTHING IN THE PLANE HAS BEEN SELECTED AS WELL - then press 'P', and select "Part by Selection".
Once you deselect everything, that object should be visible through the panel. (uncloaked)


text:
Rendering only affecting some faces
I think I can "Fix" this by deleting the chess board and appending an older version of the scene which only had the chessboard, however I'd like to understand whats going on.
It appears that only certain squares are taking my rendering options.
What I've tried doing to fix this.

Removing and recreating lights, in case it was a lighting issue.
Merging vertices, (in case it was in issue with geometry)
Reassigning materials to the squares.

The initial scene notice the lines on the middle of the board.

changing the material for white and black

Note only the middle squares are showing as taking the texture in rendered.
This is the same in preview render and full render.
Only with blender render. If I choose cycles render then the board looks correct. (i.e. its taken the colors given)
Any idea whats going on?
Uploaded file here.

It's not very clear what you are asking. Could you add a link to the blender file to your question. As for the viewport not showing all edges it's an automatic internal optimization to improve display performance. You can customize it per object in the Properties Window > Object and choose the option "display all edges".

The reason for the wireframe comment was I thought maybe it was a symptom of the same problem. I've been corrected on that and I'm going to remove it from the question.

Related - http://blender.stackexchange.com/questions/7113/strange-anisotropic-artifacts

These are the shading effects visible on the mesh. They were added with Tangent Shading from the Materials > Shading rollout.

From the manual:

Tangent Shading
      Use the material’s tangent vector instead of the normal for shading - for anisotropic shading effects (e.g. soft hair and brushed metal).

You could see on the preview white line across the ball. Once you turn off the option the preview will be changed.
When unchecked the mesh will be rendered as usual:

If you unwrap the mesh, the tangent shading will use the UV map to define the direction of shading and it won't be interrupted as it is in the original file. See related topic - Strange anisotropic artifacts?

Thanks I would never guess that it worked like this.  Seems strange that the tangent shading of one material effects the other.

@Wes shading of one material doesn't affect another one as I saw from the file; it's just that both materials had Tangent Shading turned on.

The artifacts on the white squares didn't disappear until I removed the tangent from the black squares or vise versa. I can't remember which order I did it in now.


text:
rigify shoulder is creating a really bad crease

The shoulder part creates a crease, the collarbone doesnt affect the mesh at all. I watches some tutorials that have reactive shoulders, my rigify one doesnt move at all.

First of all, the way the arm will bend will depend on the position of the bone head, so it's strange that the head is located here

WHere should it be placed?

The bone head should be placed where you want your arm to bend, at its center of rotation

You have to select the shoulder bones and add the Rig type basic.super.copy and then change the widget to Shoulder.
You can check the armature of the metarig that they give you as an example, there it is already fully configured, if you have doubts check it, I figured it out that way.


text:
Separate material on each geometry nodes instance without realizing
I don't know if this is possible, but I'd love to be able to set different materials on each instance of a geometry node without having to realize instances first. This is what I have now:

This works in generating many copies of a mesh and giving each copy a specific material, but the problem I'm having is that "realizing" them means I'm ending up with 10s of millions of verts and running out of memory, rather than just having the one instance of data but with different materials.
I have seen similar examples where just the colour is changed, but I have multiple changes per material to cater for (colour, roughness, metalness, transmission, etc).
Basically I want more than 2000 bricks.

How many materials do you have? Why not have a single material that changes color and other properties based on a custom attribute?

There are 61 materials each with their own colour, roughness, metalness, and transparency. I'm not sure how I'd go enough doing this succinctly with custom attributes... I know you can set different materials on instances through the interface so was just wondering if it was available to the nodes.

Does this answer your question? https://blender.stackexchange.com/questions/253723/is-where-a-way-to-pass-data-to-material-without-realizing-instances

This solves it for random colours, but to replicate this with 61 pre-defined materials each with their own roughness, metalness, and transparency it would presumably take me 244 attributes to do this, and additional work if I need to add more.

As far as I know, you need a separate instance for each material, like so:

Or duplicating the object and setting a different material for each variance and combining it in a collection:

Or do something like this to more easily manage a lot of separate instances:

Custom Group i:

Or resign from multiple materials, just use one. The material properties could be stored as attributes in "instance" domain and read in a shader using the "Attribute" node from "instancer", and the arbitrary material data could be stored using one of these techniques:
How can I rotate individual curve points in geometry nodes?
Cycling /looping through a set of index values using geometry nodes to create animation
How to instantiate objects on individual/selected points in geometry nodes?

You know, for the task at hand and maintenance thereof I feel a collection of dupes, each with their own material is probably the way to go from this. Thanks for the ideas!

Just set the same material for all of the instances (or set it to the object used as the instance input for instance on points node).

Then open the shader editor and plug object info node's random output to the factor of a color ramp node and use the color output as the color of the instances.

This is the result:

This works for random colours, but I have 61 pre-defined colours, each with their own roughness, metalness, and transparency.

You can again use the combination of the randomness and the color ramp and plug the output into the parameters you want to vary. Since the randomness value doesn't change, all objects with the same color will have the same roughness, metalness, and transparency.

Also, you can add a map range after randomness and set it to step, and use the step value to determine how many variations there will be.


text:
What happens when I press Y while selecting two faces?
When I select a face, it is light color, if I press the Y key, it becomes darker color.
Also, if I select two faces, the first face is dark color and the second face is light color, if I press the Y key, both faces will be dark color.
What does the Y key do in faces selection?

If you don't know what Blender has done after a key press, you can open a "info" window and look at the last operation that is logged:

Here this is "split". The mesh is splitted along the selected faces edges.

I can't find info icon, how to active it?

split the view and choose choose "info" as editor type (view menu, then area and split h or v)


text:
How can I fix visible shading differences between parts of mesh?

Normals are fine but there is still a visible shading difference which is still there when exporting to a game engine, how can I fix this?

Hello please share your file: https://blend-exchange.com/

@moonboots It won't upload

or use another platform like workupload

If that is a single objecrt you could try selecting All in Edit mode then hitting M > Merge by Distance in case you have duplicate vertices.

@moonboots https://workupload.com/file/VHkP8w34x6F

@JohnEason It is a single object, and there are no duplicate verticies

The reason you couldn't use blend-exchange is because it was an .obj file not a native .blend one! I don't know how you created that file but it has horrible topology and internal faces where your shaded edges are showing. It can be improved somewhat by selecting the centre vert of the internal faces in Wireframe mode then Ctrl+ to expand the selection and X delete vertices but that won't get rid of all the topology problems.

@JohnEason Yeah, my first character model so terrible topology, but I'm fixing it now, is this better topology (apart from the temporary 6-sided shape)? https://imgur.com/a/aO1jQeZ

You need to right click > Shade Smooth. Also you have inner faces as you see if you make some faces invisible, which creates a bad shading as Blender tries to smooth between the outer and the inner faces. To fix that, go into the Select panel > Select All by Trait > Interior Faces and press X > Delete Faces:

It is still not perfect because your topology is not perfect, but it's now better:

Thanks, I completely forgot about the interior faces I left, and yeah, topology is bad in quite a few places as this is my first character model


text:
Root of IK arm is twisting

The root of my IK arms are twisting, this is because I need to either roll the bones or apply a pole angle in order to make the elbow fold in the correct direction, unparenting and removing the armature and then reparenting is not helping, what can I do to fix this?

So, as you say, have you tried to change the Pole Angle? If it doesn't work, please share your file

@moonboots Adding the pole angle makes the elbow point towards the correct direction but twists the mesh https://workupload.com/file/uKGSjv6tp4c

you need to set a Pole Angle of about 70° for your forearm.R and the shoulder won't deform anymore. Also it would be better to align the bones with the axis, select them in Edit mode and Shift N

@moonboots  Yeah but then the elbow points in the wrong direction, that's why the bones are rolled like that in the first place

If I choose a 70° pole angle I don't see the elbow pointing bad, it points exactly like it does if I deactivate the Armature modifier

First thing realign the bones in Edit mode (Shift N), then correct the pole angle of your IK and it works

@moonboots Here's what happens when I set a 70° angle: https://imgur.com/a/shAwQjL
EDIT: I'm trying the thing you commented at the same time as me now
EDIT2: Same result, whatever I do the mesh is always twisted when the elbow is pointing backwards

Flatten the arm and forearm on Z, Shift N to align with the axis, Ctrl R to make them have the same orientation, bend a bit the elbow background, align the Pole Target with the elbow on Z, change the Pole Angle of the IK and it works fine

In Edit mode, flatten the arm and forearm on Z (SZ0), ShiftN to align with the axis, CtrlR to make them have the same orientation, bend a bit the elbow background, align the Pole Target with the elbow on Z, in the IK modifier change the Pole Angle of the IK and it works fine (also put the Armature modifier above the Subdivision Surface):
Front view:

Top view:

Won't the misalignment of the bones now cause problems with the way the mesh deforms during movement?

If your talking about the elbow that needs to be bent a bit, as seen in the second image (top view), it's necessary to indicate in what direction the arm is supposed to bend


text:
How do I make a character handle an object?
How do I get a human character to manipulate an object without having to go frame by frame or joint by joint + frame by frame?
The reason I ask is because it's incredibly difficult and time consuming having to account for each individual joint through various frames. I would like to know if there is a simple way to have a human character grab a weapon and use it similar to how any real human would use an object.

You can add 2 loose extra bones in your rig somewhere on each palm. Later you can attach any object to these new bones by adding a "Child of" constraint on the object. Then you can key-frame object's influence from 0 to 1 when you want your character to hold and drop the object.

I'm not entirely sure how to add extra bones  can you point me to a tutorial?

There are so many basic armature tutorials on youtube I honestly don't even know which to recommend since they are all good. But simply put,

Place the 3d cursor on the palm by clicking shift+RMB
Go to edit mode for your rig and hit shift+A to add a new bone.
Scale and rotate the new bone
Name it like hand_item_l if the new bone in the left palm, _r otherwise.
Open "Find" menu and hit symmetrize to place the same bone in the other palm.
Now you can use that bone as a target in carried object's "child of" constraint


text:
How to get a Center Point from multiple Vertex Locations?
tl;dr: I just want to create some curve guides along those middle points of vertex groups but with a script.
I am new to Python in Blender and I can't seem to find how to do this.
So far, I managed to get X, Y and Z coordinates of each vertex, stored in arrays in a variable named like each vertex group. My goal would be to find the middle point, something like a bounding box for each vertex group.
I did find topics about matrix for bpy.types.MeshVertex but what I have is lists of vertices which do not seem to work with those examples.
Edit2:**Thanks for two different answers on how to do it, have a sub-question, if there is a way to create effectors like path, that **start from those points *(Have their starting point there), and I guess prefferably to get them to go outward away from these vertex group locations.
ob=bpy.context.object

GL = {g.index: g.name for g in ob.vertex_groups}
verts = {name: [] for name in GL.values()}
vertsloc = {name: [] for name in GL.values()}
verts2 = {name: [] for name in GL.values()}

for v in ob.data.vertices:
 for g in v.groups:
  verts2[GL[g.group]].append(v)
  verts[GL[g.group]].append(v.index)
  vertsloc[GL[g.group]].append(v.co)

Hello and welcome. It is probably easier to help you for anyone who knows if you post the code for what you already have.

Do you want to find a bounding box of every vertex group with the box center? Or the center point(location) you tried to find should consider the weight so it can be calculate by weighted average position?

Copy Location Constraint.

Can leverage the existing behaviour of the copy location constraint, targeted to a mesh, subtargeted to a vertex group.
Test script, run in object mode with mesh object selected. Will add an empty for each vertex group at the location of each vertex group.
import bpy

context = bpy.context

ob = context.object
me = ob.data

for name in ob.vertex_groups.keys():
    bpy.ops.object.empty_add(location=(0, 0, 0))
    mt = context.object
    mt.name = f"{ob.name}_{name}"
    cl = mt.constraints.new('COPY_LOCATION')
    cl.target = ob
    cl.subtarget = name

The bonus here is the empties will dynamically follow the vertex group as it deforms via modifiers.  It involves no dicking around with vertices.
To go to any next step that requires the empties to be at the constrained locations throw in a scene update to ensure matrices etc are up to date.
For versions <= 2.7x
context.scene.update()

For >= 2.8x
dg = context.evaluated_depsgraph_get()
dg.update()

To set the locations statically for the frame the script is run on  set the empties matrix world and remove the constraint
for mt in empties:
    mt.matrix_world = mt.matrix_world.copy()
    mt.constraints.clear()

or simply get the locations from the empties before removing them
for mt in empties:
    mt.matrix_world.translation # global location of emtpy
    # remove the mt
    bpy.data.objects.remove(mt)

A quick note if going the route of finding  vg verts and calculating bbox etc recommend defaultdict from the collections module. Can be given a type as default, list for example.
Eg add verts to a dictionary keyed by their vertex group name.
import bpy
from collections import defaultdict
context = bpy.context

vgs = defaultdict(list)
ob = context.object
me = ob.data
for v in me.vertices:
    for g in v.groups:
        vgs[ob.vertex_groups[g.group].name].append(v)

for name, vg in vgs.items():
    print(name, vg)

Marked this as 'solution' even though both answers are right, as this one is shorter-easier, I updated main post, have a sub-question, maybe could have made new thread not sure.

I will just assume that you're not gonna to consider weight averaging.
The following script show how you could get those coordinates and deal with them, with some comment for very beginner.
import bpy
import numpy as np

# This line select and get the active object from context
ob=bpy.context.object

# Create a Python structure: dict(), with key = vertex_group.name
# and value = vertex_group.index
GL = {g.index: g.name for g in ob.vertex_groups}
verts = {name: [] for name in GL.values()}

for v in ob.data.vertices:
    for g in v.groups:
        verts[GL[g.group]].append(v)
# All the location(co) and index can be found in "verts[name]" list by its attribute using '.'
# eg. verts[G_name][314].co == Vector((1,2,3)) #True
# The "verts" dict's list store the references list point to the data (which is object) they linked

vertex_group_info = {}
for key, value in verts.items():
    # Using numpy array for convenience
    temp = np.array([(v.co[0],v.co[1],v.co[2]) for v in value])
    max = np.max(temp,axis=0) #calculate the max
    min = np.min(temp,axis=0) #calculate the min
    # Average the cooridinates by add them and divide by number of vertices
    center = np.sum(temp, axis=0) / temp.shape[0]
    vertex_group_info[key] = {"max": max,
                               "min": min,
                               "center": center}

What is weighted version?
Let say we got 3 points assign to a group with 1.0, 0.02, 0.01 weight. You might want to calculate the weighted average, which is very closed to the 1st point since 2nd and 3rd show little to no influence to the group. The script above still treat these vertices as same weight if the weight value is not equal to 0 (not assigned).
In the weighted case, you will need to multiply the coordinates by the vertex weight and sum all these weighted coordinates. Than divided it by the sum of vertex weight.

Thanks for answering! Weighted version, would that be to locate position in a vertex group but towards where weight is higher?

@stmm Yes it is, I just edit my post. Since weight plays a major role in the vertex group. You will want to consider the weight in common situation.

May I ask, what are these common situations we would have to consider weights, please?

@GaryCarlyleCook If the mesh you defined is not uniform weighted, like there's some density different. This could be common issue when mutiple material was build at first and then merged in one mesh when making game assets. Then you probally might want to ignore something like hair mesh or other fluffy stuff.


text:
UV Mapping is not apply uv grid texture to my face model
So now as it says in the title the my model in uv map the grid does did not apply to my character face model.
If anyone can explain what is happening i would be delighted OH! also it turns out its only the face model that has this issue for the others it there perfectly fine.
Here's a the downloadable blender file.
http://www.mediafire.com/folder/bq64qo9bblxq4qf,3xr57eh55ac4xza,id9am3km23aj24v,bmbnna48s4n72q3/shared

there are 4 different files, which one do you want us to download? Also, have you created a material with the grid as Image Texture?

sorry i believe it was a untitled 2

have you followed a tutorial like this one? https://www.youtube.com/watch?v=Y27pCgJxLvg , in Cycles Render (your are in Blender Render though) you need to create a material with your Texture Grid plugged into a Diffuse and plug the Diffuse into an Output, otherwise you won't see the grid on your mesh


text:
Return the value as Blender does when in the Python Console
I hate to post this question as I am sure it is something simple but well over my head. I have tried an exhaustive search but I think I am missing the correct key words.
Example of my issue in the Blender Python Console
Enter this into the console;
x = bpy.data.worlds['World'].node_tree

Type x and returns the following
bpy.data.worlds['World'].node_tree

Now type print(x) and return
<bpy_struct, ShaderNodeTree("Shader Nodetree") at 0x000001CB54D52008>

How can I make the print(x) code return
bpy.data.worlds['World'].node_tree

?

I think this may be a difference between the __repr__ and __str__ methods of objects:
>>> x.__repr__() gives
"bpy.data.worlds['World'].node_tree"
And >>> x.__str__() gives '<bpy_struct, ShaderNodeTree("Shader Nodetree")>

A little research on what you posted here and now I feel better about python methods in general.  A little eye opener for me, Thanks

Representation
The python console echos the representation of a python object.
>>> C.object
bpy.data.objects['Cube']

>>> repr(C.object)
"bpy.data.objects['Cube']"

For same output in either
>>> print(repr(C.object))
bpy.data.objects['Cube']

which uses this method defined on the class
>>> C.object.__repr__()
"bpy.data.objects['Cube']"

The output of a print method, is object as a string  str(C.object) is the result of   C.object.__str__(self)
>>> str(C.object)
'<bpy_struct, Object("Cube") at 0x7fb61a34a608>'

>>> print(C.object)
<bpy_struct, Object("Cube") at 0x7fb61a34a608>

Thank you once again for the help. I am obviously missing some critical learning when it comes to python and any of the methods with double underscores. I will study up on what you and @NeverConvex have shared

Unless you are defining the class, simply use repr(ob)  Underscored properties don't autocomplete &  NP with Q Happy to see you using the console.   Welcome to BSE.


text:
How to see the mesh with subdivisions in wireframe mode in blender 2.83?
Hi I can't see how to see the mesh with all subdivisions in blender 2.83. Does anyone know how it can be activated? in past versions I think it was by default

Turn off Optimal Display

Came across this as well, found that switching the subsurf modifiers optimal display property has the desired result.

Thank you very much, it worked


text:
'Mesh' object has no attribute 'faces'
I'm trying to do an export plugin for Blender 2.69 to metasequoia file (.mqo).
Vertex is exported but i have some trouble with faces.
I used this has a reference but it's for blender 2.5 so i think it's outdated.

source code

Faces are now accessible in Mesh.polygons. But seeing that your reference is so outdated, there may be other deprecated API usage in your script. So far, this link is always redirected to the latest Blender Python API manual, you may want to refer to it instead.

faces = me.faces --->  faces = me.polygons

The following page has a few examples that some people may have.  http://wiki.blender.org/index.php/Extensions:2.6/Py/API_Changes

You might be able to fix it by simply replacing .faces by .tessfaces and a call to calculate the tessfaces: http://www.blender.org/documentation/blender_python_api_2_69_7/info_gotcha.html#upgrading-exporters-from-2-62


text:
Blending modes in Blender
In Photoshop and some other image editing programs, Blending modes allow you to composite images by creating various types of transparencies that adapt to other layers. The user can quickly cycle through different Blending Modes with a keyboard shortcut.
Here's an example of a composite image made with Blending Modes:

These are the different Blending Modes in Photoshop:

In Blender, transparency is usually done in the Cycles render engine, in the form of shaders applied to a material or an imported image. The Compositor can also be used, but usually applies to the whole image outputted (if I understand correctly).
However, I am trying to understand how this works better. Say I want to "fake" smoke with a 2D alpha layer, or use a Color Dodge blending mode for a mesh, how would I proceed?
I could only find this reference online, which seems obsolete and whose links are broken.
How would I try different Blending modes for 2D layers or meshes as can be done in Photoshop? How many different Blending Modes can be produced, and how?
(I understand the tools are very different, and I do know how Nodes and materials work pretty well.)
We can use this file for tests

What if it's just an image imported as a plane? Or a whole mesh?

Great comments. I'm curious to know if people have tinkered with this before and have found Node setups that match "Screen" or "Overlay" or any other Blending Modes, instead of having to find out by trial and error... These setups could even be shared for the greater good

"Screen" and "Overlay" are just a few of the mix modes available from an RGB Mix Node in Cycles and/or the Compositor nodes. The key to using images with Alpha in them is to plug the alpha socket to the mix factor of the RGB mix node so that color operations don't carry on to the solid alpha below.

Thanks - I need to see what a setup would be, I'm getting confused with Transparency and Emission shaders thrown in (see .blend file)

Blend modes are implemented in the Color>"MixRGB" node, and are almost the same as in any layered 2D graphics software, like Photoshop or Gimp.

Premise
Such Nodes don't act in the 3D
  world, but either on the 2D space of a surface's material or on the
  (still 2D) space of the rendered canvas.
In the 3D raytraced rendering, the color and intensity of each ray
  that hits the camera depends on its path through the scene's
  materials, that can be comprised of reflections, refraction,
  translucency, diffusion etc, in a way that is meant to be faithful to
  reality.
In principle, you can't make two distinct objects "blend" their
  appearance in the 3D scene through 2D blending modes, i.e. by
  just arithmetically adding, subtracting,
  averaging the colors of different layers.  If
  you're looking for a way to fake this behavior, then my answer isn't
  the right one for you.

To create a textured material for Cycles whose (2D) texture is obtained by blending different layers, you can follow these steps.

Select your object and assign an UV map to it. I've done this by selecting it (in my example, half a cylinder) in edit mode and hitting U.

In the UV/Image editor window, open all the images that you will need as layers

Then create a new material and open the Node editor window.
Add new nodes by clicking "Add". You will need:

An "Input">"Texture Coordinate" node, and its "UV" socket to obtain information from the object's UV map
As many "Texture">"Image texture" nodes as your layers. Remember to connect their "Vector" input to the "UV" output from the Texture Coordinate node
Several "Color">"MixRGB" nodes to do the actual blending pairwise. They are displayed with different names in my screenshot, depending on the selected Blend mode.
Any "Shader" node (in this example, "Diffuse", that should be already present by default). This will take the Color output from the last MixRGB and its output will be plugged into the "Surface" socket of the Material.

Here's the complete node setup based on the example in your question

And here's the rendered result

Thank you for this! So if I understand correctly I cannot import, say, a cloud image as a Alpha PNG in a scene and blend it to a landscape, unless the landscape is a 2D image?

No, you totally can! But not through a layering similar to photoshop. You can have the Alpha PNG as a texture for an object in the scene. If placed in the right place, Cycles will render it as it was a real semi-transparent thin film in the 3D world. You can use the add-on Import images as planes.


text:
Shadow Catcher makes background objects invisible
I am following this tutorial on 2.79c about Shadow Catcher features of the latest build of Blender 2.79.
My result is that the Shadow Catcher makes a "hole" in the object that is behind it. In my understanding, the Shadow Catcher would just not render but the shadows projected onto it would.

I do not have 2.79 version to see your file. But... did you selected you plane and checked ShadowCatcher in cycles settings? The first video I saw about it: https://www.youtube.com/watch?v=BsHueXOW500

Yep! See edit :)

And Render>>Film>>transparency. Watch the video. It explains a lot.

It's also selected! See my edit

Not sure how you're approaching this. Your settings are correct, and the two screenshots with the compositor node layout and the Viewport render show exactly what should happen. Remember that the Shadow catcher always returns a black image with the shadow encoded in the Alpha channel. It does not act as a 'let me see through to the objects behind or background' thing. This is because the intention is to use it in the compositor, exactly as your first screenshot indicates it. So after an F12 render, your composition should work just fine.

The way the Shadow Catcher works is, that it will catch the appearance of the shadow in the Alpha channel only. The RGB pixels of the Shadow catching object will always be black.
In your scene you're adding your reference image to the scene as a mesh plane in the background. The way you've setup your render layers unfortunately means that you're rendering that background mesh plane into the same render layer as the foreground objects. Now there's a shadow catching object in the front of it, and it - as stated above - does not consider whatever is behind it. It just returns "transparent pixels" (i.e. Alpha at zero) wherever there's no shadow to catch.
To fix it, first move your background image to a different layer, so you can have control over it. At the moment the BG plane is on the first layer, as you can see:

I moved it to the layer below (layer 11). Next, setup your render layer in a way that layer 11 is not being rendered at all (take a look on the right hand side, Layer section. There is Scene layers on the left, and the Layers to be included in this Renderlayer on the right):

The composition should work out of the box, though the needed footage was not included in the upload you gave, so I couldn't test it.
Here's the .blend file to experiment with:


text:
Making objects fall into a pile with Particle Emitter
I am trying to make objects fall onto a plane and actually pile up like normal objects would.
Instead of that, the objects fall, bounce around a few times, and end up merging with each other until they're all totally flat on the plane:

I've tried many different settings in Physics for both the plane and the cube, I've even tried to play with Molecular add-on but I couldn't find what settings relate to "Particle Self-Collision" in Blender and/or Molecular.
End goal:
Being able to create a pile of objects that looks realistic (as if objects were dumped on the ground from a container) as such (bills only, not the coins):

Note: There are some similar threads around but the website "blenderartists" seems to be down as I write this.

I'm not sure I understand if that's the same thing - I have to emit thousands of objects before I turn them to separate objects with physics?

You could use an array modifier or duplicate an object, but you could do it with a particle system to begin with as well. Just hit convert in the modifier stack for the particle system and it will make separate objects for you (of course make the particle emitter use a(n) object(s) first). Then you could do what the linked answer says. If you just need the pile at the end, you could join it all into one object after the rigid body simulation is done.

I don't mind marking it as a duplicate, since it solved my problem, but is it really the same if I am interested in getting this result while not converting the Particle System?

Related (although the first isn't very useful): https://blender.stackexchange.com/q/68820/28015 https://blender.stackexchange.com/q/55824/28015


text:
Cleaning up hidden mesh instances with geometry nodes
I've been playing with geometry nodes recently, and I'm finding it tricky to get an optimised mesh.
I'm generating a simple block terrain, however, the problem is the mesh instances build on top of each other. I attempted to use Boolean Union and proximity but that gives patchy results and also melts the CPU.
Is there a cleaner way to remove mesh instances which aren't visible or a way to calculate two faces next to each other and remove them?
Attached is an image of the underside to show the problem
Hope that makes sense, thank you

I assume from your example that you are instantiating cubic shapes here...
Try the following:

First convert the instances into a mesh with Realize Instances and capture the positions of the points with Capture Attribute.

Then scale the elements a little bit smaller.

Remove all horizontal faces, except the ones at the top. To do this use the node Raycast and send a ray from the center of the faces in the direction $(0,0,1)$ (pointing upwards). If you don't have a Hit it means it's an intermediate face and can be deleted. In addition, combine this selection with the faces whose normals are also pointing upwards, so that the side faces are not additionally selected.

Then send a ray from the remaining faces in the direction of the normals. However, move the position a little bit in the direction of the normals, so that you don't hit your own face. Note that the Ray Length here must be smaller than the length of a single object (!). If you have a Hit, it means that the face was originally adjacent to a face of another previously instantiated object and can be deleted.

Finally, restore the positions of the original points and apply the node Merge by Distance to merge the remaining mesh.

(Blender 3.2+)

That is a smart variation of how it's usually done in video games !


text:
How to remove the transparent effect (i.e. some portion of the object is seen through) when it is rotated?
I am starting off using Blender. When I imported .obj file into blender and rotated the model, some portions are seen through like transparent view and the cut-through view is varying based on how much I rotate the model. I do want to remove that effect and see the model clearly as looking from outside.

This could be an insufficient clipping range to contain your object: https://imgur.com/a/d7DfslA

As @RobinBetts says, this is due to the set clipping range. Another indicator that it's not a problem with the model is the grid floor disappearing as well. In your case the Clip Start value is too high, because everything closer and the grid in the foreground is not visible. If the Clip End value was too low, the grid in the background would disappear.


text:
How can i bend this chainmail diagonally? The curve modifier is messing up!

i have this chain mail i created by arraying a single link in the x and y direction, and then i rotated the resulting square 45 degrees. Origin is at world origin, arrays are not applied, all transforms applied as deltas to not mess up array.
I want to curve it diagonally along the curve, but the curve modifier freaks out and produces this horrible result! If I don't rotate the mail it bends it correctly but not diagonally, which is how I want it to bend. Can anyone help me?

I quickly recreated this by arraying a torus, and I was able to get a nice bend by just changing the deform axis on the curve modifier. Do any of the other axis's give a better result for you?
Alternatively if its a smooth bend you want, any luck using a Simple Deform set to bend with the origin set to an offset Empty?

@McBrett i tried changing the axis but no matter what i choose it's all messed up and does not follow the curve or touch it at all


text:
Link the motion of a face to the motion of a body
Is there any kind of constraint that works based on object faces instead of the whole object? I am trying to get the arrowhead to move with the face of the cylinder. The cylinder is being scaled by scaling an empty, the cylinder if a child of the empty and I am attempting to use the shrinkwrap constraint to tie the motion of the cylinder face to the motion of the arrowhead.

This technique works for moving the cylinder when the cube scales, but the arrowhead does not seem to work.
Is there a better techinque? A way to "glue" an object to another objects face and force them to move together even when the face is moving due to a scale?

Snap constraint, mebe?

One solution to your problem is '3-vertex parenting'.
When you link two objects by making one the parent of the other, you chain them together so that the transforms of one also apply to the other. However, there are actually different 'modes' of parenting - 'Object' (the default, "normal", method of parenting), 'Vertex' (where the child is transformed based on a single vertex), or '3 Vertices' (where the child is transformed based on 3 vertices of the parent). By using 3 vertices that are representative of a face you can link a child to the transformations of a particular face of the parent.
Setting up such a relationship is a bit more complicated than 'standard' parenting, since youneed to alsospecify the actual vertices that are involved. I can show this using a simple example based on your arrow.
Start with a Cylinder and a Cone, scaled and positioned to form the arrow. Note that these are separate objects (primitives) and are not yet connected in any way.

Select the Cone, and, whilst holding Shift, select the Cylinder.

Note that the outline shows the last object selected - it's important that the last object selected is the object that is to become the 'Parent'.
Hit Tab to go into Edit mode.

Unselect all vertices (Alt+A) and select 3 vertices (hold Shift whilst clicking them) of the face you want to act as the 'Parent'. Not that this needs yo be 3 vertices that are representative of the face (not just all on one edge).

Hit Control+P to bring up the parenting menu and select 'Make Vertex Parent'.

Now come out of Edit mode and your object should be linked to that face.

In your specific case, I believe you want the object to be linked to the face but not to vary based on the parent's scale. In which case you can use a trick similar to what you have already done - parent an empty to the face instead of the cone. You can then use Constraints to copy the location and rotation of the empty onto the Cone (with its origin adjusted so that it is on the base of the cone).

Move the origin of the cylinder so you can control it via its base.

Thank you very much! This worked.
I had been using the Child-Of constraint because it allowed me the ability to animate. I believe this is not possible with the standard parenting correct?

Correct - ‘standard parenting’ is based on the transform of the origin of the parent whereas using 3-vertex parenting offsets that to use the transform of the plane defined by those three points.


text:
Having trouble installing molecular add-on
This might be a stupid question but I am having trouble finding the molecular add-on once I have downloaded it. I am trying to follow the instructions in this video
https://www.youtube.com/watch?v=2ym8XDXZrdw
but I don't see the add-on when I try to install it. I have saved tried saving it to a few different places but it doesn't appear anywhere. Thanks in advance!

Location in the UI
The usual place is in the Particle Properties tab in the Properties Editor. You have to have an object and a particle system created:

Installation

I have saved tried saving it to a few different places but it doesn't
appear anywhere.

Just in case you are struggling with installation, you should not copy anything anywhere. Just download the zip file, and choose it in the Preferences, Add-ons tab after clicking "Install..." button:

Installation process should automatically input its name into search field for you at the end so you can enable it once its' installed.


text:
Show cone for spotlight is not showing up after the scene is rendered
The first image is the scene in the render it shows the spotlight with cone, but i render the same scene the cone for the spotlight is not showing up. Don't know why!
P.S.(I removed the building at the bottom from rendered image)

Hello and welcome. Please don't make your questions a guessing game, put some effort into your post. Describe thoroughly what you did and how, what you expect to happen and where it failed. Right now all we know is a purple grape in a black background

@DuarteFarrajotaRamos sorry I posted initially in a rush and couldn't put up the issue in detail.

"Show cone" is just a viewport helper.
Guess you meant a light in volume, look at  Volumetric Spot Light with Cycles
For eevee https://www.youtube.com/watch?v=daCTRzzmpyk