How can I create a new object in the Outliner?

You have to be careful in witch mode you add a new object. If you are in object mode you add the new mesh as its own object and you can see it in the outliner as its own item with its own modifiers, etc. but if you are in edit mode inside another object and you add the new mesh in edit mode it becomes part of the geometry of the object you are in edit mode of sharing that objects texture, modifiers, etc.


Can You use custom shapes in Cell fracture

You could do it the way below. I've used Susan's head for demonstration. Create two objects, the original one and the broken one. To break the object you'll use the Knife Project Tool. To animate you'll play with the visibility so that at frame X the broken pieces will replace the full head. You could even don't use the unbroken head but with my method you don't have to care about the joints between the broken parts if it ever causes problem (for example if your object uses a Subdivision Surface modifier you may see the fractures between the parts). As you suggest, boolean may also be a nice way to create the different parts.

Create your object. Duplicate, keep the duplication at the exact same place, and hide it for the moment.
Create a second object to draw the fracture lines.
Use the Knife Project Tool to cut your object with the help of this second object. Enable the Cut Through option in the Last Operation box.
Select the fracture edges, press V to rip.
Separate your head in 3 separate objects: Select each part with L then separate with P. Put them in the same collection.

Open your Dopesheet.
At frame 0, for each of your pieces, give a Rigid Body (Active type). Activate the Animated option and create a keyframe on it so that for the moment the physics won’t affect these pieces.
In the Outliner disable the viewport and render visibility of each of the pieces. Create keyframes.
On the contrary, enable the viewport and render visibility of the full head, create keyframes.
Open your Timeline. move the player from frame 0 to frame X.
Now switch off the visibility of the full head and create a keyframe, switch on the visibility of the fractured pieces and create keyframes, disable their Animated option and create keyframes.
Play the animation, at frame X the head should break and fall apart.


How to make mutually exclusive Modifiers or Object visivility

I would do it with a custom property.
Select an object, an empty for example. Go to Object Properties > Custom Properties and click Add, and Edit it. Set the Property Value to 0 and the Default Value to 1 (so it will only use integers) and set the Min value to 0 and Max value to the number of boolean cutting shapes -1. In your case 2. Click OK.
Then right click the value field next to "prop" (the name of the custom property) and do Copy Data Path.
Now for each of your drivers set the Data Variable Type to Single Property.
As Prop choose your Empty object with the custom property. And mouse hoover over the field next to Path and Ctrl+V paste the Data Path. It should now say ["prop"].
Finally enter for each of your drivers respectively, in the field next to Expression: var==0 , var==1 and var==2.

Now if you set the custom property to for instance 2, only the boolean modifier with the driver with the expression var==2 will show.


Blender uses OpenGL for (basically all drawing)...

Drawing the 3D view-port.
Drawing all parts of the interface (buttons, color wheel, menus etc).
Off screen OpenGL rendering is used for 3D view-port render and preview rendering scenes in the sequencer and view-port lamp-shadows.
Shader nodes display as OpenGL GLSL shaders in the view-port.
The GameEngine also does all drawing via OpenGL.

All other rendering is done on the CPU or GPU(and in that case it uses CUDA or OpenCL, not OpenGL).

You can run Blender without using any OpenGL functionality by using background mode (see blender --help for details).

And if you happen to have a system without any hardware acceleration, you can use software OpenGL (Mesa can do this for example), although its noticeably slower.

Note that Blender is somewhat unusual in using OpenGL for _all_ interface drawing, not many applications do this.


Render appearing black and white cycles, how to fix?

In the UV/Image editor, you are looking at the blue channel only, individual color channels get displayed in black and white
Switch to RGBA or RGB view.

From the Manual

Draw Channels
The radio buttons set which channels of the image are displayed.
RGBA
Replaces transparent pixels with background checkerboard, denoting the alpha channel.
RGB
Draw the colored image, without alpha channel.
Alpha
Displays the Alpha channel a gray-scale image. White areas are opaque, black areas have an alpha of 0.
Z-Buffer
Display the depth from the camera, from Clip Start to Clip End, as specified in the Camera settings.
Red, Green, Blue
Single Color Channel visualized as a gray-scale image.


I was able to find the answer to my question by looking at a tutorial for the previous version of Retopoflow.

You need to right click on bottom edge of the existing geometry where you want to place your quad. That edge will be the top of the new quad. Then hold down Control and left drag the mouse diagonally. You'll see a temporary triangle. Click on the empty corner at the bottom of your new quad where you will place a vert. Voilà. You can make tris this way as well.

Check out the tutorials for the old version and the current version to see this in action.

Enjoy. This addon is a blockbuster!

Sabia


Have you tried recalculating normals? I often get weird artifacts/shadows when the normals get flipped around.

Tab into edit mode with your mesh selected
Select all the faces of the mesh with A
For blender 2.8 SHIFT + N brings up the recalculate normals tool. You want to "Recalculate Outside".

Or you can access this via:
Edit Mode > A > Mesh menu > Normals > Recalculate Outside

https://all3dp.com/2/blender-recalculate-normals-simply-explained/#:~:text=There%20are%20two%20main%20ways,so%20they%20all%20face%20outwards.
Explanation of normals from All3DP:

Ever wondered why your Blender model is sometimes plagued by random
black voids?
The normal of a face describes the direction it’s pointing or facing.
Usually, in a closed model, all normals should be facing outwards.
However, sometimes when manually manipulating edges and faces in
Blender, the normals get flipped. It’s not the end of the world, but
it does make your model look weird. And once you export the model,
flipped normals can leave behind bad artifacts.
That’s why it’s best to fix these flipped normals. And the good news
is, they’re super easy to recalculate.


by selecting the edges and just pressing F you are creating a so-called n-gon (face with more than 4 vertices). The subdivision modifier can't handle those very well and thats what messing up your mesh.

Select the top and bottom row of vertices (1st image) and use grid fill to make the faces.

Mesh ‣ Faces ‣ Fill/Grid Fill

Result on my mesh: (your proportions are a bit different, but its basically the same structure):


BI Lighting Mystery: Ceiling is receiving less light than the rest of the room

Well your using Blender internal and not cycles so its not perfectly light emulation. Here are the steps to make it a bit better, first decrease the strength of those lamps

( set it to 0.001 or so, there is way to much light in the scene currently).

in the world tab:

enable Ambiant Occlusion
enable indirect lightning
set Gather to Approximate

there are some more problems (placing of lights etc) but above should give you a start for this file.


What render engine are you using? Are you rendering on the GPU?
If you are using EEVEE, check the blend method of the material: https://docs.blender.org/manual/en/latest/render/eevee/materials/settings.html#blend-mode
If you are using Cycles and are rendering on the GPU, try rendering on the CPU. It may be a GPU driver problem.
If the problem still persists, call your mom. :-)


is there a way to "associate" Actions with Armatures?

found out it can be seen in Outliner - animations are listed as armature's children!


BGE: Use separate texture as alpha channel

I have pretty much the same as you have.

In-Game

Alpha = texture that feeds alpha channel
Color = texture that feeds color channel

Alpha color is not visible at all.
Where Alpha is transparent, nothing is visible
Where Color is transparent you see the material color
Where Color is opaque you see Color texture (rgb)

Material

Textures


How can I manage multiple animations in one .blend file?

If you go to the Dopesheet View you can create and name separate animations with the Action Editor pane. You can also use the main Dopesheet pane to scale your animations.

Each of these animations as it relates to the objects do have their own separate timelines within Blender and can be linked or copied to other .blend files.

Also you can press M in the timeline to add a marker. I would really recommend desisting from the approach you have been using as it's very inefficient and is prone to error.


How to initialize a variable which won't be refreshed

You can define such variable outside of the node class and call it as you would call a global variable. Take the Text File Reader node for example, it defines a cache dictionary to cache file reads, the cache is initially defined outside of the class as:

cache = {}

class TextFileReaderNode(bpy.types.Node, AnimationNode):
    bl_idname = "an_TextFileReaderNode"
    bl_label = "Text File Reader"
    ...

And it assign and read the cache in the execute function normally:

with open(path, "r", encoding = encoding) as f:
    data = f.read()
    cache[key] = (lastModification, data)
    ...

You can also use the node identifier as a key in the dictionary to have a per-node variables. For instance, if you want a variable xBounce for every node, create an empty dictionary called xBounce and in the execution function, set its value using xBounce[self.identifier] = something and retrieve its value using xBounce.get(self.identifier, 0) where zero is the default value


Vertices not behaving smoothly after Subdivide

Face orientation (normals) was the problem. Once I rebuilt the parts from scratch and made sure to extrude both wireframe in the same direction the issue went away.


Is there a fluid simulation update/re-write on the horizon?

There is the Manta Flow Project included on the GSOC 2014:

http://wiki.blender.org/index.php/User:Romanp/GSoC_Mantaflow_Framework/Docs

But it seems that the project has been abandoned.


Why NLA animations are limited to 6 when exporting to FBX?

I found out what was wrong if anyone else got the same problems, all exporting NLA strips are controlled in Nonlinear animation tab:

Found it in the documentation:
https://docs.blender.org/manual/en/latest/editors/nla/strips.html


How to create a shape in the UV image editor for using as a mask in VSE?

What you want to do is split a screen and open a UV/Image Editor, or just open one up through the bottom, lefthand icon:

Load in an image with the Open button (you can screenshot a frame of your video) so that you know where to put your mask.

Still in the footer of the UV/Image Editor, add switch from View mode to Mask mode.

 -->

Add a new mask:

Now there are three keys to remember:

Ctrl +  LMB adds a Control Point where you click.
Once you have three or more points, use A to select all/deselect all.
If every point is selected (yellow), use Alt + C to connect the points.


How to create intermediate vertices of a humpy surface (interpolation)

@eromod's hint was the solution.

I created a huge ovoid (an icosphere that I compressed on one axis for an additional hump on the other axis),
aligned it carefully manually,
extended the original top surface in top direction,
applied a boolean modifier with "Intersect" operation,
and did a bit afterwork on the mesh.

Please leave a comment if there's something I forgot to do proper preparation for rounded edges around the top surface.


Why can I not edit object texture nodes?

The object texture list shown in the node editor is generated from textures used by Blender Internal render engine materials. A material and one of it's textures needs to be selected for this list to show up even though every available texture will then be listed.

These texture slots are only accessible when the Blender Internal render engine is active.

This means that the texture slots need to be created while Blender Render is active, if Cycles is chosen after the slots are populated then the list will still be visible in Cycles, though they will have no use for the material. Materials created while Cycles is active will not have any material slots and will not show the list in the node editor.


UV mapped texture is distorted on flat faces

This happens due to the triangulation of the quads:

You can see how the blue lines "break" (and so the lines in the texture) right where the dotted red lines marking the triangulation are.
The problem is that the UV of these faces is made of squares and rectangles, but the faces in the mesh don't have those shapes anymore.
The solution should be to unwrap the mesh again.


return the original materials with python

You can keep the original material index in a mesh.polygon_layers_int layer. Or save the material name in a polygon_layers_string As shown in sample code below.

import bpy
context = bpy.context
scene = context.scene

obj = context.object
mesh = obj.data

save_mat_layer = mesh.polygon_layers_int.get('material_index')
if save_mat_layer is None:
    save_mat_layer = mesh.polygon_layers_int.new(name='material_index')

save_matname_layer = mesh.polygon_layers_string.get('material_name')
if save_matname_layer is not None:
    save_matname_layer = mesh.polygon_layers_string.new(name='material_name')

for f in mesh.polygons:
    save_mat_layer.data[f.index].value = f.material_index
    save_matname_layer.data[f.index].value = mesh.materials[f.material_index].name.encode()

PS: not sure if obtaining desired result for the string layer.


They look like annotations or similar which may have been made with the grease pencil.
If you select the annotation menu you can find the eraser mode.


How do I flip an armature to face the other way?

Make sure you're in object mode. Then rotate the armature instead of the mesh. The mesh will rotate with the armature if you have it parented (and if it isn't, then the armature won't do you any good because it won't deform the mesh!). Then apply the rotation both on the armature and on the mesh using Ctrl-A.

To make your armature deform the mesh, first select your mesh, then your armature and hit Ctrl-P. Choosing "With automatic weights" from the resulting popup is a good first step.


How to create a continuous flow of water?

You will need an Inflow object and an Outflow object.

Setup your domain object. Add a cube that encloses the entire area you want the water to go (don't make it to big though, as the larger it is the more CPU time your bake will require). Then add a fluid modifier in the Physics panel with the type set to Domain
Add the inflow object at the top of the slide and the outflow object at the bottom. Add fluid modifiers with the appropriate types to the objects.
Add an Obstacle type fluid modifier to the slide and anything else you want to collide with the fluid.
Bake


Add a plane and scale and adjust to make a rectangular shape.

Ctrl+A to apply scale and rotation

Select the vertex and Press Ctrl+Shift+B with the scroll wheel round the edges

Press E to Extrude

Press N to flip normal

Select the gear add Boolean Modifier

Target the plane and the operation as difference. Apply and delete the plane.

See gif below:


is there any way to make a loop animation in blender?

Step 1. Make the animation

Step 2. At the end frame, duplicate the first keyframe of your animation and move it there.

Step 3. Done!


Darkening/Lightening camera change effect

Assuming Cycles renderer, the Film panel in the Render properties includes an Exposure setting. The Exposure effectively controls how much "light" is allowed into the camera.

Simply keyframe the Exposure from 1.0 to 0.0 in the few frames before your camera change and then keyframe back from 0.0 to 1.0 after, resulting in a fade to black on the 'old' view and fade from black for the 'new'.


black edges scatter around my imported mesh

The black edges are normal edges, while all teal edges have the sharp flag set. So just select all edges, and open the edge menu with Ctrl+E. Select Clear Sharp, or Mark Sharp, depending of what you try to achieve.


You can do this using the physics tab in blender. Then you can enable a rigid body for both your active object(Ball) and your passive object(wall/floor). If you want to animate it follow these steps:

Uncheck the dynamic check box and check the animated box.
Insert a key frame for both of the boxes
Animate the motion of the ball(think about this as the ball being thrown)
Insert another keyframe for unchecking the animated box and checking the dynamic box.


Duplicate one of your bones and rotate 90 degrees on the Z axis. This will be the object from which we will make the desired set of axes.

Open the properties panel using N and press control + alt + spacebar to create a custom axis. In the properties panel under "Transform Orientation" you can rename your custom axis, here I've named it "x = y and y = x".

Now select your original bones, X and Y have traded axes. In the 3D window footer, you can see we are now using the custom orientation created.


If you wanted to export a simple model such as:

as a .obj file that is compatible with OpenGL or another 3D graphics platform then all you do is go to export:

Look for the export options in the toolbar in the bottom left corner. This will allow you to choose the specifications for the output file:

The options I am using above are compatible with OpenGL ES, you may have to adjust your properties accordingly. This type of export will produce a .obj file (geometry file) and a .mtl file (materials and textures file).


Missing OpenColorIO.dll for game engine executable

Probably all the dlls are mimssing. When you export your file as a game executable, you should check the box "Copy dlls".
Anyway, check it was actually made : in the chosen directory, you should find :
- the .exe file
- a folder labeled according to your blender version
- all the required dlls
To get your exe running on a computer without blender, you should send all these files.


I have contacted the Rokoko support and they told me to toggle off the "Auto Scale" button, and it worked.


The problem is with your lamp's emission strength. Currently it's value is 600. That's too much. Select your Sun lamp and lower the emission strength.


How can I duplicate show/hide conditions of objects while duplicating collection?

The eye icon hides objects temporarily. To hide objects globally, use the screen icon.
You can enable it from the outliner "funnel" menu.
Temporarily Hide objects (Eye icon)
Resets when a collection is enabled, duplicated or linked to another scene
Globally disable objects (Screen icon  )
Stays on when collection is enabled, duplicated or linked


The solution in my case was so simple I somehow missed it. I changed my mask from black/white to grey/white and accomplished what I was after.


The default interpolation mode is smooth, in the graph editor select the keyframes on the graph you want to stop suddenly. Then go to the menu:

Key>Interpolation mode>Linear

This will make acceleration and stopping at the same speed from start to finish. This should help you accomplish your goal.


Here are the signals Blender currently uses.

SIGINT (Ctrl+C in the terminal) is used to cancel renders.
SIGFPE can be enabled by passing --debug-fpe to Blender, we use the for finding errors while debugging.
SIGSEGV writes a crash log in the temp directory, unless --disable-crash-handler argument is passed.


Shadeless node setup still making shades

I would suggest copying the node group from the Import Images as Planes addon that ships with Blender - import your image and choose the option for Shadeless, and you will see a node group that when expanded looks like this.


Enable/disable 3D cursor tool properties from python

You can set the active tool using bpy.ops.wm.tool_set_by_id(name = "builtin.cursor") and use ToolSelectPanelHelper class to get a reference to it. Code based on Operator Simple template:

import bpy
from bl_ui.space_toolsystem_common import ToolSelectPanelHelper

class SimpleOperator(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.simple_operator"
    bl_label = "Simple Object Operator"

    def execute(self, context):
        # Set the cursor tool
        bpy.ops.wm.tool_set_by_id(name = "builtin.cursor")
        # Get the tool
        tool = ToolSelectPanelHelper.tool_active_from_context(context)
        # Set the properties
        props = tool.operator_properties('view3d.cursor3d')
        props.use_depth = False
        props.orientation = 'GEOM'

        # Print all properties
        print (dir(props))
        # [..., '__slots__', 'bl_rna', 'orientation', 'rna_type', 'use_depth']
        return {'FINISHED'}

addon_keymaps = []

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

    # Add a shortcut
    wm = bpy.context.window_manager
    kc = wm.keyconfigs.addon
    if kc:
        km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
        kmi = km.keymap_items.new(
            SimpleOperator.bl_idname, type='C', value='PRESS', ctrl=True, shift=True)
        addon_keymaps.append((km, kmi))

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

    # Remove the shortcut
    for km, kmi in addon_keymaps:
        km.keymap_items.remove(kmi)
    addon_keymaps.clear()

if __name__ == "__main__":
    register()

Just run the script (or install as add-on) and press CtrlShiftC to enable the Cursor Tool along with your custom properties (use_depth, orientation in this case).


How to get a list of used resources via python?

You should be check and use the API... in this case the data

https://www.blender.org/api/blender_python_api_current/bpy.data.html

https://www.blender.org/api/blender_python_api_current/bpy.types.BlendData.html#bpy.types.BlendData

import bpy

d = bpy.data

## example for textures
textures =  d.textures

for texture in textures:
    print(texture.name)

#example for materials

materials = d.materials

for material in materials:
    print(material.name)


Modifiers can't be applied due to being deactivated

Have found the solution with help of someone else. There were old objects hidden that the newly created Array modifier somehow got connected to (??) I deleted those since I didn't use them anymore and now everything works fine.


Invisible objects with shadows not working as I intended

Use Is Camera Ray in your setup if you want the material to be invisible instead of Is Shadow Ray that makes the shadows invisible.


How to resolve problem with back-face culling and export it to a game engine?

Blender's show back faces option is just for viewport purposes and doesn't effect export. The easiest solution is to duplicate the faces of your pipe, flip the normals on the copy, and keep both overlaid. Alternatively you can find or make a Unity shader that shows back faces.


Render Viewport shows textures, final render does not (Cycles)

Solved very quickly, I had another object that was on the same spot as my textured object (Stick.save) which was showing up in the render. I simply disabled it by clicking the Enable/Disable in Renders button on said object.


How to add keyframe for data value with script?

Completed script:

import bpy

curr = bpy.context.scene.frame_current;

for ob in bpy.data.objects:
if "_hitbox" in ob.name:
    ob.follow_bone = False
    ob.keyframe_insert("follow_bone",frame=curr)
if ob.pose is not None:
    if ob.pose.bones is not None:
        for bone in ob.pose.bones:
            if ".IKC" in bone.name:
                bone.constraints["IK"].influence = 0
                bone.constraints["IK"].keyframe_insert("influence",frame=curr)

To add a keyframe, simply set the value like usual - for example,

bone.constraints["IK"].influence = 0

And then add a keyframe for that value on the current frame (see top of full script for "curr" variable).

bone.constraints["IK"].keyframe_insert("influence",frame=curr)

It is possible to set a keyframe on any frame. For example, if I wanted a keyframe at frame 27:

bone.constraints["IK"].keyframe_insert("influence",frame=27)


The topology of your skull is bad, there are vertices overlaying and inner faces, f you select some external vertices in Edit mode then press H to hide them and see what happens inside you will see it by yourself. Boolean doesn't work with overlaying vertices and inner faces, and I don't know if there's a quick way to fix the problem as there are a lot of vertices.


Joining and rotating several kitchen doors

Join all the meshes you don't want to animate, like floors and walls, with ctrlJ.

About the doors: Keep them as separate objects. You can parent them to the house object (ctrlP > Object) so that when you'll move the house on your scene they will follow.

You can't use the Pivot Point of the 3D View to animate them, because it's not taken into account in animations, so come back to Median Point for example. You have to use bones, or, even simpler, use origin point:

In Edit mode Select the face where you want the rotation axis to be (ie hinge of the door), press shiftS > Cursor to Selected, go back in Object mode and press shiftctrlaltC > Origin to 3D Cursor. Now the pivot point will be correct.


Can someone definitively describe the difference between the sculpt flatten, polish, and smooth brushes?

Flatten tries to make all vertices align on one plane:

Smooth tries to align vertices to the average mesh surface:

Polish is basically a mixture of the two:

This is what I have observed from use and gathered from the Wiki.

When pressing Shift while using the Brush tool, you switch to Smooth mode, and while pressing Ctrl you switch from Add to Subtract mode, and the opposite as well.


One of my objects doesn't appear in 3D View Full

The Corpus is created from individual edges but not Curves. As far as Blender is concerned it has no mass and there is nothing to render.

Go to the Object menu and Convert To select Curve From Mesh/Text.

Now you can go into the Curve settings and Extrude to give the threads depth.


Armature not working after linking new mesh data

Logistically speaking, If it is now a single mesh with verts associated with vertex groups with the appropriate bone names from the armature that it is already parented to, it should work.

I just ran some tests on a rig that I have. I added a cube in Object mode, joined it to the rigged mesh, in Edit mode I copied the vertex groups associated with a vert in the original mesh, went into pose mode and it worked without a hitch.

If you upload the .blend I'll take a peek.


How can I use nodes to make a Genshin-like grass material?

It looks like the only thing you're missing is some color variation for each blade of grass.
If each blade of grass is an individual object, you can create variation with Object Info -> Random plugged into a Hue/Saturation node.

If you have a clump of grass where multiple blades comprise the same object but each blade is separate, you need to mix in Geometry -> Random Per Island.


Assuming you have got the Sync Selection button checked:

(The double arrow on the left)
Then, deselect all in the UV window, except the vertex of interest, mouse over the 3D View, and hit Shift H to hide all but your selection. Still no sight? Hit Numpad  .  (period) to center the view on the selection.


Try adding a refraction  node to your door material, so that the light gets dispersed

Edit:
In you file the glare is there but it's almost wiped out by the white environment's brighness:

Your file on a Blue environment.


Just disable your hidden side wall from rendering.


Un-stacking textures that are stacked over each other

If you still want to do this after reading pie75's answer, the MultiEdit Addon   might come in handy.

Select all objects, go to MultiEditMode.
Then select a face, press Shift+G -> Image
Move the UVs in UV Editor by pressing G X 256 (in this case, other value might be needed for other cases).
Hide the faces with H and proceed with another yet unhidden face, but this time move for the double amount.
When all UVs are moved, exit MultiEditMode and you are done.

Blenderman example (without hiding faces):


Beginner: How do i make force field affect only a certain area of hair

Hair Dynamics is a feature that enables for the whole particle system no matter what but you can tweak which forces affect to the system.

So I think the only solution is to make two Particle Systems: one affected by the Force Field and another one that it's not. These are the steps:

Create two equal Particle Systems for your plane. They might have Hair Dynamics enabled for working with Force Fields.
Create a Vertex Group for the area you don't want to be affected by your Force Field. (Eventualy, you might need more vertices on your plane to paint a proper Vertex Group).
On the first System, go to Vertex Group and add that Vertex Group into the Density field.
On the second one, add the Vertex Group too but check the double-arrow icon on the left.
Now, you might need to tweak the number of hair on the two Systems to have the desired density.
Go back to the first System and, on the Field Weights area, set to 0 the Fields you want to avoid -depending on your Field Force.

Now you might have a result like this, where the center area is not being affected by a Wind Force Field.Note that in this case I could just disabled Hair Dynamics for the first System.


How can I get a cabinet projection camera?

Demonstrating in 2D what is going on:

Mathematically it should be correct to render with a orthographic camera
and later transform the image. I think this is the easiest method when
you have multiple objects (so you do not have to add modifiers to each).
First you should shear in 2D (skewing) the rendered image then (if needed)
stretch to get the correct aspect.

Original:

Sheared:

Streched:

Most raster graphics editors have the tools to preform the above
transformations. This can also be done in the compositor using a
Blend texture and the Displace node.


Adding Baked Audio Rotation to a pre-existing rotation

In Bake Sound settings (when selecting sound file) click on additive option:


Where is the "Manipulate Centers Only" button in Blender 2.8?

The 'manipulate centers only' has changed again in Blender 2.81 and newer versions. It is at the top-right in the toolbar, under the Options dropdown. The function is now called Transform Affect Only > Locations


File > User Preferences > System > Middle Column at the Bottom (Sequencer / Clip Editor:) and reduce the Memory Cache Limit: value (I believe it's in Kb, but you would have to check that).


Create a smooth, well rounded aircraft nose (with a low poly constraint)

I don't know whether this is lo-poly enough for you.. there's a similar number of edges around the cone, (quite hi-poly, in my book)

Assuming an even number of vertices in the circumference:

Cut off  the tip to your second line, select the perimeter of the hole
CtrlF Face menu > 'Grid Fill', adjust spans and offset.
with O Proportional Editing on,smooth, bring out the central vertex
In vertex mode, Vertex menu > 'Smooth vertices', on a larger region of the nose

This way, you might have to model the part with the Mirror modifier applied.. it is symmetrical, though, so you can slice it in half and stick it back.


why "set parent to with automatic weight" can't work on mirror?

I just found out one way...First cancel mirror modifier, Second go to edit mode click A to select all, Third shift-D duplicate and S to scale on one axis by -1.Then use shift-J to connect both side.

Then it works for "automatic weight" process.


The decimate modifier is the closet alternative. I find Un-subdivide to be the best(using even numbers of iterations generally creates better results), the other methods are good to, just try all of them for the best results.

Note, in Blender 2.4x the decimator didn't support UV's, vertex groups and it triangulated everything, however the decimator now supports these - so there is no need for the script.


seems like this has been solved on the thread

http://blenderartists.org/forum/showthread.php?315980-Archimesh-Architecture-elements-%28rooms-doors-columns-stairs-tile-roofs%29/page2

when you go to the github link https://github.com/Antonioya/blender/tree/master/archimesh

you need to click on the zip file then select raw and it will download correctly.


How to export white/shadow catcher with filmic?

the background with shadows divided by a clean background with no shadows does not generate white.

If you are dividing any value by itself the result will be one: $\frac{X}{X} = 1$
The standard sRGB transform will display white when the scene value reaches 1
But "white" doesn't live there any more if you are using filmic blender's color transforms.
"White" is not equal to 1, 1, 1,
White is somewhere around 16.29174024 in scene referred values (and operations before the color management, like nodes in the compositor, are done with scene referred data. The color transforms to create display referred images out of that data are done at the very end of the pipeline).
Filmic blender uses a much wider dynamic range, Using the filmic blender transforms you need a much higher value to reach "white", most likely you would need to scale the result of that division by 16.29174024 with a multiply node to fall within the parameters that work with filmic blender.

To understand what filmic blender does and how it maps the scene's values to the displayed image please read the following link: Render with a wider dynamic range in cycles to produce photorealistic looking images
and https://github.com/sobotka/filmic-blender


Select a bone, switch to Pose mode and you will find all the bone constraints in the properties window.


How can I find out the variable name in python?

This has been turned off by default in 2.80. Turn it back on in Edit > Preferences > Interface > Display > Python Tooltips


Export in object format via script. The default cube appears in the scene!

Have a look at the outliner in your first pic, the cube is there. Just delete the cube and it will no longer be exported.

Just because it isn't on a visible layer doesn't mean it wont be exported.


how to save object data while changing mode (Object mode, Edit mode)?

The mesh data stored for an object is different from the bmesh data used while in edit mode, while the object data is static and used for drawing and rendering the edit mesh is optimized for adding and deleting items. When you enter edit mode the mesh data is copied to a bmesh structure which is copied back and destroyed when you go back to object mode. This is why you get the error as the bmesh data that you are using has been destroyed and no longer exists.

I expect you should adjust your code to not toggle in and out of object mode, you should be able to do what you want while the object stays in edit mode or perform the steps after you have finished in edit mode.

One option is to stay in object mode, you don't have to go into edit mode to alter the mesh, unless the user is interactively editing it. You can create the bmesh, edit the mesh and copy it back to the object, using bm.to_mesh() multiple times.

import bpy
import bmesh

me = bpy.context.object.data

bm = bmesh.new()
bm.from_mesh(me)

for v in bm.verts:
    v.co.x += 1.0
bm.to_mesh(me)

for v in bm.verts:
    v.co.y += 1.0
bm.to_mesh(me)

for v in bm.verts:
    v.co.z += 1.0
bm.to_mesh(me)

bm.free()
bpy.context.scene.frame_set(bpy.context.scene.frame_current)


How to animate a growing plant with branches?

You'll need to do some manual tweaking and timing, no doubt. Automating this would make sense if you had a massive amount of plants to process.

I've used the following method when animating growing plants with branches which I've found relatively easy to do. Admittedly it was on 3dsMax, but I believe the same steps applies to Blender.

First off, I always work with a mesh. Then I build a quick rig/armature loosely following the branching of the plant. Usually automatic skinning works fine.

To animate it grow, I take the starting pose and scale each bone to zero. I flip the starting and ending keyframes so the plant grows instead of shrinks. And since every bone inherits the scale of its parent, you get a nice, gradually cascading effect.

Things to tweak at this point are the timing of when the branches start to grow (wait for the parent bone to grow to full size before beginning its own scaling, for example), and slight rotation of each branch.


Question 1:
Light Path node outputs a single value between 0 and 1.
When plugged directly into RGB input, they correspond to black and white.
Example using the mentioned Ray Length output. The longer the distance, the higher the value.

Question 2:
The values are calculated for each ray hitting a surface.

Direct view - 0 bounces
Mirror reflection - 1 bounce
Glass panes - 1 to 3 bounces


Can you draw in 3d from orthografic projections?

All you need to do is switch the view in which you want to draw, so that the strokes are aligned in a different axis.

Blender will not magically merge shapes, though.
But you can edit your objects just like any other object in 3D to get whatever shape and plane you want.

Note that you can also set the grease pencil to draw at different planes, determined by the 3d cursor. That would allow you to draw from the same view, but at different depths.
See: Align Grease Pencil with Camera Angle


There are a few ways to set the active camera.

Key Binding: select it and press Ctrl+ Numpad 0.

From the menu:3D Viewport Header -> View -> Cameras -> Set active object as camera.

Scene property:
Scene tab in the Properties Editor and pick a camera object from the list:

Outliner (V2.90+):

You can click the green camera icon beside the camera's name in the outliner to toggle it as active for the scene.

Animation:
To change the active camera during an animation you can use Markers.

Add a marker where you want to change the active camera (M in the Timeline, or Timeline header > Add marker will add a marker to the current frame):

Select the object which you want to set as the new active camera and the marker which you want to bind it to, then press CtrlB in the Timeline (or Timeline header > View > Bind camera to markers):

Note that markers behave like keyframes, so you will need at least two markers with cameras bound to them to have any camera switching.
To illustrate this, here is an example with Camera.001 bound to the marker on frame 1, and Camera bound to the marker on frame 5:

Note: If setting the active camera is only effecting a single view, you may have Scene-lock disabled. In the 3D View header (Right hand side of layers buttons), there is a lock icon. This should normally be pushed in, unless you explicitly want to set a camera & layers only to a single view.


How would I go about converting a 3d model to a .vox file

If you need any to make any mesh in blender look "minecraft-like", use a Remesh Modifier set to Blocks. You can then export this to a variety of formats, including .obj. If you need a .vox file, however, you will need a special addon. One of the best I can find to suit your purpose is here, but I can not vouch for its efficacy.
Addon to export to .vox is here:

https://github.com/Spyduck/voxwriter


The cloth solution referenced by @batFINGER works for me:

Starting with the two (nearly) straight edges, first, Bridge Edge Loops with settings something like these:

.. and you're nearly there. A bit of Vertex > Smooth-ing on the internal vertices might do. But if you want to, you can finish the stretch with a quick Cloth sim, as shown on the right, above, with settings very similar to those provided as 'Tent' in the referenced answer, and the straight edges pinned throughout, rather than just the corners.

(the sim runs to stability in about 30 frames, in the provided .blend)


One thing I could recommend is joining all of the meshes (selecting them all) and then pressing control j (join meshes). This will work if you have a lot of different objects. My guess is that you only applied the decimate modifier to one specific object and that you are only decimating that part. Could you share a screenshot or two so I could see better what the problem might be?


It seems you are trying to do illustration work on a 3D modeling tool.

Inkscape could be a much more adequate program for this. You will get the additional benefit of clean, unpixelated vector graphics.

If you want to do it in Blender then I'd say take advantage of its powers.

Model a clean board as a separate recyclable object. Texture it using a procedural checker texture as Dontwalk mentioned (one less image texture and unwrapping needed); then duplicate it around your scene as desired.

Then model your chess pieces also each as a separate recyclable objects and place them on each board instance at the planned position; even if they are just a bunch of simple flat planes or circles.

You can take advantage of easy independent positioning for each, and use snapping for precise placement, no need for dozens of different textures. You can still use image based textures for each piece if you prefer, but taking advantage of modeling might produce better results depending on what visuals you are looking for.

This way, you wont have duplicate textures, needless duplication of information and manual work painting each scenario as a pixel based image in a painting program.

If you are looking for plain flat colors and simple visuals you might not even need formal rendering and can quickly capture images directly from the OpenGL viewport preview.


The bone which head is selected will be extruded. While selecting the already extruded bone, the bone from which you have extruded remained selected.

How to:
In Edit Mode:
Deselect everything
Select bone head, which you want to extrude.
Extrude
Deselect everything
and so forth...


On a separate layer create an object that will have the shape of your droplets, and give it the material you need.

Then on the main object add a particle system with start and end on frame 1, no physics and using the drop object as the render object.


"Metal" textures are often determined by a number of different textures working together to create the appearance of metal. These can include a number of things such as Diffuse, Specular, Normals, and glossy shaders. In order to make these usable by external programs you can either bake these maps individually of create a PBR material, which is basically a combination of all of the above.

There are lot's of tutorials on how you may create PBR materials in blender my favorite as always is from Blender Guru.

However if you wish to export individual maps there is a great tutorial here on
stack exchange.


is there any way to make annotations snap to a mesh?

Open the Tool Shelf in the 3D View.

Go to the Grease Pencil rider and under Stroke Placement select Surface.

Edit : For blender 2.8 it is in the popover menu.


I think this way may meet your needs:

See key settings marked in the image above, very intuitive I suppose.


How can I rig multiple identical legs efficiently?

Sadly the array modifier is not able to do this like it would be with the mirror modifier (copy Vertex Groups automatic) but I would make one Leg perfect (I would prefer the one on the X Axis) with a perfect Armature just for one leg and then duplicate and rotate the rig and the leg (together) to make the full robot. Try to join the armature and meshes together but I dont know if that works.
For the pivot point Problem move the start point of the bone to control the "center point".


When to use bmesh.update_edit_mesh and when Mesh.update?

The mesh data used by an object is stored within object.data, the most obvious data being stored within the vertices, edges and polygons properties.

When you add or alter edges or polygons you need to use object.data.update() to see the changes in the 3dview.

To see this working, start with a default cube in wireframe shading and enter the following into a python console.

odata = bpy.data.objects['Cube'].data
odata.edges[8].vertices[0] = 3
odata.edges[8].vertices[1] = 5

You shouldn't see any difference yet, now enter

odata.update()

and you will see one of the edges is now across the top face and not on the side.

Instead of directly editing the mesh data, it is preferred to use the extra functionality provided in the bmesh module. The function bmesh.from_edit_mesh() makes a copy of the mesh data that you can make changes to while the object is in edit mode, the changes you make remain in this copy until you call bmesh.update_edit_mesh(), this lets you add 10,000 faces and then do one refresh to reduce the amount of drawing/copying needed. If you directly alter the object data while the object is in edit mode then those changes will be lost as the bmesh edit_mesh will overwrite any changes upon exiting edit mode.

Similar to bmesh.from_edit_mesh() and bmesh.update_edit_mesh() we also have bm.from_mesh() and bm.to_mesh() which allow us to edit the mesh data while the object remains in object mode. (these are available after bm = bmesh.new())


Give object A a vertex group named A. In edit mode, select all vertices and assign them to that group.
Same thing for object B with a group named B.
Then join A and B like normal. The vertex groups are preserved.

Script to do this automatically. Select the objects you want to join, make sure you're in Object mode, then run it from the text editor.
import bpy
assert bpy.context.mode == 'OBJECT'
for ob in bpy.context.selected_objects:
    if ob.type != 'MESH': continue
    vg = ob.vertex_groups.new(name=ob.name)
    vg.add(list(range(len(ob.data.vertices))), 1.0, 'REPLACE')
bpy.ops.object.join()


Loop over the text blocks, get their texts, append them to a text list, join them as you wish:

To get a list of all text blocks, you can use this piece of code:

[text for text in bpy.data.texts]

Which you can possibly filter in anyway, for instance using the Filter Text Block List:


Slime:

Inner object:

You'll have to adjust the settings to suit your model and lighting. I used a couple of lamps, only one that cast shadows. Increasing the 'Fac' of the mix shader on the inner object material makes it brighter, and the two in the slime material control the slime's brightness and transparency. (Left is transparency, right is brightness.)

I used lamps with a size of zero to make the shadows sharper.


Holding Ctrl will enable snapping, and snapping types can be picked here with the drop-down by the magnet that will toggle snapping.

You'll want vertex. Remember you can move along specific axes to get it snapping exactly the way you want.

Exactly what you'll want to do is change the snapping type to vertex. Then grab your ring part and move in the y axis, holding Ctrl to snap it to the rim of the cylinder.


UV editing + texture - change color of the PNG image (caption)

You'll find here a long and complete answer to your question.

To make it short, here is how you could organize your nodes if you want to use your image texture as a kind of mask between an emission node and your wave background: Plug the "Hello" Image Texture into the Factor of a Mix Shader, and plug what you want into the 2 sockets of your Mix Shader.


Limiting minimal scale to 1 still goes to negative values

This is known essue, and now it has "To Do" status:

https://developer.blender.org/T37623

And this is one of two unsolved problems from 2018 TO DO animation list:

https://developer.blender.org/T55365

It's sounds easy, until you try to make it work on matrix transformations.


Is it ever ok to use bpy.context instead of operator context?

Can I use bpy.context.scene anywhere without issues?

Yes, you can always use it, as the blender scenes are practically never lower than 1. So bpy.context.scene, will always refer to the current scene
But be careful, if for example you do something like assigning this to a variable scene = bpy.context.scene, the scene may at some point, no longer exist, as the user could create new ones, and delete that scene from the bpy.data.scenes

Will bpy.context.selected_objects always return the selected objs in
the 3DView regardless of where the operator was run?

Yes, this always returns the selected objects in a list, so to check for yourself, you can run bpy.context.selected_objects in the Blender console, closing any window with the 3D view, you will notice that it will always refer to the current scene, and consequently to selected objects in the scene.
In addition, by returning a list of objects, you can check if the list contains any objects with if bpy.context.selected_objects
The operator in general already contains the context, in principle if known, within an operator, for example in the function execute(self, context), the context is already present together with self (self is itself, i.e. the operator class).
The context can also be assigned at the beginning of a script, as happens in the Blender console:
C = bpy.context as is also the case with D = bpy.data


Radiant Rig XL does not work with my character mesh because there is a script that interferes with it

Here were the steps I took to diagnose the problem you are having:

1) When I opened your file, I saw the error message "Auto-run disabled: Text 'rig_ui.py'" (see screen shot 1)

2) Near the Help item at the top, I switched the layout from 'gp2' to 'Scripting' (see screen shot 2)

3) I saw a script which is designed to modify the rigify plugin. Radiant Rig depends upon Rigify as stated in the instructions. If you are changing Rigify, I can't predict what will happen. I did not have time in the morning to debug the rig_ui.py attached to your file. (see screen shot 3)

4) I selected the figure in your file and merged all the parts into one object (CTRL+J)

5) I exported your object.

6) I created a blank blender file; I was able to import the exported figure into this new file.

7) I ran my script and it fitted the mesh better.

Please follow those exact steps.


An answer to the first part of the question :

import bpy

# Replace with your materials
mat_a = bpy.data.materials.get('mat_a')
mat_b = bpy.data.materials.get('mat_b')
# etc.

# Link every mesh name to a specific material
mesh_dic = {
    'mesh_a': mat_a,
    'mesh_b': mat_b,
    # etc.
    }

# Circle every mesh and link if need be
for mesh in bpy.data.meshes:
    mat = mesh_dic.get(mesh.name)
    if mat:
        mesh.materials.clear()
        mesh.materials.append(mat)

Unfortunately I don't know the alembic in and outs enough to answer the second part but I guess this would be possible using this kind of script depending on what information you are able to import from the file.

Source


Create a new image for your bake with the 32 bit Float option enabled
Shade smooth your 2 objects
The unwrap of your low-poly is bad, UV are overlapping, so re-unwrap with the Smart UV Project mode
Bake, it should work:


How to get to face select mode in Blender?

For those who are in the newer Blender versions (this is for 2.81), here's where the buttons changed to:

In a 3D Viewport editor, make sure you're in edit mode (usually by pressing Tab). The new icons will be in the upper left corner, just before the editor's menu bar.


Oh gee, I figured it out. There was an extra edge in the back of the dip. The inside of the corset had some faces removed, but the ones kept were pulled back into the body so when looking down the corset you don't see space, you only see the edge of the corset. Must have happened when I was mirroring it in building. Maybe an extra edge snuck in there. Here is a view from the inside of the mesh, it was an extra edge. I selected it to be visible.


Targeted bones don't move with the rest of the armature

You need to parent (Keep Offset mode) all the IK controllers and targets to the root bone.


How to animate rotation of an object without modifiers

Parent your object to an empty and rotate the empty. So, in details:

Create your object, put its origin to its geometry, create 2 empties at the exact same point, parent the object to one of the empties, let say the cube.

Give your object a first Simple Deform modifier, Twist mode, Angle 360°.

Give your object a second Simple Deform modifier, Bend mode, Angle 360°, with the other empty (here a Plain Axes) as Axis. Now when you rotate the first empty (Cube) on the Z axis it should rotate the way you want.


Object showing throught other object in viewport

Uncheck X-Ray in Object->Display

if not, could you add the blend file, so I can check it?


Blender includes pip on Windows since version 2.81, but not on other operating systems. Therefore, pip has to be installed through ensurepip.bootstrap() on Linux and macOS. This function can also be called on Windows, when pip is already installed. It will detect the existing installation of pip and won't modify it. Installing pip and Python packages through a script or an add-on may require that Blender is started with elevated privileges, for instance if Blender is located in C:\Program Files. Please note that this is generally not recommended for security reasons.
Important: ensurepip.bootstrap() calls pip during for the installation. pip sets the environment variable PIP_REQ_TRACKER which is used as a temporary directory. This directory doesn't exist anymore once ensurepip.bootstrap() finishes execution, but the environment variable PIP_REQ_TRACKER remains. This is a problem, because subsequent calls to pip will attempt to use the directory in PIP_REQ_TRACKER. It is necessary to remove PIP_REQ_TRACKER from the environment variables after calling ensurepip.bootstrap():
ensurepip.bootstrap()
os.environ.pop("PIP_REQ_TRACKER", None)

Once pip is installed, subprocess can be used to to install the required packages. The path to Blender's Python interpreter is bpy.app.binary_path_python. Installing a package, for example matplotlib*, would therefore be done in the following way:
subprocess.check_output([bpy.app.binary_path_python, '-m', 'pip', 'install', 'matplotlib'])

*matplotlib is used as an example, since I wasn't sure which websocket package you were referring to.

Important: It's common courtesy to not connect to the internet or install packages without the explicit consent of the user.
The following add-on has a button in the preferences that allows the user to install the required Python packages. If the dependencies aren't installed, a panel with instructions is displayed in place of the add-on's operators. This approach respects the user's privacy and doesn't install packages without their permission.
User Preferences

Instructions

After successful installation of dependencies

The import_module(module_name, global_name=None) functions allows to programmatically import modules based on their name and optionally specify a global_name under which the module can be accessed. For your own implementation it may not be necessary to use importlib and globals(), but it significantly reduces code redundancy if you need to import or install multiple modules. The installation of Python packages, as described above, is implemented in install_pip() and install_and_import_module(module_name, package_name=None, global_name=None).
Updates to this example add-on will be published on GitHub.
#    Copyright (C) 2020  Robert Guetzkow
#
#    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 <https://www.gnu.org/licenses/>

bl_info = {
    "name": "Install Dependencies Example",
    "author": "Robert Guetzkow",
    "version": (1, 0, 2),
    "blender": (2, 81, 0),
    "location": "View3D > Sidebar > Example Tab",
    "description": "Example add-on that installs a Python package",
    "warning": "Requires installation of dependencies",
    "wiki_url": "https://github.com/robertguetzkow/blender-python-examples/add-ons/install-dependencies",
    "tracker_url": "https://github.com/robertguetzkow/blender-python-examples/issues",
    "support": "COMMUNITY",
    "category": "3D View"}

import bpy
import subprocess
from collections import namedtuple

Dependency = namedtuple("Dependency", ["module", "package", "name"])

# Declare all modules that this add-on depends on. The package and (global) name can be set to None,
# if they are equal to the module name. See import_module and ensure_and_import_module for the
# explanation of the arguments.
dependencies = (Dependency(module="matplotlib", package=None, name=None),)

dependencies_installed = False

def import_module(module_name, global_name=None):
    """
    Import a module.
    :param module_name: Module to import.
    :param global_name: (Optional) Name under which the module is imported. If None the module_name will be used.
       This allows to import under a different name with the same effect as e.g. "import numpy as np" where "np" is
       the global_name under which the module can be accessed.
    :raises: ImportError and ModuleNotFoundError
    """
    import importlib

    if global_name is None:
        global_name = module_name

    # Attempt to import the module and assign it to globals dictionary. This allow to access the module under
    # the given name, just like the regular import would.
    globals()[global_name] = importlib.import_module(module_name)

def install_pip():
    """
    Installs pip if not already present. Please note that ensurepip.bootstrap() also calls pip, which adds the
    environment variable PIP_REQ_TRACKER. After ensurepip.bootstrap() finishes execution, the directory doesn't exist
    anymore. However, when subprocess is used to call pip, in order to install a package, the environment variables
    still contain PIP_REQ_TRACKER with the now nonexistent path. This is a problem since pip checks if PIP_REQ_TRACKER
    is set and if it is, attempts to use it as temp directory. This would result in an error because the
    directory can't be found. Therefore, PIP_REQ_TRACKER needs to be removed from environment variables.
    :return:
    """

    try:
        # Check if pip is already installed
        subprocess.run([bpy.app.binary_path_python, "-m", "pip", "--version"], check=True)
    except subprocess.CalledProcessError:
        import os
        import ensurepip

        ensurepip.bootstrap()
        os.environ.pop("PIP_REQ_TRACKER", None)

def install_and_import_module(module_name, package_name=None, global_name=None):
    """
    Installs the package through pip and attempts to import the installed module.
    :param module_name: Module to import.
    :param package_name: (Optional) Name of the package that needs to be installed. If None it is assumed to be equal
       to the module_name.
    :param global_name: (Optional) Name under which the module is imported. If None the module_name will be used.
       This allows to import under a different name with the same effect as e.g. "import numpy as np" where "np" is
       the global_name under which the module can be accessed.
    :raises: subprocess.CalledProcessError and ImportError
    """
    import importlib

    if package_name is None:
        package_name = module_name

    if global_name is None:
        global_name = module_name

    # Try to install the package. This may fail with subprocess.CalledProcessError
    subprocess.run([bpy.app.binary_path_python, "-m", "pip", "install", package_name], check=True)

    # The installation succeeded, attempt to import the module again
    import_module(module_name, global_name)

class EXAMPLE_OT_dummy_operator(bpy.types.Operator):
    bl_idname = "example.dummy_operator"
    bl_label = "Dummy Operator"
    bl_description = "This operator tries to use matplotlib."
    bl_options = {"REGISTER"}

    def execute(self, context):
        print(matplotlib.get_backend())
        return {"FINISHED"}

class EXAMPLE_PT_panel(bpy.types.Panel):
    bl_label = "Example Panel"
    bl_category = "Example Tab"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"

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

        for dependency in dependencies:
            if dependency.name is None:
                layout.label(text=f"{dependency.module} {globals()[dependency.module].__version__}")
            else:
                layout.label(text=f"{dependency.module} {globals()[dependency.name].__version__}")

        layout.operator(EXAMPLE_OT_dummy_operator.bl_idname)

classes = (EXAMPLE_OT_dummy_operator,
           EXAMPLE_PT_panel)

class EXAMPLE_PT_warning_panel(bpy.types.Panel):
    bl_label = "Example Warning"
    bl_category = "Example Tab"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"

    @classmethod
    def poll(self, context):
        return not dependencies_installed

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

        lines = [f"Please install the missing dependencies for the \"{bl_info.get('name')}\" add-on.",
                 f"1. Open the preferences (Edit > Preferences > Add-ons).",
                 f"2. Search for the \"{bl_info.get('name')}\" add-on.",
                 f"3. Open the details section of the add-on.",
                 f"4. Click on the \"{EXAMPLE_OT_install_dependencies.bl_label}\" button.",
                 f"   This will download and install the missing Python packages, if Blender has the required",
                 f"   permissions.",
                 f"If you're attempting to run the add-on from the text editor, you won't see the options described",
                 f"above. Please install the add-on properly through the preferences.",
                 f"1. Open the add-on preferences (Edit > Preferences > Add-ons).",
                 f"2. Press the \"Install\" button.",
                 f"3. Search for the add-on file.",
                 f"4. Confirm the selection by pressing the \"Install Add-on\" button in the file browser."]

        for line in lines:
            layout.label(text=line)

class EXAMPLE_OT_install_dependencies(bpy.types.Operator):
    bl_idname = "example.install_dependencies"
    bl_label = "Install dependencies"
    bl_description = ("Downloads and installs the required python packages for this add-on. "
                      "Internet connection is required. Blender may have to be started with "
                      "elevated permissions in order to install the package")
    bl_options = {"REGISTER", "INTERNAL"}

    @classmethod
    def poll(self, context):
        # Deactivate when dependencies have been installed
        return not dependencies_installed

    def execute(self, context):
        try:
            install_pip()
            for dependency in dependencies:
                install_and_import_module(module_name=dependency.module,
                                          package_name=dependency.package,
                                          global_name=dependency.name)
        except (subprocess.CalledProcessError, ImportError) as err:
            self.report({"ERROR"}, str(err))
            return {"CANCELLED"}

        global dependencies_installed
        dependencies_installed = True

        # Register the panels, operators, etc. since dependencies are installed
        for cls in classes:
            bpy.utils.register_class(cls)

        return {"FINISHED"}

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

    def draw(self, context):
        layout = self.layout
        layout.operator(EXAMPLE_OT_install_dependencies.bl_idname, icon="CONSOLE")

preference_classes = (EXAMPLE_PT_warning_panel,
                      EXAMPLE_OT_install_dependencies,
                      EXAMPLE_preferences)

def register():
    global dependencies_installed
    dependencies_installed = False

    for cls in preference_classes:
        bpy.utils.register_class(cls)

    try:
        for dependency in dependencies:
            import_module(module_name=dependency.module, global_name=dependency.name)
        dependencies_installed = True
    except ModuleNotFoundError:
        # Don't register other panels, operators etc.
        return

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

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

    if dependencies_installed:
        for cls in classes:
            bpy.utils.unregister_class(cls)

if __name__ == "__main__":
    register()


Smoke simulation - how to make a slow fog

There are 2 ways and you may need to use a combination of both depending on how slow you want to slow it down:

1) Change the Time: Scale with the CUBE DOMAIN

2)
Slow down the frame rate. E.G. change 29.97 to 120 fps.  Unfortunately it's not a perfect solution- it will change the characteristics of your smoke and you'll basically have to tweak everything from the very beginning.


Combined Two objects now i can no longer texture paint

We really should compile a trouble shoot of all the answers in one place, the problem was my model was not completely symmetrical.  Instead of allowing me to paint, the paint function just gets turned off all together, you have to turn symmetry off in my case.


The image could be "packed" into the .blend, you must unpack to replace it.
You can do this by clicking the small icon shown below, then you should be able to replace it. Remember to "pack" it back if you need to stay in the .blend file!


leave light trail on path behind particles

try the build modifier on a curve (with some bevel applied on using the object data properties) if you wanna do something like that:


The code you're looking for is here on line 322 (the do_colorband function).

This is the definition of the node itself, and the operation is implemented here: apparently it samples a colourband texture using the input as texture coordinates.


In armature settings you need to swich type to B-Bone or Envelope to see the difference.


How to achieve dramatic composition with low poly models?

The following is help from a design perspective, more than a tutorial on how to achieve this all within blender, so an edit to do these things is more than welcome.

You've made some good headway and his chest and legs are looking great/similar to the reference. The feedback I'm going to provide is more thorough than it is a reflection of the quality of your work, so hang in there :)

Most important difference is the color scheme. Colors are VERY important. You can create a cool color scheme for free using Adobe's online color scheme app. (just google 'adobe kuler') the closer it resembles life, the less abrasive it will feel to the viewer.

There's a 3 point lighting set up on the original artwork. The back light (rim light) helps to subtly highlight the edge in the silhouette. The colour scheme for the original has a golden hour feel to it. Golden hour is a film term for the time of the day with the most beautiful warm colors appear to saturate the day. If you type in Golden hour into the 'explore' portion of kuler you'll find hundreds of variations.
On the other hand, your lighting setup looks a little too much like a desk lit table top in comparison, and the effect is a little mundane of a situation... I feel like you can do a lot better than that!

The next problem you'll need to tackle to get close to the quality of the original is the silhouette previously mentioned. Take the original into a image editor and trace a line around the form of the character and his accessories. See how even the silhouette ALONE says everything about the character, and in an interesting way?

Silhouette is paramount to a good character design, because a good character must be easily recognized and our easiest way to identify an object is through the silhouette.

See how easily you can identify an character with silhouette alone? It matters big time. So take a careful look at your character and see how you can push him so that he has a more interesting/unique silhouette, and somehow it'll appear cooler :). The rule of thumb for pushing, is choose the most interesting aspects of the character and make them read more.

Another point about silhouettes is that they can make or break a character depending on the intent. For instance, your character looks quite round and therefore cuddly, if you are going for a mean badass viking, you might want to try something a little more angular and foreboding.

The last big thing to address is that you seem to have a few too many continuous strips/groups of flat planes of geometry in your character. At the moment he looks a little lifeless. Adding extra dimension here and there will breath some character and life into your creation, like there is in the original. To do this, find pictures of strong men on google from different angles and pay close attention to the angles of their faces and muscles. Try not to go overboard, because too much detail = straying from that simplistic style. Just think of each triangle as though it's a brush stroke in a minimalist painting.

And on a minor note, the original artist has applied a film grain and vignette. The grain breaks up the subject a tad to make it seem less perfect, the vignette softens the corners and draws attention into the subject.

But you've made a fantastic start my friend, the quality is above average.


If the two armatures are in the same file, simply select your second skeleton, turn a dopesheet window into an action editor, and select your Mixamo animation in its dropdown menu.

If the animation is in another file, choose append in the file menu, select the origin file, go to its "action" folder and select the animation.

Then do the same procedure.


You should change your render resolution.

It can be found in the properties panel (the right-side one) under the render tab (the first one with the camera icon).
If that doesn't work, try changing the Aspect Ratio.


Why does this piece of cloth collapse if I enable 'cloth collision'?

A trick that solves this issue most of the time is increasing the scale. Blender dont like small sized items in simulations for some reason.
Dont forget to apply the scale!


Do high end cards have better rendering performance?

Rendering on GPUs has a few limitations, the most crucial one is the amount of VRam on the card. Basically, the whole scene that you're trying to render needs to fit into it. If you 'only' have one GPU available, the situation gets worse, because the 3D scene needs to be displayed on the same card, reducing the amount of free RAM as well.

Besides geometry eating a lot of RAM, textures can be a surprisingly effective GPU rendering killer. Check if you have many high resolution textures in your scene, and if so try to reduce their pixel size. I've had scenes where the geometry would take less than 1GB VRam, but the textures would blow the rest of the 11GB available (we have a few Titan X cards here). I reduced the texture sizes, and in the end the scene rendered on a card which only had 3GB VRam - without a visual difference.

SLI is pointless when rendering, it only makes viewport display faster, and only if the application fully supports it. GPUs cannot share memory with each other, each GPU is like a dedicated mini-computer.

Regarding workstation cards: I have access to Quadro cards here in the company. My own experience is, that they actually render a bit slower than consumer cards. If that's a CUDA implementation thing or Blenders code being more optimized towards consumer card I am not aware.

The only recommendation for your system - besides optimizing the scene itself - would be to get an additional GPU (if your motherboard can fit it) and use that one dedicated for rendering, and your primary GPU for viewport display only. What you get is:

more available VRam on the GPU
rendering does barely slow down your machine, you can continue to work while a render is running in the background
much faster viewport rendering updates
technically, a second rendering machine, because you can fire off a CPU render at the same time while the GPU is rendering on a different Blender instance

All of this we tested here in our company.


You can use either Boolean modificator (in Object mode) or Intersect tool (in Edit mode).

Start with cylinder passing through cube.
Cube and cylinder have different amount of vertices, hence cube should be edited in order to have roughly the same shape as cylinder has. It is possible to skip this and create intersection as is, however this way will create Ngons which may be undesired.
One way to change cube accordingly is to bevel it. Select it and press Ctrl+B, 2 segments, low value of Offset.

Add 1 loopcut per both sides of the cube. Use Connect Vertex Path (J) tool to connect corner vertices.

Select all, in 3D Viewport header choose Mesh > Faces > Intersect tool and in its options (Last Operator panel in the Toolshelf or F6) select Self-Intersect.

Select all again, press W, choose Remove Doubles. Note that you may need to enter higher threshold for Merge Distance, like 0.02.


2.82+: How to use fluid.bakeData() in python code

This works to an extent for me on an AWS GPU instance:
for scene in bpy.data.scenes:
for object in scene.objects:
    for modifier in object.modifiers:
        print(object.name, " - modifier type: ", modifier.type)
        if modifier.type == 'FLUID':
            print(object.name, " - fuid_type: ", modifier.fluid_type)
            if modifier.fluid_type == 'DOMAIN':
                print("Bake All: ", object.name)
                bpy.ops.fluid.bake_all({'scene': scene, 'active_object': object})
                break

The problem I have is that I have three objects


half transparent material when import xps file

Did you check your alpha settings in the Material Settings? Depending on what kind of Alpha behaviour your Eevee Shader should have you need to change it.
To reset it to default it needs to be at "Opaque" then it will draw as a solid.


Extrapolation doesn't work in the Dope Sheet

As extrapolation works on a single channel basis, the procedure in dopesheet needs to have the object transform channels expanded and the Z euler channel selected. Then you can go to menu > Channel > extrapolation mode > Linear, or use shift E.


Why I am seeing patches of diffirent transparency in this model with GLSL

Answering here as well for completeness sake.

The issue with occlusion is fixed in blender, but the issue with sections having more or less transparency is not

The cause is that faces of transparent objects in blender are drawn randomly. Due to depth culling, if a front face is rendered first, then all faces behind it will get culled. So randomly, some parts of the mesh will get the face closer to the view rendered first and have the most transparency, while other parts will get more than one face rendered and be more opaque.

To solve this we would need to render faces sorted from back to front, but to keep viewport performance fast in blender, we skip this currently.


Duplicated object not showing when rendered

Could you post some screenshots of the screen about the problems?

However, it may be enough to move the project to a new project file and see if the problem recurs, alternatively you can also make a copy of the object and delete the previous one, first I would tell you to try these simple procedures.
Alternatively, do the objects have applied textures? Does the project have lights? Are they correctly positioned?
Is the camera positioned correctly, does the field of view cover both positioned objects?

Add screenshots of your work screen to make a certain problem more understandable.

In the new project have you tried to import only what you see in the render? to import I mean through the '' append '' section from the blender library.
So to import only what you are interested in a project.
  However, you should also check the maximum view of both the camera and the viewport, or rather being in perspective the image maybe the camera does not get to physically see the most distant object. look at my screenshot


Creating models (levels) for a Unity game. Do I create 1 model or several?

Creating smaller parts (i.e. separate rooms, halls, corners) is referred to as "Modular structuring".

Modularity is faster, easier to get great results from, and is easier to change up and reuse, but it comes at the cost of adaptability, so this really depends on your game. If you're doing a level where everything is uniform anyway, like a subway tunnel or the interior of a military base or vehicle, modularity can be your best friend. Other cases, like a ranch house or an art center (cause they usually involve weird architecture) can create serious problems for the modular output due to the fact that you would be creating so many different components you might as well just do the whole thing by hand. It's really a case by case study, but I generally use a mix, modular where it works, and conventional where it doesn't.

If you do chose to use some modular structuring, you should follow a few rules:

Always use standardized sizes (this will help with assembly, avoiding trying to find the happy-medium between a 2.5 foot door and a 3 foot door.)
make everything the same theme
Place the origin of the modular sections at one edge or corner. (so you can use snapping to position them.)

someone has a great set of tutorials on modular structuring, but I can't find it right now, so I'll post a link when I do.


How to properly use ExportHelper's 'axis_conversion' method?

Convert the axes of a scene using bpy_extras.io_utils.axis_conversion.

To convert such that both objects and their data, mesh in this case follow the new axis conversion, need to apply the conversion to both the object and its mesh data.

Image below shows Suzanne in blender default of Z up and -Y forward. With some translation, rotation and scale. Camera and Lamp are from default file.

Lets change the axis
As you pointed out in your answer the axis_conversion to Z forward Y up is a matter of rotating the axes -90 degrees about X.

>> [degrees(axis) for axis in axis_conversion("-Y", "Z", "Z", "Y").to_euler()]
[-90.00000250447816, -0.0, 0.0]

For example sake: Lets apply this axis conversion to all objects in the scene

import bpy
from bpy_extras.io_utils import axis_conversion
context = bpy.context
m = axis_conversion(from_forward='-Y',
        from_up='Z',
        to_forward='Z',
        to_up='Y').to_4x4()

scene = context.scene
for o in scene.objects:
    o.matrix_world = m * o.matrix_world

Image below shows the result.  Globally all objects are transformed to our new global scheme of Y up and Z forward.  Locally though, Suzanne is still Z up -Y forward.

To locally transform Suzanne to our new system rotate her vertex coordinates by the rotation, then rotate the object coordinates back accordingly. In this answer I prattled on about local and global coordinates. What we are doing here ultimately is applying the axis conversion rotation to Suzanne.

To apply rotation I've rotated the vertex coordinates by the axis transform rotation.  (In bmesh could use bmesh.ops.rotate(bm, geom=bm.verts[:], matrix = rot))

import bpy
from bpy_extras.io_utils import axis_conversion
context = bpy.context
m = axis_conversion(from_forward='-Y',
        from_up='Z',
        to_forward='Z',
        to_up='Y').to_4x4()

rot = m.to_quaternion().to_matrix()
irot = rot.to_4x4().inverted()

scene = context.scene
for o in scene.objects:
    o.matrix_world = m * o.matrix_world
    if o.type == 'MESH':
        # apply to mesh
        o.data.transform(rot)
        '''
        for v in o.data.vertices:
            v.co = rot * v.co
        '''
        # rotate globally inverse.
        o.matrix_world *= irot

Image below shows the result, now our axis conversion has been applied to both the objects globally, and mesh objects locally.


How to correctly merge two objects in blender

Need to set the active object.

The issue here is that operators work on the context.object to set an object to "active state" use both

in 2.7x

context.scene.objects.active = ob0
ob0.select = True

in 2.80

context.view_layer.objects.active = ob0
ob0.select_set(True)

Then when you run an operator it sees ob0 as context.

Just setting ob0.select = True is not #selecting obj0 so the bpy modifier is constructed for it

Without the above, because you added ob1 last, it was still context.object and hence you were trying to set its union object to itself.

An object can be active but not selected, selected but not active.

Again from  a previous answer https://blender.stackexchange.com/a/133292/15543 I showed how to add a modifier using api methods to get its reference IMO this is far simpler than using an operator.

Surely

bool = ob0.modifiers.new(name='booly', type='BOOLEAN')
bool.object = ob1
bool.operation = 'UNION'

is more readable (, and simpler) than

bpy.ops.object.select_all(action='DESELECT')
bpy.context.scene.objects.active = obj0
obj0.select = True
bpy.ops.object.modifier_add(type='BOOLEAN')
bpy.context.object.modifiers["Boolean"].object = obj1
bpy.context.object.modifiers["Boolean"].operation = 'UNION'

Soapbox TLDR:

Recommend getting out of the habit of always addressing via bpy.context.foo.bar.blah  For example in test code if the line context = bpy.context is added at the top, removes the need to use bpy.context.... every bloody time, if later we choose to copy paste our code into operators or panels then the context matches the argument context  in draw and execute methods etc.

Or after adding modifier with operator

bpy.ops.object.modifier_add(type='BOOLEAN')
mod = obj0.modifiers[-1] # it's the last added
mod.object = obj1
mod.operation = 'UNION'

Here I've referred to the newly created modifier as a variable  "mod",  over obj0.modifiers["Boolean"] and definitely rather than the long winded bpy.context.object.modifiers["Boolean"]


No, you don't miss anything. The tarball for Linux as well as the zipped version for Windows has no installation routine whatsoever. Extract the archive to whatever directory you like, create a link and you're set. If it runs fine, there are no drawbacks besides of manual updates.

I started using the tarball version years ago after running into downgrades during system updates quite frequently. I always extract it into /home/username/bin/ and also create my link in /home/username/bin/

Alternatively you can use /usr/local/bin/ which would be the correct directory for packages that aren't managed by the system's package manager.

If you want to use an installed version, search the repo of your Linux Distribution.


This is because the shadows are only projected from geometry within a limited area around the sun lamp. To visualize this area, enable Show Shadow Box in the lamp's settings:

This makes the cause much clearer:

The solution is to make the sun lamp follow your character (or camera) so that objects near the view are always within the "frustum".

The simplest way to do this is by vertex parenting the lamp to your model:

Select the lamp
Select the model
Switch to edit mode (↹ Tab)
Select a single vertex
Press ⎈ CtrlP and select Vertex Parent

Now the lamp will follow that vertex's location without rotating:

Projecting shadows is relatively memory and processing intensive, so the smaller this area is, the better. You can adjust the size with the clipping settings:

You'll likely want to optimize the frustum size for what is visible from whatever camera view you end up with, such that the shadow boundary isn't in the foreground and overtly apparent.


If you want it simple you could use a cylinder with an emission shader to it. With compositing you could apply a glare node.


How to add backdrop images for py nodes?

well, either way I took this as a challenge.

With any luck by including the code, it will anger someone into making a much more elegant solution. (if the from bgl import * bothers you importing as you need is probably tidier. But adding bgl. infront of everything gets on my nerves.

You'll notice it looks for the Sverchok custom tree, changing it to your own should be zero work.

# ##### BEGIN GPL LICENSE BLOCK #####
#
#  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 2
#  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, write to the Free Software Foundation,
#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####

import time
import bpy
import bgl
from bgl import *
from bpy.types import SpaceNodeEditor

from sverchok import node_tree
from sverchok.node_tree import SverchCustomTree
from sverchok.node_tree import SverchCustomTreeNode

callback_dict = {}
point_dict = {}

def node_id(oper):
    return str(hash(oper) ^ hash(time.monotonic()))

def tag_redraw_all_nodeviews():
    for window in bpy.context.window_manager.windows:
        areas = window.screen.areas
        for area in (a for a in areas if a.type == 'NODE_EDITOR'):
            for region in (r for r in area.regions if r.type == 'WINDOW'):
                region.tag_redraw()

def callback_enable(n_id, nt):
    global callback_dict
    if n_id in callback_dict:
        return

    data = {}
    data['tree_name'] = nt.name
    args = n_id, data

    handle_pixel = SpaceNodeEditor.draw_handler_add(draw_callback_px, args, 'WINDOW', 'PRE_VIEW')
    callback_dict[n_id] = handle_pixel
    tag_redraw_all_nodeviews()

def callback_disable(n_id):
    global callback_dict
    handle_pixel = callback_dict.get(n_id, None)
    if not handle_pixel:
        return
    SpaceNodeEditor.draw_handler_remove(handle_pixel, 'WINDOW')
    del callback_dict[n_id]
    tag_redraw_all_nodeviews()

def callback_disable_all():
    global callback_dict
    temp_list = list(callback_dict.keys())
    for n_id in temp_list:
        if n_id:
            callback_disable(n_id)

def draw_callback_px(n_id, data):
    space = bpy.context.space_data
    ng_view = space.edit_tree
    if not ng_view:
        return

    ng_name = space.edit_tree.name
    if not (data['tree_name'] == ng_name):
        return
    if not isinstance(ng_view, node_tree.SverchCustomTree):
        return

    face_color = (0.2, 0.2, 0.2)
    scn = bpy.context.scene
    s = scn.sv_scale_unit
    image_name = scn.sv_available_image

    img = bpy.data.images.get(image_name)
    if img:
        img.gl_load(0, bgl.GL_NEAREST, bgl.GL_NEAREST)
        texture = img.bindcode
        w, h = img.size
        w2 = w / 2
        h2 = h / 2
        _w2 = w2 * s
        _h2 = h2 * s
    else:
        return

    glEnable(GL_BLEND)
    glBindTexture(GL_TEXTURE_2D, texture)
    glEnable(GL_TEXTURE_2D)
    glBegin(GL_QUADS)
    glTexCoord2f(0.0, 0.0); glVertex3f(-1.0 * _w2, -1.0 * _h2, 0.0)  # Bottom Left Of The Texture and Quad
    glTexCoord2f(1.0, 0.0); glVertex3f(+1.0 * _w2, -1.0 * _h2, 0.0)  # Bottom Right Of The Texture and Quad
    glTexCoord2f(1.0, 1.0); glVertex3f(+1.0 * _w2, +1.0 * _h2, 0.0)  # Top Right Of The Texture and Quad
    glTexCoord2f(0.0, 1.0); glVertex3f(-1.0 * _w2, +1.0 * _h2, 0.0)  # Top Left Of The Texture and
    glEnd()
    glDisable(GL_TEXTURE_2D)

    # restore opengl defaults
    glLineWidth(1)
    glDisable(GL_BLEND)
    glColor4f(0.0, 0.0, 0.0, 1.0)

def get_items(self, context):
    images = bpy.data.images
    inames = [i.name for i in images]
    return [(i, i, 'image %s' % i) for i in inames]

class svImageShowOperator(bpy.types.Operator):
    bl_idname = "scene.operator_sv_show_image_bg"
    bl_label = "Image Show"
    bl_description = "Toggle the visibility of the background image"

    # _handle = None

    @classmethod
    def poll(cls, context):
        scn = context.scene
        if scn.sv_show_image and scn.sv_available_image:
            return True

    def modal(self, context, event):
        nt = context.space_data.node_tree
        if scn.sv_show_image and scn.sv_available_image:
            n_id = node_id(nt)
            callback_enable(n_id, nt)
        else:
            callback_disable_all()
            return {"CANCELLED"}

        return {"PASS_THROUGH"}

    def invoke(self, context, event):
        scn = context.scene
        nt = context.space_data.node_tree

        if scn.sv_show_image and scn.sv_available_image:
            n_id = node_id(nt)
            callback_enable(n_id, nt)
            return {'RUNNING_MODAL'}
        else:
            self.report({"WARNING"}, "View3D not found, can't run operator")
            return {"CANCELLED"}

class SverchokImageBG(bpy.types.Panel):
    bl_idname = "Sverchok_img_bf"
    bl_label = "SV BGIMAGE"
    bl_space_type = 'NODE_EDITOR'
    bl_region_type = 'UI'
    bl_category = 'Sverchok'
    bl_options = {'DEFAULT_CLOSED'}
    use_pin = True

    @classmethod
    def poll(cls, context):
        try:
            return context.space_data.node_tree.bl_idname == 'SverchCustomTreeType'
        except:
            return False

    def draw(self, context):
        scn = context.scene
        layout = self.layout
        ntree = context.space_data.node_tree
        c = layout.column()
        c.operator(svImageShowOperator.bl_idname, text="Show Image")
        c.prop(scn, 'sv_show_image')
        c.prop(scn, 'sv_available_image', text='pick image')
        c.prop(scn, 'sv_scale_unit')

def register():
    bpy.types.Scene.sv_show_image = bpy.props.BoolProperty()
    bpy.types.Scene.sv_available_image = bpy.props.EnumProperty(
        name="Images", items=get_items,
        description="Image paths")
    bpy.types.Scene.sv_scale_unit = bpy.props.FloatProperty(default=1.2)

    bpy.types.Scene.sv_custom_backdrop = bpy.props.StringProperty(default='')
    bpy.utils.register_class(svImageShowOperator)
    bpy.utils.register_class(SverchokImageBG)

def unregister():
    bpy.utils.unregister_class(SverchokImageBG)
    bpy.utils.unregister_class(svImageShowOperator)
    callback_disable_all()

    scn = bpy.types.Scene
    del scn.sv_custom_backdrop
    del scn.sv_show_image
    del scn.sv_available_image
    del scn.sv_scale_unit

if __name__ == '__main__':
    register()

Edit

hmmm, as soon as nodes are added the texture gets broken.

PRE_VIEW works nicely, but the texture at (x,y,0) is behind the grid.
in 'POST_VIEW' adding this seems to stabilize the image

glEnable(GL_BLEND)
glBindTexture(GL_TEXTURE_2D, texture)
glEnable(GL_TEXTURE_2D)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glColor4f(1.0,1.0,1.0,1.0)
glBegin(GL_QUADS)


How to show the edge color from imported '.ply' file?

I know this isn't a complete solution, but I hope it will help you plan your next steps.
First read this: File format with per face colors
Blender isn't importing any colors from your .ply, so either it's a shortcoming in Blender, or the file isn't properly formated.
Once you managed to get the colors, use the material setup below. Where mine says "Col" your setup will be empty at the beginning, if you click on the empty field, there should be only one option, if there are none, the color import failed.
For triangulated view, you can use this setup:

Important: This only works with triangles!
If you want to show polygons > 3 vertices, use the Wireframe Modifier and delete the Wireframe and the Multiply node from the setup. The Wireframe Modifier can be used on top of your old geometry, to show both.


Just use a cube and scale it up to the size of the cup on the Y and X axis. Make sure the cube intersects the cup from above just till you can't see the bevels anymore. Select the cup, add a boolean modifier, set it to "difference" and for "object", use the cube that you have made. Apply the modifier, delete the cube and your bevels are gone! You will maybe have some lag while using smooth shading...


Rigify is able to do the job. Rigify is a modular rig system to create bones and controls with automatic or manual FK/IK. Keep in mind the settings for Rigify differ weather you're on edit mode (for the Armature), the pose mode (for bone constraints) and animation (drivers). There is a complete guide showing you step by step how to learn Rigify. The only guide I seriously recommend: https://gumroad.com/a/189101171
On Lesson 17 there is a full rig exercise with a dragon head, that way you can also learn how to rig blinking eyes for reptiles.
If you need further -specific setup answers- please post them here.


Sverchok The grease pencil is moving but not the polyline visual

https://gist.github.com/nortikin/c8716923f5d87773b25d417f1610d6dc
this is applying of matrix (4-th node from the left side)
It is simple one node


what's up fellow beginner! Did you set the rotation and scale before unwrapping? In Object mode, select the Object and press Ctrl+A. Select Apply > Rotation & Scale. This is a helpful tip if you find your uv maps come out with weird aspect ratios.


Is it possible to rotate hair (object) in timeline?

I'm not sure how well this technique can be adapted to your situation--it looks like your bugs are largish objects, and I think getting the rotation correct (so the bugs are correctly oriented to the surface) might be hard with any particle system solution.

But if it's useful to you, I can explain how to get an effect like this one:

The bugs are small symmetrical objects (icospheres) that move using brownian motion and are confined to essentially the surface of the sphere by invisible collision objects (also spheres) just below and above the desired "shell" of motion.


When I enter sculpt mode half of my model goes missing?

Multires modifier is the only one which can't be repositioned in stack of modifiers, as per manual:

  The Multiresolution Modifier is the only modifier that cannot be repositioned in the stack if it means that there will be geometry or other object data created or removed before it

This means that while it can be only in the top of stack relatively to other modifiers generating geometry Sculpt mode will take into account only data generated by Multires, all others (especially generator modifiers, like Mirror) will be skipped.

So in order to have all mesh faces available for sculpting while in Sculpt mode with Multiresolution apply Mirror modifier and edit mesh  with X-Mirror option (in Edit mode) or Toolshelf > Tools > Symmetry/Lock
(in Sculpt mode) instead.


Alright, I've worked out a solution by accident. It is a pretty unusual situation because actually, I have no idea why that solution was valid.

Solution: Switch from high contrast theme to a normal one in Windows.

For some reason, the Blender interface was unresponsive while Windows is in high contrast mode. When changed to a normal theme, everything is working just fine.


Camera can't see object, it only renders the background

The clip distance for the camera is set at a very short range.

Your object is beyond the end clip distance and will not be seen by the camera unless you increase it.


How can I setup blender for texture painting?

Texture Painting

If you paint a diffuse map, lights don't really matter that much. You don't render anything, so nothing but the color of your choice influences the texture.

Any light setup might only influence, how you perceive the colors.

Lights (for baking):

Delete all lights, you won't need them. Go to the World Properties Tab and change the Background Color to white.

Material Setup (for painting):

Go to the Shader Editor, create a new material and delete the Principled BSDF. Create a new Image Texture and connect it to an Emission Node (with Node Wrangler installed, Ctrl+Shift+LMB) to the Material Output.

Render Engine:

If you only want to paint textures and you don't intend to bake additional maps (normal, AO, etc.) the Render Engine doesn't really matter. If you do want to bake additional maps, Cycles is the only option, since baking is not possible in Eevee (yet).

Since you paint in Material Preview, you might want to change the HDRi Image in the Studio Lights setup to a more neutral one* and set the Background Visibility to zero.

hdrihaven.com has some nice outdoor HDRis with overcast sky that deliver a nice flat shading. They still influence your color perception, though...


How can I move/reorder a vertex group more than one spot at a time?

Quick vg move addon.

Debug run showing setter output to console. Move "Group" from top to bottom to top.  Add new group "Group.040" and move to top

Here is a script solution to set the destination index of the active vg.  To run copy, paste into text editor, run script and the slider will appear below the vg listbox.

Can install as addon.

bl_info = {
    "name": "Ouick Move Vertex Group",
    "author": "batFINGER",
    "version": (1, 0),
    "blender": (2, 80, 0),
    "location": "Properties > Mesh > Vertex Groups",
    "description": "Quickly move vertex groups",
    "warning": "",
    "wiki_url": "",
    "category": "Object",
}

import bpy
from bpy.props import IntProperty

def vgmove(delta):
    direction = 'UP' if delta > 0 else 'DOWN'
    for i in range(abs(delta)):
        bpy.ops.object.vertex_group_move(direction=direction)

def get_move_to(self):
    return self.vertex_groups.active_index

def set_move_to(self, value):
    delta = (self.vertex_groups.active_index -
            min(value, len(self.vertex_groups) - 1))
    vgmove(delta)

bpy.types.Object.move_to_vg = IntProperty(
    name="Move to",
    get=get_move_to,
    set=set_move_to,
    min=0,
)

def draw_vg_move(self, context):
    layout = self.layout
    ob = context.object
    if ob and len(ob.vertex_groups):
        row = layout.row()
        row.prop(ob, "move_to_vg")

def register():
    bpy.types.DATA_PT_vertex_groups.append(draw_vg_move)

def unregister():
    bpy.types.DATA_PT_vertex_groups.remove(draw_vg_move)

if __name__ == "__main__":
    register()