There are several ways to do that, but first, change triangles to quads by selecting all faces and pressing ALT+J in edit mode.Here is what you can do to select only inside faces:

Hide the rim, select one inside face, CTRL+L to select linked.
Mark seam around the rim, select one inside face and CTRL (it doesn't work with vertices, must be with faces)


Subdivision surface modifier creating lines and stretches on imported SVG

The subsurface modifier can be a tricky modifier to learn.
Basically, all it does is apply a "blend" between 3 consecutive edges. Sounds simple but getting a grip on how this works can be challenging at first.
We uses "control" loops to control the blending. Take a basic cube for example. Adding a SubD modifier to it blends the edges from one, across the faces, through the next edge and around to another, and it does this 3 dimensionally, effectively making a sphere.

If we add a "control loop" it gives another set of edges for the algorithm to use which tightens up the smoothing. The closer the control loop gets to other edges, the tighter the blending becomes as the 3 edges it is blending between become closer together. As this control loop moves it gives us control over the blending.

Then a second control loop adds more complexity tightening up the corners.

The more complex the surface the more complex this becomes.
Then there is the "crease edge" part to SubD. Adding a crease to an edge tells Blender to ignore this edge in the SubD modifier.

This is a very simple example, but you need to understand the basics of how it works before you can use it in more complex situations.
Your particular mesh looks like it's lacking controlling edges, it's a mess of edges so as Blender tries to blend between 3 edges there is other edges telling it to try and blend in a different direction creating a mess. Your best bet is to use a remesh modifier on it. As it's fairly simple, try the QuadriFlow remesh tool. This tool is very CPU intensive, so use it with low settings at first, then bump it up until you're happy.


Can Fractured mesh offset along curve in Animation nodes?

Add your objects to a collection and record their initial transforms in an ID Key. Then use a Follow Spline Action combined with a Delay Action and maybe other actions depending on what you need:


How can I add drivers for custom properties?

The datapath for a custom property is '["propname"]'

obj["prop"] = 34
obj.driver_add('["prop"]')


Workflow for multi-subject, multi-angle compositions

Use different scenes.

Within the same file you can have many scenes.

Scenes can share assets but have individual cameras and lighting, render layers, and can be combined together in the compositor.

Read these related links:

Move a set to another scene even though it’s done

What is best workflow for having a scene with multiple light setups?

Assign camera to renderlayer

How to build different scenarios in the Compositor


Object does cast shadow, but doesn't get physically darker

I'm not sure what's going on. I downloaded your files, I opened the file, I had to go to External Data - Find Missing Files, but that's just because I moved them, I think. Either way, without changing anything else, this is what I get:

So, I'm not sure if there's something wrong with your version of blender, or graphics drivers or whatnot, but it seems fine on my end.  For testing purposes, as well as easier shareability, I am including the .blend file in this post with the textures packed.
File is here -
If you're still having problems, one thing I can recommend is to swap the sun lamp for a large area light - I always find it casts better shadows and doesn't give such uniform brightness, but that's just me.
Hope this helps.
EDIT - Because you mentioned the normal being a problem, I looked closer at it and noticed your normal map is connected through a Normal node, as opposed to a Normal Map node as it should be.  I have included an image below of the correct node setup, for reference.


How can I detect global/local view via python?

It can be done this way:

for area in bpy.context.screen.areas:
    if area.type == 'VIEW_3D':
        space = area.spaces[0]
        if space.local_view: #check if using local view
            for region in area.regions:
                if region.type == 'WINDOW':
                    override = {'area': area, 'region': region} #override context
                    bpy.ops.view3d.localview(override) #switch to global view


How to adjust color of custom brush in texture paint mode? (issues with color ramp)

Black is nothing, white is full. If you want to use a color ramp, set the main value as white and the zero alpha as black, and then choose the color in the actual brush color picker in the tool bar.


Here's a non-destructive proposal using Modifiers:

Add an Edge Split modifier set to angle 0
Add a Smooth modifier limited to the width axis
Add a Solidify modifier
Add a Bevel modifier


welcome to BSE, take the same object (but has to fit the same object itself, or there will be issues with the intersections) and duplicate and move a bit in the z axis and add a boolean modifier to the target object, and set the source to the duplicated mesh, and apply boolean, good luck...


how to texture an object and keeping the object's color

This is because you're in solid view. change to GLSL (N, Sahding, GLSL) And then click the texture button at the bottom of the screen (Z) and change to textures (the sphere with checkers.)


Use "Alpha over" instead of "Add" node

Assuming that you are in a situation with a bright light sources behind your object like in the example below:

The use of an Color Add Node would sum the pixel colors from the two render layers, while what you probably want is to override the pixel color information basing on which layer is in front of you.

In this and your case, as both the layer of my light and your exaust are almost white, we can't see the "adding" because the are both almost full white, so what exceed the full white (RGB=1,1,1) is being clamped to 1.

Here's an exampe with a light source whose strength is 0.1, The addition is more visible now.

I would suggest to use the Alpha over node instead, which put the second imput image imput upon the first imput image taking alpha channel in account.

Remember that the second imput socket of the Alpha over node is the images that will be put above the source image (which is connected from the firts imput socket). So in your case, the source image must be the Exaust, and the second the Ship.

From the Blender reference manual's page about Alpha over node:

  Use this node to layer images on top of one another. This node takes two images as input, combines them by a factor, and outputs the image. Connect the Background image to the top input, and the foreground image to the lower input.


Go to Edit-> Preferences -> Interface and check Developer Extras
This will create new tab in left column called Experimental.
In that tab you need to check New Point Cloud Type.


How to add a photograph to a scene and render it realistically?

Here I'm going to add this image of the Blender logo:

Once you get it rendering on a plane, modify the material in the node editor to something like this:


If you want to have absolutely no light interacts with the surface, just unplug everything from the material output node.

For a Lambertian surface rather than a completely flat one, you could use a Diffuse shader set to completely black.

If you wanted it have a combination, you could mix the Diffuse with just... nothing... and then adjust mix factor to control the blending.


Node wrangler not working blender2.82a in Mac OS

Thanks everyone for reading. For those with the same issue, there are two hotkeys for mac.
One with the combination of keys and mouse with CMD (similar to CTRL in windows) and another with CTRL instead of CMD in case it's in conflict with system hotkey.


Why be formed face to split when apply the Solidify modifier?

You need to enable the "Clipping" option in the mirror modifier. If you don't, the two halves of the model are treated as if they're disconnected at the seam in the middle.


Get center of geometry for a group of objects, then point camera to that coordinate

This is possible, but you will have to calculate the center.

The example below uses a rough approximation based on the volume of the objects bounding boxes.

from bpy import context
from mathutils import Vector

def point_the_camera(obj_camera, look_at, epsilon=1e-8):
    camera_matrix = obj_camera.matrix_world.copy()
    view_axis_src = camera_matrix.col[2].xyz.normalized()
    view_axis_dst = camera_matrix.to_translation() - look_at

    if view_axis_dst.length_squared < epsilon:
        print("looking into ourselves!")
        return
    view_axis_dst.normalize()

    axis = view_axis_src.cross(view_axis_dst)
    if axis.length_squared < epsilon:
        print("already aligned!")
        return

    axis.normalize()

    from mathutils import Matrix
    camera_matrix_rot = Matrix.Rotation(view_axis_src.angle(view_axis_dst), 3, axis)
    obj_camera.matrix_world = (
            Matrix.Translation(camera_matrix.to_translation()) *
            (camera_matrix_rot * camera_matrix.to_3x3()).to_4x4())

def derived_objects(scene, obj_base):
    obj_base.dupli_list_create(scene)
    obj_matrix_list = (
        [(obj_base, obj_base.matrix_world.copy())] +
        [(dob.object, dob.matrix.copy()) for dob in obj_base.dupli_list]
        )
    obj_base.dupli_list_clear()
    return obj_matrix_list

def main():

    scene = context.scene
    obj = context.object
    obj_camera = scene.camera

    center_accum = Vector()
    center_accum_volume = 0.0

    # objects without a bound-box (camera, lamp, etc).
    # have zero volume so won't influence the outcome.
    for obj_iter, matrix in derived_objects(scene, obj):
        print(matrix)
        box = obj_iter.bound_box

        # diagonal
        b_0 = matrix * Vector(box[0])
        b_1 = matrix * Vector(box[6])

        diag = b_0 - b_1
        diag_volume = diag.length ** 3.0
        diag_cent = ((b_0 + b_1) / 2) * diag_volume

        center_accum += diag_cent
        center_accum_volume += diag_volume

    # we have our center
    center = center_accum * (1.0 / center_accum_volume)

    ## Quick test
    # scene.cursor_location = center

    point_the_camera(obj_camera, center)

main()


UpBGE fork of blender has much better controller support
Modern SDL2

It may solve your issue, while introducing you to many new capabilities.


This actually isn't to hard to fix.

You are zoomed in (very far) when looking in the camera view. if you zoom out, Middle Mouse ↕  you will see the proper bounds for the active camera.


How can I simplify or resample a Bezier curve?

You can simplify the curves with an addon called Simplify Curves that can be found and enabled in the settings.

When the addon is enabled you need to select the curve that you want to simplify, then hit Space bar button and type simplify curves in the search field.

Once you selected the function, by bringing operator menu with F6 button or in the operator panel you will be able to change the amount of smoothing.

Once you get the desired result, change the Shape of the curve to 3D in the Curve Settings panel.

Original:

Result:


You can do:

own['trails'] = trailsObject
own['trails'].visible = True
own['trails'].visible = False

or as i can see in the image:

cont.activate(trails) # to activate the actuator
cont.deactivate(trails) # to deactivate the actuator

Also visit the BGE Documentation.

Next time please take a moment to copy your code as text and format it.


XP support was removed in 2.77:

  Support for Windows XP and the SCons build system was removed.

2.76b was the last version to support Windows XP.

blender-2.76b-windows variants are available from download.blender.org/release/Blender2.76/.

There might be installer-related issues, so I recommend the .zip versions.


Getting color from a face/polygon via python to select the corresponding face/polygon

Welp, I don't really like to answer my own questions. But I found the solution and I wanted to share it with you :)
bm = bmesh.new()                          #Generate new bmesh object
bm.from_mesh(obj.data)                    #Assign the model mesh
    for face in bm.faces:                 #goes through the faces
        for loop in face.loops:           #goes through the loops of each face
            #your condition here, eg:
            if loop[bm.loops.layers.color[0]] == Vector((1,1,1,1)): #the left side is the vertex color
                loop.vert.select = True   #to select the vertex if correct
            else:
                loop.vert.select = False  #a good addition. sometimes all vertices are selected from the beginning

So the trick is convertig it to a bmesh and go through that bmesh.
After everything is done, just throw it back to the bpy-mesh:
bm.to_mesh(obj.data)

And if you change the view to edit-mode you will notice that all the (in this case white) vertices are selected while the rest is deselected. Just make sure your object is in object-mode. At least, when giving returning the bmesh back to your mesh.
(And for all the newbies: "obj.data" stands for "bpy.data.objects['x'].data", which is of course the mesh of the object :) )


You can emulate 3 Button Mouse.
Blender 2.7
File > User Preferences... (Cmd + ,)
Blender >= 2.8
Edit > Preferences...
In the Input tab, check "Emulate 3 Button Mouse".
Now, you can emulate the middle button by pressing Alt + LMB (Left Mouse Button).


Use the object like a dictionary to access and change properties

# Access
print (object['propertyname'])

# Change
object['propertyname'] = 4


This is known bug of snap version. Version downloaded from official site works.

Link to bug - https://developer.blender.org/T72920


How to make smooth transition lower and higher to flat

The answer to this problem is infallible, albeit extremely tedious: the thorough study of topology.

I'd recommend you start with this blog, a valuable resource.

For this specific situation, two basic rules apply.

quads should be as square as possible
quads should be evenly sized
quads should be evenly distributed

Everything else will produce pinching, which you want but only at the sharp ridge. At that position I will use some rectangles.

Use a (shiny, reflective) matcap with lots of details for previewing.

My topology suggestion is not perfect, at extreme angles the reflections show the disturbance in the underlying structure. It should be improved.


Metal covered with glass makes the mesh always visible in cycles?

Looks like overlapping geometry to me. What happens when you drag the glas object just a tiny bit upwards? – brockmann

Wow, that did the trick, thanks a lot! I also had to change the ring size so no face are touching anymore, now it looks perfect. Just out of interest - is there a less "hacky" way? Fusing both with a boolean operator didn't help.


The edges like the rest of the glass have reflections that will have Fresnel effects visible on them. The edges are usually a lot rougher so the effects will be less visible, however the color and darkness of the glass does not depend on those Fresnel reflections directly. We see darker and more saturated color there because internal reflections and the roughness of the edge makes it possible to see the light that passes through a lot more glass and a lot more of the light is absorbed that way than what we see looking through the thinner side of the glass.

You can replicate that with simple glass shader and volume absorption:

I am using two identical materials in the example, except the one on the edges has a lot more roughness. Glass edges are usually sanded and are a lot rougher. You could achieve this with a roughness image texture as well.

Be aware that all the light that goes trough this glass is caustics, so it takes a really long time to render if you wish a realistic result. You could also fake this with transparent shader mixed with glossy by Fresnel for reflections and another color shader for the edges if it is not a very well visible object in your scene to avoid extremely long render times.


Finite element mesh generation with blender

Well it is easy if you use existing librarys.
The greatest problem is generating a useful mesh for finite element analysis. In this case use the open source mesher "netgen" or "gmsh".
After generating the mesh there are several other openSource tools which can help you with subdomains and boundaries

----Fast manual solution ----
Export the blender file as an stl.
Then import it in netgen and create a tetrahedral mesh.
After that use FreeCAD or CalculiX for labeling boundaries

---- Automatic solution ----
Use FreeCAD for the automatic import of the blender files and call netgen or gmsh.


Mesh disappears when using boolean modifier

Maybe your normals are facing in the wrong direction?


Principled BSDF shader missing in node editor (2.79a)

It's 2.78 version, you launch old version, that doesnt support principal BSDF shader:


Add a ''glossy'' material for Blender render?

For the Blender internal renderer you need to enable mirror and adjust the reflectivity, to see an actual reflection like in the image you posted you need other objects like the windows in the environment. Thats the reason why I added a color grid.

A textured face mirroring (mirror and ray-mirror in the textures Influence/Shading are not ticked)


Shape appears different in edit mode, object mode and render

It is because you have a duplicate of your object in you scene. The one  named tpose_human_body. I see you have it hidden but blender still renders it. If you want it to not be rendered move it into a new collection and disable the collection from the view layer by unchecking the tickbox near it.
There was a simpler way to disable render for objects before but it has changed and nI don't know how to do it in 2.8


Generally I would advise not worrying about topology when you model. Clean topology can be essential and a mark of good modeling skills but its much better to model first and retopologise later.

The reason being unless you have decided exactly what your final form will be, topology will be simply impossible to predict.

You can waste a ton of time being a perfectionist in 3d graphics, so it is better to keep it simple focus on just modeling the form you want. After you finish you can always either edit your mesh to fix topology problems or you can create new topology using the snap to surface or wrap skin modifier tools.

There are of course cases where bad topology can get in the way of modeling the object in that case you either edit the mesh to correct these problems or retopologise it. There is the remesher as you pointed but quickly you will find there is no golden tool in any 3d graphics app that will clean up your topology which is why specialised apps that focus on this problem exist.

If you wanna stick to clean topology from the get go then I advise to avoid using booleans. Booleans are more suitable for models where good topology does not matter or models that it matters a lot and they will retopologised later on.


UILayout.prop_search

Test code, draw method, looks for all uv map nodes on the active object's active material nodes, adds a prop search to each listing all the uvmaps on the objects mesh.  The search data is the mesh, the search property is "uv_layers" and the name of each layer is displayed in the prop search menu.

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

    obj = context.object
    me = obj.data
    mat = obj.active_material
    nodes = [n for n in mat.node_tree.nodes if n.type == 'UVMAP']
    for n in nodes:
        col.prop_search(n, "uv_map", me, "uv_layers")


Move camera on a straight path while on a Z rotation

You need to set transform orientation to local.
That way Blender will treat local transforms such as the 45-degree as a default value.


Unwanted line revealed during Cycles Render

It's likely due to the fact that you used a boolean to make the wall. Booleans are notorious for ugly topology - for example, blender works best with quads (faces with four vertices only) and any more vertices (n-gons), or any less (tris), will often cause shading errors. That being said, take a look any of the (single) faces that makes up the door in your image - how many vertices can you count on those faces?
The solution in many cases, is to use a simpler object for your Boolean, which makes it easier to connect loose vertices manually. If you need things to be round, you can "round things out" using a Subdivision Surface Modifier and/or Smooth Shading if necessary.
In the image below, the "wall" on the left is made using a cylinder with 8 faces as the cutout object, and the wall on the right uses the default 32 face cylinder as the cutter.

Since the 8 sided cylinder leaves a much more workable number of new (extra) vertices, it is a trivial matter to connect them to the rest of the mesh in a manner that leaves only quads. Because of this, I was able to apply a Subdivision Surface modifier and Smooth Shading without incident.
While the wall on the right is technically capable of being connected in such a way that it leaves only quads, the sheer number make it a time consuming effort, and will leave your mesh much more subdivided than it originally was. Because of this, I left it in it's fresh post-boolean state (without making quads) to demonstrate why it's necessary. The topology is so bad that I cannot use a Subdivision Surface Modifier without serious mesh-breaking errors, and so I did not use one. I did Shade Smooth, but you can see the shading errors that are a result of the n-gon faces.
The TLDR is that Booleans leave "poor" topology that often must be connected to the rest of the mesh manually to convert it back to a quad-only state and avoid shading errors. To make the manual connection process easier, use a "cutter" object with as few faces as possible, and do the rest with other modifiers if necessary.


It's showing you the axis of the armature object, because you enabled axis in properties/object.  Enable viewport display in properties/object data/viewport display to enable the display of axes for each bone contained within the armature.


List of objects in scene with counts (verts, faces, tris)?

With some inspiration from the other answers I made an addon to show mesh information.

You can save this link to your addon folder or to somewhere convenient and use the Install from file button in the preferences. As awi's step of using bmesh to calculate the vertices after modifiers are applied takes some time in larger scenes, even without modifiers (a few seconds with a million verts scene) I have displaying that count as an option.

When you enable the addon there is an option to set how many mesh objects are listed (default is 5). The list is sorted by the true vertex count so you can easily see what objects have the vertices. Also large numbers are nicely truncated with k,M,G suffixes to make for easier reading.

Once enabled you can find the Mesh Information panel under scene properties.


Not sure about the second question but the first one is easy. If you want to execute the script only when the frame changes you have to modify the Auto Execution settings.


What is the relation between Time Remapping, FPS, and the number of frames?

A ratio of 100/125 means you want to stretch your action by a quarter, it keeps the exact same action but plays it 1/4 slower (and not faster!).
Note that the Time Remapping values dont affect the duration of the rendered movie, the Timeline still does it.
Let say your action finishes at the end of your Timeline. In the case of a slowed action, if you want to see the full action, and don't want it to be cut off by a quarter, you'll also need to increase the Timeline length by a quarter.
If you want to speed up your action by a quarter you need to set a ratio of 100/75, in that case your action will be finished at 75% of the rendered movie, you can either let it as it is (the last quarter will be still), or cut off 1/4 of your timeline, or cut off the last 1/4 of the rendered movie.
In both case you don't have to change the fps, Time Remapping precisely allows you to ignore the fps!


How to read a pixel from an image texture with Python

import bpy

D = bpy.data

image_file = 'Image.png' # this refers to an image file loaded into Blender

img = D.images[image_file]

# we need to know the image dimensions
width = img.size[0]
height = img.size[1]

print ( "Image size: ", width, " x ", height )

# define location of the target pixel we want to read
target = [150, 33] # X, Y
print ("Target vector: ", target)

# target.Y * image width + target.X * 4 (as the table Pixels contains separate RGBA values)
index = ( target[1] * width + target[0] ) * 4
print ("Field index: ", index)

# aggregate the read pixel values into a nice array
pixel = [
    img.pixels[index], # RED
    img.pixels[index + 1], # GREEN
    img.pixels[index + 2], # BLUE
    img.pixels[index + 3] # ALPHA
]

# print the values for debug
print ("R: ", pixel[0])
print ("G: ", pixel[1])
print ("B: ", pixel[2])
print ("A: ", pixel[3])

I wrote this based on articles from this blog:
http://blenderscripting.blogspot.com/2012/08/adjusting-image-pixels-internally-in.html


Why is this happening with skin modifier?

I was able to recreate your issue by hiding the vertex at the end by selecting it and pressing H, then deleting a vertex in the middle. I have a sneaking suspicion this is what has happened. To resolve, when in edit mode, press ALT+H to un-hide any vertices or edges.


Animation below.

In the image below note the settings Particles/Face set to 1. Face Jittered Random. These setting respect the faces created in the geometry.  This the preferred setting for more varied geometry. The image has an extra windows on the right side to show how these settings respect faces.  Plane subdivision is a requirement.


Edit : Make sure you are using a mouse with right-click capability.

Right click on the tab and choose Delete

If the popup doesn't appear then there is something wrong with your installation or this is a bug.

You might try resetting Blender to factory settings or there is a hidden feature I do not know in the preferences to disable it...

To reset to factory settings (Caution this will revert every setting you changed after the installation)


bpy.ops.render.render does not find camera

Simply set the scene.camera after you add the camera.

from bpy import context
scene = context.scene

...

bpy.ops.object.camera_add(location=(0, 4, 4),
                          rotation=(-0.7853, 0, 0))
scene.camera = context.object
...

Hitting F12 invokes the operator, which  when scene.camera is None , throws a message if no cam, or uses a camera from the scene and sets it to scene.camera.  Test by adding a few cameras, setting scene.camera to None, and pressing F12.

To invoke the operator from code,

bpy.ops.render.render('INVOKE_DEFAULT', write_still=True)

Note: bpy.data contains all the objects in the blend file. context.scene.objects contains all the objects in the context scene.  The context scene may not necessarily be bpy.data.scenes["Scene"]. render.render renders the context scene, unless another scene is specified.

A tip, set up a context variable, either context = bpy.context or from bpy import context at the beginning of your test code, then later cut and paste into, for instance, operator execute(self, context) methods. Setting vars like  scene = context.scene, obj = context.object, obj.scale = (0.1, 1, 10) makes code far more readable IMO rather than always addressing from bpy.


Try this
import bpy

group_name = "ColorGold"

for mat in bpy.data.materials:
    if not mat.name.startswith("GLOBE_"): continue

    # Find Principled node
    for n in mat.node_tree.nodes:
        if n.type == 'BSDF_PRINCIPLED': break
    else: continue

    # Find Base Color texture node
    soc = n.inputs["Base Color"]
    if not soc.links: continue
    if soc.links[0].from_socket.name != "Color": continue
    tex = soc.links[0].from_node
    if tex.type != 'TEX_IMAGE': continue

    # Insert group node
    g = mat.node_tree.nodes.new("ShaderNodeGroup")
    g.node_tree = bpy.data.node_groups[group_name]
    g.location = tex.location[0] + 100, tex.location[1]
    tex.location = tex.location[0] - 250, tex.location[1]
    mat.node_tree.links.new(g.outputs[0], n.inputs["Base Color"])
    mat.node_tree.links.new(tex.outputs["Color"], g.inputs[0])


TypeError: MESH_OT_add_triangle.is_property_set("location") not found

The operator requires a location, rotation, align property.
If you are going to use object_data_add to add an object to the scene then make sure you use mixin class AddObjectHelper  As demonstrated in the addon add object template
from bpy_extras.object_utils import AddObjectHelper, object_data_add

class OBJECT_OT_add_object(Operator, AddObjectHelper):
    """Create a new Mesh Object"""
    bl_idname = "mesh.add_object"
    bl_label = "Add Mesh Object"
    bl_options = {'REGISTER', 'UNDO'}

    scale: FloatVectorProperty(
        name="scale",
        default=(1.0, 1.0, 1.0),
        subtype='TRANSLATION',
        description="scaling",
    )

    def execute(self, context):

        add_object(self, context)

        return {'FINISHED'

or annotate your class with the usual suspects location, rotation, align  See https://blender.stackexchange.com/a/160995/15543


Simplifying animation F-Curves in Blender 2.8

Sounds like unfinished implementation, but there is a workaround for the time being

Don't use the menu to call the operator, call it from the F3 Search Menu while hovering the 3D View, not the F-Curve Editor


Did my file get damaged when blender crashed?

I haven't seen files getting corrupted this way yet, and I've had a couple of crashes in similar situations, trying to bake particles included. Blender is very good in informing you it can't open something, it usually spits an error saying it can't open a file for X reason. Since you're crashing I'm more inclined to think your computer isn't powerful enough to deal with this file.

I suggest you to:

Before anything make a copy of that file, just for good measure.
Look for a blend1 file in the same folder and see if this one opens.
If not rename the cache_fluid folder used for this simulation (or the sim files themselves) then try to open the original file.
If you fail you can create a new file and try to append the crashing one to see what happens. Append to whole scene, or just parts if the rest doesn't matter.
If it isn't under NDA you may ask someone with a more powerful build to try to open your file. They may split the file in smaller files for you, or disable the simulation so you computer can work on it again. If you don't know anyone directly you can upload it and share the link here.
Alternatively you can try the methods listed here (https://www.reddit.com/r/blender/comments/4x8o0w/method_to_recover_corrupted_blend_files/).


Can't access custom properties of a linked characters proxy rig

I decided to use a workaround. Being able to use the custom properties would be a slick option as far as UI / user friendliness goes.
But for now I've decided to create one bone per face shape and treat them like sliders where translating the bone in Y axis would drive the face shape.
This works in linked files.
If anyone wants more details about this setup I can write up something.


Keyframe or parent separate meshes in same object?

Yes.

Use vertex groups and armatures.

If an armature can move an attached hand of a human body mesh then it can also move disconnected sub meshes of a Blender Mesh Object.

Parent the mesh to an armature.  Use weight painting if necessary.  Armature need not to be connected. Think of the armature as a collection of controllers and not a mechanism to control an organic mesh model.


Render result different from material view

As hatinacat2000 mentioned in the comments, reflective scenes look terrible untill you give them some complex lighting information. The best way to do this is by adding an HDRI environment to your scene.
HDRI's not only provide a picture background, they also give lighting and color information that is used in reflections.
To add an HDRI, go to the SHADING tab, change the selection from OBJECT to WORLD, add an ENVIRONMENT TEXTURE, and give it an image (equi-rectangular are preferred).
The HDRI's that come built in with blender are in the blender folder at ../2.83/datafiles/studiolights/world - (.exr files). However, other image formats such as .jpeg, and .png work as well. If you want a bigger selection, there are plenty of places on line to get them for free - one of the most popular is HDRI-Haven (https://hdrihaven.com/hdris/).


Appended Group Objects No Longer Work in BGE

I just wanted to apologise that my answer is made up of two images, but stackechange wouldn't let me post more than two images and as you can see I wanted to post five, so as a compromise I instead posted two images of my answer containing the images that I wanted to use.


Weight painted movement mesh is jagged when moving bones. How will I usually fix this?

I start with noticing that your images do not have severe deformation errors, even real arms get jagged and folded someway.
Anyway, here are some tecniques for improving the joints:
Create a geometry in which regular edge loops are present in every joint, just before them and just after them, as in photo:

Then you can go in edit mode, select the edge loop (Alt Right Click on an edge) on the joint, in vertex group tab assign 0.5 to the first bone's vertex group, and the same to the second bone's vertex group.

Then select the near edge loop, and weight it 0.75-0.25.
You can add more edge loops, I.E. 0.1-0.9, 0.2-0.8, 0.3-0.7, etc...:
more loops degrading, better the result.

All vertex should have a total weight of 1.
Some riggers add a third bone on the joint, with a copy rotation constraint with half influence: if the second bone rotates 90 degrees, the third bone rotates 45 Deg.
The edge loop on the joint can be weighted 0.33-0.33-0.33, you can guess the others.

Don't forget to put the subdivision surface modifier UNDER the armature modifier in your modifiers stack!

Anyway good weighting is an art that can be improved with practice.

Happy blending


Cell Fracture Keeps Exploding When Another Object Is Set To Passive Animated

Guess I found out what I needed to do! Just make it Active and Animated!


Shader nodes: ignore scaling, keep rotation

It sounds as if you should be using Texture Coordinate > Object space.
This is in Blender units, from the object's origin, and in the orientation of the object's axes.
Be aware, that space carries the object's scale transform as well; to make sense, the object's scale will have to be (1,1,1).. (i.e. applied).
There's an example of a procedural wood here


Another way to create  a volumetric light beam (without the need of volume container) is to connect the output of an emission shader to the volume input of the material.

Multiply node controls the strenght of the beam, gradient texture creates light falloff, mapping node for sizing and placing the effect.


how to duplicate and scale loop mesh with even offset

You can use Loopcuts for precise spacing.

Inset your shape
Add as many loopcuts as you need
Remove unnecessary edges

You can split the end result into different objects, convert to curves, etc... :)


This a fairly large topic. But i try to give a rough overview that may serve as a general guideline for further investigation.

Main goals of good topology:

Animation friendly mesh
Being as low poly as possible

Why animation friendly:

In real world skin behaves like a tight layer that gets stretched by the muscles and bones right beneath it. Logically real skin does not have any polygons, meaning it bends right where the muscle is.
But in 3D we have polygons and this is a problem. Mesh deforms along the edge loops. If the edge loops and the desired wrinkles are not exactly at the same position, the mesh will deform not correctly, exposing the faces and creating artifacts.

Firt pragmatical fix, most of the people come up with "just increase the polycount until i see no more artifacts. But this is NOT how you do it. You want to keep your polycount as low as possible!

Why low poly:

Many inexperienced people think, their mesh only gets professional if it has a high polycount. But the opposite is the case! You need to keep your polycount low at all costs. Otherwise editing your mesh gets needlessly tedious. Also skinning (=weight painting the mesh to bones) your mesh gets more tricky. Not to mention it simply costs more compute power.

How to achieve animation friendly topology:

In general your mesh must follow roughly the form of the muscles and wrinkles of your model.

This means you have to look, where the muscles are and where they push the skin and where the skin forms wrinkles. Then try to build edge loops along those positions.

The face is especially tricky because there are lots of muscles at the same spot. Logically you can't rebuild all of them, because of "being low poly". So you have to find a good balance between those two rules. Mainly it depends on what amount of realism you are going for. If it is anime or toon style, you can ignore most of the muscles and just priorize the wrinkles of the skin. But if you are going for non stylized, pure realism, you have to study the human body and try to recreate most of the muscles in your topology.

Most important wrinkles of the head:

Eyes
Mouth
Nose
Jaw

If those parts don't have an edge loop, your head will most likely don't deform well.

How to achieve low poly:

Only set an edge loop where it is necessary! If the edge loop does not add anything to the mesh's detail, delete it. Use support edges wisely and with caution.

Where is the line between high and low poly:

Generally everything you model by hand, is still considered low poly. Modeling the mere foundation of wrinkles/creases is the highest form of low poly. If you are defining a complete shaped and sharp crease you are most likely already over the top of low poly.

Such fine details aswell as pores or mini wrinkles (like finger wrinkles) are not part of low poly and will be added using a normal and/or displacement map!

I created a pinterest side for some examples of good topology: https://de.pinterest.com/demons_fate/mesh-toplogy/


Volumetric Scatter ignoring World lighting

I've managed to get this working - the problem only occurs when Surface Multiple Importance Sampling is not enabled for the World.

Here I have two Suzannes - one with Diffuse (the one on the Right) and one with Volumetrics to mimic the diffuse (with the Diffuse at 20% grey to produce a similar shading).

With Multiple Importance of the World disabled (the default) the volumetric material ignores the (red) World illumination :

With Multiple Importance Sampling of the World enabled, the volumetric material is correctly illuminated by the world :

Also, with Multiple Importance enabled, the Ray Visibility works as it should - enabling and disabling the effect on the volumetric scatter.

I don't know enough about the Multiple Importance Sampling to know if this is expected behaviour or what the downsides of enabling Multi-Importance (if any) are, but it fixed the problem for my situation.


How do I render just one frame of a smoke animation using Blender Python API

I managed to solve this by:

hbpy.data.scenes['Scene'].render.filepath = "FilePath"
frame_start = 1
frame_end = 50
bpy.context.scene.frame_set(frame_start)
for frame in range(frame_start, frame_end+1):
    bpy.context.scene.frame_set(frame)
    if frame==frame_end:
        bpy.ops.render.render(write_still=True)


The main window is the Compositor, and not visible in the screenshot there must be a Viewer Node to the right. Backdrop is disabled, so you don't see the composite behind the nodes.
In the bottom left corner is the UV/Image Editor and below your red frame you can see that the display is set to Viewer Node instead of the default Render Result.
So everything changing in the Compositor which you normally watch in the backdrop is displayed in the Image Editor.


How to loop through 100 files to do solidify through script?

This should do the trick:

import bpy
import glob
import os

def process(stl_fname):
    print('Processing %r' % stl_fname)

    # Determine output filename.
    out_fname = stl_fname.replace('.stl', '-solid.stl')
    if out_fname == stl_fname:
        raise ValueError('stl_fname should end in .stl')

    # Perform the processing.
    bpy.ops.import_mesh.stl(filepath=stl_fname)
    bpy.ops.object.modifier_add(type='SOLIDIFY')
    bpy.context.object.modifiers["Solidify"].thickness = 0.03
    print('Writing to %r' % out_fname)
    bpy.ops.export_mesh.stl(filepath=out_fname)
    bpy.ops.object.delete()

# Start with nothing in the scene
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()

# Process *.stl
here = bpy.path.abspath('//')
for stl_fname in glob.glob(os.path.join(here, '*.stl')):
    if '-solid.stl' in stl_fname:
        print('Skipping %r' % stl_fname)
        continue

    process(stl_fname)

The code processes all STL files that are in the same directory as the blend file it is run from.


Do I need to separate an object in order to give it different materials and textures?

No you do not need to separate the object.

Just go into edit mode and select the faces you want, then click the + button in Materials and add new material to selected faces by hitting assign.


Hey it's been a while with no response, so I figure I'll post my alternative in case anyone else sees this with the same issue. While soft body is nice because it updates quickly in real time, that's not a required feature for a project that you'll be rendering to video.

I was able to achieve nearly identical results using a cloth sim, without any glitched frames during renders. I just turned off the soft body, turned on cloth, and used the same vertex group I had for the soft body sim. Then I turned the stiffness down to match the settings I had before and placed the cloth modifier ahead of the subsurface modifier and baked the simulation. This worked for what I needed it to do, and solved the issue of the mesh jumping around and glitching.


You have it as "Shadow Catcher" you need to select the object and go to Object properties > Visibility > Shadow Catcher (uncheck this one)


Bezier handles (tangents) on spiral addon

depending on which type of spiral you are creating there are some spline options often only 'POLY' or 'NURBS'.

However in EDIT mode on the tools panel you can change the spline type.


There is another way. You can also do this:


How to change the driver's Expression to "var * 3 + var * 2"?

Change driver type  to scripted expression, (from sum variables) call your variables say sk1 and sk2 and make the expression

3 * sk1 + 2 * sk2

or

sum(3 * sk1, 2 * sk2)

Currently you are typing an expression var * 3  into the name field of the variable hence the error.

To do this with sum variables driver type would need to add the sk1 variable 3 times and the sk2 variable twice. (all with unique names)


How do you make a lot of noise in Cycles?

To have more cycles noise just render with less samples and have glossy materials. Make sure reflective caustics are on, that will give you fireflies.


Texture in 3D view won't update as I manipulate the UVs in the UV Editor

You need a Mapping Node and a texture coordinate node.

Hope that helps.

Good Luck


Why do (bgl) exceptions in modal crash blender

bgl callbacks

The modal part of your operator needs to return something each time it's called, in the case of an exception that is probably return {'CANCELLED'}. Most exceptions are not fatal, but exceptions in bgl callbacks can be.

One crash is one too many, you might have to stick in a try/except (with traceback), at least until you find the cause of the exception in the bgl callback and find a way to prevent it, you also need to correct the GL state before the callback function ends. Else expect undefined behaviour.


You can store the face ID as a vertex color o each face then read the vertex color using the Attribute node.
This script will create a vertex color layer and store the face index as color :

import bpy

obj = bpy.context.object
obj_data = obj.data
group_name = 'face_ID'

#check for existing group with the same name
if None == obj_data.vertex_colors.get(group_name):
    obj_data.vertex_colors.new(name=group_name)
color_map =  obj_data.vertex_colors[group_name]

#get faces' number
count = len(obj_data.polygons)

for poly in obj_data.polygons:

    ID = poly.index / count  #for normalized results
    color = (ID, ID, ID)
    for loop_ind in poly.loop_indices:
        color_map.data[loop_ind].color = color


I need a code to get the current value of the waveform from an audio file at specific frame

I would recommend looking at other forums on python for how to read audio files. This is not possible with blender’s normal API usage. You would need to go through Python.

Pygame. I believe that pygame.mixer can return a sound as an array which will give you the individual samples. This is what you need.
Wave. A module for reading the data in wave audio files.

You may not be able to install these Python packages to blender’s copy of Python, But you might be able to run python externally to convert an audio file into your own, native-Python-readable format for blender to open.


How do I distribute objects along an edge loop?

This can be done using Instancing and an Array and Curve modifier. and also by instancing a loop and a mesh object.
Curve method

In Edit Mode select your edge loop (Alt select an edge or vertex) and duplicate it: press Shift + D, hit Esc and separate it By Selection by pressing P.

Go into Object Mode, select the loop and press Alt + C to Convert it, choose Curve from Mesh/Text.

Add a Plane object, move it to the location of your tack object and scale it roughly to the size of your tack object. Then parent the tack object to the plane: Shift select the tack and the plane, in that order, and press Ctrl + P and choose Object(Keep Transform). After that select the plane object and go to Properties > Object Properties > Instancing and click on Faces. Make sure that the box next to Render Instancer in unchecked.

With the plane selected go to the Modifier Properties tab in the Properties window. Add an Array modifier to the plane and (later) change the values per your preferences. Change Count for number of tacks, and Offset value for the distance between them. (Best to already put some values in the fields, so you have something to work with.)

Then add a Curve modifier to the plane object, and as a target Object choose your edge loop curve object. Move your plane/tack array to your curve object and move it around until it looks relatively fine and in position.

If thing are moving in a weird and unexpected way, make sure the axis of the Offset value of the Array modifier is the same as the Deformation Axis of the Curve modifier.

Why the plane and the instancing? Why not put the Array and Curve modifier directly on the tack object? It would deform your tack object if you change the position and/or rotation of the array, curve, and the vertices of the curve. Beneficial sometimes but possibly not in this case.
Some fine-tuning:

If your tack object is to far away form the curve move it closer : ). Or alternatively scale the curve a bit bigger in Edit Mode.

You might have to simply move the vertices of the curve if tacks are to deep, not deep enough, or misaligned.

What if some (non spherical) tacks are facing the wrong way? Select your curve, go into Edit Mode, select the vertex or vertices near these tacks and press Ctrl + T to change the tilt of the vertices, and consequently rotating the nearby tacks.

If there are more vertices in your curve then you like to handle and you want to simplify things you can easily reduce their number. Select the curve in Edit Mode, press F3 (the default search hotkey), type "Set Spline Type" and choose Bezier. (Or click on Curve in the header to do the same thing.) Then hit F3 again and type "Decimate Curve" and enter a value between 0 and 1.

A sloppy execution might look something like this:

EDIT:
If your tack objects are spheres for instance and their orientation does not matter at all you can do something similar but a little easier.
As mentioned above, with Instancing you can show a child object for every face of the mesh of its parent object. But also (if you choose the Verts instancing option instead) for every vertex of the mesh of the parent.
Mesh method

In Edit Mode select your edge loop (Alt select an edge or vertex) and duplicate it: press Shift + D, hit Esc and separate it By Selection by pressing P.

Go into Object Mode, select the loop and press Alt + C to Convert it, choose Curve from Mesh/Text.

Press Alt + C again to Convert it back, choose Mesh from Curve/Meta/Surf/Text.

Why this back and forth with conversion? It will cause a somewhat even distribution of vertices along the length of the loop. (there are other ways, but i think will do in this case.)

After that select the loop (which is now a mesh object, not a curve) and go to Properties > Object Properties > Instancing and click on Verts. Now make the Tack object a child of the loop object: select the tack and the loop, in that order, and press Ctrl + P and choose Object(Keep Transform). The tack should appear for every Vertex in the loop mesh.

Fine-tuning:

What if the tacks are to close together? Select al vertices of the loop in Edit mode. Do Select > Checker Deselect, press X or Del and choose Dissolve Vertices.

What if the tacks are to far apart? Select al vertices of the loop in Edit mode. Press F3 (default search hotkey), type "Subdivide" and add a value for Number of Cuts in the bottom left properties panel (or hit F9).


Error: Freestyle Lines Ignoring Displacement

It turns out that the displacement node in the shader editor isn't very good with freestyle lines. I just found out about a displacement modifier in the modifiers tab that actually changes the geometry itself, so I'll use that instead.


Toggle Lamp Visibility Blender Game Engine and Python

In python you can access the lamps energy attribute like this:

bpy.data.objects["Lamp"].data.energy = 0

In the game engine you can toggle the energy by this script (assumes energy value set to 1.0):

co = bge.logic.getCurrentController()
lamp = co.owner
toggle = co.sensors["space"] # space is the name of keyboard sensor

if toggle.positive:
    lamp.energy = 1 - lamp.energy


I can't get HDRI to work right with EEVEE

You are not doing anything wrong. Eevee is not a ray tracer like cycles, so it will not produce the same results with an hdri. The best workaround to this is to try and fake the cycles render by switching between it and eevee using lamps to try and match it.


How to animate a cube pivoting more than once without affecting it's original position

One way is to do this with help of empties. to parent them one after one:

For example, in the GIF below, D (the cube) is parented to empty C; C is parented to B; B is parented to A, which is the top-level parent here ("great-grandfather" :P). Then, insert keyframe for C, B and A in turn.

By using this method, the hierachy should be well planned before parenting, based on the expected rotation orders.

You may also want to replace the empties with armature of bones. You can see the hierachy better in this way since bones have head and tails, though a bit more complicated.

P.S.: For a pivot-switchable animation like this(especially with rotations), which can be really tricky, you have to find a way to control the pivots (better to be "pivot objects") to have them in position in time.


If you need the to render a Blurry HDRI, Try with Depth of Field.
But, if you need to blur de HDRI for the reflection, then use roughness inside the materials that you want to blur.

Hope that helps.

Good Luck


Why there's not homogeneous volume scatter in 2.72?

Of course this feature has not been removed; it's just moved in the UI.

You can now find it in the Settings subpanel of the World tab:


Network animation with faces / simplicial complex using animation nodes

This answer is based on Omar Emara's Answer
, so be sure to read it before you move on as I won't explain everything that have been answered there.
This is the loop to generate polygon

However, this loop doesn't take the distances between vertex points into account so I modify the loop to use the Distances output from Find Nearest Points node. As per documentation

Distances - The distances between the output points and the input point.

Input point is the inputs Vector, this outputs give you a list of floating point (the distances) with length same as Amount input where the first element is always zero as it is the distance to itself. With that we can compare each value with distance threshold.
not any(set(p) == polygon for p in polygons) and all(d < radius for d in distances)

radius is the distance threshold. all(d < radius for d in distances) will make sure that every value is inside the radius or below the threshold.
You can see where each node connecting to what node. Put that code on Expression node.

By adding this new condition input in generator, we only add polygon indices that met certain distance threshold. You can ignore the Distances List output of the loop for now. Here is the comparison side-by-side on Material Preview mode.

In this example I'm using Circle Mesh and scatter them using Vector Wiggle, however you can use particle system as well. The node setup is pretty much same as Omar's, use Combine Mesh to generate the polygons.

To generate edges we can use Find Close Points node (Mesh > Operators > Find Close Points), use mode Amount or Distance whichever that suit your need.
Here's the final result rendered using Viewport Render. https://imgur.com/a/wLhA6HB
. I use three Find Close Points nodes setup with different parameter and different material.


Keyframe toggle visibilty for child object using parent object in outliner?

Consider a [driver] which assigns to the child render state the value of the parent render state.  If you have never done this before it really is the best.

All the navigation described below might best be understood with a video at some famous video site ... Search Blender Driver Tutorial... but I will provide a modest navigation here.

Use the other mouse click to bring up the menu on the EYE of the child to add driver.  When finished the purple circle will appear as depicted below.

Switch to the graph window as indicated above and view the [drivers] via the button next to the word Key on the menu.  Click on the Restrict Render on the left side to see the driver settings.

Make these settings.  Just as in the image above.

Type: Averaged Value.

Prop: name of your parent.

Path: hide_render (which was copied as a data path)

Thus you  need to key frame the Restrict Render Eye of the parent only.

There are ways to copy and paste drivers from the menu of the Eye of the child.  You need to do this for each of the remaining 20 or so child objects.

In your case you have parented the children to the parent. The driver mechanism can allows you to choose any object to be the source of the render state.


Align selected face parallel to a specific axis

Holding Ctrl while rotating snaps in 5° steps.

RYCtrlMouse-Movement

Enabling Snap during transformation has the same effect

Another way would be to scale the vertices of a face, with all vertices of the face selected:

SZ0Enter

Related:

Is there an easy way to align two objects on a specific axis?
Snap_to_Mesh


3D view "orthographic" isn't really orthographic?

The view is orthographic. I think what you're seeing is an optical illusion. The angles you have described as 'low' and 'high' are in fact the same, as shown below where I have rotated the the image and inserted horizontal parallel lines:

The lines marked in red are also of equal length and parallel.


Delete the cycle animation modifier from several objects

I wrote the following python script which should accomplish your mission (http://web.purplefrog.com/~thoth/blender/python-cookbook/remove-action-modifiers.html):

import bpy

def mission1(obj):
    if obj.animation_data is None or obj.animation_data.action is None:
        return

    action = obj.animation_data.action

    for fc in action.fcurves:
        print(fc.data_path)
        for mod in fc.modifiers:
            if mod.type == 'CYCLES':
                fc.modifiers.remove(mod)

for obj in bpy.context.selected_objects:
    mission1(obj)

( Instructions for how to run the script inside blender )

One shortcoming of this script is that the fcurves window does not immediately update to display the alterations, although it does update when you start scrubbing the timeline.


Cannot animate viewport/render visibility

You can animate the "Show in Render" and "Show in Viewports" flags here:

For entire collection, you can link the Animation Data from one object to the others. Note that this will override other keyframes set on destination objects.


How to create realistic blinking/shining stars in BGE?

One of my favourite tricks is to use what I call noise layers. So let's find/make a starry image.
Now we simply have to make it flicker! I happen to know that if you get another bit of noise and move it across behind a star-field, so long as the stars are sparse enough, you can't tell. So with a UV scroll script and two UV layers, you can get a reasonable effect

So here you go, here's a blend:
http://www.pasteall.org/blend/40447


Why does operators bl_idname have to contain 1 dot?

This rule may seem arbitrary, but looks like there's already some structure in existing operator's names. All registered operators will end up within bpy.ops module, and we can see that identifiers directly under it is reserved for modules/namespaces further categorizing the operators:

bpy.ops.action for animation data,
bpy.ops.object for object, regardless of data type,
bpy.ops.ui for user interface,
etc.

When we need an operator to quit Blender, it's available, grouped with other window management operators.

At first I, too, didn't bother with naming, putting everything under bpy.ops.object. But namespace distinction really helps to document, browse and search all the operators. Predictable identifier + Python console's Autocomplete feature made it easier to discover and build upon existing operators, including those from other addons.

I don't know if it has any other significance, but self-documentation alone made the naming rule worthwhile to enforce.


Flat surface not being shaded consistently across quads

While deactivating the "Auto Smooth" helps at the moment, i believe that something else happened and messed the normals up.

In my humble opinion i think that the surface should be fine even if the Normals are set to "Auto Smooth", in that regard i checked and found that if you press Alt+N and use the "Set From Faces" option, the surface normals are corrected.

Here the visual confirmation:


This has to be subdivided to work. Add a subdivision-surface modifier to the object being rigged, and set the view and render to about 3-4. Also, this should be set to simple subdividing if you want the geometry to look the same.

If it does not look the same, Ctrl+R in Edit Mode, and slide the loopcuts to the sides of the original geometry, this will fix your issue.


Blender freezes when rendering,building the last samples

For laptop users:

On any render, my computer (the whole screen) would freeze about 5 seconds, and after some seconds it would freeze again.

To fix, I had to go to File -> User Preferences -> System and on the bottom-left side I picked CUDA for the "Cycles Compute Device", and this fixed the problem.

It seems very noob-ish because it actually is! And it worked for me since I am a beginner, I hope this helps another beginner searching this on Google.


UV Map a logo on an object not showing right

Your material doesn't include the texture map at all.  You need to mix it in somehow.  Here's an example where I'm using an image with a solid color:

You need to use the UV coordinates as the vector for a Texture Map, which you'd set to the Monster logo.  Then, mix it with the green color and use that for your diffuse.  Hope this helps!


How to create a node group with a custom node tree?

There's a reference implementation for a custom Node Group for CustomNodeTrees, used in Lukas Toenne's object_nodes branch. While part of it is compiled, the UI is implemented using bpy's PyNodes ( A CustomNodeTree, same as Sverchok / AnimationNodes ).

If you are comfortable with Python then having a reference implementation may be enough, the whole concept is a little complex to try to convey as a single answer because it involves describing many sub problems. In short, it is possible, but it's not trivial. you'll have to deal implement a few things:

How does a node Group behave when copied/duplicated
Implement the code to generate a node Group from the selected nodes
Creating a NodeSocketInterface (What's that?!)

Most of these can be copied almost verbatim from the reference implementation but others will likely need some modifications to fit with your own CustomNodetree type.

Alternate implementation

In Sverchok we recently pushed a new group node implementation (codename Monads): see anything imported by /nodes/basic_data/monad.py. Warning, expect some complex dynamic programming.

It takes a slightly different approach, it is not final but includes a lot of the same functional Operators / UI behaviour:

socket recast
delete socket
rename socket
make nodegroup from selected.

I don't consider this a reference implementation, but it may be of some interest.


Blender output file size versus Zoom recording file size

I've tried to import a zoom-recording (downloaded from the internet; 53MB) in Blender 2.91 and the rendered output file from Blender was only slightly larger (55MB). Maybe you can try version 2.91?
However, if your only need is to silence some part of your video, then you can easily/fast do it with ffmpeg. The command is as follows (all on one line):
ffmpeg -i zoom_0.mp4 -af "volume=enable='between(t,0,10)':volume=0, volume=enable='between(t,20,30)':volume=0" zoom_silenced.mp4

The input-file is zoom_0.mp4. The output-file is zoom_silenced.mp4. Two periods are slienced: from second 0 (begin) to second 10 and again from second 20 until second 30.
You can find more information at: https://stackoverflow.com/questions/29215197/mute-specified-sections-of-an-audio-file-using-ffmpeg. There are also lots of YouTube-tutorials on how to install ffmpeg.


Is it possible to change Y-axes shortcut?

It's not so hard as looks like, you can set it in "User Preferences" ("Input" tab):

You need to find the drop-down list "Transform Modal Map" (it is near end of the list)
There isn't Y-axis in it, but you can add and setup it by pressing
"Add new" button.
Next, select "Orientation Y axis" and setup shortcut

  Hey, what about "Shift-Y" which stands for "transform along every axes
  BUT Y"?

For "Shift-Y" analog use Orientation Y plane. This is a final setup:


https://docs.blender.org/manual/en/latest/editors/timeline.html
Here is the Blender Documentation where is explained the concept of Sub-Frames, and an image of what to do to activate it, when you check it, you will see how your actual frame field changes from a "1" to a "1.0"
You can activate it from Timeline or Graph Editor

Hope this solve your animation problems ;)


Using particls to simulate automatic gunfire Cycles

Here is a very simple test that shows how you could defy gravity and animate particles to "gunfire" bullets:

this setup  could work like this:

here is a test blend file:


How to precisely set many camera positions for rendering?

Set the camera (relatively) where you want it with CTRL + ALT + NUM0, then make sure the camera is selected (it doesn't matter if you exit the view). Then, re-enter camera view mode with NUM0. Press N to bring up the transform toolbox, and you can fine tune it from there. Either drag the sliders, increment with the arrows, or enter number values.


Try to uncheck Load UI before you open the project in 2.80

Hope that helps.

Good Luck


How to Create Connecting & Disconnecting Fluid / Bubbles?

I'd recommend using Meta-Balls and a particle system in this case.

Step 1: We need a few Objects in the Scene to get started.

a Plane (our Emitter)
a Metaball (our Particle Object, this will be duplicated)
a Force Field (to get some turbulences going)

Step 2: We then add a particle system to our Plane, and set it to render an object, there we put in our meta-ball.

Step 3: We adjust some settings to our liking, i also turned off the gravity influence, then the particles will start rising. Mainly i'd change:

random particle scale
random velocity

We then get particles that emit at different speeds and sizes, once they are close to each other, they will merge, as metaballs do.

I've added my file for you, in order to get it looking nice i had to change the scale of the metaball object and particle, otherwise the divisions of them won't seem to work well and i got just some weird triangles floating around.

I'd recommend to take a look at the wiki regarding metaballs too (mainly resolution and threshold): https://docs.blender.org/manual/en/latest/modeling/metas/index.html?highlight=metaball


How to create automatic follow-up (delayed) animation for child objects?

You can use the Slow Parent Option available in the object relations properties.

After setting up you parent/child chain of objects go to each object individually and under the Properties Window > Object > Relations Extras tick Slow Parent option. Bellow it set the desired delay in frames.

You can select all relevant objects and click the properties wile pressing the Alt key to set the values for several selected objects at once. Alternatively right click and choose Copy to Selected.


How to subtract cylinder from a cube, add bevel and make it all smooth

I'd recommend starting with autosmooth along with a weighted normals modifier to help the result after
a bevel modifier.
Here is my cube's modifier stack:

Here is the result:


How do I make hair particles color independent from emitter?

(this tricked also me) you need to add at leat two materials to the emitter mesh and then under the emitter setting you'll find both the materials (just select the one for the hairs)


Change material on multiple (different) objects simultaneously

Not exactly, no. But there a few workarounds.

Object Groups

You can quickly copy the materials from the active object to all selected objects with ⎈ CtrlL> Materials.

Combining that with groups, you can "store" selections of objects for later. Group the selected objects together with ⎈ CtrlG, then update the materials of the group by activating the object with the updated materials and pressing ⇧ ShiftG (to reselect the group) then ⎈ CtrlL> Materials.

Node Groups

I know you specifically asked about switching materials and not about altering a single material. However, if you relax that constraint a bit you can use node groups to achieve this. Put the entirety of your material in a node group (A to select all nodes, then ⎈ CtrlG), and voila:

Note that in this example, the objects have separate materials: "Material A" and "Material B". They could instead share the same material, or have multiple materials each, some shared and some not. The link is through the node group.


How to remove the effect of current rotation while rotating a bone (Python)?

Relative vs Absolute.

The "accumulative" nature is the nature of a 3D transform, ie rotate the bone from where it is by this much about an axis.

Whereas you wish to set the absolute rotation.

As well as using method in accepted answer, contend you could also pre-set the rotation to zero before applying any transform, for example if the rotation mode is euler

posebone.rotation_euler = (0, 0, 0)

Zeroing before applying a rotation will result in an absolute value.  Could say, absolute is relative from zero.

Matrices

The following will zero rotation of a pose bone, regardless of its rotation mode, Euler, Quaternion or Angle Axis.

Using matrices can zero the rotation by finding the inverse of the rotation part of the matrix and pre or post multiplying. The inverse of a rotation matrix is the relative rotation to apply to rotate back to zero.

The top left 3x3 submatrix of a 4x4 transform matrix is the rotation part.  A rotation matrix is orthogonal, hence the transpose is also the inverse (a cheaper calculaton)

>>> pb = C.object.pose.bones['Bone']
>>> M = pb.matrix_basis.to_3x3().transposed().to_4x4()
>>> pb.matrix_basis @= M

To set the rotation from whatever to 22 degrees about Z in whatever rotation mode

>>> R = Matrix.Rotation(radians(22), 4, 'Z')
>>> M = pb.matrix_basis.to_3x3().transposed().to_4x4()
>>> pb.matrix_basis = R @ M @ pb.matrix_basis

or similarly using below as rotation matrix, will set a pose bone of any rotation mode to the euler equivalent without the need to set the mode.

>>> R = Euler((0, 0, radians(22)), 'XYZ').to_matrix().to_4x4()

Why?  what if I don't want all the bones changed to 'XYZ' Euler, and instead want to keep all as assigned, using above can keyframe with something like

pb.matrix_basis = R @ M @ pb.matrix_basis

if pb.rotation_mode == 'AXIS_ANGLE':
    pb.keyframe_insert("rotation_axis_angle")
elif pb.rotation_mode == 'QUATERNION':
    pb.keyframe_insert("rotation_quaternion")
else:
    pb.keyframe_insert("rotation_euler")


Keyframing specified object location at frame from csv data

Data to blender edits.

Get the scene object ob by name. Skip if not present in scene.
Add location keyframes at each frame  using

ob.keyframe_insert("location", frame)

Read the docs:

Edited script.

import bpy
import csv

scene = bpy.context.scene

csvfile = open('FilePath/Sphere_Anim.csv')
readcsv = csv.reader(csvfile, delimiter=',')

for i, row in enumerate(readcsv):
    if i == 0:
        continue
    obname = row[0]
    # get the object
    ob = scene.objects.get(obname)
    if not ob:
        continue
    loc = [float(x) for x in row[1:4]]
    # set location
    ob.location = loc # local
    #ob.matrix_world.translation = loc # global
    frame = int(row[4])
    # insert all location keyframes
    ob.keyframe_insert("location", frame=frame)

Related.

Fast keyframe insertion


For an object to be visible in cycle it needs faces. Vertices and Edges will not render. There are many ways to do what you want.

One option is to use curve objects.

If you assign some bevel depth to a curve it will become like a thin string. Using an emission shader will make it glow on its own.


In CYCLES select the mesh you want to be transparent. Go to the Object header and check the Transparency box.

Go to the Material header, add a new material and decrease the Alpha value in the Settings panel as pictured below.

You may also change the color of transparency.

In BLENDER INTERNAL do the same things in Object header as shown above. Next go to the Material header, check the Transparency box and decrease the Alpha value in Transparency panel.

If your model is one solid mesh (does not consist of many loose meshes) you may add a transparent material to any part of it (any faces) you like.
Create the transparent material (using methods I've shown above) and assign it to the desired faces.

Here's the result.


Is there a way to get the dimensions of the camera?

As far as I know camera objects don't have geometry, and hence no real world Blender Units dimensions.
The viewport size of a camera object depends on a variety of combined factors.

The camera object size reflects the render resolution set in the
render properties panel, changing proportions according to the image
size.
Visual scaling factor, controlled by the Size property in the Object Data panel > Viewport Display > Size.
The Focal Length will also affect the camera shape by adjusting the angle of the sides to reflect the current view field.
Lastly the Camera Shift X and Shift Y properties will skew its shape to reflect the applied panning effect.

As pointed out by Jaroslav Jerryno Novotny you can get camera corners from the python API with camera_obj.data.view_frame.
For more info see https://blender.stackexchange.com/a/28561/7777


Render layers added back in order after applying glow in compositor

As it turns out, It seems looking back at this that the whole way I went about adding the glow to the eyes only was ineffective.

This question Highlights a much better solution to give the material a separate index pass and using ID Mask then apply the glow directly to the eyes.


Why does removing the dot from bl_idname break my addon?

It was that line!

Can anyone tell me why I'm not allowed to change bl_idname from "export_waveller.vert" to "export_waveller"?

My only guess is that this string is used as a token somewhere, and changing it creates some disparity.

I don't see why resetting factory settings doesn't cure this...

Anyone?


You need to sort the vertices:

In Edit mode, select the vertex that you want to choose as the first one, then ShiftS > Cursor To Selected.

Select all, go in the Mesh menu > Sort Elements > Cursor Distance.

In the Operator box, click on Face. Now it should work. If you want to check the vertices numbers, go in the Preferences > Interface > Display > enable Developer Extras. Then in the 3D view > Viewport Overlays > Developer, enable Indices.


i found a solution. This is all because of Intel HD Graphics dirver, which works together with my Nvidia Geforce graphic card.

Step to solve:

a. Press Windows Key + X, choose Device Manager.

b. Expand the Display Adapters.

C. Right-click on the Intel HD Graphics graphics card driver and click on Uninstall.

Then i start blender and all works fine!
But what happen with Intel craphic driver, i don't know)


What are your Scene Rigid Body World settings?
Have you changed the defaults to use a higher number of Steps Per Second?
I have tried to replicate your setup (with Cylinder collision shape) and got a stable simulation with 60 steps per second (the default) but got "bouncing" behaviour when I increased that to 600 steps per second. I think this could be an issue with how the active rigid body is interacting with the animated passive rigid body - since the animated one only changes position each frame but the active one is simulated many times per frame so that the 'jumps' in position of the surrounding mesh on each frame change 'kick' the cylinder on each frame.
I need to do more investigation into this but if I can get together a suitable test case and prove out the circumstances I'll raise it with the developers as a potential bug.
Simulated at 60 frames per second  :

Simulated at 600 frames per second (should be more stable) :

Note that the simulation with more steps should be more stable but is producing more unexpected 'bounce'. This appears to be due to the interaction with the animated surface and may be a bug. 6000 steps per second (which should be more accurate) produces an even more unstable simulation!

Taking this a step further, I replaced the keyframe animation of the rotation with a Motor Rigid Body Constraint - to keep the animation all within the simulation. I ran this with 6000 steps per second with the following result :

As you can see this is running fine without any bouncing on the collisions. To me this seems fairly conclusive that it's the interaction with the keyframed animated mesh which is causing the 'bounce' in my case.


how to delete duplicated brushes in sculpting mode

Click on the Brush you wish to delete. In the tool panel and Shift click the X to delete. You will see a zero appears before the brush name in the pop-out tool-shelf. If you save and re-open or Revert - the brush will be gone...

You can find a link to an Add-on with more brushes on Blendernation
Brushes are essentially just textures that use the alpha cancel. You can use textures from other programs like these at Pixologic or just create your own in your favorite drawing program...

Ben Simmonds has also got a few .Blend files with brushes that are worth exploring - like this one on Blendswap. And to answer your last question I can quote him " ...you can append these brushes into your default blendfile to have them permanently avaliable. Just load the default blend file, then hit File>Append, select the brush blend file, select brushes, and shift-select the two Trim brushes inside. Click Link/Append from Library, and the brushes will now be avaliable. Then just save your startup file (Ctrl-U) to update the default .blend file."


How to draw a text using the bge module I

I´ve just realized that I don´t have the file called "Zeyada.ttf" so my problem is in the line:

 font_path = logic.expandPath('//Zeyada.ttf')

Apparently I need a ttf file to present the text and it makes sense, every text has format.


What is the purpose of apply scale option?

Scaling in object mode can be used for animation and other purposes. Sometimes you might change it by mistake instead of changing it in edit mode, so that's the purpose of applying scale.


Problem with Boolean Difference Overhang

I understand it can take awhile to wrap your head around it.  I create all my 3D printed models using Blender 2.91.  The Boolean operator has been greatly improved using the exact and self options (Although the Fast option will work with this model just as well)

1st) The overhang is just the bottom face. Should print just fine not sure if your printer will require supports for the hole though.

2nd) Animation of doing Boolean - Difference with your object.

3rd) Animation of overhang location and how to find it.

4th) If you want to display the hole during edit mode you have to enable it or apply the modifier)

5th) Exported to slicer note: not sure if your printer will require supports for the hole or not.


The Intel® Open Image Denoise is only available in Blender 2.81 and later as compositor node. In order to use it, enable Denoising Data in  View Layer Properties > Passes.

Switch to the compositor and add the node through Add > Filter > Denoise. Connect the Image output socket from the Render Layer to the Image input socket of the Denoise node. Use the Denoising Normal and Denoising Albedo from the Render Layer node as input for the Normal and Albedo sockets of the Denoise node.

The build-in denoiser for Cycles can be found in the View Layer tab, when Cycles is enabled as render engine.


How do I use the alt left-click shortcut to select an edge loop without making the closest vertex active?

The problem is not that you have an active element, but that the active element is being used as the pivot point for your transformation.

Go to the Pivot Center dropdown in the header of your 3D View, and select 'Median Point'. Then the selected elements will scale about their average location. (My shortcut is keyboard .)


It should be an option in the preferences (menu 'edit' and 'preferences').

Check global undo:


GPU render (OpenCL) is not creating an accurate composite- it only renders top "layer"

It appears that reducing the size of the textures allows it to render.  However, the output is distorted by noise lines.  No clean image is produced even if I resize the images.  Odd that this would happen with a 4gb card and not a 1gb card.

Perhaps Vulkan will yield better results if it is implemented.  Given the lackluster results with OpenCL, it may make more sense to construct a new method of rendering rather than fixing a broken one.

Update:  I just tried out RC 2.78 and it works!  It produces an accurate image with a GPU render in half the time!


What exactly do you mean? You can't navigate the camera with gizmos if you are viewing through that camera. The Gizmo wouldn't even be visible. Could you show us a screenshot?
Update: You must be hitting the heads or the axis. You are supposed to grab around them. Clicking on the axes will send you to that view and out of camera mode
If you want to use those with the camera you would have to move the camera each time to those new locations. There is a shortcut where the camera moves to see what you are seeing in the viewport. Hold CTRL and ALT and Zero on the number pad.


Face loop select options. Selecting faces between two faces

To choose the direction the loop select will go, you should be in face selection and alt select an edge in the direction you want the edge loop to go. If you want it to go vertical then alt select the top edge while in face selection.


Bmesh: running bmesh ops after deleting geometry often results in an error

I'm inclinded to think this is a bug and I have reported it.

The context paramater you pass to bmesh.ops.delete would appear to correspond to deleting faces (DEL_FACES), this isn't documented clearly but appears to match with the enum defined in bmesh_operator.h. Ideally this enum should be defined in python for use with this operator.

By passing a geom list as well as a context, there are times (not every time) when an item can be deleted multiple times. It may be expecting to use one of these paramaters - not both.

You can verify this by deselecting all geometry before running the script. Removing the context paramater or changing it to 1,2 or 4 also works. It would also appear that if the selected items matches the geom paramater there is no problem, you can test this by deselecting the faces in your loop and selecting the faces as you add them to the list.

So this also works -

delete_first = []
for f in bm.faces:
    f.select = False
    if f.calc_center_bounds().y < 0:
        delete_first.append(f)
        f.select = True

bmesh.ops.delete(bm, geom=delete_first, context=5)

Edit:
From the response to the bug report it seems that passing duplicate geom to bisect_plane is the cause of the duplicate error message, though I seem to have trouble creating another scenario that causes a crash. The bmesh data created by the bisect isn't guaranteed to be appended to the end of the geom list so copying the geom based on the index relative to previous list lengths is creating duplicates. You will need to look at what you want to do after what you have so far to see how to work out another way to update the geom list.


How to Make Particle Hair Emission Dissipate and Regrow?

I made the render setting "Line" and adjusted some parameters.


Object looks fine in rendered mode, but appears black in material mode

Procedural textures (such as noise) will not render in Material Shading

  From the Manual:

  Shading refers to the way objects are drawn and lit in the 3D View.

  Rendered

  An accurate representation using the selected Render Engine and lit with the visible scene lights.

  Material

  A fast approximation of the applied material. Some effects, such as procedural textures may not be shown.

  Textured

  Shows meshes with an image applied using the mesh’s active UV Map. For Cycles materials, the image is the last one selected in the Node Editor. For other render engine’s, the UV Map’s applied face texture will be shown.

  Solid

  The default drawing mode using solid colored surfaces and simple lighting.

  Wireframe

  Objects appear as a mesh of lines representing the edges of faces and surfaces.

  Bounding Box
  Shows only the rectangular boxes that outlines an object’s size and shape.

When you have a mix node, the color connected used in the bottom socket becomes the one used in the 3D viewport's material shading:


Animating Z-transparency in the game engine for multiple objects sharing the same material

You can play a material action on each of the objects. The actions play independent from each other even when you use the same mesh and/or material.

You can indeed animate the object color too.


If your bones are named properly and uniquely, you can filter them by Select Pattern:

Go to 3D View menu, Select > Select Pattern..., then type '*.001', press Enter, then delete them all.

Or you can target them by Outliner:

Select the Armature object, switch to Edit Mode, go to Outliner, set Type to Active, then search .001 (the naming suffix to each duplicate and automatically given by Blender). Then B to select all bones, then go to 3D View, press X, choose Delete Bones.

If the methods above don't work well in your case, you can try Select Similar feature to select them quickly:

First, select the root bone, then press Shift G, choose Children, then delete them all. (For those with no children, usually you have to select them manually)


How to preserve UVs when using Decimate?

To keep UVs with Decimate Modifier you need to use Planar dissolve and enable UVs in Delimit section of Decimate modifier


2.8 builds are work in progress so that they can test features and introduce work that needs to be considered - but these builds are not complete and finished for production, and they might not be ready for all use cases just yet. I also wonder about where the wireframes will come in since I use them for some cases when painting and masking, but for now I stick to the 2.78c where my addons work.


How do I match an object's rotation based on the other object's face's rotation?

You can select the face you want the cylinder aligned to and then press Shift+Numpad 7. this will align the view to the face in a top down perspective.

Afterwards you can create a cylinder with the checkbox "align to view" selected.

In this case it is also good to know, that you can create a Custom Transformation orientation with pressing Ctrl+Alt+Space while selecting the face.


Why does performing any translation on parent bone move entire mesh?

Because the parent bone moves all the other bones, and (I'm assuming) those bones are all weight painted to modify the mesh via an Armature modifier.  Is there a particular issue that you have with this setup, or another goal you have for this?


First, select the path and apply its Rotation & Scale with CtrlA, otherwise it will make your object rotate. Go in Edit mode and in the N panel, bring back its vertices radius to 1 to correct the applied scale (and Tilt to 0 unless you want one).
Put the object at the same position as the path's origin: Select the path, ShiftS > Cursor To Selected, then select the object, press ShiftS > Selection to Cursor.
In the Curve modifier, find the good Deformation Axis, which seems to be X.


Can i automatically add textures to a large amount of materials?

Script.

Similarly to How can I connect a texture node to a material with Python? the script below, Looks for all materials whose name has a corresponding image (note the ugly check for "_dds" to ".dds") Then for all material, image pairs adds an image texture node and connects it to the BSDF node.

Script assumes you have already loaded in the images, a simple process of multiple selecting images when opening.

import bpy

for m in bpy.data.materials:
    img = bpy.data.images.get(m.name.replace("_dds", ".dds"))
    if not img:
        continue
    if m.use_nodes:
        # done this already??
        continue
    m.use_nodes = True

    nodes = m.node_tree.nodes
    bsdf = nodes.get('Diffuse BSDF')
    if bsdf:
        # add image texture
        teximage = nodes.new('ShaderNodeTexImage')
        teximage.image = img
        #link to bsdf
        m.node_tree.links.new(bsdf.inputs['Color'],
                teximage.outputs['Color'])


tool "draw" not found for space "VIEW-3D

Solving this issue (not exactly an issue) in Blender 2.80 is actually very simple.

Before opening the Sculpting tab, go to Layout tab and be sure that in the Outliner, the reverse triangle icon on the left side of your object name, is highlighted. It should be gray in dark theme.

If not, simply click on it and select your object. Then open Sculpting tab and everything will be fine.


What are the advantages to animating eyes directly as objects as opposed to via an armature?

I will try to list some advantages which aren't opinion-based. There are basically four different methods of rigging the eyes.

Having a separate control object/armature for the eyes

Just for the record, this would be by far the worst idea. It includes
(1) having an extra armature for the eyes which is connected to the main armature
(2) having an extra object to control the eyes in conjuncture with another armature
(3) creating a rig without any armature.

To animate (in Blender), armatures have many benefits.

copy and paste poses
mirror poses
inbetweening tools (breakdown, push, relax)
propagate poses and using libraries
Even after connecting the armature to geometries, the bones rest position can be modified without a problem. If you are using standard objects which are connected by parenting, moving any of the will be a lengthy process which involves unparenting and reparenting.

Another disadvantage of multiple objects in combination with armature can be dependancy problems, where the order of influence is not supported by the way Blender is designed.

This method should only be used, when the desired deformation is not achievable with bones and shapekeys, in which case helper objects (like Lattices) are unavoidable. For non-deforming eyes, there's no reason to use anything other than bones.

Parenting both eyes to the head bone

This is includes most of the aforementioned problems. To reiterate

You won't be able to see all animation-relevant keyframes easily; the action editor works best with a single armature. Otherwise you would constantly have to select both objects to see the selections in the dopesheet, or find another way to organize the dopesheet. In extreme cases Animation Curves can be rearranged by renaming the, while the order in the dopesheet will depend on the actual objects' names.
You can't use the pose tools mentioned above. (Mirror, Copy, Pose ...)
You will have a hard time synchronizing events. The eyes and lids are always going to move in conjunction and it is important to have good access to both at the same time.
Pose bones have selection priority over geometry. If your meshes are not well positioned next to bones, you will have problems selecting both equally.
If you select a mesh-type object after selecting an armature, the armature gets highlighted as one, and you cannot see which bones are selected.

Parenting each eye to its individual control bone

The advantages mentioned above: the pose tools, the action editor behaviour, no dependancy problems
Access to bone constraints for the eye controls.
Scripts which interact with user selections get easier the bones matrix functions all act the same and the examined selection is a subset of the one armatures pose bones.

Controling the eyes with a single armature modifier

(*As expected, I'd prefer this approach wherever possible.)

All of the advantages of the previous method.
The influence of rig can be toggled on and off by toggling the visibility of the armature.
The eyes transformation are no longer relevant. Their origin can be set to (0, 0, 0). If they are accidentally moved, they can be reset. In Blender, on can not know where an objects origin is from only it's transform values. Next to Direct and Inverse Parenting the original location of the object will play into these values. With bones, their rest pose position is automatically "zerod out".
Exporting a rig (to fbx for example) is "safer", when all objects are zerod out. Combinations of parents can produce transformation which have to take many values on many objects into account (see previous bullet point). This is not always handled correctly by all exporter or other systems.
Finding the geometry in the outliner is easy, because it won't be hidden in the hierarchy.

Armatures work with Blenders linking and proxying system.

As always, there are exceptions: For some quick straight-to-the-point rigs, manipulating the objects may be an option.

I will try to include some more information, based an a comment:

  [eyes (which are not controled by an armature)] are controlled with an eye target, which the objects damped track. This is [...] basically the same as sticking a damped track on bones.

This holds true, unless - later on in production - more features get requested.

If the eyes are no radially symmetrical (due to a texture update), they will need an Up Vector, otherwise they would rotate in their sockets. This can be easily done with the Pole Vector of an IK constraints with bones. With objects, you will need more steps.
If the model of the eyeballs changes and needs different handling of various rotations, all previous animations are lost. With an armature, on could easily keep the animated Control Bones and transfer the data over to the deformation bone with a driver.
If the animation if supposed to be fixed1, there are no available controls. The eye_targets are going to be to far away to properly control the eyelid and eye interaction. In the case of armatures, and additional control bones can be added into the hierarchy, between the deforming bone and the bone, which is oriented by the target.

Also...
- the empties are still not going to be in the armatures action, making the pose tools (copy, breakdowns, mirror) and linking system (appending actions) useless.

1 An animation fixer is the animation assistant who will do the fine tuning on finished animations. Doing slight tweaks to prevent wrong interpolations or intersections of character and props.


Increase curve resolution

As stated in the Blender Artist thread you linked, you'll need to guarantee enough resolution to your curve in order to see the effect of the taper object in the starting and ending tip. In your image you are using something like 12, while the following image has a value of 512.

If you need to keep the polycount low, you could also vary the resolution of the curve only locally. A possible workaround could be yo interpose a "strategic" handle very near the tip without altering the overall curve aspect. See the difference between the had and the tail in the image below despite the curve object resolution is left untouched. The following curve has 3, not two handlers:


Does the compositor have a node that will let me switch between images containing alpha channels?

Here's what I came up with: Stripping the Alpha channel only to recombine it later using mix nodes. Changing the Value node does the switch:

If you group the nodes it becomes simpler to combine multiple instances;


Unchecking shadow in Ray Visibility isn't removing shadow

It's not that it's casting a shadow, it's that it's not able to cast light directly downwards because none of it's faces are pointing downwards. This creates an area with less light (shown in red below):

A better solution to this would be to use a sphere as your emission so that light is pointing in all directions.


The Python tooltips are currently a bit broken for property groups, which also affects the commands displayed in the Info area.

The correct command for setting this option for the current view layer is:

bpy.context.view_layer.cycles.denoising_store_passes = True

If you want to refer to the scene and view layer by name:

bpy.data.scenes['Scene'].view_layers['View Layer'].cycles.denoising_store_passes = True

Whenever you see a Python tooltip with an ellipsis (...) the command in the Info area is inaccurate.

The issue is known and reported in T69803.