Segfault when going back to Object Mode, on unrelated data

Use a copy

centers = [p.center.copy() for p in obj.data.polygons]

Similarly for obj.location

>>> C.object.location
Vector((3.3187315464019775, 1.0073195695877075, 7.229274749755859))

>>> v = C.object.location
>>> vc = C.object.location.copy()
>>> C.object.location = (0, 0, 0)
>>> v
Vector((0.0, 0.0, 0.0))

>>> vc
Vector((3.3187315464019775, 1.0073195695877075, 7.229274749755859))

v is a reference to the object location. It is bound to the object. Removing the object and trying to reference v again will lead to a seg fault.

Use v = C.object.location.copy() for an unbound "snapshot" copy.  (casting to list and back was doing this too)

Note centers.copy() was still a copy of a list whose items were references to a polygon and hence the mesh.

As pointed out by @MartinZ you can also set the select values in object mode. The foreach_set(prop, values) method is faster than iterating and setting, eg for polygons

>>> me = C.object.data
>>> me.polygons.foreach_set("select", [False] * len(me.polygons))
>>>


Is my animation supposed to render frame by frame?

An animation is perhaps best rendered frame by frame to seperate image files and then consolidated to a video file.

Heres why:  If your video fails to complete you lose it all. You still have the blender scene. In a long animation if it fails at say frame 64, you cn simply start it again and you will have all the individual frames to combine.

You can also farm the job out to a render farm , but there are issues there as well.

When I did the Dissolve tutorial (if thats what you did ) I think it took just over 1 minute per frame. Mine was 960 x 540

my PC - an intel celeron J1900 1.9 quad processor. Blender does not recognise a GPU (video card)


Nothing wrong with you hardware, maybe just close other programs while baking and maybe lower the poly count of your mesh and then just use a subdivision modifier so it's less laggy. Also the more windows you have open just cause more lag so just keep it to the baking window and close the 3d view and node view windows.


Blender 2.8. Hotkey for selecting transform manipulators

This feature is not implemented in Blender 2.80 Alpha 2


How to get name of image corresponding to active paint slot?

Material.texture_paint_images contains all image references used for painting.

import bpy

mat = bpy.context.object.active_material

for idx, img in enumerate(mat.texture_paint_images):
    print (idx, img)
    if idx == mat.paint_active_slot:
        print ("Index:", idx)
        print ("Name:", img.name)

Even shorter (without the iteration):

>>> mat = bpy.context.object.active_material
>>> print (mat.texture_paint_images[mat.paint_active_slot].name)
'Material Diffuse Intensity'


How to get sharp edges with subsurf and concave Ngons

I also struggle with this. I have two tricks that might help:

You can make the corner of a hole sharp by creasing an additional one of its connected edges:

But if your surface is curved, this might create an ugly sharp discontinuity.

So instead you might try the crease options on the solidify modifier:

Again, it can get weird when the surface is curved, but I find it helpful in most situations. If you don't want your surface to be made solid, you can set the modifier to only generate a rim, and make the rim vanishingly small.

Hope this is helpful. If you find anything useful, please share it!


Breaking an environment into multiple objects

I'm an advocate of breaking meshes up. There are numerous reasons that I feel this way:

Not many objects in real life are solid chunks.  Maybe concrete walls to a certain extent, but even those tend to have seams to allow for movement and expansion so they don't crack.  Seams will add realism.
When your object starts to get large and/or complex, the mesh topology can get weird in places.  For example, I would guess you have a lot of extra edges where the stairs connect with the walls.  Those edges wouldn't be needed if the stairs are separate.
It's way easier to UV/unwrap smaller, simpler objects than it is with large complex objects.  Similarly, it's a lot easier to assign materials to whole meshes rather than selecting individual faces.
Even as separate pieces you can still group the objects together in Blender so you can move them as a unit, so keeping them together doesn't really give you much of an advantage there.

That's mainly what I can think of off the top of my head.  I hope that's helpful!


Why is my Shadow Catcher layer shadow-pass entirely black?

As Sanix, Marasoftware and Sebastian Kónig point out (https://twitter.com/s_koenig/status/656693360955150336), the Cycles shadow pass does not work with environment texture lighting (nor does it work with mesh lighting), hence my shadow pass was entirely black.

A number of solutions were suggested, usually to identify the direction of the environment texture sun light ("Is there anyway to match a sun lamp to the direction of the sun in an environment map?") and then to mimic this light with a sun lamp, excluding it from the main layer. This made a lot of sense - and then I happened across the following:

Cycles: Shadeless "Shadow-catcher" Material for Rendering onto Footage

What a brilliant, simple idea! Render the shadow catcher twice, once with shadows from your main object and once without - then subtract the clean shadowcatcher from the shadowed layer, leaving only the shadow behind! (Then use RBG curves or what have you to tweak the darkness of the shadow).

Barring any future mishaps or objections from the community, I'll be using this in from now on.

Two side notes:

1) This seems like an insanely useful material for this kind of task in future, though I haven't done all my research on it yet. Could be handy for someone doing a little compositing...

2) Had some trouble with backfaces in my Cycles shadowcaster, this solved my problem. Hope it's of use.


How to make a cellophane plastic shader/material?

Improve lighting
The main difference between your results and the reference images is lighting. Lights and the environment have a significant impact on how the material looks. You can design the perfect material, but it won't look right if it is in complete darkness.
The easiest way to get a realistic environment is to set up an HDRI, but you can also simply add a few different lights to the scene.
Add wrinkles
Note that the geometry in the reference images is quite complex. The wrinkles emphasize the intricate reflections that happen within the wrappers. To get a similar look, you would have to add wrinkles to your geometry as well.
Blender has a great tool for this – the sculpt tool. In particular, the cloth brush makes it easy to simulate wrinkles as you manipulate the geometry.
Add diffuse and absorption components
Overall, the material itself looks good. Perhaps its missing a little bit of diffuse shading. As you can see in the first reference image, areas where the wrapper is thicker due to multiple layers, the material appears whiter, even though it does not directly reflect any light.
You could mix in a bit of diffuse shading to emulate this effect. Furthermore, the diffuse shader should be especially pronounced in areas where the material is viewed at an angle, because in such areas, the light ray will have to travel further through the plastic. (You can achieve this with a Fresnel input).
In addition, most transparent materials absorb some ammount of light. Make sure that the transparent shader has a very light light gray color (instead of white). This will slightly darken the rays of light passing through the material.
Example
Inspired by the first reference image, I quickly sketched out some basic geometry, then messed a bit with sculpting to get some wrinkles. I used a different shader setup (a single principled shader), but you should be able to apply the techniques described above to your setup as well.


Blender 2.8 - show hidden files in file browser?

You can click the Filter dropdown menu (Display Mode) at the top-right of the File Browser in order to enable 'Show Hidden' which displays all files (or just press H to toggle the that mode on/off):


How to use a texture colour to define a transmission map

Sure thing.
Just add a ColorRamp and increase the contrast.
You can also set it to Constant (for maximum contrast) if you don't mind jagged edges.


How to generate smooth vertex weights from edge/face selection?

This could be it: Gradient fill. Blender's best-kept secret.

https://youtu.be/bQBlMTt8SrU


Way for my texture to emit light/glow on the Eevee engine

In Eevee you have a very fast bloom function:

However that makes everything pixel bloom as long as it's brighter than the threshold. If you want to make single objects bloom you need to mask them some way and then use the mask for a glow effect in the compositor (post render). One way is to use object pass index.


I can't use the add menu, how can I fix it?

As moonboots told me the problem is that the Global Undo was disabled, to fix the problem you need to go here: Edit->Preferences->System and add the check on the Global undo


Weight painting not working at all (2.8)

I had same problem on a flat plane, but  after I subdivided the plane several times it worked.


Array of planes with different static textures

I've had some luck with this approach.

UV map an array of card geometry against whatever batch-of-cards image you are using. (I imported the image as a plane for reference, adjusted a card-array so the geometry captured the individual cards, and projected the UV from an orthogonal view)
Apply the array, and P separate the card-array-object by loose parts. You should now have a set of separate card-objects, each with its own UV coordinate reference to the batch image. (So now, they will use the 'UV' texture space in their common front-face material)
With all the card-objects selected, ShiftAltO set their origins to their geometry.
Make a Group of the cards
Make an array of small square Planes, Object-Offset as you choose
Use the plane-array as an emitter for a particle system, with the card-group as source of instances: the settings something like as shown.. (all other settings null, no physics, velocity, etc.)

This isn't without minor gotchas.. sometimes the rotations can flip out (gimbal lock?) so watch out for that before committing to a major render.

Hopefully you will retain all the features of array manipulation on the array of plane emitters, and the individual cards will follow. If you 'Use Count' in the particle Render settings, you can select and order the cards in the array.

It's sensible to parent the plane-array and the offset-object to anther empty, so you can transform the whole arrangement with it, without upsetting the array's offset.


What Would be My Best Option for Connecting the Parts of this Mesh?

Merge is probably merging everything at the center of the selected edge's bounding box.

You could do it manually, just enable edge snap and move the edges from the glove into the fingers and hands.
After you are done, select these edges (maybe grow the selection with ctrl + first, just to be sure), and then remove doubles.

Another way would be to select both edge loops, bridge them, then edge slide on the rings into the other and then remove doubles.


The problem you are most likely facing is that you're render samples are too low.
This can make the denoise feature in cycles produce blotchy artifacts.

The way to fix this is by going to Properties >> Render >> Sampling

Under "Samples" section, increase the Render value gradually until you get desirable results.

Also make sure not to overdo it because setting the value high (like 1000) can have a massive hit on your computers performance.


The cast modifier should let you do exactly what is in the video, with only a couple of steps.

To set it up, you will need a hose object with fairly dense geometry, and an object to pass through the hose.

To set up the system, you will need to have the object (I'm going to use a sphere as an example since that was the object in the video) positioned at one end of the hose, and animated to move through it. I would think a curve would be the best way to animate the object, and you could also use the same curve to bend the hose.

Once you have the animation set up, simply add a cast modifier to the hose, select the sphere in the control object box and then adjust the radius until the hose completely covers the object.


You can do this by having your gun fire a setup like this.

Before, you gun just fired the cone, and there was nothing to make it rotate. however, if the cone is parented to a cube with the physics set to Rigid Body, and the gun fires the cube, the cone will move with it. however, there is still nothing to make it rotate. This can be fixed by enabling the slow parent option on the cone.

With this option enabled, the cone will lag behind the cube when the cube is fired out of the gun. but we still need the cone to rotate. we can do this by making it track to the cube.

Now when the cube is fired, the cone lags behind and points to the cube. this creates the illusion like it is dropping due to gravity.

However there is still a problem. when the cube hits the ground, it starts rotating. Because the cone is parented to the cube, it also starts spinning out of control. We can fix this by preventing the cube from rotating. Remember, the cubes is only so the cone has something to track to. IF you want, you can also use it to calculate the collisions.

Now we can test it again.

It now looks like it should, but there is a giant cube in front, and the cone does not look like a very convincing projectile. And, when the cube hits the ground, the cone still fires off slightly. we can fix the problems with the cube first by making it invisible, and enabling the ghost setting.

Now it will pass through the plane, making the cone follow it as it would if it was a bomb falling to the ground. however, we made the cube invisible, so we can't see the cube anymore. we can only see the result.

This is good, but the cone still does not look like a very good projectile.
You can obviously model anything you want for this, but I chose to model a missile because they look cool. I also added an explosion when the cube hits the ground, and some other awesome effects to make it look cool.


How to distribute objects ONLY on vertex groups in geometry nodes?

OK It's the final edit. I promise
This method works in blender 2.93 Alpha(I don't know about version 2.92)
All you have to do is set the density attribute to material_index and voila your work is done, no weight paint required, it assigns density on the basis of material used.
Screenshot:


How to link the adjust last operation menu to object? Blender 2.80 - 2.81

That's pretty close. Just add real properties to the operator class. Minimal example:

import bpy
from bpy.types import Operator
from bpy.props import IntProperty, FloatProperty, FloatVectorProperty

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

    my_radius : FloatProperty()
    my_depth : IntProperty()
    my_location : FloatVectorProperty()
    my_rotation : FloatVectorProperty()

    def execute(self, context):
        # Call primitve_add
        bpy.ops.mesh.primitive_cylinder_add(
            radius = self.my_radius,
            depth = self.my_depth,
            location = self.my_location,
            rotation = self.my_rotation)

        return {'FINISHED'}

def register():
    bpy.utils.register_class(OBJECT_OT_add_object)

def unregister():
    bpy.utils.unregister_class(OBJECT_OT_add_object)

if __name__ == "__main__":
    register()

Further reading: https://docs.blender.org/api/current/bpy.props.html


Simplify mesh by merging and filling holes

I have taken a look at your Blend file, and I first noticed that your mesh is quite messy. In these cases, using operations as you have mentioned (Merge, Fill, Decimate, Dissolve) will only worsen the problem.

Due to the messiness of the object in question, if possible, I would recommend rebuilding the mesh using clean, quad-based geometry.

First, in top view (Numkey 7), add a new plane over top your existing object (Shift + A > Mesh > Plane)

Next, move the plane along the X axis to the left edge of your mesh (G then X)

In edit mode (Tab), begin to move the vertices to the shape of the mesh. To select vertices, verify that you are in Vertex Select Mode (Ctrl + Tab > Vertex).

When you have shaped a section of the mesh, you can then extrude the edge of the plane to the right to add more detail. Use Ctrl + Tab > Edge to select whole edges then use E to extrude and repeat the previous vertex shuffling procedure.

Use Ctrl + R to add new loops to existing sections of  your mesh. With these methods you can add as much or as little detail to your new mesh as you like.

Here is a low-detail example I was able to match in under a minute:


How do i change the collision box position?

From the screenshot it looks like the origin is off center (the small yellow dot in the center of the collision bounds box). In object mode select your cube and in the tools panel, under the 'Tools" tab click the 'Set Origin' dropdown and choose 'Origin to Geometry'. That will snap the origin back into the cube where it belongs.


Script for getting Camera Look At co-ordinates

If you want the first surface point of where the camera is pointing at, you can use a variation of this script.

It casts a ray from the camera and checks for collision using the ray_cast function of the BVHTree module. I have documented the script with lots of comments. Paste in Blender Text Editor and press Run Script.

Demo of the raycasting.

import bpy
import bmesh
from mathutils.bvhtree import BVHTree
import mathutils

# the epsilon value for the BVHTree calculations
EPSILON = 0.00001

# maximum ray distance from camera
MAXIMUM_DISTANCE = 100

# make sure you have a Camera and an Empty named like this
camera = bpy.data.objects["Camera"]
empty = bpy.data.objects["Empty"]

# create the BVHTrees from bmeshes
# the bmesh conversion makes it easy to apply the individual objects transformation matrices
trees = []
for ob in bpy.data.objects:
    if ob.type == 'MESH':
        bm = bmesh.new()
        bm.from_object(ob, bpy.context.scene)
        bmesh.ops.transform(bm, matrix=ob.matrix_world, verts=bm.verts)
        trees.append(BVHTree.FromBMesh(bm, epsilon=EPSILON))

# the main method for calculating the distance
def measure_distance(scene = bpy.context.scene):

    # create a direction vector (dir) by applying the
    # camera's transformation matrix to (0, 0, -1)
    mat = camera.rotation_euler.to_matrix().to_4x4()
    if camera.rotation_mode == 'QUATERNION':
        mat = camera.rotation_quaternion.to_matrix().to_4x4()
    dir = mat * mathutils.Vector((0, 0, -1))

    # use the min_dist variable to keep track of the nearest collision location
    min_dist = MAXIMUM_DISTANCE

    # if no rays collide < MAX_DISTANCE, we'll display the Empty
    # at the camera's location
    vloc = camera.location

    # loop through each bvhtree and check if the is a collision
    # casting a ray; if the distance of the collision is smaller
    # than min_dist, we'll use this newfound location
    for bvh in trees:
        loc, no, i, d = bvh.ray_cast(camera.location, dir)
        if d is not None:
            if d < min_dist:
                min_dist = d
                vloc = loc

    # assign the location to the empty to visualize the ray collision
    empty.location = vloc

# remove all handlers, then create a new one with the measure_distance function
for h in bpy.app.handlers.scene_update_pre:
    bpy.app.handlers.scene_update_pre.remove(h)
bpy.app.handlers.scene_update_pre.append(measure_distance)

You can now use the found coordinates in the vector vloc to do whatever you want.


The shadow looks like a wave. How do I fix it?

I'm assuming you're talking about the floor under the table.  It looks like the denoiser doesn't have enough samples to give you an accurate representation of the shadow.
You can enable viewport denoising and draw a render region around the trouble area to watch it render and determine how many samples you'll need to get the desired result.


You need to get the context selected object as shown below:

import bpy
file_loc = 'C:\\Users\\MyComp\\Documents\\3Dobjects\\obj\\humans\\human_figure_JOINED.obj'
imported_object = bpy.ops.import_scene.obj(filepath=file_loc)
obj_object = bpy.context.selected_objects[0] ####<--Fix
print('Imported name: ', obj_object.name)


One of many ways is to just model your runes, knife project them on the golem and extrude inside as much as you need. And Sculpt mode is meant for characters, with special regard to human face and head. Hence the curves.


Message from one scene to another (not an overlay)

I've done some tests and you can not send a message to a scene that did not loaded.

In the example 1 the scene1 send a message when mouseOver the scene2 recive the message and add  1 to count, i use a script to print the value.

Scene 1 logic:

Scene 2 logic:

from bge import logic

obj = logic.getCurrentScene().objects['Suzanne']
print(obj['count'])

Behaviour when:

scene2 IS NOT an overlay nor background

scene2 IS overlay or background

In the example 2 i dont use any message. I store the value in an attribute of bge.logic module.

Scene 1 logic:

from bge import logic

if not hasattr(logic, 'count'):
    logic.count = 0
else:
    logic.count += 1

Scene 2 logic:

from bge import logic

if hasattr(logic, 'count'):
    print(logic.count)

Behaviour when:

scene2 IS NOT an overlay nor background


Problem with weight painting a mesh to bones

Select (or create) a vertex group of/for the toe, then paint the toe vertices with Add.


I was able to fix it by setting the origin to the centre of bounding box then copying location from m1 to m2 then applying location as shown below.

bpy.ops.object.select_all(action='DESELECT')
m2.select = True
scene.objects.active = m2
m1.select = True
bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='BOUNDS')
m2.location = m1.location
bpy.ops.object.transform_apply(location=True, rotation=False, scale=False)


Blender stuck at 100% on the first frame of animation

You could try rendering without the GUI. I had found the following python script, which worked well, on the youtube channel of Chris P when I had crashes rendering animation nodes scenes :
import bpy

start_frame = 1

end_frame = 180

fps = 24

path = 'C:\'

for frame in range(start_frame, end_frame + 1):

    bpy.context.scene.render.fps = fps

bpy.context.scene.frame_current = frame

bpy.context.scene.render.filepath= path + '\\%04d.png' % frame

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

Just paste it in a new text file in the Blender text editor of the scene you want to render. Replace start_frame, end_frame, fps and path, then run the python script. Tell me if it worked :)


why is no motion is occurring between key frame?

Hm, from your screenshot I see, that your keyframes are the same (gray line between them), so I except no motion between them.

But why one frame changed? I think it just cashed, and if you press "Refresh sequencer" it resorted to it actual (no-animation) position.

So make sure, that you put keyframes correctly


convert cycles materials to blender render

You could try disabling the "use nodes" option.


How to dynamically show/hide panel elements with python?

scene['Object_type'] will refer to a custom property you have added to a scene either by using the Custom Properties panel in the scene properties or by blender automatically creating it as you used scene['Object_type'] = 2 in your script or the python console.

The proper way to create a new property for your addon to use is by using bpy.props.

In your addons register() function you define the new property then in unregister() you remove it. Within your panel you can then access it with scene.myprop

import bpy

class LayoutDemoPanel(bpy.types.Panel):
    """Creates a Panel in the 3D views toolbar region"""
    bl_label = 'Layout Demo'
    bl_idname = 'SCENE_PT_layout_demo'
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'TOOLS'

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

        row = layout.row()
        row.label('testing')

        if scene.myprop == 2:
            row = layout.row()
            row.label('my property is 2')

def register():
    bpy.types.Scene.myprop = bpy.props.IntProperty(name="My Storage", default=2)
    bpy.utils.register_class(LayoutDemoPanel)

def unregister():
    bpy.utils.unregister_class(LayoutDemoPanel)
    del bpy.types.Scene.myprop

if __name__ == "__main__":
    register()


There is no manual scale panel in Edit mode, only in Object mode. Vertices don't really have a specific scale—when you scale them up or down, it's a one-shot action. So it doesn't really make sense to have a manual scale box—when you weren't editing it, it would always display 1.


How can I animate an opaque material to being fully transparent in Cycles?

You can do something like in the image below.

Here I have added a simple glass shader to an object and mixed it with a transparent BSDF. Then I simply animate the factor of the mix shader
(0.0 - 100% Glass / 0% Transparent ; 1.0 - 0% Glass / 100% Transparent).


Subsurf on a crown. How can I smooth some edges and keep others sharp?

Another approach:

Create a Z-scaled, subduvided UV sphere, and a capless cylinder, at the origin.
Give the cylinder a few horizontal loops,  and assign it a Srinkwrap modifier to the sphere; drag it down to a good-looking position in Z
Select the N,S,E,W vertices on the top loop of the Cylinder, and with Proportional Edit / Linear falloff, drag the points up in Z
Proportional off, Median Pivot Point, scale the bottom loop to 0 in Z
Assign a Solidify modifier, with 'Crease' set to 1 for Inner, Outer, and Rim.

The crease will hold against any subdivision.. after applying the modifiers you can extrude down the cylindrical headband, etc. (You might not even need subdivision, maybe AutoSmooth will do..)

EDIT: .... But as moonboots points out, it's worth taking a little time to put in a bevel after applying the Solidify and a level of subdivision around the rims, and then across the peaks and troughs, as shown:


Turn off Load UI when importing his file. This can be done in the import dialog.

To prevent UI modifications by foreign blend files in general, open the preferences, navigate to Save & Load, and untick Load UI


How to make textures follow a certain path?

Thanks to this answer: https://blender.stackexchange.com/a/78362/20394 from Duarte Farrajota Ramos's comment, I was able to get the effect desired.

I just followed the steps in the gif linked above, and instead of selecting one face I selected the row of faces inward of the circle to the outer of the circle, proceding to do the rest of the steps from the gif.

It worked!


Maybe this is similar to your third attempt.
You can animate the viewport and render visibility.
Just hover over the 'eye' or 'camera' icon and press 'i'.
Then move to the next frame, disable both visibilites and set new keyframes. Other way around for the object that should appear.

This doesn't involve the material or messing with the motion blur.


blender 2.8 switch between cycles and eevee

Here you go, this image is from Blender 2.8 BETA, just go to right panel and look at the little icons for the one that says "Render" when mouse hover it.


You messed up something with the workspace. I couldn't find out what, because in the menu the bones are checked in, but after I added a new Layout workspace I could see every bones.


Camera to follow path of curve starting from exactly where it is currently

(Community Wiki answer from Edgel3D’s comment from 2019)
Use an Empty to follow the path and parent the camera to the Empty with "Keep Transormation" (CTL-P) Note - you won't have to worry about the Empty's path-following axis. You can also animate the camera independently to reposition it's angle and location.as it travels.


Why is my module scaling when I parent bones to it?

Most likely you scaled the object and/or the armature in object mode without applying the scale.

Select the object, press Ctrl+A, a dropdown menu should appear. Click on "Scale" (should be the 3rd option in the dropdown).

Do the same with the armature.


Rigid body: how to display collision margin in Blender 3D?

If you mean you want to see the hitboxes of the objects with rigid bodies (the collision shape), you have to do nothing. Usually they are shown on top of the object. If you cannot see them, try to set the Viewport shader to in WireFrame. If you still cannot see the hitbox its because the shape box is set to Mesh, so it overlaps with the current mesh. If your intent was to see a bigger hitbox for objects with an higher collision margin. I don't know if that's possible.


How to use "self" in a driver expression to refer to transforms of a bone in the parent armature?

TL;DR: read below ruler for straight-forward answer - however, this will not give you per-instance shape-keys as I was hoping - this has nothing to do with the self-option, though.

Longer version:

I've tried doing some RTFM'ing but apparently the "Use self" option has not yet been documented in the official manual (nor anywhere else AFAICT).

By lots of trial and error I now figured out that "self" in my case is actually not referring to the mesh object (instance) as I expected, but rather to the ShapeKey object that the driver sits on. The problem then becomes that the shape key itself sits on top of the mesh data block (that is shared between the linked instances) rather than the object instance...

If I'm not mistaken this means that it is not possible to have linked duplicates (and by extension: particle instances) with distinct shape key values, regardless of the whole self in driver expressions issue.

Please feel free to correct me if I'm wrong on this.

However, to answer the question as I originally worded it in the title, if we take the Shape Keys out of the equation and put a driver on a property of the mesh instance itself (e.g. the Y translation) then we could use a driver expression like the following:

self.parent.pose.bones['Bone'].location.z

If you do not mind that instances cannot have distinct shape key values, here's an expression I came up with that will get you from the shape key to the bone of the parent armature:

bpy.data.objects[self.id_data.user.name].pose.bones["Bone"].location.z

These are still very early steps for me finding my way around the Blender object hierarchy, so I strongly suspect there is a better way to express this - especially without the bpy.data.objects[]-lookup - but it was the best I could come up with so far.

Note that this expression relies on the assumption that the mesh data block is named the same as the object that uses it, as is usually the case if you haven't manually changed it.

Also note that Blender will display a warning saying "Driver expression may not work correctly" and also a hint to "Use variables instead of bpy.data paths" - which IMO would defeat the point of using "self" as it would again force you to statically refer to an explicit object...


You need to select the mesh first and then the bones. The bones need to be the brighter orange.
If you have a character with different sections you may also need to select "With Envelope Weights".
I hope this helps. It is hard to answer such a question without the actual file.


how to change origin to export a animation

Click the megaphone icon next to origin in the dope sheet to mute it. I upload anims for SL too and this works for me!


Solved!

I followed this tutorial https://www.youtube.com/watch?v=1gM8yEMFMjg, where the author is using a sphere as a volume container, and then sets up a particle system emitting from the volume.  I haven't managed to run the physics simulation to avoid particle overlapping, but in my case should be good enough.


Split Screen Video- My videos combined won't render with sound?

Your Audio strip is muted (your green "roasting_me.005" strip is very transparent). Just select it and hit Alt+H to unhide it. Or unhide it via the Strip menu. Then it should be rendered in your Video as your encoding settings seem to be correct.


How to add a new UV map to all selected objects?

You can get rid of the uv_texture_add() operator by adding a new UVLoopLayer:

import bpy

for obj in bpy.context.selected_objects:
    # Make sure this is a mesh object and that it doesn't already use this UV Map
    if obj.type == 'MESH' and "UV_ao" not in obj.data.uv_layers:
        obj.data.uv_layers.new(name="UV_ao")


Inhibit suspend (prevent computer sleep) while rendering

I was tired of having to disable/enable suspend every time so I wrote this addon, which works on Gnome3.

    # © Michael Demetriou 2017

    #    This program is free software: you can redistribute it and/or modify
    #    it under the terms of the GNU General Public License as published by
    #    the Free Software Foundation, either version 3 of the License, or
    #    (at your option) any later version.
    #
    #    This program is distributed in the hope that it will be useful,
    #    but WITHOUT ANY WARRANTY; without even the implied warranty of
    #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #    GNU General Public License for more details.
    #
    #    You should have received a copy of the GNU General Public License
    #    along with this program.  If not, see <http://www.gnu.org/licenses/>.

    bl_info = {
        "name": "Inhibit suspend while rendering - for gnome",
        "author": "Michael Demetriou",
        "version": (1, 0),
        "blender": (2, 78, 0),
        "description": "Inhibits system suspend while rendering",
        "warning": "",
        "wiki_url": "",
        "tracker_url": "https://gist.github.com/qwazix/290a25576f8c1f80cbc929f5a5d3f27e",
        "category": "System"}
    ###########################################################################

    import bpy
    import dbus
    from bpy.app.handlers import persistent

    cookie = 0
    _session_bus = dbus.SessionBus()
    _dbus_screensaver = _session_bus.get_object('org.gnome.SessionManager','/org/gnome/SessionManager')
    inhibit = _dbus_screensaver.get_dbus_method('Inhibit','org.gnome.SessionManager')
    uninhibit = _dbus_screensaver.get_dbus_method('Uninhibit','org.gnome.SessionManager')

    @persistent
    def render_pre_handler(dummy):
        global cookie
        cookie = inhibit("BlenderRendering",dbus.UInt32(0),"inhibiting",dbus.UInt32(4));

    @persistent
    def render_post_handler(dummy):
        global cookie
        uninhibit(dbus.UInt32(cookie));

    def register():
        bpy.app.handlers.render_pre.append(render_pre_handler)
        bpy.app.handlers.render_post.append(render_post_handler)

    def unregister():
        bpy.app.handlers.render_pre.remove(render_pre_handler)
        bpy.app.handlers.render_post.remove(render_post_handler)

    if __name__ == "__main__":
        register()

You can post similar scripts for your platform with the goal of combining them in a multiplatform addon that could ship with blender.


"Vertex Data Detected" - Dynamic Topology (Dynotopo Warning)

The default cube comes with a UV map (so if you want to apply a texture you're already halfway there) which is what's upsetting Dyntopo. Click on the "Object Data Properties" tab (the green triangle, third from the bottom on the right), then unfold "UV Maps" and click the minus symbol on the right. Dyntopo will no longer complain when it starts, or switch off when you change editing modes.


How do I create a freeze-frame effect with video editing?

Add an Effect Strip->Speed Control, set the Multiply Speed to Zero and uncheck the Stretch to input strip length.

Then you can extend (E) the underlying strip however you want. To select the frame you want to freeze use the slip option (S)


A bug was fixed in VSEQF, so now it works in 2.91: https://github.com/snuq/VSEQF
Use the numpad 4, 5 & 6 as J, K, L keys for playback speed:

Alternatively Scrubbing can be enabled in the Timeline Editor menu(but I think that'll only affect audio playing when dragging the playhead)


Using a single worker method for properties

The update method only gets the reference to the ID-block who owns the property and the context passed. So you have to create a function for each property individually.

You can do this dynamically

import bpy

def callback(scene, prop):
    print("Property '%s' of %s updated to value %s" % (prop, scene.name, getattr(scene, prop)))

def create_update_func(prop):
    def update(self, context):
        callback(self, prop)
    return update

bpy.types.Scene.prop_a = bpy.props.BoolProperty(update=create_update_func("prop_a"))
bpy.types.Scene.prop_b = bpy.props.BoolProperty(update=create_update_func("prop_b"))
bpy.types.Scene.prop_c = bpy.props.BoolProperty(update=create_update_func("prop_c"))


One thing you can try to speed up smoke rendering is by reducing the volume sampling step size.

The default value is great for rendering super-high resolution smoke, but I find that a larger value often works fine and gives you a 2-4x speedup at virtually no quality loss.


Can't figure out what kind of keyframe this is?

This yellow-green line is set whenever using the Grease Pencil tool on the selected frame:


Select object pattern and then selecting the object

This works after selecting the pattern.
OB = bpy.context.selected_objects[0]
OB.select_set(state=True)
bpy.context.view_layer.objects.active = OB


How to render all cameras in the scene automatically

You can use a script for that. This repo on github has Render.py. It uses a settings file for each camera (or the default if no camera specific setting is found). So for each camera multiple resolutions and sampling settings can be defined. Put the render_settings.json file in the same dir as the blender file. Open the blender file and goto the scripting tab. Load and run the script.

Render.py script

import bpy
import json
import os

renderPath = bpy.path.abspath("//Renders\\")
print('Render path: ' + renderPath)
renderSettingsJsonPath = bpy.path.abspath("//render_settings.json")
print('Settings file: ' + renderSettingsJsonPath)

def ensureDirExists(file_path):
    if not os.path.exists(file_path):
        os.makedirs(file_path)

def loadRenderSettings():
    file = open(renderSettingsJsonPath,"r+")
    contents = file.read()
    file.close()
    return json.loads(contents)

ensureDirExists(renderPath)

renderSettings = loadRenderSettings()
print('Render settings loaded')

for obj in bpy.data.objects:
    if obj.type != "CAMERA":
        continue

    print('Camera with name "' + obj.name +'" found')

    renderSettingName = 'default'
    if obj.name in renderSettings:
        print('Render settings for camera found')
        renderSettingName = obj.name
    else:
        print('No settings for camera found, default settings will apply.')

    if renderSettingName not in renderSettings:
        print('No render settings for "' + renderSettingName + '" not found, skipping')
        continue;

    bpy.context.scene.camera = obj
    print('Active camera set to ' + obj.name)

    for renderSetting in renderSettings[renderSettingName]:
        resolution = renderSetting['resolution']
        resX = resolution['x']
        resY = resolution['y']
        samples = renderSetting['samples']
        engine = renderSetting['engine']

        fileName = obj.name + "_" + str(resX) + "x" + str(resY) + "_s" + str(samples) + ".png"
        print('Render file name: ' + fileName)

        bpy.context.scene.render.filepath = renderPath + "\\" + fileName
        bpy.context.scene.render.resolution_x = resX
        bpy.context.scene.render.resolution_y = resY
        bpy.context.scene.render.engine = engine

        if engine == 'CYCLES':
            bpy.context.scene.cycles.samples = samples
        elif engine == 'EEVEE':
            bpy.context.scene.eevee.taa_render_samples = samples
        print('Render engine settings set')

        print('Render start')
        bpy.ops.render.render(write_still=True)
        print('Render finished')

render_settings.json

{
    "default": [
      {
        "engine": "CYCLES",
        "samples": 32,
        "resolution": {
          "x": 320,
          "y": 240
        }
      }
    ],
    "Camera": [
      {
        "engine": "CYCLES",
        "samples": 128,
        "resolution": {
          "x": 640,
          "y": 480
        }
      },
      {
        "engine": "CYCLES",
        "samples": 512,
        "resolution": {
          "x": 1920,
          "y": 1080
        }
      }
    ],
    "Camera.001": [
      {
        "engine": "CYCLES",
        "samples": 128,
        "resolution": {
          "x": 640,
          "y": 480
        }
      },
      {
        "engine": "CYCLES",
        "samples": 512,
        "resolution": {
          "x": 1920,
          "y": 1080
        }
      }
    ]
  }


Calling delete() operator after revert_mainfile()

It is basically a timing issue: your code below revert_mainfile() is called before the scene is ready, it's simply too early.

A load_post handler alone doesn't help either, the argument passed to this callback is None.

If you register a persistent load_post handler, which sets up a scene_update_pre handler, the execution will be delayed until the scene is ready:

import bpy
from bpy.app.handlers import persistent

def scene_update_callback(scene):

    # self-removal, only run once
    bpy.app.handlers.scene_update_pre.remove(scene_update_callback)

    ob = scene.objects.get("Cube")

    if ob is not None:
        bpy.ops.object.mode_set(mode='OBJECT')
        bpy.ops.object.select_all(action='DESELECT')
        ob.select = True
        bpy.ops.object.delete()

@persistent
def load_post_callback(dummy):

    # self-removal, so it isn't called again
    bpy.app.handlers.load_post.remove(load_post_callback)

    # use a scene update handler to delay execution of code
    bpy.app.handlers.scene_update_pre.append(scene_update_callback)

if __name__ == '__main__':
    bpy.app.handlers.load_post.append(load_post_callback)
    bpy.ops.wm.revert_mainfile()


So you need put the chain's origin at the same point as the curve's origin, which is not the case currently (you don't need to put all the origins at the world centre, which was not the case anyway).
Also, as you've used an empty as object offset in the Array modifier, you also need to move it along the chain object, otherwise it will mess the Array. So:

Select the curve, press right click > Set Origin > Origin to Geometry.
Press ShiftS > Cursor to Selected
Select the chain object, shift select the empty, press ShiftS > Selection to Cursor

It should work.
Also make sure that the curve's direction is good. FIrst enable their visibility in the Viewport Overlays. To switch their direction, right click > Switch Direction.


Flattening the intersection of overlapping spheres

Bmesh script

Script to flatten spheres on their intersection plane. See intersection of two spheres on Paul Bourke's magnificent geometry site The code runs through each selected sphere, checks if they intersect, if they do clalculates the location of the circle of hit.

If there's a collision, for both spheres, selects all vertices that are within the conic angle of the collision and moves them to the point of intersection with the collision disc.  NOTE: script relies on the origin of the spheres being the (default) centre of geometry.

Test run on UV Spheres.

The script

Select all the spheres you want to modify and run script. Alter the scale to change the angle of effect of flattening vertices.

import bpy
import bmesh
from math import acos, degrees, radians
from mathutils import Vector
from mathutils.geometry import intersect_line_plane
context = bpy.context
scene = context.scene
spheres = [(o, max(axis for axis in o.dimensions) / 2) for o in context.selected_objects]
bmeshes = {}

scale = 1.0 # alter to widen bump angle.
def new_bmesh(me):
    bm = bmesh.new()
    bm.from_mesh(me)
    return bm

def squish(sphere, angle, global_plane_co, global_plane_no):
    mw = sphere.matrix_world
    mwi = mw.inverted()

    bm = bmeshes.setdefault(sphere.name, new_bmesh(sphere.data))
    local_p = mwi * global_plane_co
    local_norm = mwi * (global_plane_co + global_plane_no) - local_p
    # select all verts via angle
    proj = angle > radians(90)
    if proj:
        angle = radians(180) - angle
        verts = [v for v in bm.verts if v.co.angle(local_p) > angle]
    else:
        verts = [v for v in bm.verts if v.co.angle(local_p) < angle]
    for v in verts:
        v.select = True
        d = local_norm if proj else v.co
        o = v.co if proj else Vector()
        hit = intersect_line_plane(o, d, local_p, local_norm)
        if hit and hit.length < v.co.length:
            v.co = hit

while spheres:
    sphere, R = spheres.pop()
    P = sphere.matrix_world.translation
    for s, r in spheres:
        p = s.matrix_world.translation
        v = (p - P)
        d = v.length
        v.normalize()
        if d >= r + R:
            continue
        elif abs(r - R) > d:
            continue
        elif d < 0.0001:
            continue

        x = (d * d - r * r + R * R) / (2 * d)
        # define plane
        pt = P + x * v
        norm = v
        angle1 = acos(x / R)
        angle2 = acos((d - x) / r)
        #print(R, r, x, degrees(angle1), degrees(angle2))
        squish(sphere, scale * angle1, pt, norm)
        squish(s, scale * angle2, pt, norm)

for name, bm in bmeshes.items():
    me = scene.objects[name].data
    bm.to_mesh(me)
    me.update()

scene.update()

Sample run on icosphere cluster on left, result on right

EDIT: fix for inside cases, now projects back onto plane if hit is inside (angle is greater than 90 degrees.


How make equal cuts regardless of orientation

You can use the Bevel modifier

Select the edges where you want the cuts
Add a Mean Bevel Weight through Sidebar
Add a Bevel modifier, Limit method > Weight

Then just apply the modifier (if you want) and add loopcuts manually.


How do I clean up text characters converted to mesh?

Instead of using Bridge Edge Loops, use Remove Doubles.

W > Remove Doubles.


First, in Object Mode, check that the object isn't scaled on any axis - scale should be '1.000' for x, y and z as in the screenshot below. If you have numbers other than 1 you can fix this by going to Object > Apply > Scale in the top left of the 3d viewport.

If that's fine you can try re-unwrapping the object by selecting all the faces in Edit Mode, pressing U key and selecting Smart UV Project. If the texture still looks wrong, select the faces individually in edit mode in the 3D Viewport then select the corresponding face in the UV Editing window and rotate and scale it until you get the right look.
Good luck!


How can I get the dimensions of a newly-created material node via Python?

There seems to be a solution to this (see below). Keep in mind, though, that while in general this approach is not recommended, in some cases it may work just fine.

Add this call to your script to force a re-draw, which will update the node’s dimensions properly.

bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1)

Tip: if you add multiple nodes to the hierarchy (via your script) it may be smarter to add all nodes first then call this only once to minimize messing with blender’s drawing loop.

You can read more about this here:

https://docs.blender.org/api/2.79/info_gotcha.html?highlight=redraw#can-i-redraw-during-the-script

To be honest, I don’t understand exactly why blender doesn’t update the node’s dimensions right after it is added to the node hierarchy. It may be just an oversight, or perhaps blender really needs to re-draw everything once before it can figure out the dimensions.


Try using latest Blender 2.71 where you can specify your own brush texture image.  The Freestyle section of the Blender 2.71 release notes will be a useful information source about textured strokes.

http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.71/Freestyle

There are two types of brush texture images: textures with and without tips.  Textures with tips need to be prepared in a specific arrangement of brush parts.  See the info graphics below which shows you what textures with tips look like.

http://blendernpr.org/freestyle-new-features-info-graphics/

I personally have never seen the Blender version in the screen capture of your post, although I am the main developer of Freestyle for Blender (:


You may use the Operator File Import template which is provided by default.

Open the Text Editor > Templates > Python

I hope, this template would give you good enough starting point and customize it as you go along with your specific needs and requirements.


How can I animate the sun in Sky Texture?

Animating in most parameters on blender is done by hovering over the value and pressing the letter I to insert a keyframe (or right click and choose to add a keyframe), then move to a different frame, change the value and add another keyframe.


How to trigger menus from operators in Python?

Okay, so it took me a little while (and a lot of searching online), but it was this link (https://wiki.blender.org/index.php/Dev:Py/Scripts/Cookbook/Code_snippets/Interface#A_popup_dialog) that showed me what I needed.

What I have done is definitely a hack, and there are more elegant solutions, but if you are just looking for a way that works, then this will help a lot.
(Warning: Lots of code)

So it works by having three classes, which call each other in turn.

The "Clicked On" Operator

The first is an operator that simply exists to invoke the dialog box when clicked in the "search menu".

class slowClick(bpy.types.Operator):
bl_idname = "slowclick.move_operator"
bl_label = "Slow"

def execute(self, context):
    # Default can be used since I only have a single dialog
    bpy.ops.object.dialog_operator('INVOKE_DEFAULT')

    return {'FINISHED'}

The Dialog Box

The second is the dialog box itself. This is invoked in the line bpy.ops.object.dialog_operator('INVOKE_DEFAULT'), and then displayed.

The actual dialog box is built somewhat counter-intuitively. Rather than putting in sliders using the standard layout.row().prop, all you actually do is define the variables, and on creation they can be changed. In my program that looked like this:

# create the sliders (and checkbox) in the dialog box so the user can change where the slo-mo starts and ends
firstSlowFrameP = bpy.props.IntProperty(
    name="First Slow Frame:",  # as you want it to appear on the slider
    default=40,  # optional
    description="This is the first frame that will be in slow motion"
)

globalSelect = bpy.props.BoolProperty(
    name="Global",  # affect all objects in scene
    default=False,
    description="If true, all available objects will be affected"
)

As with normal panels, how you define the property defines what kind of item it will be (e.g. slider for 'Int' and checkbox for 'Bool'), and at the bottom it has an "OK" button.

def execute(self, context):
    # first thing is to globalise the variables needed, and yes I know this isn't the best way
    global firstSlowFrame, globalSelect

    # reassign the variables based on the user's input on the sliders
    firstSlowFrame = self.firstSlowFrameP
    globalSelect = self.globalSelect

    # this actually calls the operator that does the editing
    bpy.ops.slow.move_operator()
    return {'FINISHED'}

def invoke(self, context, event):
    # call itself and run
    wm = context.window_manager
    return wm.invoke_props_dialog(self)

So the def execute() details what happens when the "OK" button is pressed. It globalises all the variables that were changed in the slider, so they can be accessed by the main and final function.

(The def invoke() just describes its creation when invoked)

The Main Function

Finally we get to the actual function. I won't put the main code here (If you want the addon go to How can I slow down or animate time?), but this is just your standard operator:

class Slow(bpy.types.Operator):
    bl_idname = "slow.move_operator"
    bl_label = "OK"

    # get the global variables since this is in a class
    global firstSlowFrame, globalSelect

    #PROGRAM

All you have to do is get the variables that were changed by the sliders, and it all works nicely.

(Technically, if you press "space" and type "OK" you will get this and it will probably not work since the variables don't exist yet, so at the very beginning of the program I would define a "default" value for each that will be used if the user accidentally bypasses the whole dialog box.)

Example

This is a template that can be used, feel free to use it, modify it, I doubt I invented this hack so I mean credit me if you want but I'm really not fussed, just hope this can help someone.

import bpy
import math
from bpy.props import *

scn = bpy.context.scene

# initialising the variables that will be in the dialog
intVariable = 10
strVariable = "Hello"
boolVariable = True

# This is the operator that is clicked by the user, triggering the dialog box
class ToBeClicked(bpy.types.Operator):
    bl_idname = "toBeClicked.move_operator"
    bl_label = "WHATEVER YOU WANT YOUR USER TO TYPE IN"

    def execute(self, context):
        # Default can be used since I only have a single dialog
        bpy.ops.object.dialog_operator('INVOKE_DEFAULT')

        return {'FINISHED'}

class DialogOperator(bpy.types.Operator):
    bl_idname = "object.dialog_operator"
    bl_label = "Dialog Operator"

    # create the sliders (and checkbox) in the dialog box
    intVariableProperty = bpy.props.IntProperty(
        name="Integer Variable:",  # as you want it to appear on the slider
        default=10,  # optional
        description="This is an integer"  # what you get when you hover over
    )

    strVariableProperty = bpy.props.StringProperty(
        name="String Variable:",  # as you want it to appear on the bar
        default="Hello",  # optional
        description="This is a string"  # what you get when you hover over
    )

    boolVariableProperty = bpy.props.BoolProperty(
        name="Boolean Variable:",  # as you want it to appear on the checkbox
        default=True,
        description="This is a boolean checkbox"  # what you get when you hover over
    )

    # This is what happens when "OK is pressed
    def execute(self, context):
        # first thing is to globalise the variables needed, and yes I know this isn't the best way
        global intVariable, strVariable, boolVariable

        # this is just for troubleshooting
        print("Dialog Runs")
        print(self.intVariableProperty, self.strVariableProperty, self.boolVariableProperty)

        # reassign the variables based on the user's input on the sliders
        intVariable = self.intVariableProperty
        strVariable = self.strVariableProperty
        boolVariable = self.boolVariableProperty

        # this actually calls the operator that does the editing
        bpy.ops.slow.move_operator()
        return {'FINISHED'}

    # This is just saying that when it is invoked, how to display it
    def invoke(self, context, event):
        # call itself and run
        wm = context.window_manager
        return wm.invoke_props_dialog(self)

# This is the actual program that does something with the variables
class Main(bpy.types.Operator):
    bl_idname = "main.move_operator"
    bl_label = "OK"

    # get the global variables since this is in a class
    global intVariable, strVariable, boolVariable

    # This just makes sure that everything can be applied
    # if (CONDITION):
    # PROGRAM

    return {'FINISHED'}

    # This can give an error if you want certain conditions met
    # else:
    # self.report({'ERROR'}, 'There is no animation')
    # return {'CANCELLED'}

# registers everything
def register():
    bpy.utils.register_class(Main)
    bpy.utils.register_class(ToBeClicked)
    bpy.utils.register_class(DialogOperator)

if __name__ == "__main__":
    register()

I know this is really very long, in answer to a very unimportant question, but it took me a while to solve this and I'm pretty pleased with it, so I hope other people can find it just as useful.

Feel free to add corrections in the comments!


Blender 2.8 (Python) - what does this console error mean

That error is coming from your OpenAL (Open Audio Library) which encounters a problem. It may be unrelated to your issue though. You can temporarily disable the sound system by starting Blender from the terminal with the -noaudio flag or set Audio Device to Null in the preferences (Edit > Preferences).

If your script still fails to write to disk it's likely a bug in your script and not caused by a problem with OpenAL. You can revert the changes in the preferences if that's the case. Should the problem disappear with the suggested settings, then it would be nice if could write a bug report (Help > Report a Bug in Blender).


Blender doesn't update the GUI by default when a script is running. See Update viewport while running script
Add bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1) after you change frames to update the GUI.
Also, you can take Blender screenshots with a BPY op like this bpy.ops.screen.screenshot( filepath=path, check_existing=False) so you might not need pyautogui.
import bpy
#import pyautogui
import time
c=1
while c<=50:
    bpy.context.scene.frame_current =c
    bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1)
    time.sleep(0.5)
    path='C:\\tmp\\script_screenshot\\'+str(c)+'.png'
#    pyautogui.screenshot(path)
    bpy.ops.screen.screenshot( filepath=path, check_existing=False)
    c=c+5


Why can't I install an older version of blender after uninstalling 2.8?

Just get the 2.79 portable version on www.blender.org

Since it's just a .zip file, you don't have to install it, and the first time you open it, it will automatically set itself up in the OS

However I doubt your graphics card are a problem (Blender doesn't require a graphic card to run). You could try updating your drivers, or at least try the 2.80 portable version before downloading Blender 2.79


Spotlight's radius doesn't work in eevee 2.8(official release)

This answer has been update for Blender 2.81. The original one was mistakenly written for Cycles.

There are three parts of the problem that need to be addressed:

In Blender lights don't create any visibile geometry, therefore you don't see the source of the spotlight that is emitting the light.
The spotlight placed inside a closed object wasn't emitting light to the outside of the object.
The light cone is only visible when geometry is hit by it or volumetric effects are introduced.

The first problem can be fixed by assigning a shadeless or emissive material to the front of the torch.

The second issue doesn't exist in Blender 2.81 and later when using Eevee, since lights can pass through the enclosing object. However there is no need to put the light inside the object. You can place it slightly in front of the torch and it will give you the desired visuals as well. For Cycles you will either have to place the spotlight outside of the object as well or assign a transparent material to the front which allows the light to pass through.

Spotlight with emissive front, spot light placed outside with a spot size of 45°, contact shadows enabled and an irradiance volume to bake indirect light.

Spotlight with emissive front, spot light placed outside with a spot size of 80°, contact shadows enabled and an irradiance volume to bake indirect light.

An alternative solution when using Cycles is a mesh light which could be placed inside the torch. Since mesh lights are actual geometry, they are also visible in the render, thereby solving problem 1). This approach would require to model an approximation of the torches interior. However this isn't as versatile as using a spotlight, since the shape of the light cone would be determined by the geometry of the torch and the mesh light. Therefore, adjusting the look is much more difficult compared to the settings of the spotlight.

In order to solve problem 3) you would either need to ensure that the torch hits objects in the scene to make the light cone visible, e.g. walls, or add atmospheric effects simulating dust in the air. This can be accomplished by adding a cube into the scene that is scaled to encloses the volume that should scatter the light. Assign a Volume Scatter material with a low density to the cube.


How does Blender calculate path normals?

In the Shape panel for Curve objects there are 3 twisting options:

Z-Up: uses Z axis to determine the twist.
Tangent: uses Frenet / Darboux frame tangent.
Minimum: step along the curve points, for each point computing a normal that is orthogonal to the curve direction and rotated as little as possible compared to the normal of the previous point.

Minimum is the default, and it behaves well in most cases. The downside is that it's non-local, any control point can influence the twist in the rest of the curve, but that's unavoidable, there is no other way to get minimal twisting.

The implementation in the Blender source code is in make_bevel_list_3D_minimum_twist.


Cannot select faces that I created already

One thing you can do is delete the selected face on the image you posted, then create each individual face separately, selecting the edges that form one and pressing the F key, do this for every face.
See the images below for an example:

1) Empty edges

2) Selection of the edges

3) After pressing the F key


You can use the Convert Rotation Types node to construct a rotation matrix from Axis Angle model and then use it to rotate the object:


Parent the camera to the object to follow (or to any child of the object to follow).

As each other child the camera will inherit the transformations (loc, rot, scale) from the parent.

Ensure the parent is moving as you expect.
Ensure you parent the right camera

You can move the camera (e.g. with the motion actuator) while parented

As a gimmick you can enable slow "parent". This makes the "follow" a bit softer, providing better camera feeling.


In the blend file from the link above the main reason for problems with 3D printing is going to be standard cases of non-manifold geometry.

There are a lot of areas with overlapping geometry with multiple vertices in the same place:

These will cause errors because of interesecting geometry. It can be previewed with enabling Intersect geometry for real-time preview in the Properties shelf > Mesh Analysis rollout (available in Edit mode):

As there are many places with such tiny errors it's easier to fix them all at once; first off in Edit mode with all selected use Remove Doubles command to get rid of duplicated vertices. Note to set threshsold quite small, like 0,000001 as otherwise there will be some changes in the letters form (tiny changes though).

After ~1200 vertces removed run Ctrl+Alt+Shift+M or Select > Select All By Trait > Non-Manifold from 3D viewport header. There will be some vertices selected in the area in '8' digit:

There could be some overlapping faces left next to faces with inconsistent normals. Check if there are and remove doubles once again if needed; in general the only thing left is to recalculate normals there with Ctrl+N (or with all selected).


Just to illustrate @batFINGER's comment.
You can flip the profile by scaling it by -1.

Select the profile
Set pivot point to one of the vertices through Pivot point > Active element
Scale it along X axis by -1


Edit: Are you sure it's a rigid-body-simulation problem?

I guess what you want is to deform the bracelet but not the watch. To do so you could use Make Vertex Parent. In my screenshot I just kept the watch and its bracelet but of course the bracelet is supposed to be part of the same mesh as the character and his arm.

Make the watch a different object from the bracelet. Now select the watch, then the bracelet and go in Edit mode.

Select 3 bracelet vertices, press ctrlP > Make Vertex Parent

Now when you deform the arm (and therefore the bracelet) the watch follow but doesn't deform.


I can't select a single bone in object mode

I think you are looking for the PoseMode.

The ObjectMode selects always the complete Armature.
In the PoseMode you can rotate, manipulate and add contraints to the bones.


Finding an object's location/scale with values set to zero?

If the location and rotation values of an object are set to 0, and scale values are set to 1, it means that it has its location, rotation and scale either set to default or applied (scale zero would make it compressed to a single point). As far as I know, there is no way to retrieve the original values (unless undo apply transformations immediately, without saving and closing).

There's a possibility to estimate the original location: applying location makes x = y = z = 0 but it means the object's pivot is at (0, 0, 0) - so you can temporarily use "set origin to geometry" to get its actual position, in a sense.

Here an example starting situation:

After using the command set origin to geometry:

You get its current position, e.g. Y-translated, in the example.

To get rotation and scale after applying them is impossible, as far as I know, unless you have a reference object, but that should have been planned in advance.


Why does my rigid body simulation glitch out?

Change the "Shape" (Under Rigidbody Collisions) from "Convex Hull" to "Mesh".

What's happening is that when you use Convex Hull, the simulation can only see a "shrinkwrapped" version of the shape. That is, it won't see the holes, and will therefore think that all the rings have ended up penetrating each other. To resolve this, it will apply a large-ish force to each object to force them apart, resulting in the explosion you see.


How can i bake a texture for a large plane on which I've used a seamless texture

For baking you often want 2 UV maps: one for reading the source texture appropriately (exceeding bounds or just filling a small part) and one for baking (optimally filling the entire texture space). You can control which UV channel is active with baking via the little camera icon next to UV maps.


Setup for a wine bottle with multiple labels

Create an object that surrounds the bottle, but it's but that is just a bit bigger than the bottle (to avoid Z fighting errors). Unwrap it to get something like this:

Assign a texture using the alpha channel of the texture to control a transparent shader. A mapping node will also help you with the positioning of the label.

Now by changing the image on the Image texture node (and sometimes the scale and placement) you can preview your different labels.

A blend file to play:


Vertices deforming in the wrong way... can't figure it out

Sometimes you can fix this kind of problems with weight paint, maybe it's possible in your case?

For example I've removed the back of the belt from all vertex groups and parent it to the bone called Spine and it seems to work. It won't give you a big control on it though:

You could have also created a different mesh for this part of your character (which would have made sense as it's a differente object than the shirt or pants).

But if we keep your current mesh and want to keep a precise control, for this kind of cases it may better to create some additional bones that will be the only ones to control the part of the mesh with problems, so here for example you could:

Create 3 additional bones that you parent to the spine:

Call them for example backbelt1, backbelt2 and backbelt3:

Select the back of the belt and remove it from all vertex group so that no bone have anymore influence on it:

Create 3 new vertex groups called backbelt1, backbelt2 and backbelt3 and assign each part of the back of the belt to each group. Now the back of the belt is automatically controlled by a bone:

If you bend the character, move the bones so that the belt is not deformed a way you would not want:


Unable to draw motion paths of controllers

I wasn't able to fix the issue for this particular animation, but I believe it was because the arm is in FK. I tried the same with the IK leg in a different animation and the motion path works correctly.


Give your model Smooth Shading, go to (Tool Shelf) and under Shading section choose Smooth


Steps:

Select all Faces.
Press I twice to Inset Individual Faces.
Set size of Inset with your mouse or by entering value.
X > Faces to remove newly created ones.

(optional) You can add Solidify modifier.


Adding specific information to file output

You can add an application handler to be run before rendering that sets the output filename with the desired information. You can use python's string format to fill in the filename from a template string.

import bpy

def set_filepath(scn):
    scn.render.filepath = '//renders/animation_{0:04}-{1}.jpg'.format(
            scn.frame_current, scn.cycles.samples)

bpy.app.handlers.render_pre.append(set_filepath)

By pasting this into a text block in blender and adjusting the filename for the file, it can then be setup to run when the blend file is opened so that it will always be available when using the file.

Note that the handler will set the filename, that means you adjust the filename in the script - not in the render settings.


How do I apply the texture to my object?

The simplified way is to view the rifle from the side in the 3dview, then Press U and select Project From View, then position the uv's over the rifle picture. You would then need to cleanup the top and bottom faces.

You will find any UV unwrapping/mapping tutorial will help explain this more. You can find plenty on youtube.


Making sense ot the 3D View and aligning and rotating objects by specific values

dI solved this issue by selecting the camera and moving it to the cursor at world origin.  Then with the camera view open in another window I was able to move the camera along the X and Y axes until the model came into view (upside down!) and then rotate the camera until the model was the right way up - using the rotation properties box to specify the exact rotations - 90 / 180 / 180.
The Y axis alignment was done by eye - I could not find any way to centre the camera exactly on the centre of the model.
It will have to do...


Some faces not showing in modelling, but visible in sculpting mode

It looks like you have accidentally deleted edges & faces (X then Only Edges and Faces).  If that's the case you need to undo or go back to an earlier backup.
But just to make sure, I suggest pressing Alt + H (Reveal Hidden) in edit mode first.


Blender Materials When Using .blend file in Unity

Just in case anyone else comes across this and needs an answer, I found that Unity and Blenders materials are not the same, when importing a material from Blender into Unity, Unity will try to create a material as best it can from the Blender one but it is never exactly the same, so it seems it is best to just re create them in Unity.


How can I change a custom property value in python? AttributeError: Writing to ID classes in this context is not allowed

The draw function of a panel is intended only for adjusting UI, it is essentially blocked from doing anything else by design. At first this limitation can be perceived as restrictive, but it's really there to prevent bad practice and unnecessary updates. When you interact with a Panel (or any element of UI) its draw function is called many times per second when your mouse moves.

As soon as you need to update objects or scene data via UI you should attach an update function to your properties or make dedicated operators (triggered by buttons).

Update Function

Please see this answer for why a ProperyGroup is a good idea to keep your properties organized. In the code below I've commented out where you would have an opportunity to react to the tickbox state. The update-response is part of the property not part of the draw function of a Panel.

import bpy

def common_update(self, context, origin):
    if origin == 'my_bool_one':
        print('button_one', getattr(self, origin))
        # bpy.data.objects["Macbook_Gold"]["00_iSight Camera Indicator"] = getattr(self, origin)
    if origin == 'my_bool_two':
        print('button_two', getattr(self, origin))

class IgnitProperties(bpy.types.PropertyGroup):
    my_bool_one = bpy.props.BoolProperty(
        update=lambda self, context: common_update(self, context, 'my_bool_one')
    )
    my_bool_two = bpy.props.BoolProperty(
        update=lambda self, context: common_update(self, context, 'my_bool_two')
    )

class IGLayoutDemoPanel(bpy.types.Panel):
    """Creates a Panel in the scene context of the properties editor"""
    bl_label = "IG Layout Demo"
    bl_idname = "SCENE_PT_layout"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "scene"

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        col = layout.column()
        col.prop(scene.ignit_panel, "my_bool_one", text='option 1')
        col.prop(scene.ignit_panel, "my_bool_two", text='option 2')

def register():
    bpy.utils.register_module(__name__)
    bpy.types.Scene.ignit_panel = bpy.props.PointerProperty(type=IgnitProperties)

def unregister():
    bpy.utils.unregister_module(__name__)
    del bpy.types.Scene.ignit_panel

if __name__ == "__main__":
    register()

Operators

See the TextEditor > Templates -> Python -> Operator Simple


I'm using Blender 2.79.

Give the svg path a volume with the Solidify modifier.

Set the Offset to 0 and Use the Clamp value to thick or thin the stroke.


How do I confine a boids particle system to a volume?

Just use avoid/avoid collision for your surrounding box. Of course you need the right values to make it work. And AFAIK there is no thing like "stay in that volume" for boids.


Remove/Add Collections per render layer with Eevee

You can assign Freestyle line sets to collections, this would allow you to apply the effect selectively.

For the other part of your question I believe this post should answer your question for the transition between 2.79 and 2.8. The general idea behind the scene and view layer concept is explained in this post on the Blender Developers Blog.

Let's say you have a scene with a collection called "Only once" that you would like to include in one view layer, but exclude in another. The view layer where "Only once" is visible is called "View Layer" and the one where it isn't is called "View Layer.001". You can have the collection "Only once" it both view layers and have it activated in one and deactivated in the other.

In order to exclude specific view layers from rendering in the scene, you'll have to switch to the scenes in the outliner.

If you activate the restriction toggle for rendering you can then exclude specific view layers by clicking on the camera icon behind the collections name.


How do I change the DoF settings of the active camera using python?

bpy.context.scene.camera returns the active camera in the scene. In order to change your Depth of Field settings use the Console, Python Tooltips or the API to find each corresponding property.

>>> active_cam = bpy.context.scene.camera
>>> bpy.data.cameras[active_cam.name].
                                      angle
                                      angle_x
                                      angle_y
                                      dof_distance
                                      dof_object
                                      ...
>>> bpy.data.cameras[active_cam.name].dof_distance = 7


I get a weird visual glitch when using the shading tab on Blender. How can I solve this?

You could try to go into to edit mode and recalculate the normals by pressing Shift + N.


Try turning off the textured view, I notice mine slows down pretty bad when I try to do anything rig related after texturing.


I checked your blend file.
Try out this node set up, it seems to work both in Eevee and Cycles for me.

Also I think you could use option 'Disable in Renders' for other objects in the same position if you want them out of your render image.


Blender 2.80 not working on AMD Radeon HD 6470M GPU

I managed to resolve this issue by:

1) Updating my driver to the latest available version (i should have done so from the beginning).

2) Downloaded opengl32.dll file from here and copied it to the blender's root directory.

Now Blender 2.8 is working without any issues :)


background video for my camera has gone missing. help?

Blender rendered part of my vid and replaced my background vid with this incomplete one.


Why does Grease Pencil ignore the particle system in Eevee? (2.82)

I found the possible culprit of the problem and the solution:

In the material properties-tab of the material (in this case the leaves) I found the solution.

Because I used a png-file of the leaves with transparency I opted for the Alpha Blend. But somehow the 'backface Culling' was ticked.
This was NOT a good idea. When unchecking the box it worked.

Although I got better results with the hashed option in the Blend mode.


always the same. ask question and find the answer 2 sec. later: Edges with green line are sharp edges. mark as sharp.
Red - UV seam
Orange - Bevel weight
Pink - Edge crease
Blue - Sharp edge
Green - Freestyle edge


Do i have to use bump mapping for this...?

Beside the usual diffuse, specular, and all the other textures - you can apply some depth to your object via the following:

1. Bump Mapping
Bump mapping adjusts the normals on a surface to make it appear that there are bumps, when there really aren't. Bump maps are grayscale. Bump mapping a Normal mapping both benefit from being able to create this illusion without needing additional geometry. A single plane can look very textured, even with just one polygon.

2. Normal Mapping
Normal mapping does the same thing as bump mapping, but with more precision and control. Normal maps use the red, green, and blue channels to encode x, y and z deflection angles for surface normals. They typically look bluish.

3. Displacement Mapping
Displacement mapping changes the position of vertices, based on an image texture. This has the advantage of providing real bumps, but requires more geometry. Displacement maps can be encoded either as grayscale like bump maps, or in color channels like normal maps. Many softwares allow bump maps and normal maps to be interpreted by displacement algorithms, for convenience.

It depends on the look you want to achieve which combination is best.
Hope this helps you a little bit.

Here, the left ball is using a bump map, the right one a displacement map.


Interesting Append Behavior. Possible Bug?

Thanks guys - have discovered the problem. There seemed to be an 'animation' attached to the object. Once I deleted this everything works fine. Not sure how the 'animation' came about?


combination of several variables in driver

It's really pretty simple. You hit 'Add Variable' several times, pick the sources you want, name the variables in their top most fields more intelligently than me and then use the exact same names in the expression.

In this example, I just add the Y values of the latin gang together and drive Bombo's Y axis with them.

1.055 + 1.138 + 0.906 = 3.099


Animation Nodes: How do I make text hiccup?

The first effect is easily achieved by using an inverse delay falloff with a high back interpolation. The initial transformations of the objects are stored in an ID key, and they are added to a group then sorted by their x location:

The second effect can be achieved by bending the text when the falloff becomes bigger than 1, that is, the back of the interpolation. To get those values, we subtract one and take the maximum of zero to clamp it to positive numbers. Then this output is multiplied by some negative scalar to define the amount of bending. Finally, the Object Attribute Output node is used to write those bend factors, assuming all object have a simple deform modifier with the default name and bend type:


There is a difference between the shape of the mesh, and the shape used for collision detection. Often a mesh is too complex to allow for real-time collision detection.

What you "see" is the convex hull of the Tetris block. It's basically the shape that you'd get when wrapping a shape with an elastic band (in 2D) or elastic sheet (in 3D). In this image, the green shape is the convex hull of the black shape:

The Convex Hull is easy to do physics sims with. It's also quite predictable, since objects cannot hook into each other and will be able to slide off of each other. If you want to have the exact shape of the object used for the collission detection, use the "Mesh" choice. Since your meshes are simple Tetris blocks (compared to, say, high-polygon, detailed game characters) this should work fine.


Second material with an emission shader making the scene darker

Clamping stops light from being brighter. So if you need a light with strength of 10000 and clamp it at 15, you lose most of its effect. Turn off clamping at first, set up lights for the scene and only then check the values in your render by right clicking and dragging on the render result(maybe render a small test area) to adjust your values for the clamping when fireflies become a problem. You should use higher values than the brightest fireflies in your render. The "strange artifacts" have replaced the "strange noise" in previous versions without denoising and simply means you do not have enough samples. Increase the amount of samples. You could also add bigger light sources to your scene to avoid noise/denoising artifacts. It might also make sense to have more max light bounces in an interior scene.


How can I build a versatile camera rig which can both orbit around its focus and pan?

You need to be able to orbit at different distances and that means you need dynamic parenting. The way to achieve this is through Child Of Constraints. To animate this, you need to do the following in this specific order:

animate the camera into the start position of orbiting, till now the camera has no parent, it is free
place Child Of Constraint onto the camera, target is the orbit control empty, press Set Inverse button - now the camera is parented to empty
animate the orbiting motion by rotating the empty and any local motion of the camera (panning while orbiting etc..)
on the last keyframe of orbiting, insert a keyframe for the camera (LocRot) and a keyframe for the influence of the Child Of Constraint (100%).
move 1 frame forward
select camera and choose Object > Apply > Visual Transform, do not move the timeline
keyframe the Child Of Constraint to 0%
keyframe the camera (LocRot)
you can move the timeline now
the camera is now free again, without any parent
repeat and profit, camera will have as many parent constraints as there are orbiting motions

This is a bit tedious, if you are up for the rigging job you can put this into a script that can be run with a custom button in UI to dynamically parent and un-parent.

There is this addon which for simple use cases will work fine, but it is limited. This is very tricky to setup inside the hierarchy of an armature (for example dynamically parenting hand to thigh) when all is also parented to the Root (the trick is to avoid double transforms with some clever drivers).

And if you are trying to do this on a linked armature, it is yet again even bigger challenge, because after file reload all drivers on constraints that are not present in the original rig, but are present in the animation where the rig is linked are discarded.

For completeness and best result I am also plugging this in:

How to smooth camera animation to have fluid feel?


Is there a 2.72 equivalent to 'no caustics'?

It looks like this option was changed a bit. You can enable/disable caustics from reflections and from refraction (when light goes through transparent materials) separatly.

Just disable "Reflective Caustics" and "Refractive Caustics" in the Light Paths tab of the render settings.

UPDATE:

It seems that these settings do not work if you are using Branched Path Tracing. You can however play around with the Clamp Indirect value to trunkate high light values produced by reflected light.


I would create a material on a plane with a spherical gradient.

The method to tweak this gradient is changing the colorramp or the RGB-curve.  As you can see, the Fac slider of the RGB-curve is on 2.5. I used it to overexpose the white.

Maybe it's better to adjust the color in the last step but that you have to test by your self ;-)


I finally find the solution.

Properties editor -> Render -> Color Management

Changing the 'View Transform' to make post-render filtering.


I reckon you are new to 3d modeling , hence the question seems strange since you started out with a box. Nurbs modeling is a completely different beast. Let me try to help you out.

First of all, just like ibalazscs says nurbs are seldom used these days, its has proven itself to be quite a clumsy tool in regards to modeling. We deploy something else call "box modeling". Basically starting from a box or a simple plain we can create an estimate of an object surface and later add a modifier "Subdivision Surface"

This is what I mean ... on the left is a model that started out as a plane. I extruded the edges and created a draft form. After which I add a modifier to the model (Copied and selected highlighted in orange)...

After that there is a further step you may need to do to complete the look of a nice smooth curve surface.

The thing about curved surface in a 3d world is that you need more than one face to create the illusion of a curved surface. Yes illusion! All the surface you see in a 3d software are planes... using smooth surface shader those straight and flat planes hides their true edges, making them look like a smooth surface. Without smooth shader the model would look like this...

And here is the exact same model with the same number in vertex and face count, smooth shading applied...

Lastly, here are the steps to apply smooth shader...

Select the model.
Hit Tab to enter edit mode.
Hit W to display special drop down menu.
Select "Shade Smooth" from list.


Open blender and go to File>Import>.3ds then import your file via there


What you're talking about is the Header of the 3D view - this can happen sometimes if you accidentally click on the top of the header and drag it downwards.

You can bring it back by clicking the little plus icon at the bottom right of the 3D View:


Reusing Animations for another character?

Yes, but you have to make sure that the objects (rigs) are identical.

The Action Editor

Either open up a Dope Sheet window or change to the Animation Screen layout.

Change to the Action Editor in the dropdown menu where it likely currently says Dope Sheet.

 -->

If you select the rig that you already have animated, it will probably display something like ArmatureAction where it says + New in the above screenshot. If you select the unanimated armature, you can select ArmatureAction from the dropdown menu to the left of + New.

The Process:

This can work for any number and any type of object. For example, if I have a cube keyframed for X-Location and X-Rotation, I can use the same method to copy its movements to a nearby cone and cylinder.

Extended uses:

The demo .blend:

Hope this helps; feel free to ask questions!


Okay, I've found a solution. I can bake an animation by Pose->Animation->Bake Action menu, and enabling Visual Keying sub-option. It creates a whole new Action though.

If anyone has a solution how can I do this for individual keyframes, please share it and I will accept that as an answer, I will wait for a few days.


One Object won't Show up in Final Render even though it shows up in the Preview Render

Look at the camera icons on the outliner.
Click on the funnel icon on the top right and enable different filters.
When the camera icons are disabled, the object is disabled from rendering. To make it active click on the camera icon.

These icons are switches:
The Eye icon is to toggle object visibility on the 3D viewport.
The Arrow Icon toggles selectability.
The Camera Icon toggles rendering.
The Monitor icon disables the object in all viewports.
For more info refer to the blender manual
In older versions (2.79 or previous) the outliner the switches are here:


Alt+Left Click doesn't select a loop of faces completely

Your topology is not clean. It's hard to say without the .blend, but the edge to the left of the right problem area for example looks suspicious, half selected and half black. Which suggests double faces or at least a double edge.

If you were able to select the left faceline in one go, it means the unselected face somehow sits on top of the line, seemingly unconnected to the rest. Remove double by default has a very tiny radius so it doesn't necessarily catch everything. And it only works on selected faces, so the culprits might not have been selected at the time. Could very well be that you accidentally created an ngon somewhere and the verts are basically on top of each other.

Clear your selection, go into Edge or Vertex Select Mode (they provide slightly different clues) and hit CTRLSHIFTALTM (Select Non Manifold).

This shortcut selects every edge that hasn't exactly 2 faces attached to it and is likely to show you part of the trouble.

The amount of selected verts in the upper right corner will help with the diagnosis as well.


Screw Modifier Darker Shading on Half of Object

I think the issue may be that your normals are flipped: In 3d each face has a 'normal' that represents which way the lighting should be interpreted. To fix this, in edit mode press CTRL + N. This will try to flip the normals so they point outwards. If this does not fix it, open your toolshelf and look to the Operators menu at the base of it (Looks like this). Check the box saying 'Make normals consistent inside'.


2.81 missing Volume node - any of them available?


How to extract/convert data from blender cache files .bphys into a human readable form via python

the first 9 bytes of the bphys file is the Header of the file. the first 8 are 'BPHYSICS' after which there is a unsigned int describing the type of data:

0 softbody
1 particles
2 cloth
3 smoke_domain
4 smoke_highres
5 dynamicpaint
6 rigidbody

the link you posted is in relation to Particles, so i will assume you are only looking at accessing the particle data.

after the header, each particle has the following data:

index , 4
location , 12
velocity , 12
rotation , 16
avelocity , 12
size , 4
times , 12
boids , 20

however, the pointcache reader will only write/read boid data if the particle system has boids enabled. so if you're not using boids, you just dont read that data.

assuming there is no boid data you will want to read the following data:

unsigned int, // BPHYS_DATA_INDEX
3 * float, // BPHYS_DATA_LOCATION
3 * float, // BPHYS_DATA_VELOCITY
4 * float, // BPHYS_DATA_ROTATION
3 * float, // BPHYS_DATA_AVELOCITY / BPHYS_DATA_XCONST
float, // BPHYS_DATA_SIZE
3 * float, // BPHYS_DATA_TIMES

all this information can be found in
pointcache.c file in blender's code.


How do I go from BVH to a working F-Curve?

Your biggest issue is, the bvh rig uses ZXY euler rotations, your martha rig is in quaternions.

Here is a script to set martha's pose bones to ZXY eulers.  Select martha in pose mode and run script.

import bpy

martha = bpy.context.object
for pb in martha.pose.bones:
    pb.rotation_mode = 'ZXY'

or import the bvh file with quaternion rotation.

nextly, you will need to do a better job of renaming martha's bones to match bvh rig.

An alternative approach.  Here is code to add a copy rotation constraint to each bone on martha, to a matching bone on bvh rig.  Note: I imported the bvh file and have a rig from that import named "Beer chug", change name in code to suit name of bvh rig.

It simply looks for bone names in martha that match bvh rig and adds a copy rotation constraint from one to other.

import bpy
context = bpy.context
scene = context.scene
rig_to = scene.objects.get("Martha")
rig_bvh = scene.objects.get("Beer chug")
martha = rig_to
# remove action from martha
martha.animation_data.action = None

for bvhpb  in rig_bvh.pose.bones:
    pb = martha.pose.bones.get(bvhpb.name)
    if pb is None:
        print(rig_to.name, " has no bone ", bvhpb.name)
        continue
    c = pb.constraints.get("bvhrot") or pb.constraints.new('COPY_ROTATION')
    c.name = "bvhrot"
    c.target = rig_bvh
    c.subtarget = bvhpb.name
    c.owner_space = c.target_space = 'WORLD'

Once you have a "driving rig" set up for a certain mocap, it's simply a matter of importing bvh, changing animation on driver rig and martha will follow.  For CMU for instance each bvh file in subject has the same rig.  In differing subjects the bone naming convention is the same but may have differing proportions (Depending on the actor(s) used I suppose).  This mainly only effects locations.

Note also you don't need to have same bone names, just a way of matching bone to bone.  There are some tools in "Motion Capture Tools" addon to do this.


The problem was, as many people suggested, the Image node for the normal map was not set to non-color data:


Blender 2.8 - How to create new view ports / windows?

It still works the way it always did. But for some reason, the "triangle in the corner" icon has been removed. If you hover your mouse cursor over the corner of a window, you will see it change from a pointer to a kind of plus sign. When this change happens, clicking and dragging will create your new window in the expected way.


Why isn't the cube's collision properties working?

This reproducable as Phillip Kinkade mentioned, when the particle system animation was baked without the collision object, later adding wouldn't make them collide.

Free Bake
Position your collision object
Bake

After the three steps above no more particles will go through the cube:


rigid body simulation not rendered correctly

The following code works for me now:

new_obj.location = obj.matrix_world.translation
new_obj.rotation_euler = obj.matrix_world.to_euler()


Import image as planes appears desaturated

This is the result of lighting affecting your object. Since its getting hit by a white light, it appears more white and faded. Increase the material's roughness and decrease the specular properties if you want to reduce the effects of lighting on its appearance.


How to change object color in viewport in 2.8?


My image look changes when i modify the render resolution

This may be caused by the resizing process, when the software used to display the rendering tries to fit the image onto the size of your monitor.


Hide the UV layout while in Texture Paint Mode?

Just uncheck this option in the view menu:


What is LookDev/Material Preview mode for in 2.8?

LookDev stands for "Look Development", it is the equivalent of the Material Preview mode in 2.7# with better shading and more advanced features. In fact as of Blender 2.82 it has actually been renamed back to Material Preview.
This is a viewport mode designed to develop the look and appearance of your materials and shaders, it has realistic lighting and material previews are represented textured, fully shaded, and as close as possible to the final rendered result with real time emulation.
It differs from Rendered mode by not necessarily using your scenes native lighting and environment, instead it (optionally) overrides scene lamps and scene world with a "generic" user configurable environment lighting, that is both more neutral on your materials and quicker to render, yielding faster performance for instant previews and more responsive editing.
It is harder to understand its value when working with EEVEE. Since differences to Render Mode are tenuous and blurry, and given how both are based on the same OpenGL real time rendering engine, it may seem like a pointless and redundant feature.
Its true purpose becomes more apparent when rendering with Cycles, where the Rendered viewport mode is actually produced by Cycles based path tracing. While impressively quick, it may still be too slow for preview and is unsuitable as an actual working mode while editing; while LookDev is using EEVEE based preview that is trying to match Cycles output as close as possible with responsive OpenGL based rasterization.

To render the current viewport result at any time go to the 3D View header menu under View > Viewport Render or View > Viewport Render Animation

To get pre-2.8 like render buttons in the Properties Window like in 2.79 you can install one of several available addons like Render Buttons to bring back the old workflow.


The camera is following the curve, it is just offset right now so the behaviour looks odd.

You need to set your camera to the starting point of the curve. Which is the point (-0.284,16.306,0.122).


@Hendriks3D Yes, it appears to be a Blender error. Something appears to have went wrong with the files and Blender wasn't detecting the GPU.

After a clean install everything is running ok. Do not know why it worked now and before it didn't work.


Simple movie clip sharpening using Compositing - How to do this?

Add an Input > Image node (or Input Movie Clip node) and set the video file there.
Add a Filter > Filter node and set it to sharpen mode.
Plug the output image to the composite input and render.


import SDI signal and video board to Eevee from the real world camera

Yes but extensive coding are required.

You will need to provide an API for the SDI signal and the capture card with Blender(maybe socket). And inside the Blender, you will need to deal with video sequence in real-time, this is not an easy job in Blender for now, you might need an custom shader to fetch data from socket and display it directly without Blender bpy module since it is slow for massive data like video.

And also a lot of function and operator in Blender are not optimized for video processing, which EEVEE only provide view-port real-time. Manipulating data while being real-time rendered require specified condition, like pre-build asset, baking environment light and so on. We are still making it possible for nowadays hardware. Blender with EEVEE is not designed to deal with this kind of task. I would personally recommend other software, eg. Unity.


How to stop viewing controls to be too sensitive to mouse movements?

Maybe focusing on your object does what you want?

Select a object and press the . on your numeric pad, if you have one.

If you like that feature and want it to be always active, you can in the preferences menu set it up: