I assume you are using Hair Dynamics for your Particle System to simulate the movement. Thats really the only way I could think of making this effect. The problem is that you need get the velocity of the particles from that simulation. As far as I know thats impossible, because the particles are not moving at all, they are just "bending". The velocity of hair particles is their direction. The position of the particles (their roots in particular) is also always the same, so they don't move either.
My First working Attempt:
I first found a way to make the effect you wished for, but it is restricted to a plane and the absence of light. Maybe with more Blender knowledge (maybe with Lighting Groups or compositing) its possible to expand this concept.
I used tubes as my particles and only one sunlight directly from above. As the tubes stand still (have no potential (bend) energy) the sunlight will shine right through them and won't light them up, but as they rotate/bend sideways they will catch sunlight and light up. I used a mix from diffuse and translucent shaders to make the tube light up on all sides.
This will only work if in Cycles diffuse indirect light is turned off and will give little control over the brightness.
My Solution
In my second attempt I got it perfect, it work an all curved surfaces and with every setup. It allows for complex lighting, complex materials and complex particles. Its based on the Normal Edit Modifier and Cycles Material Nodes. Here is a demonstration of the effect:

I again used the Hair Dynamics with gravity turned off for them. The particles can be anything you like, you just have to have some part of it with only an emission material on it.
The concept is following:
As the particles bend their normals rotate. If you compare the normals with the particles velocity (direction for hair particles) you can compute the bend angle. From there you can do anything you want with it. But its not that simple. This way it would work with tubes (because they have no normals facing in one direction) but not with cubes or more complex shapes. The key to the solution is the Normal Edit Modifier in combination with particle rotation. If configured correctly it will give the desired effect. The problem why we need particle rotation is really visible if we try to use tubes. They will light up on two sides and stay dark on the other to sides, because the normals to the side stay perpendicular to the initial particle orientation. To reliably use the normals we need them to face always the direction of the bend or the opposite. The setup for that is shown below.

The particle has a material that emits light on rotation and a vertex group thats marks the part that has the material. The Normal Edit Modifier is set to Directional and parallel and the target is the Empty directly at the same position as the particle object. That way only the offset controls the normals. It is set to make the Normals face in the Z direction, while the particle itself is facing the Y direction (remember this can be very complicated if you rotate the particle object. The Edit is constraint to the vertex group only to not interfere with other materials. Now the object can be used as hair particle with hair dynamics to show the movement. Remember to check the Advanced checkbox in the Particle System Settings and activate Rotation. Also turn of gravity, as gravity will change the resting position of the particles after the simulation starts.
The material itself is not too complicated. It first takes the dot product of the normal and the initial particle orientation. If the Particle didn't move the angle is 90 degrees, so the dot product will be 0. As the particle moves it will go up or down. The first math node will make the value always positive (I don't it is actually needed in this particular setup). The following two math nodes will map the values to a brightness scala. I used Power here to increase the contrast, somewhat similar to gamma correction. The output goes into the emission shader.
Extension:
If you want to have your particles rotating in phase you could make the normals face the same way, the particles face (Y direction in my case) and change the math in the shader to make the emission brighter if the dot product is lower instead of higher in this case. The node setup for that looks like this:

Note that there is a new node to normalize the velocity vector. That is actually fairly important here, while it can be omited in my original solution. The reason for that is the Arccosine Node which needs the values to be in a specific range (-1 to 1). The following Absolute Node seemed neccessery after I failed to configure the Normal Edit Modifier to make all Normals face one way. For some reason there were always some Normals in the exactly opposite direction. The Arccosine Node then transforms everything into angles. Note that it was not neccessary for my original solution to include this conversion because it operated in the valuerange where the angle and the dot product are roughly proportional. The output of that is the bend angle and can be mapped like before with some math nodes to a brightness scala. You could also use that angle in combination with a colorramp to make some colorful effects.


Creating a grid of tubes following a mathematical surface

This first thought was not bad. This can be done with hair particles, e.g tiny uv spheres, put at vertices, but you need to know their exact number first. Then convert particles to mesh, remove the surfaces' interior deleting vertices inside or remove the whole surface and you're done.


The black face's normal is flipped so you have to recalculate the normals (Toggle into Edit Mode Tab > Select All A > Recalculate Normals Ctrl+N)
and also move the light source to see that the texture is there and it's just bad lighting causing the black face.


Installation

The addon installed fine for me, no idea why you are getting that error message.

Firstly I copied the code from link provided pasted into and ran from  text editor, to test,  no issues.

Then I saved the file as blender_collections.py into my Desktop folder, hit install addon, chose the file, once again no issue

Thought how are you getting that error message, then it twigged, if you hit the download button the file is saved as blender_2.8_boolean_collections_plugin_by_ispheria.py and there is your issue.

The file name has more than one period "." in it. This is the issue.  Only have one period in the file name before the py extension.  Python uses the dot to separate modules, and objects contained therein, eg bpy.props where both are modules.

Recommend you rename the file to boolean_collections.py and it will install.

Note

Always pays to check the homepage of the addon. In this case on blender artists forum.  The same issue has been raised.


Here's a solution to launch ffmpeg automatically following Blender's completion of rendering out an image sequence:

import bpy
import os

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

ffmpegPath = "YOUR-PATH-TO-FFMPEG-APP"

imgPath = "YOUR-PATH-TO-IMAGE-OUTPUT-FOLDER"

#frame filename format assuming "0001.png"
imgNamePattern = "%04d.png"
vidOut = "test.avi"
vCodec = "mpeg4"

ffmCMD = ffmpegPath
ffmCMD += " -start_number 1 -i "
ffmCMD += imgPath + imgNamePattern
ffmCMD += " -vcodec " + vCodec + " "
ffmCMD += imgPath + vidOut

print("launching ffmpeg")
os.system(ffmCMD)


'NoneType' object has no attribute 'bar'

You can only store some specific property types on the nodes directly.
These here: https://www.blender.org/api/blender_python_api_2_77_release/bpy.props.html

If you want to access the same variable from multiple nodes you can simply create the instance outside of the node like in this example:

import bpy
from ... base_types.node import AnimationNode

class Singleton:

    def __call__(self):
        return self

    def bar(self):
        print("bar")

# store the instance in the module namespace
singleton = Singleton()

class Foo(bpy.types.Node, AnimationNode):
    bl_idname = "an_Foo"
    bl_label = "Foo"

    singleton = None

    def create(self):
        pass

    def execute(self):
        # don't use 'self' because the singleton is in the module namespace
        singleton.bar()


No module named Error when importing from another file in an addon

Actually I found the solution thanks to the help of someone else:
My problem was I wasn't using relative imports, don't use sys.append
instead use relative imports like this and it worked:
#import classes
from .save_shader_map import SHADER_PRESETS_UL_items, ShowMessageOperator
#import functions
from .save_shader_map import get_preferences, get_selected_folder_presets, json_to_nodes_dict


Texture painting without rendering vertex paint

Switch to GLSL shading and enable Shadeless in your material settings:

With GLSL enabled in texture paint mode, wireframe view will display only the vertex colors, solid will display both, and textured will display only the textures.


Can I bake light from Nishita Sky Texture?

The bake is working correctly.
But if you are using flat sides (i.e. base cube with an open face), each side of the faces are baked and that makes conflicts.
Above in the picture, I have solidified that volume and unwrapped it.
I've used no other particular settings. Here is the file:


Can I make a UI button that makes buttons in a Panel?

Of course you can delete or replace items from Collection property. Here are functions available to it:

add(
as_bytes(
clear(
data
find(
foreach_get(
foreach_set(
get(
id_data
items(
keys(
move(
path_from_id(
remove(
rna_type(
update(
values(

So lets say we have this: bpy.context.scene.collection Collection property with some items:

bpy.context.scene.collection.remove(5)    # will remove 6th element
bpy.context.scene.collection.move(2,3)    # will swap 3rd and 4th

# replace 5th element with a new one - just assign it new values:
bpy.context.scene.collection[4].name = "New name"
bpy.context.scene.collection[4].value = 42

So the script should work like this:

your Add button will add entries to the collection property
the UI will draw a button for each item of the collection property
every generated button will call the same operator, but will pass it a unique identifier
the operator does different things based on the identifier property

An example:

import bpy

class SceneItems(bpy.types.PropertyGroup):
    value = bpy.props.IntProperty()

class AddButtonOperator(bpy.types.Operator):
    bl_idname = "scene.add_button_operator"
    bl_label = "Add Button"

    def execute(self, context):
        id = len(context.scene.collection)
        new = context.scene.collection.add()
        new.name = str(id)
        new.value = id
        return {'FINISHED'}

class ButtonOperator(bpy.types.Operator):
    bl_idname = "scene.button_operator"
    bl_label = "Button"

    id = bpy.props.IntProperty()

    def execute(self, context):
        print("Pressed button ", self.id)
        return {'FINISHED'}

class FancyPanel(bpy.types.Panel):
    bl_label = "Fancy Panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'

    def draw(self, context):
        self.layout.operator("scene.add_button_operator")
        for item in context.scene.collection:
               self.layout.operator("scene.button_operator", text="Button #"+item.name).id = item.value

bpy.utils.register_class(SceneItems)
bpy.utils.register_class(AddButtonOperator)
bpy.utils.register_class(ButtonOperator)
bpy.utils.register_class(FancyPanel)

bpy.types.Scene.collection = bpy.props.CollectionProperty(type=SceneItems)

Edit @Lars comment: How can I have multiple input fields for each new entry, i.e. having an Integer input field next to each button that will deliver the Value to the buttons operator once the button is pressed?

You display the values of the Collection property items in the UI, and the user can change them. They get passed to the operator:

def draw(self, context):
    self.layout.operator("scene.add_button_operator")
    for item in context.scene.collection:
       row = self.layout.row(align=True)
       row.prop(item, "value")
       row.operator("scene.button_operator", text="Button #"+item.name).id = item.value


Benchmark optimal settings documentation

Use the blenchmark Addon: http://blenchmark.com/article/benchmark-your-cpu-or-gpu. The istructions on how to install and use it are explained very clearly on the site

There are two basic settings: one for CPU and one for GPU, don't use the one for CPU to test a GPU.

The idea behind the blenchmark is to have a standardized set of parameters by which to compare systems. Just set the compute device, leave all other setting untouched and let it render.

Changing the settings for each machine would result in a comparison like watermelons and oranges.

Note that it is quite easy to render faster than the average results, as the blenchmark is designed to work on many different types of hardware and Is not optimized for any particular one and it is set to work on a very wide range of hardware.


You can limit the action of your displacement modifier with a vertex group, to which you will assign only the vertices you want to displace.


Using object.convert function after creating object

Ok, so i found the answer:
Since bpy.ops.object.convert() needs a context the only way i managed it to work is:
obj.select_set(True)
bpy.context.view_layer.objects.active = obj
bpy.ops.object.convert(target='CURVE')

Though, it's quite weird that i have to 'manually' select an object to be able to use it, why not just obj.convert()? I'm not sure if method i used is the only one possible but i tried A LOT of stuff.
If there is a better, more elegant and robust method, please let me know!
Blender API changes so fast that it took me couple of hours to find the answer, even Blender 2.81 Docs were saying

bpy.context.object = obj will raise an error.
But
bpy.context.scene.objects.active = obj will work as expected.

While bpy.context.scene.objects.active is already deprecated!


Particle system disasters if I edit the mesh

I'm assuming this happened with hair particles that were combed? Particle rely on faces and vertices, if you have 101 vertices and you delete no. 40, 41-100 have to change their index. Since the particles are linked to the indices, they go berserk.
The short answer: Don't do that. If you really need to remove geometry, use a mask modifier after the particles system.


Why adding transparent shaders don't result in transparency?

This all comes down to what the Transparent shader and the Add shader actually do. Think about it another way and the behaviour you are seeing makes more sense.

Instinctively, the Transparent shader is nothing, however, it is not. The shader defines what happens when a ray interacts with the surface - in the case of Transparent, the incoming ray hits the surface and the result is that the resultant ray leaves the surface travelling in the same direction and, if the surface is 100% white, is the same intensity as the incoming ray - ie, no change.

The Add shader takes multiple shaders and combines the result. So, adding two Transparent shaders we start with the incoming ray and each Transparent shader produces its own (unaffected) resultant ray. The Add shader combines these two rays and the result is a combined ray with twice the intensity of the original - ie, it actually amplifies the light.

If you look at your result you’ll see that this corresponds with what you see - where the environment light passes through a surface it becomes brighter, and the more surfaces it passes though the brighter ot becomes.


While there are several file formats used for voxel data, they are used for volumetric data, such as smoke and fluid, which I doubt will help you.

As you have the data in numpy, I would suggest letting numpy save the data to file using numpy.save, but if you are using numpy to generate the data you can use numpy in blender and not use a file format at all.

By creating your selection of block types, you can then use a script to duplicate a block into each position.

import bpy
import numpy as np

objs = bpy.data.objects
scn = bpy.context.scene

scene_objs = [
        objs['sand'],
        objs['grass'],
        objs['water'],
        ]

voxel_data = np.array([
        [1, 1, 1, 1, 1, 1, 1],
        [1, 0, 0, 0, 0, 0, 1],
        [1, 0, 2, 0, 2, 0, 1],
        [1, 0, 2, 0, 2, 0, 1],
        [1, 1, 0, 1, 0, 1, 1],
        [1, 1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1],
        ])

for x in range(voxel_data.shape[0]):
    for y in range(voxel_data.shape[1]):
        obj = scene_objs[voxel_data[x,y]].copy()
        scn.objects.link(obj)
        obj.location = (x*2.1, y*2.1, 0)


I hit a hotkey and something happened to my sculpt and i dont know what it is

This is a shot in the dark but it looks like your Normals got inverted?
If that's the case go-to edit mode select all of the vertices then navigate over to
Mesh>Normals>Recalculate outside


To have a transparent background you need a transparent shader.

To overlay the image on top the color used on a shader

Using the same principle you just need to add the color to the existing underlaying material, using the alpha channel to mix it.

(remember to assign the material to that part of the mesh ).


Displacement on certain objects not working

It's working, it's just that the scale is different due the the water object being so much larger. The texture is so large that it's hard to see the displacement effect. If you plug it into an emission shader after muting the multiply node (M), then you can see the texture clearly:

To fix it, either scale up the textures or use a different mapping via the Texture coordinate node:

Result:


The problem is this (your "empty")

This won't be rendered.
If you want to render an image do this:

add plane

resize it and move it as you want it (basically give it the size and the position of your "empty")

give it this shader

then you will get:


The standard way to deal with this is to help out the subsurface modifier do its job. You can, for example

Mark your desired hard edges as creases prior to using the subsurf modifier.

Or

You can just create edge loops near your curves to control how sharp they should be, so that subsurf doesn't oversmooth them.

See this youtube video "Tutorial: Sharp Edges on Smooth Objects"
https://www.youtube.com/watch?v=HgzmSnQt0bQ

I'm not a Blender expert in any way, but I hope it helps.


Surface cannot be created with nurbs curves by pressing F key

You simply need to use one of the Nurbs Surface types. Add > Surface > Nurbs Curve

A Curve, whether a nurbs or bezier is only a stroke. It can not have volume, it is only ever a line.
A Surface is a full 3D solid that can have volume. All the expected commands will work: Fill F, Extrude E etc.


Ended up implementing equivalent inside Unity... I have more control that way anyway


How can I unwrap polys into a perfect square?

I had a similar problem way back ;)

I used this addon:
http://blenderaddonlist.blogspot.com/2015/05/addon-quad-unwrap.html

What I did was to unwrap all my quads that should share the same texture at once, used the addon to make all lines straight and then scaled the resulting grid so that one cell occupies the whole uv space, forcing the other cells outside thus making them exact uv copies of the first cell.

EDIT: It seems the author did not update the link he posted on blenderaddonlist. However in his youtue tutorial he posted a downloadlink in the description that still works ;)
https://www.youtube.com/watch?v=DcFEdK5TQv0
https://www.dropbox.com/s/li6nuop9c4omlih/wahooney_uv_quad_unwrap.py?dl=0

EDIT2: Triangles are a bitch. It does not work with them, since there is no way for the addon to know which way to follow to the next quad. So you would have to get rid of the triangles first. Unless the geometry is very complex the build in blender tri to quad function should be able to do it.

EDIT3: Feeling stupid right now ... using U -> Reset on the faces already does a per face mapping. Is that feature new ? I could swear the reset option was not there two years ago ;)


What is the physical difference between the Subsurface Scattering and Translucent shaders?

Translucency allows light to pass through an object. Using only a translucent shader will leave an object dark on the side receiving light with the other sides being lit.

Sub Surface Scattering allows light to penetrate the surface and be distorted before bouncing back out. Each colour component disperses differently, leaving areas with a different colour than others. Thin areas allow light to pass through to light the opposite side before being bounced back out, these thin areas give a translucent appearance.


Expanding on brecht's answer, here is a simple node setup:

A glossy node is used instead of an Emission node to get the "real" reflections in addition to the image. To do this with a Glass node, you will have to separate the glossy and refraction.


How does Blender take advantage of normal RAM vs GPU VRAM?

There's a setup procedure that happens when you render (subdiv/displacement, BVH calculation, etc) that is heavily CPU bound and uses system memory until it settles on the final scene data which is then copied over to the rendering device.  There's a balance to be struck.


You need modules that work with the same Python version as the one shipped with blender (currently, blender 2.78 is shipped with Python 3.6.0).

My favorite Python distribution is anaconda. Here are the steps I just followed for blender 2.78 in linux (a similar setup should be easy to get for windows or macos).

Install anaconda.
Create an specific environment for the modules you need in blender:

conda create --name conda-python-blender python=3.6.0

Activate this environment:

source activate conda-python-blender

Install all your required libraries ("modules"):

conda install cython

You can also use pip if your library is not (yet) in anaconda repositories:

pip install mdtraj

Figure out the directory where your libraries are stored:

echo "import sys; print(sys.path)" | python

In my case, I get:

['', '/home/christophe/anaconda3/envs/conda-python-blender/lib/python36.zip', '/home/christophe/anaconda3/envs/conda-python-blender/lib/python3.6', '/home/christophe/anaconda3/envs/conda-python-blender/lib/python3.6/lib-dynload', '/home/christophe/anaconda3/envs/conda-python-blender/lib/python3.6/site-packages', '/home/christophe/anaconda3/envs/conda-python-blender/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg']

You want the "site-packages" directory, so, in my case:

/home/christophe/anaconda3/envs/conda-python-blender/lib/python3.6/site-packages

Open blender, then go to the Python console and do the following as Rich Colburn said, that is adding the previous directory the the path where Python is looking for libraries:

  import sys
  sys.path.append('/home/christophe/anaconda3/envs/conda-python-blender/lib/python3.6/site-packages')

And that's it!

Optional step. If you want to make it permanent so that every time you open a new blender file, blender adds automatically the required directory to the path, then save the following lines in a file (say add-anaconda-libs-to-path.py) and put the file in ./scripts/startup/ (for me it is /home/christophe/.config/blender/2.78/scripts/startup/.

import sys
sys.path.append('/home/christophe/anaconda3/envs/conda-python-blender/lib/python3.6/site-packages')
def register():
    print("Added anaconda library to path")

A final note: unless you want to update your libraries with conda, you don't have to activate the conda-python-blender environment anymore as blender will use its own Python interpreter.


One case where I've used F on a face is when I want to create a new object starting from some of my pre-existing geometry. By using F then P, you get an edge that won't affect original mesh when you separate it out. In the case that you just added a new object, you would've had to snap the vertices onto the old object to line things up. While it doesn't save a lot of time, the little things do add up.

Also, trying to create a check for "don't fill in the edge if the two vertices are part of the same face" can become problematic very quickly.

Take this example below: I want to fill in an edge between these two vertices. They're all part of the same big n-gon and I clearly want a new edge, but a blatant, "don't fill in an edge if the vertices are part of the same face" block would prevent me from adding the edge entirely.

There are many cases where it's better for the devs to design Blender in a way that helps prevent users from making mistakes. However, in cases like this one, it's probably better for the user to avoid making mistakes rather than having the devs try to do the thinking for you. It's more likely that the devs will introduce bugs, and it isn't worth the time to implement when there are many other bugs and features that they could/are working on (in my opinion).


This happens because there is no good way to subdivide a circular face. On a cylinder, you can inset the face once or twice, so that the part with this pattern is flat, or if you have a sphere, just make a sphere with higher resolution.


Do you mean just fill in the end? Put a tick in Fill Cap - see first picture.

Or do you want the tube like effect in the next picture?  Add a Solidify Modifier and change Thickness to what you want.


Baked indirect lighting from emission not showing in viewport (Eevee)

FACEPALM

Turns out I had an object hidden in viewport that was blocking the emission layer. Hiding that object in the viewport and render fixed everything!


Python to switch visibility between multiple objects (game engine)

Lets dig a bit deeper in the requirements and look how it fits your design (or find a better one):

You have a set of (ordered) objects = a list.
You want one and only one object be (lets say) "selected" at any moment
You want be able to select the next while deselecting all others.

Open Question: What should happen when the last object is already selected?

As there is always one object selected I suggest to use a token that indicates what object is selected.

This means you need a separate object as token. When you want to know what object is selected ... ask the token. If you want to select another object ... request it at the token.

This answers your question 2

  Where should this script reside, along with the M and N controllers? Should it be attached to the cube, or to some empty object somewhere? Or is it going to have to be multiple scripts?
  -> the token does that.

Token

So lets have a closer look at the token.

It needs to know what object is selected.

We need a storage for a single game object at any time.
We need to be able to provide the selected object when asked

It should be able to select the next object in a list of objects

We need an ordered list of selectable objects (when performing this operations)

Lets look at a possible implementation of the token.

How you get your list of objects is up to you (e.g. you could look for objects with a specific property and order by property value). So I assume you implemented a function called getSelectables(). The following snippet contains a dummy implementation:

selection.py

import bge

#--- BGE callables
def next():
    if not allSensorsPositive():
        return

    deselectAll()

    next = findNext()
    select(next)

This is indeed not much. First (as any BGE code) check the sensors' status.
Then deselect all selectable tokens. If you load them unselected, you can just deselect the current selected object deselect( getSelected() ).

Then find the next object and select it.

I hope you find this is what you want.

How to use it:

First you should select one object at startup. There is no special operation for that (you could if you want). So we simple call next():

Always sensor [no level triggering]
   ---> Python controller Module: "selection.next"

This will deselect all selectable objects and select the first one after loading the scene.

To select the next selectable object we call next() too:

Event sensor [no level triggering]
   ---> Python controller Module: "selection.next"

Please note, next() does not do anything when not all sensors are positive. Therefore you can't connect both sensors to the same controller.

Why is it that way?
Imagine you want to deactivate the ability to call next(). In this way you can connect another sensor that controls the activation:

You tried that? I hope you noticed the code is not complete. If you want you can try to implement your own version. But here are the details that can help you.

selection.py continued ...

#--- internals

INTERNAL_PROPERTY_SELECTED_OBJECT = "_internal.selectedObject"

def deselect(object):
    object.visible = False

def select(object):
    getOwner()[INTERNAL_PROPERTY_SELECTED_OBJECT] = object
    object.visible = True

def deselectAll():
    for selectable in getSelectables():
        deselect(selectable)

def findNext():
    selectables = getSelectables()
    selected = getSelected()
    try:
        nextIndex = selectables.index(selected) + 1
    except ValueError:
        nextIndex = 0

    return selectables[nextIndex % len(selectables)]

def getSelected():
    return getOwner().get(INTERNAL_PROPERTY_SELECTED_OBJECT)

def getSelectables():
    'Implement your own object list'
    objects = bge.logic.getCurrentScene().objects
    return [objects[name] for name in
            ["Cube", "Sphere", "Cylinder"] ]

#--- internal utilities
def allSensorsPositive():
    for sensor in bge.logic.getCurrentController().sensors:
        if not sensor.positive:
            return False
    return True

def getOwner():
    return bge.logic.getCurrentController().owner

Here you see that selection/deselection actively changes the involved objects (setting visibility). When selecting the object running this code will store the selected object in a property replacing any previous selection.

Finding the next selectable object is simply looking at the list and grab the next one by index. If the current selection can't be found, it the first one gets picked. If the last one is selected ... it starts with the first one again nextIndex % len(selectables). If you do not want that you change that code to min(nextIndex, len(selectables)-1).

As said earlier you should implement your own version on getSelectables().

The utility functions are often used and would live happily in a common module. They are here to complete this snippet for you.

As homework you might want to implement a previous() function.

I hope it helps you

Edit: I forgot to answer your other questions:

  How do I change the visibility of multiple objects (perhaps using the object name) from one script?

Either each object doe it by itself (e.g. via Visibility actuator), or you let the object do it by itself via KX_GameObject.visible (see snippet above)

  If it has to be multiple scripts, how does the variable V get initialized properly, and how does it get globally recognized by all the different scripts?

Variables are always local to the code. You could create a module variable that is a singleton with the module. The above solution uses a property of the selecting object. This means you can have different selecting objects each with own selection (I guess this is not what you want).

If you want to know if an object is selected or not you have to ask the selecting object. Alternative, you can check if the selectable object is visible or not.


Bezier path moving during animation when it should not

There are several ways to do it:

F3 and type Remove Animation.
You can delete the animation in the Outliner: Select the object, unfold its tree, right click on Animation and choose Clear Animation Data.
Open the Dopesheet, switch it to Action Editor mode, you have a dropdown menu with all your animations, close the selected animation with X.

As your curve was the only user of this animation, it won't be reloaded when you'll reopen the file. If you don't want to loose it, in the Dopesheet / Action Editor mode, on the right of the action name (it has now a 0 which means no user), press on the shield icon.


If Blender is freezing and crashing while you're rendering, then the animation is doing something that demands more resources than Blender is able to give it.

Without being able to see the file, it's really hard to guess. There are a number of things that might be going on at frame 35. At that point, there are some keyframes. These keyframes might be related to something very complex going on. There might be a whole lot of objects introduced into the scene at that point, which would increase the RAM requirement. There might be some kind of feature introduced at that point, that Cycles isn't able to handle.

It looks like this scene might be trying to use Animation Nodes, which aren't supported in 2.70.

Generic solutions are few and far between, but one of them is upgrade Blender to the latest release (the one on Blender.org, not from the nightly builds). Don't try to solve anything else until you've upgraded.

The next thing you need to do is find out what NEW thing the scene is trying to do at frame 35.

Look in the Visual Sequence Editor to see if there's a new effect or strip that starts at frame 35.
Look in the Graph Editor and/or Dope Sheet to see if there are any animations that start on frame 35.
Look in the Compositor to see if there are any nodes that have keyframes. Maybe there's a compositing thing that starts at frame 35.
Look in the Console (Windows -> Toggle System Console) to see if it's giving you any error information that might help.
Look in the Info panel (blue circle with an 'i'; it looks like it's just a menu bar, but drag its border to make it bigger) to see if there are any errors there that might help.

On an unrelated note, if you've gotta deliver this to a client, you don't have time to solve this problem. You've run into this problem already. It's likely that you'll run into more problems with the same file, even if you solve this one. You need to dump this file and go find another solution.


How to creat a mecha style mesh for character?

You should study and use:

extrude (E key)
move edges and vertexes (G key)
fill faces (F key)
inset (i key)


It's because of the escape character "\" and how python handles it. Windows paths on python scripts are a nightmare. So you have to escape the backslash.

Try :

blendFile = "D:\\_Blender_Files\\atrium.blend"
blenderPath = r"C:\\Program Files\\Blender Foundation\\blender-2.71-windows64\\blender.exe"
subprocess.Popen([blenderPath, blendFile], stdout=subprocess.PIPE)

or with simple slashes (python handles it well) :

blendFile = "D:/_Blender_Files/atrium.blend"


What influences the visibility of the layer selection in the view port header?

Local and Global View

From the Blender wiki:

  You can toggle between Local and Global view by selecting the option
  from the View Menu or using the shortcut NumPad /. Local view isolates
  the selected object or objects, so that they are the only ones visible
  in the viewport. This is useful for working on objects that are
  obscured by other ones, or have heavy geometry. Press NumPad / to
  return to Global View.

As user2859 pointed out, when you are in Local View, the Layers buttons are not visible, but will return when you go back to Global view.


Rigging convention for limb joint dominant axis?

In my rigs, the dominant rotation axis is always X.

It's consistent with Rigify's convention, and less a hassle when using X-Axis Mirror for faster alignment. Could be confusing, though, because visually it's always the Z axis that looks mirrored. So I'd just pay attention to the Z axis when orienting the bones.

For translation bones (like sliders) I use the Z axis, also because of the way X-Axis Mirror aligns symmetrical bone rolls. That is, if the animators use Gimbal transform orientation, they could focus on using the red (X axis) part of the rotation widget, and blue (Z axis) part of translation widget.


Is it possible to have separate animations, with independent timelines?

Yeah, open the timeline and the dope sheet:

On the bottom bar of the dope sheet windon change the "mode" from "Dope sheet" to "Action". Select a door, add an action and call it like "Door 1" and animate it from frame 0 the door opening.

Repeat until you have all doors and windows opening at the same time (only the beggining, you can have different ending times).

Then change the Dope Sheet window to the NLA Editor where you can see all actions:

Press the icon of the down arrows and you'll see that it creates a box, repeat for every object and then, choosing a box and pressing "g" you can move the box freely.


Restore vertex groups after live boolean modifier

Without knowing your specific setup, I'm going to show a basic example of how to use the Data Transfer modifier to restore either Crease data or Vertex Group data after they have been destroyed/modified by a Boolean modifier from a copy of the object.

Here we have a sphere with some creasing applied to some of the edges of a sphere that has a Subsurf modifier added to it:

And now above the Subsurf I add a displace modifier and set it to only use the bottom half of the sphere by specifying a vertex group:

So we now have vertex and crease data and we can test ways that the boolean modifier might destroy/modify that data and how to restore it.

Here I add a Boolean modifier at the top of the modifier stack (Subsurf disabled):

We can see that actually the vertex group of the Displace modifier has been preserved and is still working as only the bottom half of the sphere is displaced:

However, in the image above we can also see that the crease data has been removed by the Boolean; we no longer have the pinching effect shown in the previous images.

We can now restore this data from a copy of the object. The copied object has no modifiers on it, but it does have the same topology as the original sphere and it does have the creases marked on it.

I add a Data Transfer modifier above the Subsurf modifier, but below the other modifiers. The order is important because if the Subsurf is above the Data Transfer modifier the creases will already have been calculated, so restoring the crease data after that will have no effect. We must restore data then Subsurf so the Subsurf has access to the transferred data before it does any calculations. I choose the copy of the original sphere as the Source Object, choose Edge Data as the type of data I want to transfer and specify the Subsurf Crease option as the actual data I want:

We now see that the pinching is back indicating the crease data has been successfully transferred.

There is, however, one thing to note, and that is the Solver the Boolean modifier is set to use. It's an option on the modifier and by default it's set to BMesh when the modifier is added and is the Solver type I used in this example. However, if you remove the Data Transfer modifier and change the Solver to Carve you will see that the Boolean no longer destroys the edge data, but instead destroys the vertex data:

The displace modifer is now effecting the whole mesh, meaning the Vertex Group has been modified and the pinching the crease data was creating has not been effected, whereas before, the opposite was true. I'm not quite sure why this happens or whether it's intentional, but this allows you to instead preserve the crease data and restore the vertex groups, though this time the Data Transfer modifier has to be above both the Displace modifier and the Subsurf:

(This also means the copy of the object we are transferring from needs a copy of the vertex group instead of the same crease marks.)

There doesn't seem to be a disadvantage to using one type of Solver over the other, but it does allow you to use either Solver (in case you need to use a specific Solver for other purposes) and always preserve the data.

To summarise:

BMesh Boolean Solver destroys Crease data.
Carve Boolean Solver destroys Vertex Group data.
The Data Transfer modifier has to be above any modifier that needs to use the transferred data.

I have added the Blend file so you can see the exact setup I've used (the copy of the original object is on layer 2):


Animating water surface from .csv temporal xyz data

There is this .csv import script: BA thread (which might or might not work for you)

This is related: Csv Import pointcloud into Blender

If your data format is really custom and nothing helps, you have 2 options:

Export something standard which blender and other software understands (I recommend):

.mdd Lightwave point cache file (load into MeshCache modifier)
.pc2 point cache file (load into MeshCache modifier)
.obj sequence imported as mesh shape-keys: BA thread

Write a custom importer script that can interpret your custom .csv data.

Blender API
There are templates for import/export scripts in Text Editor
You can see other scripts and how they work in \<blender version>\scripts\addons\ - also good to see how formats from option 1 work


I am not sure you are still struggling with your render as its a late answer. But may be useful for some one else too.

Its not good to do that manually or set the finished alarm.

I will take back you to 90's where we can set the commands in command prompt in a batch, using batch files.

Lets say you want to render two files you may use it like this

cd C:\Users\Me\Downloads\blender-2.79-windows64

blender -b "D:\Path\Train 001.001.blend" -s 1 -e 2 -a

blender -b "D:\Path\Train 002.001.blend" -s 2 -e 4 -a

The first line is for the blender exe file path, you may set it according to your system.

The second and third lines are for rendering two different files and different frames.

You may save the above code in a text file and save it anywhere in your computer and with any name but extension should be .bat

Now right click on file (.bat) we just created and Run as administrator

You may add as much files and frames as you like

or have several interesting and useful render options here Command Line


Cropping and/or editing an UV map with multiple objects without joining them

A possible solution would be using the addon MultiEdit. You can edit multiple objects at once without joining them.

Download: https://www.dropbox.com/s/9h7bqe7aza4b16p/MultiEdit_05.zip?dl=0

Blenderartist Thread: https://blenderartists.org/forum/showthread.php?339369-MultiEdit-version-5-Multiple-Objects-Editing

To install it you have to go to File -> User Preferences -> Install from File, then select the .zip and click Install from File. Then tick the checkbox to activate the addon. If you don't want to repeat this every time you start up Blender you can click Save User Settings.

After installing it you can select all the objects you want to edit and click MultiEdit enter in the tool shelf (T). Then you can scale up your UV map. When you're finished you can click on MultiEdit exit to go out of edit mode. But be careful not to go back to object mode by pressing Tab or using the drop down menu at the bottom of the 3D View. This will join your objects.


Object closely follows other object being moved

Moving, rotating or scaling  an object while the Proportional editing is on will propagate the effect to neighbors objects "or vertices in edit mode" .
you can toggle proportional editing ON and OFF in the 3D viewport from the icon or using the shortcut O


How do I get the normal vector of a selected vertex?(BMESH)

Track to Quaternion

To align to vertex normal.

The normal orientation with respect to vertices appear to be a track to quaternion, tracking Z in direction of normal, and using -Y as up.  Since the only options for up in Vector.to_track_quat(to, up) are 'X', 'Y', 'Z' track with Y up and inverting the scale in X and Y.

Simple example. Run in object mode, adds an empty displayed as arrows, at each vertex aligned to normal.

import bpy
from mathutils import Matrix

context = bpy.context

ob = context.object
mw = ob.matrix_world
me = ob.data
Sx = Matrix.Scale(-1, 4, (1, 0, 0))
Sy = Matrix.Scale(-1, 4, (0, 1, 0))

S = Sx @ Sy

for v in me.vertices:
    R = v.normal.to_track_quat('Z', 'Y').to_matrix().to_4x4()
    R.translation = mw @ v.co

    bpy.ops.object.empty_add()
    mt = context.object
    mt.empty_display_type = 'ARROWS'
    mt.matrix_world = R @ S

Related

Align to face normal vector


Why does Blender crash when trying to place objects with 'threading.Timer()'?

If I understand the code correctly, each place() method then recursively calls 15 more place() after 2 seconds, which each of these instances themselves call place() 15 more times after 2 seconds. etc. I think this will crash any program in python pretty quickly.

Blender has specialized methods for recurrent calling of methods. See the documentation :
https://docs.blender.org/api/current/bpy.app.timers.html

Exemple :

import bpy

def every_2_seconds():
    print("Hello World")
    return 2.0

bpy.app.timers.register(every_2_seconds)


Is smoke sim broken in 2.9 ? (simulation not refreshing)

There are known issues with refreshing a smoke simulation (and liquid) after changes (eg, see https://developer.blender.org/T77170. The best solution I’ve found is to click in the Resolution property, then hit Enter (so you're effectively changing the Resolution to the same value it's already set to). This effectively resets the whole simulation under most circumstances - then just re-play from the start again.
The ‘hires’ has become ‘Noise’. Enable the 'Noise' checkbox in the properties and adjust the settings.
Please clarify what you mean is wrong with the rendering of smoke in Eevee - maybe ask a separate question for that. However, it could just be that the default Volumetrics render settings are not suitable for your domain. In the first instance, try reducing the End until the most distant part of your volume justs starts to clip, then adjust the Start until the nearest part of your domain just starts to clip. This will concentrate the passes into the volumetric domain for sharpest render results. You can then try reducing the Tile Size and increasing the Samples to further refine the render. You might also want to switch on and adjust the Volumetric Shadows.


Your particle setting is almost good. For 1 particle per face to work properly though you need to have as much or more particles as faces. Your emitter is pretty dense. I would suggest to lower the face number. Maybe try to make stem from 16 verts circle. I would also suggest to change Initial Orientation setting to Normal instead of Normal-Tangent to avoid different rotation on different rows of faces. Then play with size and rotation of particles until you get satisfactory result.Here is your file with the changes I mentioned.I think it's a good start for further experimentation:


1Here is something that looks close.

Please excuse my gummy model, The first picture uses the new Principled shader and the second image uses just a glass shader. If you use the glass shader make sure you use a fresnel and glossy node mixed in.

*be aware using the new Blender 2.7(9) may be unstable and is not a final version (although I have had no issues yet).

Use the Principled shader with transmission to 1 for glass.
In the base color slot connect a color ramp with "constant" selected and choose any colors you would like (this is optional). Also You will need to change from the "constant" to something else for the Gummy Worm, so it has a nice fall off.

3.Add the "object info" node so the computer randomly picks a color.

4.Pick any rough looking texture and plug in into a "color ramp" node (so you can control how much you want by sliding the flags). Make sure on the texture image you set it to "non color data" and either unwrap your model or connect the other two mapping nodes so Blender knows where to put the grunge texture.

Just use a texture to have clear and "foggy" sections of the model, and plug it into the roughness socket.

I didn't do it here, but you can grab another texture with divits in it and plug that into the normal socket to add more realism.

Hope this helps a little.

This is the grunge texture I used.

[]


You use "Texture coordinates" -> "Generated". You need to switch it to "UV" for use your UVMap.


This answer from CarlG on Blenderartists.org helped me:

  If you want manual glass on thick panes, all you need to do is setup the shader manually:
  Fresnel to mix between refraction shader and glossy (sharp is ok) shader. If you want to lower the reflections you just dial in a darker value. You can then mix in a transparency shader after that using LightPath/isShadowRay to eliminate it casting shadows, very useful if caustics is turned off and/or (?) if diffuse bounces are low.

  In real life dulling down the reflections are usually done by adding an anti glare coating to it, this tints the facing angles of the reflections slightly green (if you wear glasses, check them out if they have such a coating).

  However, for glass panes (equal thickness) using refraction is a huge waste of resources since refractions would be most evident near the edges (which you don't see). So the trick here is to replace the refraction shader with a transparency shader. You may need to invert IOR (in the fresnel node) for backfacing faces. Unless I need to see the double reflection from multiple layers of glass (not happened so far), I'll just use flat panes of glass.

  You can actually use refraction shader on thin panes as long as you feed its normal input from Geometry/Incoming. You'd still need to invert the IOR for backfacing faces though. This trick is useful if you want frosted glass at a fraction of the price for real frosted thick glass.

  Here is the setup I typically use for pretty much ALL glass I do (excluding glass vases and ornaments). If I need frosted I swap out the glass Transparency shader (I keep the shadow one) and feed it normal from Geometry/Incoming.


Modifying the Character Collision Bounds

The sizes of the bounding box types directly rely on the shape of the mesh. In your case the cylinder will align around suzanne's mesh.

Be aware Cylinder will be symmetrical on single axis. This means the origin of the object should be in the center of the mesh.

The Cylinder type is homogeneous on X and Y axis too. This means the shape will be a circle rather than an oval.

Therefore the Cylinder fits most to meshes that forms a nearly a cylindrical shape.

The alternative would be convex hull or triangle mesh (needs more calculation power).

Another alternative is to assign a custom physics mesh (e.g. via parent actuator).


Rigify Finger assigned to different parent

The access is disabled simply because you're in pose mode: select the armature, go to edit mode and change the parent from "root" to "ORG-palm.02.L".

Remember also that if you save your file and create a new one, generating a brand new rig, you can import from the old file your pose library: you will find it under the "action" folder.


Options for new objects not in the tool shelf

You can find it on the lower left, see screenshot.

From the Primitives documentation:

  These options can be specified in the Operator panel in the Tool
  Shelf, which appears when the object is created.


As mentioned the \ is already set for local view, the = (+ without shift) and - are also set to replace the numpad +/- (for zoom in/out). For others you most likely want to setup some custom keys.

In the Input preferences you can search for key-bindings containing numpad and then adjust the ones you want to use by clicking the key display and choosing another key. The issue is finding a key that isn't used or that you don't make use of, then save your settings so they are always available.

You may find that the [ or ] can be used as they are shortcuts to brush size when sculpting/painting where F is more well known. Also 2,4,6,8 and 9 are less used by many people.


How to render depth or surface Normal maps that properly reflect details of 3D shapes while respecting the nature of materials (transparency/glass)?

Yes, if you make the transparent surfaces completely transparent they will not affect the normal and depth passes.

One way to accomplish this with your existing materials is by replacing the output with the "Alpha BSDF" Transparency node when the "Mix Color/Alpha" node is less than 1.

If you are doing this on many objects you may want to look into using node groups and python to automate things.

Also, you may want to add an edge split modifier to get rid of some of those artifacts near sharp edges.


Object stretches when rotated for shaped keys

That could perhaps be the distortion you ran into. I looked at your model and you shouldn't need to use shape keys or rotate the wings in edit mode. It comes with an armature that you can use to move and animate it. It looks a little complex, so take some time to play around with it, and do some reading on armatures if you need to.

Edit: I think your idea about vertices not being selected is most likely the answer. Editing for shapekeys is basically the same as ordinary editing, so I don't think the shapekeys themselves would cause that problem. (Artist put lock on hind wings-see last paragraph below.)

In general, though, shapekeys are not used for large rotations because they don't work well for that. The individual vertices move to their new positions by the shortest route, and the mesh can become quite distorted in the middle positions. I know - I tried to shapekey fingers once.

If you need something to rotate in a specific way and don't want to use an armature (I still haven't made peace with armatures) you can set the origin to the spot where you want it to pivot and then use rotation to move it. You can even set rotation locks so it will only move in one or two axes (click the locks in the Transform/Rotation menu in 3D view - if you can't see it try pressing N).

Change pivot or local origin of an object

In trying to pivot the wings just now, it seems the artist has tethered the bottom of the hind wing to the body - not sure how he did that, it would be interesting to find out. That could be the distortion you ran into. Apparently this is how the butterfly actually works, but you have to rotate it on 2 axes to get it to look right. You can read about it in the comments here: http://blog.hawkbats.com/2011/03/07/3d-commission-models-and-art/


This is very easy to do.
You can adjust the vertex position in the Transform panel.
Just type the values into the x,y,z fields.

If you cannot see the Transform Panel, it's in the Sidebar.
Shortcut: N


Why I can't select the vertices of both my objects?

Blender only allows us to edit one object at a time (2.80 will add the ability to edit multiple objects). By having your mesh in different objects you need to edit them separately.

One option is to join the objects and edit them as one ⎈ CtrlJ. After you have finished you can separate them again if you wish with P and choosing by selection or loose parts.

Another option is to use snapping to align the verts of one object with the verts of another.


How can I make my 2d character and background non transparent

Every Grease pencil material can have a line, or a fill, or both.
Your materials look like they are only lines.
The usual workflow is to draw the lines, then use the fill tool to automatically add a new stroke with a fill-only material.
If the lines aren't closed, you can use the Alt key to temporarily switch the fill tool to a stroke, which lets you close the gaps (make sure that fill and stroke of your fill material share the same colour).
In my example in the right third I've scaled lines only, to underline the fact that lines and fills are two different strokes (but fill strokes are a single click of fill tool, or a little more).


How cam I make a building's walls grow as if its being constructed?

For the walls you could use a Boolean modifier:

Create your walls.
Create an object that will mask your walls, like a cube.
Give your walls a Boolean modifier. Choose Operation > Difference and select your cube as Object.
To make the cube invisible, go in the Properties panel > Display > Maximum Draw Type > Wire, and in Cycles Settings, disable all the options.
Now when you move up or down the cube it will make your wall visible and invisible, you just have to put some keyframes.
Repeat the same operation for the other walls with new cubes.

For the roof :

Create an array of tiles, with or without an Array modifier.
Duplicate this array of tiles with a new Array modifier. Put some keyframes on the Count Value to display more and more tiles.


Is it possible to combine spline IK for the body and regular IK for limbs?

as far as your question goes it is possible, it has to be set-up correctly - Where is your 'Spline IK' ??

  I would like the spine to move along the spline curve in the
  background, following its curvature

That would be a 'Path' and could be done several ways 'Clamp To' or 'Path' constraint. The set-up on the legs does not look good to me, your leg bones with the IK should be shifted forward to what is prob the current IK targets and a new or that large bone re=scaled to be the IK targets. That is why the legs are 'Glitching out' on you. I will try and mock up a file for you if you want.
DISCLAIMER: This file created in v2.76 - If using 2.7x it will open fine,, If using 2.8x 'APPEND' the objects from the 'Object' folder.


When you drag with RMB, you move the selection.

Press esc to leave the mode without changes.

If you want to select without moving, you've to release the button immediatly.
If you extruded (e), you'll add new vertices.


In blender 2.9 how do I get freestyle to ignore transparent materials on a vroid character

You can put the object you don't want to have freestyle lines in a separate second collection.
Then you can make a second Freestyle Line Set, and as the Collection choose the second collection and click the button Exclusive next to it.
Now all the object in that collection will be ignored when rendering freestyle lines.


To remove specular, as that's the name for the thing pointed to, you select the faces that shouldn't have it and give them material of the same color, but with a different name. Then, in a node, set its Roughness to 1. This goes for Cycles.


I believe that the issue is arising from either one of the situations below.

1) When you switch to Sculpt mode, the sculpting tools will only act on the previously selected object. Switch back to the Layout mode and make sure that you've got the sculpting object selected.

2) Your object may not have enough geometry to be sculpted on since the sculpting brushes act by moving the existing vertices of the object. So if you are attempting to sculpt on the default cube, for example, the brushes only have the eight corners to work with. You can add more geometry to the object by subdividing it. Alternatively, you can enable Dyntopo located in the header bar while in sculpting mode. This will add additional geometry as you work.


Bouncing ball deflates when hitting surface

You need to increase the Pull and Push. Try settings like Pull: 0.950 and Push: 0.999, this will result in bounces while keeping the shape of the ball.


You can only bind callbacks to properties, but you can't determine the origin of a change event.

It will be called the same way regardless of whether the user dragged a slider in a panel here, or ticked a checkbox in a panel there, or if he/she or another script changed the property programmatically.


Use cycles's denoiser on multi-layer EXRs

Take a look on B°WIDE nodepack:

https://bwide.wordpress.com/node-groups/bwide-nodepack-for-blender/

It has a PassCombineDeNoiser, that combines Cycles render passes & denoise it pass by pass based on Normals. You can also denoize exr-files, if you have all needed layers. It looks similar to new denoizer


Blender rendering just one frame when percentage scale is >50% (Cycles)

If the animation works at 50%, you could try doubling the resolution and rendering at 50%.

Maybe the .blend file has some issue.

First you could append the scene to a new file.

If the animation doesn't work yet, you could start from a new file with the default cube and light, and append only camera and path.

Add the other objects until the animation stop at the first frame and check the very last object you've added.


What is the “proper way” to make a walk cycle

You're saying walk cycle. By definition, that's going to be a loop. Cycle = loop. Therefore you're going to have your character walking in one place. Because if he were to leave that place, there would be no loop.

If, on the other hand, you needed to animate a clip of a character walking in some environment, then you would manually place each IK platform on the surfaces, alternating feet and moving the character body around. Except for cases where the character is going in a straight line with constant speed. In that case, you can get away with using a single loop and just moving the body forward. (you can do that by linking the whole armature object to an empty and moving the empty, while applying a Cycle modifier to your walk animation)


I think I've fixed the issue by trial and error. I first selected all the controls (I think that's what they are called) on the character by clicking on an empty area, then clicking a twice.That made them all highlighted with their colors. Then I went to the dope sheet and did what I did previously to the key frames and . . . Voila :) I know that was a crappy explanation but hey it worked!!!

Thanks!


What is the python script to export the selected meshes in .obj?

export obj to relative file path script:

import bpy
import os

blend_file_path = bpy.data.filepath
directory = os.path.dirname(blend_file_path)
target_file = os.path.join(directory, 'myfile.obj')

bpy.ops.export_scene.obj(filepath=target_file)

further export obj options:

bpy.ops.export_scene.obj(filepath="", check_existing=True, axis_forward='-Z', axis_up='Y', filter_glob="*.obj;*.mtl", use_selection=False, use_animation=False, use_mesh_modifiers=True, use_edges=True, use_smooth_groups=False, use_smooth_groups_bitflags=False, use_normals=True, use_uvs=True, use_materials=True, use_triangles=False, use_nurbs=False, use_vertex_groups=False, use_blen_objects=True, group_by_object=False, group_by_material=False, keep_vertex_order=False, global_scale=1, path_mode='AUTO')


From 2.50 Ipo's have been replaced with Actions. While you can create an action with bpy.ops.action.new() you can also just add a keyframe to a property and the action will be created for you. Instead of Ipo curves we now use f-curves.

Starting with getting an object by name

obj = bpy.data.objects['Cube']

You can then use keyframe_insert to key all 3 axes of the objects location with

obj.keyframe_insert('location')

To key just one axis you can specify an index (X=0 Y=1 Z=2)

obj.keyframe_insert('location', index=0)

You could add multiple keyframes from a list

x = [1.0, 2.0, 3.0]
xframes = [0, 10, 20]
for i in range(len(x)):
    obj.location.x = x[i]
    obj.keyframe_insert('location', index=0, frame=xframes[i])

For the interpolation, each keyframe has it's own interpolation setting. A simple loop can set each keyframe to use the same interpolation.

objCurves = obj.animation_data.action.fcurves
for curve in objCurves:
    # here you can also test curve.array_index to find
    # the curve of a specific axis
    # array_index matches the index used in keyframe_insert
    if curve.data_path == 'location':
        for k in curve.keyframe_points:
            k.interpolation = 'LINEAR'

From blender v2.76 you can use objCurves.find() to get the specific curve that you want.

objCurves = obj.animation_data.action.fcurves
for i in [0,1,2]:
    curve = objCurves.find('location', index=i)
    for k in curve.keyframe_points:
        k.interpolation = 'LINEAR'


Welcome to Blender Stack Exchange!

It's probably safe to assume that any image textures are UV mapped onto the model, as Blender does this by default. But, there are a ways to check.

If you don't see any images in the UV or Image editors, it's because no image is selected. Let's use the UV image editor, as you want to see the UVs. At the top of the editor there will be two buttons labeled New and Open. To the immediate left  of these there is a little image icon with an arrow. Clicking this opens a menu that lists all the images in the file.

To see the UVs and how the texture applies to the model, you will have to select the specific model/section you want to look at. With your mouse in the 3D view, press Tab to enter edit mode, and then A to make sure everything is selected.

Now go back to the UV editor and you should see the UVs. You will may have to open the appropriate image from the menu mentioned above if you want to see exactly how the UVs are laid onto that image.

Do note that this doesn't change which texture the model uses. If you want to see which textures the model uses, you will have to look at the material. To do this, switch to the Shading workspace, and at the bottom center you will see the shader editor. In this shader will be a network of nodes. Image texture nodes will have an orange header with the name of the texture as the title.

One other thing to note, the image files are probably packed into the .blend file. If they are, you may want to unpack them by going to File>External Data>Unpack All Into Files and choosing the first option.


The face created is exactly the one  you asked for.. you need to miter the frame to make individual faces around the rim. Delete the big face. You can use F with vertices selected to create the diagonal edges, and then F again with edges selected, to fill the segments.

But it may be easier to start with the whole tile, and I inset it with Offset Even checked, working from the outside in.


Instead of using an empty, you could animate the object itself. To do so, keyframe the 2 following frames: The one just before it is supposed to be affected by the physics (Animated ON), and the following one, when it is supposed to be affected by the physics (Animated OFF).


Creating depth of field from Beauty+Depth passes (rendered in another software)

The Defocus node works in conjunction with the settings for the active camera.

You can use this node setup:

You have to check "Use Z-Buffer" so your depth image is used. If you omit the Add node all parts of the image where the depth image is black are sharp independent of your focal settings. I don't know why, maybe that's a bug.

You also have to set the "Distance" to 1.0 with your active camera selected under Properties > Camera Data > Depth of Field.

This is the result:


Sounds like you may have accidentally enabled Lock to cursor in 3D view > Properties region > View:


Blend file below...

A lot may depend on how your rig is set up but placing Empties as 'ik targets', (not pole targets) at limb extremities does lend itself to this sort of thing quite well. By that I mean hand and foot targets as against lower arm and leg.  The hand targets are simply placed on the floor, the feet versions placed where they're needed.

For push-ups, some upper-arm Quatemion adjustments (pose mode) will likely be necessary due to extreme bending at the joints.
The character's origin point needs to be set at the feet so the armature can be rotated from there -
Once the first push-up is done, it's a simple matter of either duplication in the Dopesheet or cycling the action.
A "Nav"(igation) handle, an Empty would also be placed at the OP and the armature and targets parented to that.  This would hold it all together and provide a 'handle' with which to drag the whole thing about -


How do i copy my user preferences settings and load them into an older version of blender?

Yes you can copy the files with the preferences and default project to the folder of other version of blender. The files are called userpref.blend and startup.blend (there are also files for bookmarks.txt, and recent-files.tx)

For the location of those files in your particluar operating system refer to:

Where is the startup file stored?


How to bake in EEVEE? Cycles baked texture is atrocious!

Set more samples for less noise.
Set identation in uv map than you remove the seams, if you need only colors select in the bake menu "diffuse" and deselect all checkbox except "color"


Looks like you are running Blender 2.75. The denoiser was added in 2.79, so you'll need to download a newer version.


The Significance of 1 Energy Unit When Baking in Cycles

An emission shader with a strength of 1 will output the exact same colors as it's given as input.

Higher or lower strengths will brighten or darken the output.


Animation Nodes: Wait x seconds, output 0, then output random number (for input to object instancer)

You can multiply the output of the Random Number Node with a value that is one for all frames except those that are multiple of $x$. We can detect if a value is a multiple of $x$ using modulo as follows:

Th result of the previous node tree is as follows:

The number of objects briefly goes to zero and change into a random number every 10 frames.


Does Blender Cycles support rendering in SLI mode - two and more graphics cards?

SLI was designed to be used in accelerating rendering to display in supported applications with OpenGL or Direct 3D, by either alternating the frames or splitting the frames between the GPUs. As Blender uses the CUDA engine when rendering, and has built-in support for using several cards simultaneously, there is no benefit from enabling SLI.


Import 3D XML in Blender or convert it with another tool

Import Citygml Model

Textures applied to Zuidplein model.

I've merged all the scripts into 1 for convenience, would envisage splitting them up if made into an addon.

import bpy

from mathutils import Vector

##### Refactor to own file citygml.py
class Texture:
    def __init__(self, id=None, path="", map=""):
        def unflatten(coords):
            return [Vector(float(x) for x in coords[i:i+2]) for i in range(0, len(coords), 2)]
        self.id = id
        self.path = path
        self.map = unflatten(map.split())

class PolyGon:
    def __init__(self, id=None, pts=""):
        def unflatten(coords):
            return [Vector(float(x) for x in coords[i:i+3]) for i in range(0, len(coords), 3)]
        self.id = id
        self.verts = unflatten(pts.split())

class Building:
    def __init__(self, id="", name="", surfaces={}, textures={}):
        self.id = id
        self.name = name
        self.surfaces = {s.id: s for s in surfaces}
        self.textures = {t.id: t for t in textures}

class CityModel:

    def __init__(self, name="", upper_corner="", lower_corner=""):
        self.lower_corner = Vector(float(x) for x in lower_corner.split())
        self.upper_corner = Vector(float(x) for x in upper_corner.split())
        self.name = name
        self.buildings = {}
        self.images = {}

    def add_building(self, building):
        self.buildings[building.id] = building

    def build(self, scene, filepath, scale):
        import bmesh
        import os

        for k, b in self.buildings.items():
            keep_verts = []
            bm = bmesh.new()
            bm.verts.ensure_lookup_table()
            mesh = bpy.data.meshes.new(b.id)

            for sid, s in b.surfaces.items():
                verts = [bm.verts.new(scale * (v - self.lower_corner)) for v in s.verts]
                face = bm.faces.new(verts)
                texture = b.textures.get("#%s" % s.id)

                if texture:
                    uv_layer = bm.loops.layers.uv.verify()
                    tex = bm.faces.layers.tex.verify()
                    bm.faces.ensure_lookup_table()
                    for i,l in enumerate(bm.faces[-1].loops):
                        uv = l[uv_layer].uv
                        (uv.x, uv.y) = texture.map[i]

                    path = os.path.join(filepath, texture.path).replace("\\", "/")
                    image = bpy.data.images.get(os.path.basename(path))
                    if not image:
                        image = bpy.data.images.load(path)
                        image.use_fake_user = True

                    bm.faces[-1][tex].image = image
                    dubs = bmesh.ops.find_doubles(bm,
                              verts=verts,
                              dist=0.001)['targetmap']
                    if len(dubs.keys()) > 2:
                        keep_verts.extend(dubs.values())
            verts = list(set(bm.verts) - set(keep_verts))
            bmesh.ops.remove_doubles(bm, verts=verts, dist=0.001)
            #bmesh.ops.automerge(bm, verts=bm.verts, dist=0.000001)
            bm.to_mesh(mesh)
            building = bpy.data.objects.new("building", mesh)
            scene.objects.link(building)
            bm.free()

def read_some_data2(context, filepath, directory, use_some_setting, scale):
    scene = context.scene
    from xml.etree import ElementTree as ET
    cityxml = ET.parse(filepath)
    citymodelnode = cityxml.getroot()
    print("Importing citygml city")
    namespaces = {
           "citygml":"http://www.opengis.net/citygml/1.0",
           "core":"http://www.opengis.net/citygml/base/1.0" ,
           "tex":"http://www.opengis.net/citygml/textures/1.0",
           "gml":"http://www.opengis.net/gml",
           "bldg":"http://www.opengis.net/citygml/building/1.0",
           "app":"http://www.opengis.net/citygml/appearance/1.0",
           "dem":"http://www.opengis.net/citygml/relief/1.0",
           "tran":"http://www.opengis.net/citygml/transportation/1.0",
           "gen":"http://www.opengis.net/citygml/generics/1.0",
           "frn":"http://www.opengis.net/citygml/cityfurniture/1.0",
           "wtr":"http://www.opengis.net/citygml/waterbody/1.0",
           "luse":"http://www.opengis.net/citygml/landuse/1.0",
           "veg":"http://www.opengis.net/citygml/vegetation/1.0",
           "xAL":"urn:oasis:names:tc:ciq:xsdschema:xAL:2.0",
           }
    '''
    for prefix, uri in namespaces.items():
        ET.register_namespace(prefix, uri)
    '''
    bbox = cityxml.find("gml:boundedBy", namespaces=namespaces)

    name = bbox.find(".//gml:Envelope", namespaces=namespaces).attrib["srsName"]
    print("name: %s" % name)
    uc = bbox.find(".//gml:upperCorner", namespaces=namespaces).text
    lc = bbox.find(".//gml:lowerCorner", namespaces=namespaces).text

    city = CityModel(name=name, upper_corner=uc, lower_corner=lc)

    cityobjects = cityxml.findall("citygml:cityObjectMember",
                                namespaces=namespaces)

    print("importing %d city objects (#:buildings, X:non-building)" % len(cityobjects))

    for cityobject in cityobjects:

        building = cityobject.find("bldg:Building", namespaces=namespaces)
        if building is None:
            # ugly hack do for now.
            groundsurface = cityobject.find("bldg:GroundSurface", namespaces=namespaces)
            print("X", end="")
            if groundsurface is None:
                continue
            building = groundsurface
        else:

            print("#", end="")
        building_id = building.attrib["{%s}id" % namespaces["gml"]]

        rings = cityobject.findall(".//gml:Polygon//gml:LinearRing", namespaces=namespaces)
        surfaces = []
        for ring in rings:
            ring_id = ring.attrib["{%s}id" % namespaces["gml"]]
            poslist = ring.find("gml:posList", namespaces=namespaces).text
            surfaces.append(PolyGon(id=ring_id, pts=poslist))

        textures = []
        sdms = cityobject.findall(".//app:surfaceDataMember", namespaces=namespaces)
        for sdm in sdms:
            coords = sdm.find(".//app:textureCoordinates", namespaces=namespaces)
            if coords is None:
                continue
            sdm_ring = coords.attrib["ring"]
            path = r"%s" % sdm.find(".//app:imageURI", namespaces=namespaces).text
            textures.append(Texture(id=sdm_ring, map=coords.text, path=path))

        building = Building(id=building_id, surfaces=surfaces, textures=textures)
        city.add_building(building)
    print()
    print("finished importing, building...")
    city.build(scene, directory, scale)
    print("done")
    return {'FINISHED'}

from bpy_extras.io_utils import ImportHelper
from bpy.props import StringProperty, BoolProperty, FloatProperty
from bpy.types import Operator

class ImportCityGML(Operator, ImportHelper):
    """Import CityGML"""
    bl_idname = "import_dem.city_gml"  # important since its how bpy.ops.import_test.some_data is constructed
    bl_label = "Load City"

    # ImportHelper mixin class uses this
    filename_ext = ".xml"

    filter_glob = StringProperty(
            default="*.xml",
            options={'HIDDEN'},
            )
    directory = StringProperty()
    filepath = StringProperty(name="File Path", description="Filepath used for importing txt files", maxlen= 1024, default= "")

    use_setting = BoolProperty(
            name="Save to Text Editor",
            description="Make a copy of generated script in text editor",
            default=False,
            )
    scale = FloatProperty(
            name="Scale",
            description="Scale the model",
            default=0.05,
            min=0.01,
            max=10.0
            )

    def draw(self, context):
        layout = self.layout
        layout.prop(self, "scale")

    def execute(self, context):
        return read_some_data2(context, self.filepath, self.directory, self.use_setting, self.scale)

# Only needed if you want to add into a dynamic menu
def menu_func_import(self, context):
    self.layout.operator(ImportCityGML.bl_idname, text="Import CityGML")

def register():
    bpy.utils.register_class(ImportCityGML)
    bpy.types.INFO_MT_file_import.append(menu_func_import)

def unregister():
    bpy.utils.unregister_class(ImportCityGML)
    bpy.types.INFO_MT_file_import.remove(menu_func_import)

if __name__ == "__main__":
    register()

    # test call
    bpy.ops.import_dem.city_gml('INVOKE_DEFAULT')

3-28-WITTE-DORP.xml

Witt Dorp with textures.

EDIT:

This is a non lxml version and works with the xml.etree version from blender.  The remove doubles code from Removing doubles on imported 3DXML ngon mesh has been added which greatly reduces the amount of verts.  Might post the lxml version on my github page if anyone is interested.


How to randomize position of multiple objects?

You want to randomize an object that has a array modifier?
For that first apply the array modifier then in the Search bar which appears by clicking Space Bar (if not , in the preferences , you need to change the way space bar works , its possible your spacebar plays the animation) , search for separate by loose parts and select it.Then search for randomize transforms(make sure all the objects i the cluster are selected) and then open the box in the bottom left and change the location ,rotation and scale


How can I make my particles freeze in time and convert them into a Mesh?

Find the frame most suited to your goal with the particle system.
Press the Convert button of the particle system modifier, you will have duplicates.  Make a selection of only the emitted particles. Do not include the original particle system mesh.
Join the Meshes with Ctrl-J


Tracked video not showing in the 3D viewport in rendered mode

To have a transparent background in the render layer, enable Film  Transparent.
I checked into the compositor and transparent render would have the checker background as shown here:

(For 2.7x)


Why my active rigid body objects not collide with passive rigid body objects

Not sure your hair will be inlcuded in the rigid body simulation stack even if you apply a rigid body to the empties. Might want to look into the molecular addon as it calculates collisions for particles, etc


How can I hide source of spot lamp and keep the emission for the visible part

If you're using Cycles, you can disable shadows for the cylinder so the light can pass through it:

However, like this, the entire object won't cast any shadows which may be undesirable, so you could delete the face of the cylinder and add a new circle object in place of it which has its shadow disabled.
In EEVEE, you can disable shadows per material, so you can apply an emissive material for example to the face and have its shadow disabled:

Result with EEVEE:

Result with cycles:


Placing an image under a transparent object won't reflect in it

If you are using Eevee as your render engine, in Render Properties you have to enable Screen Space Reflections
Without
With
If you are using cycles it should work unless your dominos have bad geometry.
Select a domino
take it into edit mode
select all
type SHIFT-N to recalculate normals.
If that doesn't work you've got other geometry problems.


The rendered image is different than what I see in the viewport

Your view is locked to this quad sphere, which I believe means your camera is not traveling along with your view as it should be with this option checked.  In fact you should not be able to adjust your viewport focal length from the N-panel if your camera is locked to view.


Disparate versions of documentation for Python API

There's an URL that redirects you to the most recent API docs:
http://www.blender.org/documentation/250PythonDoc/

Sphinx Doc is used to generate the API documentation. I assume it's the default style we see for our API docs, not sure if Sphinx Doc changed their default or if there was a special stylesheet for 2.59 docs...
http://sphinx-doc.org/

The docs received an own page, they were formerly embedded in the old, dark-themed website (and I welcome this change). It might be the reason why the theme changed, it's no more part of the website and doesn't need to look similar. In the meanwhile, the website theme changed to a bright design, and I would like to see the current Sphinx Doc theme adopted:

Sphinx 1.0.7 - https://docs.python.org/2.7/
Sphinx 1.2.1 - https://docs.python.org/3.4/

The light gray design looks stylish and modern like the new blender.org design

The Wiki is a jungle of 2.4x docs, partially copied over to 2.6 pages and never updated again, some 2.5 guides and screenshots missing newer features, as well as some very up-to-date 2.6x pages - mainly the most frequently accessed pages (introduction, 3d view port...). Too bad Google doesn't accept documentation projects for the Summer of Code, I worry it will stay a blend of old, partially updated and up-to-date pages forever.


That's quite easy to do. You don't even need to use Python, you can do this with logic bricks, properties and messages.

I've got an example .blend here: http://www.pasteall.org/blend/33896

Press P to start.
Change weapons with 1, 2 or 3 keyboard keys. Notice how the wepon is lowered, then changes, and then plays a setup animation. Right now all the weapons play the same animation, but you could make several different ones if you like and link those up.

I've done in a slightly different way than you requested. Instead of adding/removing weapon objects, I've used Replace Mesh to change the weapon, and a active weapon int property. I've found this to work better, and you don't need to worry about having the new weapon follow the character around this way.
You can check for this int and change behaviours for the different weapons (to add different bullets or whatever).

I don't quite understand you requests about a 'Primary' property, but you can add that yourself, no problem.

For actual shooting, just add a Shoot action with some weapon movement and an empty in front of the weapon to emit bullets. These things can be set up to listen to the active weapon and change their behavior.

Hope this works out for you. These things are not really that hard once you get a hang of Properties and Messages. Cheers.


Blender 2.91.0: How to re-align the local axis of an object that has 0 rotations to the global axis?

Besides primary transformations blender has Delta Transform which useful in some cases.
It's located in Properties > Object > Transform > Delta Transform:

You can transfer primary transformations to deltas by applying them:

Blender hasn't Apply Delta Transform operator. You can only copy Delta transform to primary manually, reset deltas to default then Apply main transform to data.


An object can be animated along a path by Follow path Constrained to set its orientation toward the camera you need also a Track To Constrained

The duration of the animation can be controlled in the curves settings:


To apply the modifier:

Duplicate the object "A" to "B" and remove Shape Keys from "B".
Apply modifiers on the duplicate "B"
Duplicate the original object again from "A" to "C", with a Shape Key transformation (choose one for now. we have to repeat for other Shape Keys)
Convert the second duplicate "C" to mesh using Alt-C "Convert to - Mesh from Curve/Meta/SurfText"
Select "C" (as selected) and then, "B" (as Active).
In Properties - Object Data - Shape Keys, we click in the down arrow and, in the menu, we click in "Join as Shapes". This will create the "Basis" with the original shape and a second shape key, with the same name as the object. Now, we have to change manually the name of the Shape Key.
"C" can be deleted. Repeat for each Shape Key.

This is based on SubSurf applying in Objecs with Shape Keys (to use in BGE) by Mario_Mey from blenderartists.org.


This change was made in version 2.65, described in the release notes here under 'User Interaction'. You now have to define the size of the tiles by pixels in the performance panel, instead of defining how many tiles. For example, setting a tile to be 100px x 100px when rendering a 1000px x 1000px image would results in 10 tiles by 10 tiles.

However, I personally like to also have the option to define by the number of tiles, using the old way as you describe. I wrote a small addon which restores this functionality which can be found on github here, which adds back render parts options at the bottom of the performance panel:


Why do my objects look like this in solid view?

@sobe608 was right, but for another reason. The faces are 'occupying the same place' .. but not in Object space; in the View volume. And they're at 'the same Z' (depth) in that volume, because the near and far clips are too far apart, resulting in floating-point numbers not having sufficient precision to distinguish points in the range.
TL;DR...
Change the clipping range in the viewport to the minimum that reasonably encloses your scene.


how can you add keyframes to the child mesh parented to the parent mesh

Around the top of your object viewport please click the options button in object mode. There should be a dropdown menu that allows you to change the transformations allowing you to only affect the parent and not the child.


Why is this material so bright even without any lights?

Your roughness value on the principled bsdf is way to high, it should be between 0-1. Having a really high value like that can make the shader behave abnormally.


Are you looking for the fill holes mesh cleanup tool? Select the area containing holes and go to Mesh ‣ Clean up ‣ Fill Holes.

You might also want to check out the limited dissolve tool based on your screen shot.


First of all go here and read this answer: How to use Blender's dynamic sky add-on?

Go to Node Editor and switch to World mode.

In paragraph Night sky with stars (from the linked answer) you can see whole node setup for Dynamic Sky add-on. Find part Clouds/Stars and Texture Mapping node there:

Now you can animate any of the Location values to get clouds moving in chosen direction.


Can inset faces be used on a triangular face?

To inset... Use the inset tool.

Select the faces and Press I and drag to get the desired width.

Be careful to avoid making the inset much wider than the distance to the center of the face, or you'll get errors like these:


How can save rendered images to a specific folder?

You just need to add the output folder name in the Output file path and add a backslash at the end. Then Blender will create the folder (if it doesn't already exist), and write the new frame files into this folder.


The geometry of "Destructor Rrrr Cube" object is not cube, the bounds box is just displayed. Select Textured in the Display As pull down menu instead of Bounds.


Search custom properties in objects on the scene (Python)

Since Blender 2.79 this possible by using bpy.props.PointerProperty and its poll parameter.

For example:

# define the filter method
def filter_on_custom_prop(self, object):
    return "MyCustomPropName" in object

# define the property by using the bpy.props.PointerProperty and its poll function
bpy.types.Object.my_object = bpy.props.PointerProperty(
    type=bpy.types.Object,
    poll=filter_on_custom_prop
)

# add to your draw code a `prop_search`
layout.prop_search(obj, "my_object", context.scene, "objects")
# or just simple
layout.prop(obj, "my_object")


As for spheres - remove bottom halves that are inside geometry and then just attach using ctr+j to join it with the main mesh.
As for game ready - one idea would be to actually bake the spheres as a normal texture and use it to imitate bumpiness.

For gameready object i would not use subsurface modifier at all, instead I would make a denser model with subsurf (like one you have already), and then I would retopo it - using shrinkwrap modifier  I would create a low-detail version.


Setting "dynamic = off" keyframe for multiple active rigid bodies at once.

try this:

Push space and just click the option called "Copy game physics properties to selected" And then it will copy the game physics to all selection one frame before they collide in your animation.

Good luck!


Under Performance, set the number of threads to "Fixed" and just use one or two threads.  That should help keep the temperature lower and your fan slower if that's what's making the noise.  It will take proportionally longer to render though (just leave it on overnight).  Other than placing your computer in another room, that's about it.


how to work with dynamics and animated objecs

I'm new to blender myself, but I think your solution would lie in the timeline key frames. For each object you can start movement at one key frame, move, and stop at another key frame. Hope this helps.


Mesh can't use a material which is not contained in slots.

I will try to guess what you have done so far. You create a text, make it thick enough, turn it into mesh. And for that wall, you use a bool modifier with difference operation, select the mesh text. And get no color?

1) Make sure your text have an material on it

2) In your wall object, you will need a same material in the slot

At the time you add the same material on the wall, you should see the text color in your wall.


If you want these curvy shapes you can try Volume Empty object with two volume modifiers.

Add a Cube, switch to Sculpt mode and with enabled Dyntopo use Snake Hook tool
Add Volume > Empty object
Add modifier Mesh to Volume and use the Cube as Object
Alternatively for more distortion you can use Volume Displace modifier with Cloud texture

Sculpted - three drags with Snake Hook tool (screen from edit mode)

Volume > Empty object with Mesh to Volume modifier

Added Volume Displace modifier > Cloud texture

... another example smaller size texture and higher Density set in shader

Volume modifier available from Blender 2.92 and above ... I'm so big fan of this feature.
Just a few clicks :)
BTW - ad to "graine" render - in Properties editor under Render property >Sampling > Denoising enable Viewport / Render Screens above are just result of 4 samples :)


How do you access and set a specific bone animation fcurve in python ? e.g. set pinky02_L z rotation = 8 degrees

Some py console code.

Below are some ways to find an fcurve for specific pose bone, and pose bone property.  In this example the context pose bone, and rotation_quaternion.

>>> ob = C.object
>>>
>>> action = ob.animation_data.action
>>> pb =  context.active_pose_bone
>>> pb.name
'Bone'

>>> # could query the pose bone  from collection via its name
>>> ob.pose.bones.get(pb.name)
bpy.data.objects['Armature'].pose.bones["Bone"]

>>> print(pb.path_from_id.__doc__)
.. method:: path_from_id(property="")

   Returns the data path from the ID to this object (string).

   :arg property: Optional property name which can be used if the path is
      to a property of this object.
   :type property: string
   :return: The path from :class:`bpy.types.bpy_struct.id_data`
      to this struct and property (when given).
   :rtype: str

# get the path from pb.id_data
>>> dp = pb.path_from_id("rotation_quaternion")
>>> dp
'pose.bones["Bone"].rotation_quaternion'

>>> # could also build this from name
>>> 'pose.bones["%s"].rotation_quaternion' % pb.name
'pose.bones["Bone"].rotation_quaternion'

>>> # use find for one offs
>>> print(action.fcurves.find.__doc__)
ActionFCurves.find(data_path, index=0)
Find an F-Curve. Note that this function performs a linear scan of all F-Curves in the action.
# find rotquot[3] aka rotquot.z
>>> fc = action.fcurves.find(dp, index=3)
>>> fc
bpy.data.actions['ArmatureAction']...FCurve

>>> fc.array_index
3
# use list comp to find them all for for each index
>>> ["%s[%d]" % (dp, fc.array_index) for fc in action.fcurves if fc.data_path == dp]
['pose.bones["Bone"].rotation_quaternion[0]', 'pose.bones["Bone"].rotation_quaternion[1]', 'pose.bones["Bone"].rotation_quaternion[2]', 'pose.bones["Bone"].rotation_quaternion[3]']

>>> # get the value from ob using dp
>>> ob.path_resolve("%s[%d]" % (dp, fc.array_index))
-0.43060973286628723
# ie ob.pose.bones["Bone"].rotation_quaternion[3] = -0.43
>>> pb.id_data.path_resolve("%s[%d]" % (dp, fc.array_index))
-0.43060973286628723

Links

Get bones associated with specific action in python

How can I tell if a bone property has a keyframe on the current frame using python?

How can I access bone's 'animation_data.action'?

On rotations, here is the quaternion for an xyz Euler rotation of degrees (8, 8, 8)

>>> rot = Euler((radians(8) for axis in "xyz"))
>>> rot.to_quaternion()
Quaternion((0.9930493831634521, 0.06456293165683746, 0.07427114993333817, 0.06456293165683746)) # wxyz

To set the defaults to above would set each keyframe.y of keyframes in fcurve  fc with array_index=3 to 0.06.. etc.


How to properly render smoke on a transparent background?

It's a viewer issue only. Try compositing over a gray background using the alpha-over node.
If the result is correct, then your file output (without the gray background, of course) will be correct as long as you store it as EXR or any other format with associated (premultiplied) alpha channel, as it's the only way to store pixels that are both transparent and emissive (which is what fire is).
The resulting EXR will be fine to be composited over any background, and fire should look ok.


When using Render Layers don't forget exclude layers, if they invisible.

If you doesn't exclude layer, it will be loaded into memory even if turned off. Objects on invisible layers will be visible in reflections, shadows, and can be mask (Mask Layer option). So, if you really want to layer don't load into memory, mark them as Exclude.


Converting particle simulation into meshes for Keyshot

When you use the script you need to specify a object to duplicate ?
If so, before launching the script scale down your object and apply the scale, (Ctrl + A).


You should check Mirroring.

  If you want to mirror your animation form the left side to the other
  side during pose mode you just need to select the whole left side then
  copy the pose with Ctrl+C.

  After that press Ctrl+i to go to your right side
  and finally press Shift+Ctrl+V to
  paste the the X flipped pose, that way you'll have a perfect mirror of
  both side

Or enable X Axis Mirror option.


how do I fix this weird thing where my objects turn purple

Pink mesh mean that you're trying to load a texture that's missing. Check that textures have been loaded correctly and/or haven't been moved.


Model a single segment e.g.:

Add an Array and Curve modifier

Now you should be able to animate open/close by translating the x-axis.

Method 2

To avoid that the Curve modifier distorts the segments, you could add another object say plane (Empties cannot have the array modifier) and parent the segment to the plane. Use face duplication on the plane to create the undistorted segements.

Note it is important to apply scale.


Use the parallel render add-on: https://github.com/elmopl/ktba/tree/master/scripts/addons

Install it.
Add an absolute path to ffmpeg in the add-on preferences.
Find the Parallel Render options in the Render sidebar.

(For really fast render use AVI JPEG and PR, but you'll have to render audio separate afterwards and mux it yourself)


Can I edit a text object while rendering?

It is possible to continue working on your scene while rendering, you just need to click on the image icon in the bottom left corner of the render screen.

Click on 3D View from the menu to continue editing your scene while the animation renders in the background.

For the changes you make on your scene to take effect in the final render, you are going to have to re-render your animation.


Blender 3D: Show and Work simultaneously on two or more scenes, same file

Just for the sake of completeness here I'll leave a more proper answer.

Go to File > User Preferences > Interface > Display and uncheck the option Global Scene.

The "Global Scene" option enforces displayed data from all editors to belong to the same active scene. If you disable it you can show data from different scenes in different editors if they belong to different OS Window. You will need to create an Info editor for each separate window to control which scene is displayed there.


How to run Batch Rename Datablocks Addon?

In the 3D view, type space then type "batch rename..." :

"Run script" just allows this to be available.

Since this is an Addon (not a regular script) you can make it (the operator and its functionality) permanently available, see: How to install an Addon?


How to rotate a child opposite of its parent in BGE?

This should be possible without Python and Logic bricks.
As far as I see, you want the child to keep its original orientation. This can be done by vertex parenting. You need to add a single vertex to the mesh of the parent on the location where the child is. Then parent the child to the vertex.