What are the pros and cons with using the Blender installed Python or the system Python?

Opining on the pros of both.
Possibly walking a fine line re being closed as an opinion based question, more suitable for a forum
As I see it, the big "PRO" for the bundled python lies with the distributors and non python minded users of Blender. A Blender version is built against a certain version of python, and will only run when the x.y of the python x.y.z version (built against vs run against) match. Blender could distribute blender without a bundled python, and inform which version to install. Rather than doing this they have included a bare bones install of the required version.
As intimated in question, the big "PRO" of using  a system based python is it is often a lot easier to install 3rd party modules using the OS's package manager, and to get help if and when there are issues.
Recall numpy being an example of this. Once upon a time the python bundled with blender came without numpy.  As scripts and addons began to appear using numpy, so did questions of "cant install numpy to use with blender",  "blender can't see my numpy"... Now numpy comes pre installed as a site package of the bundled python.  The end user can now use the script / addon and be blissfully unaware of pip n PYTHON_PATH's and all that other "fun" stuff.  Perhaps PIL may get in.


Is it possible Animate the Compositor node parameters?

Of course. As (almost) everywhere in blender:

Insert a keyframe by placing the cursor over a property and press I
Move to a different frame in the timeline
Set the property to the desired value
Press I again for a second keyframe on this property

Alternatively, you can just right click on (almost) any property and choose Insert Keyframe:

Dopesheet & Graph Editor:

Alt+I removes a single keyframe, Alt+Shift+I removes all keyframes of a property.


Ball doesn't roll straight in Blender Game

As you have  noted the mesh is the issue , switch to wireframe view and launch the BGE to see how it get triangulated ( combined with some rounding errors ) it will cause the deviation of the ball.

To avoid that you have to add either a Subsurf modifier ( in simple mode ) or a Remesh modifier ( in sharp mode ) and apply it before adding the Boolean modifier this will limit the bad triangulation inside a small area ( all the mesh are triangulated when passed to the BGE)

#(1) Create a board using existing cube:
....
### add and apply subsurf
modifier           = board.modifiers.new('subsurf', 'SUBSURF')
modifier.levels    = 2
modifier.subdivision_type = 'SIMPLE'
bpy.ops.object.select_all(action='DESELECT')
bpy.context.scene.objects.active = board
bpy.ops.object.modifier_apply(apply_as='DATA', modifier="subsurf")

### cut a hole using boolean difference:
....


Select the face and snap the cursor to it (Shift+S-->Cursor to Selected). Then delete the face (press X).

Press Shift+Num 7 to align the view to selected face. In Edit Mode add a plane and align it to view (check the Align to View box in Tool Shelf).

Scale the plane to achieve a desired size of the hole and connect the vertices of your helmet mesh to it. Next delete the newly created face.

Now you've got a regular hole.


In the obj exporter there is the option

  Objects as OBJ groups

If this is checked it will maintain separate objects in the scene as well as their transforms in world space.


How to turn off viewport to orthographic snapping during rotation on alt + middle mouse drag?

This is how I managed to solve it. Turn off View Axis.


My model was animation ready then the hair stopped following the model

I found out her to fix it but I also want to explain the difference so this makes more sense:

Because I had edited the model(shoes, skirt, clothes) it made the model stop following the armature, so when I used Automatic Weights on it, the hair didn't follow the model's head like when I first tried rigging it.

To fix this and get the model's hair to follow it's head, rig it how you normally would(in this case, automatic weights) then select the armature and go into pose mode. Once you do this, select the headbone and then select your model again.

Go into weight paint mode and paint the hair so it's all red, then go back to the armature's pose mode and rotate the head to check if you selected it all.

This is how I got the hair to follow the model's head and because my model has several textured planes, this helped me avoid the nightmare of having to delete them all(and I have everything as one object) to remodel the hair, so I hope this helps you if you're stuck on this issue :)


You need to create a proxy mesh which you will not be rendering, that encompasses the body of the boat, then add a boolean modifier set to difference to the ocean and set to use the proxy mesh.
Example :

I duplicate the bowl object, increase the mesh's size so there is overlap in the bottom of the bowl.

Then select the ocean object, add a boolean modifier. Don't forget to set the solver to Fast, the Exact solver is pretty buggy.

Don't forget to parent the proxy mesh to the boat object so that it moves with it, and uncheck all the render properties for the proxy so it doesn't show up in rendered view.


need help with deforming a mesh over another mesh

If I understand correctly you want the shrinkwrap modifier. It will wrap the sphere with the plane. Place the modifier on the plane and select the sphere as the target. If it does not work make sure the plane has the necessary geometry to deform.


Blender VSE - How can I just render the audio to do some editing to it?

Depending on how the video is encoded, you might be able to import video as a sound strip into the VSE.

Goto  Add -> Sound  and when the file selection screen opens, you will have to turn off file filtering.  (So you can select something more than 'sound' files.)

Then you can select a video file, and it will only import the sound.


Ok, I ignored the "no Python" requirement because the absolute simplest way of doing this requires very few lines of code.  Doing it brick-only would be loads of work and very dirty.

Attach this to your animated mesh and run it every frame.  It will update the physics to match the mesh.

import bge

def update(cont):
    own = cont.owner
    own.reinstancePhysicsMesh()

if __name__ == '__main__':
    update(bge.logic.getCurrentController())

Example blend

Of course, being parented to the armature means it wont be affected by gravity.  So you'll need the armature parented to another object for controlling movement.  Make use of Collision Group / Collision Mask to prevent unwanted interference.

EDIT - Example with collision masks


How do we access Vert, Norm and UV data then print to a text file using Blender/Python?


How can I stop the 'bloom' effect shifting direction in eevee?

Thank you for the help, none of the solutions fixed what I needed unfortunately.
However I did manage to fix the problem, and for anyone who is facing a similar issue, here's how I did it.
I figured out that the way bloom was being calculated was in relation to the emitters angle to the camera. With my shake being set on the x axis, small rotations were being amplified by the bloom effect because the angle in relation to the camera was changing and as a result, so was the direction it was 'blooming' the light.
To fix it, I made one very simple change, instead of a shake in the rotation, I applied the effect to the translation in the z axis. The motion feels pretty much exactly the same, but instead of it changing the angle the camera points at, it moves the whole camera up and down a bit. It's worth pointing out there will still be some shift in the bloom effect as the translation still adjusts the angle a bit, but its a lot less noticeable now.
Mission accomplished!


UV's Changing from square to rectangular texture

The texture is mapped to the UV coordinates so that the lower left corner is on 0,0 and the upper right is at 1,1.

So if you extend your image you will need to scale the UV coordinates to match the new mapping coordinates. The scaling origin depends on how you have extended the texture. Place the cursor in the uv editor based of that and use the cursor as pivot for the scaling.

You can calculate the scaling by dividing the old texture size with the new.


Algorithm for turning Voxels into Triangle Mesh

If you want a general algorithm for creating a surface over voxel data, the most common, and normal starting point, is the marching cubes algorithm.

There is an addon that implements this for particles called Cubesurfer, so you could probably write a script to place particles based on your numpy data and then run this. Or you could look at the source (note, it useds Cython for performance reasons)


Applying the weight to the mesh, but it shrinks when I rotate up

Looks like the hair vertices (which i suppose correctly weighted to the two rotated hair bones) are weighted also to some body bones.
To remove thoose unwanted weights enter edit mode, select all hair vertices, select all the body vertex groups (one by one) and click "remove" after every selection.

If this doesn't solver the problem, please upload your file.


Change a single Empty

Select the desired Empty
Go the Properties Panel
Click on the Data tab
Change the Display property

Change multiple Empties

Select the desired Empties
Change the Display property (this will only effect the active Empty)
Right-click RMB on the Display property and choose: Copy To Selected

You can also adjust the size of the Empties in exactly the same way

Note: You can also have other 'object types' than Empties in your selection while changing the Display Type. Copy To Selected will only effect objects of the same 'object type'.


Hair partially disappearing in render after combing

You have $300000$ individual hairs right now. I suspect that your issue stems from that very high number of edited particles. To fix this, use Particle Children. Set your Emission number to something lower, like $3000$ or $1000$. Then, enable Interpolated children:

You can set the Render parameter so that the total number of children is equal to $300000$, (i.e. $3000\cdot 100=300000$).

You can now use Particle Edit to comb your particles. They should take up less memory now, and hopefully render correctly.


Baking Shadows onto textures in Cycles Renderer

FIXED!

I had a glass object that I hidden in the scene. I had to move it away from between the lamp and the target mesh.


unity blender with armature set in blender

2 things to try:

A) Unity and most game engines are sensitive to having a root position to base all other transformations off of.  Unless you tell it otherwise, that root transform will be the bone at the top of the armature hierarchy.  Make sure you have a root bone that all other bones are parented to, and make sure you do not apply animations to that bone.  Without knowing more, I suspect you only have one bone, are animating it, and Unity is not handling that very well.

(EDIT) With the file provided, it turns out A is mostly true, but there is one more aspect you need to address.  If you check the console of Unity, when it imports, it actually gives a descriptive error:
This means that all the verticies, which have not weight associated for them to a bone, will default to the first bone (the lid).  So moving the lid will move the rest of the box too...because they were arbitrarily assigned to the lid.  Just weight paint the rest of the box onto your root bone, and it works just fine.

B) It sometimes helps conceptually to have a one or two frame "idle" animation for things, especially if you are using the Mecanim editor in Unity.  Then you have better control as to when the animation plays and how.


Why is the "render engine" selection menu missing?

Short version:

check first a build from builder.blender.org
then

verify source modifications
verify build settings

fix your modifications or build settings.

When you see weird behavior in own builds for which you also have changed source always check a build from builder.blender.org . If the unexpected behavior doesn't show up with such a nightly test-build, then you should review your modifications and build settings as they are apparently the cause for the behavior.

For building settings and troubleshooting of builds, refer to the build instructions for your own platform and build system. There are trouble shoot sections for each way.

If on the other hand the unexpected behavior is replicable with such a build, then you likely have found a bug, at which point you should be reporting that to projects.blender.org


Blender 2.77a

How to texture paint your mesh in Cycles Render

If you have a simple mesh you may want to skip this step, otherwise I suggest you to go to EDIT mode and select the part or connected parts which you want to paint separately. Press P, a menu will appear asking you which option to choose (Selection, By Material, By loose parts); select Selection. Now to select either the original mesh or the newly created object you have to go to OBJECT mode and then return to EDIT. From now on, each part of your mesh will be dealt with separately.
If your object is complicated, I suggest you to MARK THE SEAM otherwise leave it.
Split the screen in two parts and on the bottom left of one of the panels, click on the little cube, select UV/Image Editor.
In the other panel (3d view), select the object you want to paint first then switch to EDIT MODE. Remember that for each panel to be active, your mouse must be hovering it. Press U to unwrap. For a very simple object, Smart Unwrap (no marked seam necessary) is very convenient otherwise just choose Unwrap.
Return to the UV/Image Editor panel and at the bottom you will see the icon of an image with NEW next to it. Select NEW and choose a name for the object you are about to paint. Make sure to type a name you can easily associate with the object. Once done, you will see that your object has turned black just like the background color of your UV map. This is because the two are connected so don’t panic! You may also need to zoom out to adjust your view.
Now, on the right side of the 3d view, select Material then New and give it a name by double clicking on Material.001. At the far end of the Color section, there is a dark gray area. Click on it and select Image Texture, right under it a new menu will appear. If your click on the image icon, your newly created UV map should be there, otherwise choose open and select it manually.
Remember to save your work. We are now ready to paint, hover your mouse over the 3d panel and select TEXTURE PAINT. In the 3d view panel, your object is still black at this stage, press T to bring up the Paint tool bar. Select the color you want and start painting your object. You can adjust the radius and the strength of your brush from under the color palette viewed as a colored circle.
As soon as you start painting, you will notice that your UV map gets updated in real time. It is fundamental now to save your UV map as Image. This is the image that you will keep forever even for future references so place it somewhere easy to find and to connect with the original image. Later on, if you want to export your object, you will have to export its related images too.  The colored UV map will be saved as a PNG file.
Select Save as Image from the UV Editor and save your image as a png file. Every time you make changes to this object, an asterisk will appear on the menu next to Image to inform you that you need to save your work.
Back to painting your object, you will notice that the brush may not be as accurate for some little corners. In this case I suggest you to paint directly on the UV map. On the bottom menu of the UV editor, click View and select Paint. Now you can paint directly on the UV map and at the same time, you can see the result in the 3d view. It’s often good to switch between the two.

Once you are done, repeat the process for the other items connected to the object which we separated earlier.
When you are finished painting and you are satisfied with your work, you can join the parts together again so that you can move them around. Select the small objects first and the main mesh last by right clicking on it while holding SHIFT down. When all the objects are active, press CTRL + J to join them. However, if something goes wrong you can again split the parts with the Separate option as explained earlier.
Texture painted objects are often very dark when rendered. In this case, once you have arranged the lighting appropriately, there is another tweak that you can use to balance the light.
Go to the right hand bar in 3d view and select the world; it’s the icon with Planet Earth. Select Ambient Occlusion and adjust the factor. You can see the changes in real time if you select the Viewport Shading to Rendered.

If you want to see more pictures of this tutorial:
https://everythingisamiracleblog.wordpress.com/

There is other stuff as well so browse down if you can't see it immediately

Have fun!


How to import a DXF to blender 2.8 correctly?

here is my work around:

CAD to .dxf - > .dxf to inksacpe - > inksacpe to .svg > .svg to blender

make sure the scale is correct when import/export


The correct way to connect a procedural or B&W texture using a Displacement node is like this (no need for the Normal Map node - that is reserved for data from a "proper" normal map such as the purplish looking bitmap images I've sure you've seen):

However, if you are using EEVEE, or are only looking to generate the look of displacement (without needing a heavily subdivided mesh), you will probably find it works just as well to connect the texture through a Bump Node, and using it's output as Normal data:

To answer your second question - there is really no difference between a mesh and a model (two ways of describing the same thing), however some people might use the word model to imply a fully finished product (not just a mesh, but a textured mesh, or a mesh rigged for animation, etc...)


Is it possible to model this padding with "inverted snake scale"-like pattern?

Here different alternative with is a more parametric approach using modifiers.

Use a technique similar to Moonboots answer to start your shape.
Add a plane, subdivide-smooth a few times, poke faces, remove all orthogonal edges so you end up with the lozenges pattern.

Select all diagonal edges and with Ctrl + E Edges menu mark them as Sharp.

Now poke you faces again, and select all face-center vertex. You can do this easily by selecting all Sharp edges from the above step with Shift + G > Sharpness, then switch to Vertex mode and invert the selection.

Create a new vertex group and assign to it all the face center vertex selected previously, leaving all other out.

You can now add a new Displace modifier to your mesh and limit it to the above created vertex group. This will parametrically control the scales concavity with the displace amount.

Add an Edge Split modifier and tick only the option Sharp Edges to separate each individual scale. Follow it with a Smooth modifier to non destructively control the gap between scales.

Add a Solidify modifier to add thickness, then follow it by a Subdivide modifier set to Simple. This will add some gometry to "hold the square shape" of the scales.

After that you can add another Subdivide modifier set to Catmull-Clark to add roundness.


How to get rid of black edges from XYZ function mesh?

By default the meshes generated by this operator have Wireframe Display enabled in the viewport.
If you have already generated the mesh :
Go the object properties > Viewport Display > Uncheck Wireframe

If you just created the mesh using the operator, look into the lower left, you can expand a panel or use the shortcut F9, then look into the lower part of the panel. Uncheck "Show Wireframe".

Note 1 : This setting will be remembered in the current Blender session.
Note 2 : If you want to change the behaviour for all sessions, go to your blender install folder and then 2.** / scripts / addons / add_mesh_extra_objects and open add_mesh_3d_function_surface.py (use notepad)
Search for "AddXYZFunctionSurface" class in the file, go down to the lines
show_wire : BoolProperty(
        name="Show wireframe",
        default=True,
        description="Add the object’s wireframe over solid drawing"
        )

500 to 504 in my file, and replace
    default=True,

with
    default=False,

Save the file, close it, open blender, the setting will be set to False by default.


How to use ImageTexture with Blender 2.8

Reflected is worked with Specular or Roughness or Clearcoat attributes in principle BSDF. The image texture you assigned is for based color only.

You can use another image texture to tell that hair should be Reflected by changing those attributes.


While most people would recommend a pure shader solution, I'll answer for the case where you want a separate object.
Assuming that your road is a mostly flat plane using a shader to provide fine details, the issue here is that by default Blender converts shader displacement output to a bump map. Bump maps are effectively an trick of the light and will therefore show themselves as flat when viewed at extreme angles or compared with real geometry. To switch to real displacement, go to your object's 'Material Properties'->'Settings'->'Surface' and select 'Displacement Only' or 'Displacement and Bump' in the combo-box.
Now, since this is real displacement, you'll need the corresponding geometry to go with it. One way is to subdivide the geometry either manually or with a modifier until you get to the level of precision you desire. While this works, it requires judgement as to the appropriate level of subdivision.
If you are willing to use the experimental feature set, you can use micropolygon displacement to adaptively subdivide the geometry. To do this, you can go to 'Render Properties' and set 'Feature Set' to 'Experimental', then add a 'Subdivision Surface' modifier with 'Adaptive Subdivision' checked.
Caveat: the displacement does not influence physics simulations. For that, you will want to use the 'Displace' modifier which only accepts textures.


How to animate a mesh that changes through editing?

You can use shape keys:

Go into the mesh properties

Add a new shape key

add another shape key
Edit your mesh
Animate the influence of the new shape key by hovering over the property and hitting I


Why does Blender say “Python script failed, check the message in the system console” when trying to import a Blender Python file from SynthEyes?

It's for version 2.49b or before.
If the script is trying to import Blender assume it is written for Blender version 2.49 and before.
Script will need to be upgraded (or search for upgraded version)  using  bpy for later version.


The problem is the ID mask node. You blur your image and then crop it to the bounds of your object. so every pixel outside those boundaries get deleted.

I'd suggest adding the depth of field pre comp by adding the values for focus and aperture to your camera (you can often see the f-stop of the background image in the meta data, otherwise, just try and error).

Make sure, that your background is transparent by checking "transparent" in the film section of the render settings.

Then just add your object via an alpha over node to the background. Done.

If you do want to add DoF in the compositor, just skip the step with the camera settings, use the defocus node and the alpha over. Done (even quicker).


In 2.8, it is now called In Front. It can be found at Properties > Object Data tab > Viewport Display section > In Front.


Blender doesn't offer a way to show the zoom level but we can use python to display it if we want.

The simplest way is to add a panel -

import bpy
import math

class Image_PT_zoom(bpy.types.Panel):
    bl_idname = "Image_PT_zoom"
    bl_label = "Image Zoom"
    bl_space_type = 'IMAGE_EDITOR'
    bl_region_type = 'UI'

    def draw(self, context):
        zoom = context.space_data.zoom[0]*100
        zoom_h = context.space_data.zoom[1]*100
        if math.isclose(zoom,zoom_h,rel_tol=0.001):
            self.layout.label(text="{:.1f}%".format(zoom))
        else:
            self.layout.label(text="Width:  {:.1f}%".format(zoom))
            self.layout.label(text="Height: {:.1f}%".format(zoom_h))

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

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

register()

You can find this as an addon here.


How do I transfer UVs between high and low poly meshes?

You can select the two objects, and link their UV maps.

Select the "target" object
Select the "source" object (this needs to be the active object)
Ctrl+L> "Transfer UV maps"


First apply transformations to your objects (Ctrl+A-->Loc, Rot&Scale). Select your heart mesh, then the plane in Object Mode, then enter the Edit Mode of the plane, press Spacebar and type Knife Project. Extrude the plane a bit and give it a Remesh Modifier being in Object Mode. Apply the modifier, then delete extruded vertices. Finally join meshes with Ctrl+J. Correct some vertices position (merge them with Alt+M).


Camera Specs: How change a 16/9 camera render to other ratio?

Go to the Properties Panel and open the Render Tab.

Locate the Dimensions Panel. You can set the aspect ratio by setting the X and Y resultion of the image.

(source: blender.org)

For a 16:10 aspect ratio, you could choose the following dimensions: 1920 x 1200.


You are setting the rotation.

The code in question you are setting the Euler rotation.  The resulting value will always be (x, y, z)

Instead recommend make a transform (rotation) matrix. Python console example. x, y, and z are 30, 45 and 60 degrees respectively.

>>> x, y, z = (radians(30), radians(45), radians(60))
>>> Euler((x, y, z))
Euler((0.5235987901687622, 0.7853981852531433, 1.0471975803375244), 'XYZ')

The context object, has Euler rotation set to zero.

>>> ob = C.object
>>> ob.rotation_euler
Euler((0.0, -0.0, 0.0), 'XYZ')

Create a transform matrix from our Euler. Make it 4x4 so we can multiply it by the 4x4 object matrix.  Notice after the first multiplication we get the result as above.

>>> R = Euler((x, y, z)).to_matrix().to_4x4()
>>> ob.matrix_world = R @ ob.matrix_world
>>> ob.rotation_euler
Euler((0.5235987901687622, 0.7853982448577881, 1.0471975803375244), 'XYZ')

and again

>>> ob.matrix_world = R @ ob.matrix_world
>>> ob.rotation_euler
Euler((1.6257474422454834, 0.4853370189666748, 2.580118417739868), 'XYZ')

Please note this is global rotation.  For local use ob.matrix_local instead.

Note: As pointed out by @lemon for Eulers could also use

ob.rotation_euler.rotate(Euler((x, y, z)))

to transform  the local euler rotation from another.

For a lot of cases, the axis and angle is defined.  Eg make a 4x4 rotation matrix of 30 degrees around the axis (1, 1, 1)

R = Matrix.Rotation(radians(30), 4, (1, 1, 1))

Our R from above as an axis / angle rotation

>>> R.to_quaternion().to_axis_angle()
(Vector((0.03912381827831268, 0.7727739214897156, 0.6334742903709412)), 1.2104885578155518)

is the equivalent of rotating 69.356 degrees around axis (0.03912381827831268, 0.7727739214897156, 0.6334742903709412)


xnormal weird normal map bake, substance and handplane baked flawlessly

I found that .OBJ have less problems than .FBX when it came to XNormal bakes, so I opted out for OBJ to FBX convertion on final output.


Trying to do 2D to 3D from a 3/4 view image

Might help to create a basic shape of the creature from spheres first, you can even connect them via booleans (BoolTools addon auto join is great) after and then sculpt from the rough shape


How to change the color of hair in blender internal?

There are no material nodes needed. (Before cycles the material node were hardly ever used.)

The following steps assume you already have two materials on your object, one for the emitter and one for the particles.

With the material used for the hair active, go to the texture tab.

Add a texture and set the type to "Blend"
Set the mapping to "Strand"
Check the "Ramp" checkbox in the Colors section.
Add colors to your heart's content.

That's really all there is to it. The Strand mapping is the key.

A little bonus if you miss the thickness settings from cycles hair, then you will like the Strand section of the materials tab.
Here you can set the thickness of the root and tip, and the shape (all very similar to cycles counterpart). The one feature BI's hair has over cycles is you can specify the size in blender units instead of just pixels.


Smooth Shading.

A look at the docs bge.types.KX_MeshProxy reveals that

  Vertices will be split by face if necessary. Vertices can only be
  shared between faces if:

  They are at the same position
  UV coordinates are the same
  Their normals are the same (both polygons are “Set Smooth”)
  They are the same color, for example: a cube has 24 vertices: 6 faces with 4 vertices per face

Smooth shading will stop the face separating from the mesh. Un-comment the lines marked with #SS in script below to test.

Pseudo linear falloff on a sphere.

Test script, on sensor event selects a random face, calculates the face center, finds all verts within a distance of that face center (arbitrary hardcoded 0.4) and moves them away using the face center vector.  (Using a sphere to test where the origin is centroid, so any local point on surface is also a radial vector (normal))

A vert at the center of the face can be moved the maximum (1.1) units away falling off linearly to zero for verts on or outside 0.4 from calculated center of face.

from mathutils import Vector
from random import randint

def deform(cont):
    ob = cont.owner

    if not cont.sensors["Mouse"].positive:
        return None

    mesh = ob.meshes[0]
    poly = mesh.getPolygon(randint(0, mesh.numPolygons - 1))
    material_index = poly.getMaterialIndex()
    # find center of poly
    cent = Vector()
    n = poly.getNumVertex()
    for i in range(n):
        v = mesh.getVertex(material_index, getattr(poly, "v%d" % (i + 1)))
        cent += v.XYZ
        v.color = [1.0, 1.0, 0.0, 1.0] # juicy yellow head.
        #v.XYZ *= 1.1 #SS
    cent /= n
    #return # SS
    # get all the verts within 0.4 radius of cent
    for v_index in range(mesh.getVertexArrayLength(material_index)):
         v = mesh.getVertex(material_index, v_index)
         d = (v.XYZ - cent)
         if d.length <= 0.4:
             v.XYZ += 1.1 / 0.4 * (0.4 - d.length) * cent.normalized()


Using an RGB map to assign various shaders in a material

Final:

Example with Glossy, Glass and Emission shader.

Overview and Node setup:

You can do this by Separate RGB node which, well, is separating RGB channels. Then use them as masks for your materials.

  Important thing is that it would work even better if colors of the
  image would be pure RGB values. For example now red channel is R: 0.85
  G: 0.43 B: 0.43 and should be R: 1 G: 0 B: 0.

As a workaround for those color issue, you can add Math nodes and set them
to make channel only black and white (white should be selected channel). Example for green channel:

Edit:

1. Different materials.

You can change Diffuse shaders from original answer to any shader you want. They can have Image Textures, procedural textures, Bump Maps, anything you would normally do with texturing objects.

Going further with this:

I've created Node Group from original answer to make it even easier and less distracting for you:

As you can see here Image Texture is pure RGB and accordingly to the channels there are connected Principled Shaders (could be any shader).

Tweak Values are for non-pure RGB colors.

Blend file:

2. Different colors.

Simple answer is - no. You can't use this setup for images with other colors (except for black). There is possibility to create such setup but it will be mostly based on specific image rather then making one to rule them all.

This is because all colors are RGB based. You can try with Tweak Values but it will be pretty hard.

Also you can use only one color with this setup but only if everything else (background) is black.


How can I unlock the selected channels in the Dope Sheet?

Shift-select the channels on the left as you have been doing and then choose Channel> Toggle Channel Setting> Protect:

Disable Channel Setting and Enable Channel Setting also do this, disabling or enabling all the selected channels.


Model a coin (depending on how detailed you need just a short cylinder). Then use rigid body physics to drop the coins into a pile. cg cookie tutorial (archive). After you have a pile of coins then you can bake a normal map to a low poly mesh. Short description of the process on bottom of that page.

For the color, bake that too (also on that page). You would want a full render, or a Textures bake for the diffuse map.

If you are using cycles, the bake options are a little different.


Hit X > Vertices, then select the original edge.


The object-mode scale is a property of the object; it doesn't actually do anything to the mesh, but rather affects how the mesh is going to fit in the scene.

Scaling in edit mode actually moves the mesh around; it's equivalent to selecting and carefully moving vertices around to make the mesh bigger or smaller.

There are many situation where you don't want to touch the object scale (e.g. physics simulations tend to get mucked up).

If you have changed the object scale, but really meant to scale the mesh, you can "apply the scale" (i.e. apply the object's scale to the mesh, and set the object scale to 1) by ctrla and select "scale" in the popup menu.


No mesh just bounding box.
Isn't that because you have set under
Object Properties > Viewport Display > Display as > Bounds?

BTW - What happened to me (when I tried to confirm your issue) is that mesh was generated just around particles. In that case - Save your file first.
Under 2.92 if you change Resolution, Simulation method or probably any parametr which restarts cache should solve it as well.
In 2.83 LTS it was't even possible run simulation without saving a file.


Adding Labels, Angles, Domains on Objects for Making Math Models

There are many possible approaches. If you are going to animate this or want to play with the angles for the final render one possible solution are modifiers. Please bear in mind, that these are very specific questions and the solution might be somewhat complex, so I can only outline the basics and not every step. I will try to keep it simple.

First goal is to create a region ABC that auto-updates when we rotate the tori.

Make sure the 3D cursor is at the centre.

To create region ABC add a UV Sphere and a cube. Select the cube and scale it up a bit, so that it contains the sphere completely with a margin. Move one of its sides to the centre of the sphere in "Edit Mode". Back in "Object Mode" copy the cube two times and rotate the copies by 90 degrees around 2 different global axes. Lets name the cubes Cube.A, Cube.B and Cube.C. Move all cubes to layer 2. (ok, mathematically these cubes are now cuboids.. but lets call them cubes for simplicity)

Copy the sphere 2 times. Lets name the spheres Sphere.Fill, Sphere.Wire, Sphere.ABC.

Move Sphere.Fill and Sphere.Wire to layer 3. Select Sphere.ABC and add a "Solidify Modifier". Change thickness e.g. to 0.060 or less and offset to 1. Add 3 "Boolean Modifiers" and set the target to the 3 cubes respectively. Set "Operation" of all 3 modifiers to "Difference". This is, what it should look like:

For the angle labels add another UV Sphere and scale it down e.g. 0.5 and move its centre to one corner of ABC on the surface of Sphere.Fill. Lets name it Sphere.Cut. Add another "Boolean Modifier" to Sphere.ABC and set its "Operation" to "Difference", target to Sphere.Cut. Add an "EdgeSplit Modifier" to Sphere.ABC. Copy Sphere.ABC and change the Operation of the last "Boolean Modifier" to "Intersect". Lets name the copy Sphere.Angle. This is what it should look like:

For the text label of the angle add "Text" and tab in to change it to whatever you need. In the text properties under "Paragraph" change align to centre. Place the object centre of the text slightly above the surface of Sphere.Fill inside of Sphere.Cut and parent it to Sphere.Cut. Add a "Shrinkwrap Modifier" to the text and set the target to Sphere.Fill. Tick on "Keep above Surface". Change the offset until the text is above the surface of Sphere.Angle. This is what it should look like:

Some notes about materials. Enable Z Transparency for all materials. This allows to set "Z-Offset" which avoids unwanted flickering for overlapping geometry (also called Z-fighting). For Sphere.Wire switch the material type from "Surface" to "Wire" and "Z-Offset" e.g. of 0.1 or less. Increase the "Z-Offset" slightly for Sphere.Angle and Sphere.ABC and then again for the Text. For this simple example its enough to set "No Shadow" for the single sun lamp.

For the tori you can use bezier circles with another bezier circle as Bevel Object. Then you can parent those circles to the cubes respectively.

Afterwards rotating the cubes should update region ABC automatically. Sphere.Cut must be tracked manually. A rig might be needed for animation but this is beyond the topic.


How do I make a displacement modifier affect multiple objects?

The different parts of the body have different UV-Maps.
As you can see in this image, when I join them, I get 3 UV-Maps

(At the rights side)
You can solve this problem, when you Name them the same before mergin.
Then you get this result:


Measuing an irregular volume from an .stl mesh

The quick and dirty way would be this:

First use a remesh modifier with a fairly high number of iterations (at least 7), to keep a the fidelity high. The remesh modifier will automatically close off your mesh and make it watertight.
Use bmesh to calculate the volume:

import bpy, bmesh

o = bpy.context.object

bpy.ops.object.modifier_add( type = 'REMESH' )

remesh = o.modifiers[ len( o.modifiers ) - 1 ]
remesh.mode         = 'SMOOTH'   # Remesh type smooth
remesh.octree_depth = 7          # 7 subdivision levels

d   = o.to_mesh() # Create a temporary mesh with modifiers applied
bm  = bmesh.from_edit_mesh( d )
vol = bm.calc_volume()


How to switch "context area type" via Pie command? Object/EditNodesUVImage

There are already shortcuts defined to switch areas.

UserPreferences -> Input -> Window

If you browse these shortcuts you will find Context Set Enum, which uses the generic wm.context_set_enum operator. The keys are SHIFTF1-F12

So you can copy the arguments:

op_props = pie.operator("wm.context_enum_set")
op_props.data_path = "area.type"
op_props.value = "VIEW_3D"

See Area.type for the available options

Further you might also try wm.context_pie_enum to automatically layout all enum items in a pie menu.

Just define a shortcut and type area.type in the data_path field.

Note

You can find a listing of all context attributes here


I can't find Smoke material in shader editor

There are three shader nodes in Blender 2.80 that could be what you're searching for. None of them are called "smoke", but they can all be used to create (a part of) a smoke material. You can find them in the shader editor under Add > Shader.

Principled Volume
Volume Absorption
Volume Scatter


Blender 2.8 view material transparency and textures at the sametime with Workbench

for future readers:

this is no longer an issue and has been resolved https://developer.blender.org/T63077

happy blending

Jesse


The fastest way if you haven't applied any transforms on the camera is to reset the rotation with AltR to 0/0/0 and then rotate it 90° on the X and -90° on the Z, RX 90, RZ -90.

If you have changed the transforms and can't reset it to 0/0/0, you can use exact measurements by using the transform section of the properties panel or the object tab in the properties view to rotate it 90° on the X axis, -90° on the Z axis and 0° on Y.


In 2.9 version of Blender, you can also have the stats in the 3D viewport, using an option in the overlays:


Blender 2.8 Beta Vincent Eye movement problem

Apparently this is a feature that hasn't been implemented in eevee.
Eevee - Generated coordinates don't follow mesh deformation


How can i fix the resolution with texture painting?

I don't know If I understand you correctly BUT if you paint on a low image res you will get low res texture quality!
Here is a pattern I made painted on a 4098x4098 vs 256x256 texture:

My pattern is high res but when you project it on a low res texture you will get exactly that. if you want to get variable texture res on your painting I suggest you to check material painting in blender. You could bake it after that painting it to your desired resolution.


the emission of the lamp isn't working at all

You are in Eevee, and the emission shader lighting other things can only be done in cycles (or at least as far as I know).


Is there a way I can make a hollow object solid?

You can just use the soldify modifier. This lets you change the thickness and tweak it later on.


You don't need the knife cut at all :).
Just inset the corner slightly, it'll move the ugly quad out of the way.
The corner is now smooth, and you can add more loopcuts to make it sharper.


You want to use the alpha as a factor for the background colour, otherwise you end up with transparent material.

Also I suggest using material viewport instead of texture viewport


Scaling edge from multiple object with local transform is not working as expected

I think you're confusing several things:

Transformation Orientation will determine what are the directions displayed by the gizmo in the 3D view, and therefore the directions you'll use: are they relative to the Global, Local or custom axis, etc... It has nothing to do with the center of the scale or rotation operations you are going to do.
On the contrary, the Pivot Point will determine what will be the center of your operation when you'll scale or rotate.
In Object mode the object origin will be taken into account if for example you scale an object with Pivot Point > Median Point selected. If you choose Pivot Point > 3D Cursor, it won't, only the 3D cursor will be taken into account.
In Edit mode, the object origin will never be taken into account, if you want this point to be taken into account, put your 3D cursor on it and choose 3D Cursor as pivot point.


Rig following another rig scaling constraint problems

Nevermind, i figured it out

I turned off copy scale, and then for every bone that was having scaling problems I also turned off any IK constraints they had, since the rig is following another its no use having ik constraints on it anyway


I would not remove the "target" object. Just let it there. You need just one.

You can activate/deactivate the steering (rather then adding/removing the target object).

To do this you need to sense the events when to do what.

Unfortunately you did not say what you want to get. You just mention what other games are doing.

  "player to cursor" motion where the player travels to cursor when right-click mouse is pressed and stop travelling when not

right mouse button sensor -> AND -> steering actuator

This activates the steering on when pressing the right mouse button, and deactivates the steering when releasing the button.

You also need to think about when to place the target object at the hit position under the cursor. Typically you do that once at right mouse button.

You can continuously do that while holding the right mouse button too (be aware the situation when the cursor is over a non-targetable position).


Why isn't a button added in the panel by running this script?

Line 16 should read:

layout.operator("pose.select_all", text="Legs.Idle.1", icon="MOD_ARMATURE")

You aren't giving the full path and the parameters. You are choosing an operator so Blender already knows that it is in "bpy.ops". When the user pushes the button, he will set the values.

If you want to make sure you use your own hard-coded values, make your own operator class, that calls the bpy.ops.pose.select_all() operator inside of it with desired parameters, or catch the result of the operator layout definition in a variable, and set the parameters like this:

# catch the defined operator in a variable
myOperator = layout.operator("pose.select_all", text="Legs.Idle.1", icon="MOD_ARMATURE")

# set the options on that var. Add as many as needed
myOperator.action='TOGGLE'


You can use align rotation of the snapping tool. But you have to align an object with straight axes onto your mesh and then rotate it back.


You can zoom individual panels in and out. Try pressing Home while hovering your mouse over the keyboard.

Similar Question


You have an Action strip in the NLA Editor which is overriding/controlling the animation of the object.

Here I have added a keyframe on frame 54, but because the end of the Action Strip is at 35 (green timeline marker), the keyframe is ignored:

To solve this you can extend the End Frame property of the Action Strip in the Properties shelf on the right of the NLA Editor (N) to be as long as your animation:

Or, if you don't need to use the NLA Editor, you can delete the strip by selecting the Action Strip called 'Jump' (it will be yellow/orange when selected, as shown above), press Space, type "Delete Tracks" and press Enter.


Unable to select CUDA or OptiX with new 3090, "No compatible GPUs found" message

In case anyone else encounters the same problem:
I reinstalled my windows (keeping apps and files) and suddenly it was recognised in Blender.


For this kind of non-organic object, don't parent With Automatic Weight, parent With Empty Groups, it will avoid some bones to influence some vertices they are not supposed to influence. With Empty Groups creates as many vertex groups as bones you have, with the same names, but there are no vertices affected to these groups for the moment.

Once parented, select the vertices you want to assign to a bone, go in the Properties panel > Object Data > Vertex Groups, choose the group the vertices are supposed to be part of (the group that has the name of the bone that is supposed to control that group), and click the Assign button.

You can affect vertices to different bones, and decrease the influence of the group on some vertices with the Weight value under the Assign button. It may be necessary to make the object more flexible.


In the UV window on the left side, it's necessary to press N again.
Unless I do, the window on the left side doesn't have any pane.
What I thought was "the" pane was a pane of the 3D view window on the right side.


turns out the cylinder was not on the same layer. Having the object tab selected (two left of the modifier tab) I clicked on the top left layer and bam it was there :)


Is there a way to export each rendered layer as its own image?

Use a file output node and save as openEXR multilayer:

The EXR multilayer format will allow you to save multiple render layers and passes in a single file.

The EXR format is the best way to preserve the integrity of your render layers, as it will keep them linearized and without any the constraints of display referred images (in other words you can keep values that exceed the 0-1 scale).

Saving as OpenEXR multilayer will help you also if you are compositing using Z-pass information.

You can create as many channels as you need.

See these links for more details: https://blender.stackexchange.com/a/18406/1853

Note: To open this kind of file in old versions of photoshop there is a plugin you can download from http://www.openexr.com/


How to Draw an ellipse: half is continuous, half is dashed

import bpy
import bmesh

op = bpy.ops
me = op.mesh

op.object.mode_set(mode='EDIT')
me.select_all()
me.subdivide(number_cuts=2)

d = bpy.context.object.data
verts = bmesh.from_edit_mesh(d).verts

for v in verts:
    if v.co.x > 0: v.select = True
    else:          v.select = False
bmesh.update_edit_mesh(d)

me.select_nth(nth=4, offset=-2)
me.delete(type='VERT')

You can do nth=3 if you want smaller dashes.


How to move a selected mesh in to another collection in editmode?

An object can be made of many connected or unconnected meshes. Creating a new mesh in edit mode will not make it a new object, but will be part of the Active Object

You need to separate those meshes into different objects before they can be part of different collections.

To separate parts of a mesh and turn them into a new independent objects (with their own unique name and pivot point), use the separate function (pressing P) and choose if you want to separate by selection, unconnected parts or materials.

Read: Why can't objects in Edit Mode have their own name?


Why does Edit Mode show a different number of vertices than Object Mode?

When you are in object mode, Blender counts all the objects in the scene's vertices.

Blender also counts modifiers in object mode. For example, the subdivision surface modifier would make the object mode vertex count higher than the edit mode vertex count.


How to include vertices to subdivision modifier?

Your biggest problem are these internal faces. I can't really think of a reason you would ever want something like this, so start by deleting them.

The remaining problem, faces have fronts and backs, and the reason you're getting that cusp is because some of your faces are pointing the wrong way.

Select the whole mesh with 'A' and hit 'Shift N' to automatically correct the surface normals.


Does Blender resume rendering after returning from hibernation in Windows 7?

I think the best way to find out is to try it yourself ;)

Alternatives:

Something you can do to ensure your render progress is not lost is to render to an image sequence instead of directly to a video file. See the docs:

  The Direct Approach—highly not recommended and not a standard
  practice—is where you set your output format to an AVI or MOV format,
  and click [render] ANIM to render your scene directly out to a movie file.
  Blender creates one file that holds all the frames of your animation.
  You can then use Blender's VSE to add an audio track to the animation
  and render out to an MPEG format to complete your movie.

  The Frame Sequence is a much more stable approach, where you set your
  output format to a still format (such as JPG, PNG or MultiLayer), and
  click [render] ANIM to render your scene out to a set of images, where each
  image is the frame in the sequence.

  Blender creates a file for each frame of the animation. You can then
  use Blender's compositor to perform any frame manipulation (post
  processing). You can then use Blender's VSE to load that final image
  sequence, add an audio track to the animation, and render out to an
  MPEG format to complete your movie. The Frame Sequence approach is a
  little more complicated and takes more disk space, but gives you more
  flexibility.

Set start frame:

This way if the render render stops you can easily resume it by setting the Start frame to the frame after the last frame rendered and starting the render again. Whereas if you are rendering directly to a video format, there is a high probability the file will be corrupted if the render is stopped partway through. Also see the Hints section:

  Unless your animation is really simple, and you expect it to render in half an hour or less, it is always a good idea to render the animation as separate image frames in a loss-less format (TGA, PNG, BMP) rather than as a movie file from the beginning. This allows you an easy recovery if there is a problem and you have to re-start the rendering, since the frames you have already rendered will still be in the Output directory. Just change the STArt frame number to the frame number where you want to pick up from, and click ANIM again.

E.g. If the render stops while rendering frame 30, the last saved image will be frame 29. All that needs to be rendered is frame 30 up to the end, so set the Start frame to 30 and render (CtrlF12):

Disable overwrite:

Another option (as mentioned by Greg Zaal) is to disable Overwrite in Properties > Render > Output. Disabling this will skip rendering the frame if an image file corresponding to that frame already exists.

Rendering an image sequence to a video file

When the render is complete you can render the image sequence to the desired file using the VSE:

Import your image sequence with ShiftA> Image (or Header > Add > Image). This will add a new strip with your animation. Make sure it is correctly lined up with the scene start and end frames.
Set the output format to the desired location and format, then press CtrlF12. This will render the sequencer to the specified output file quite quickly, as all it is doing is encoding the already rendered images into the correct format.

Also see the workflow outlined on the docs:

  Frame Sequence Workflow

  First prepare your animation.
  In the Dimensions panel, choose the render size, Pixel Aspect Ratio, and the Range of Frames to use, as well as the frame
  rate, which should already be set.
  In the Output panel set up your animation to be rendered out as as images, generally using a format that does not compromise any quality
  (I prefer PNG or MultiLayer because of their loss-less nature).
  Choose the output path and file type in the Output panel as well, for example //\render\my-anim-.
  Confirm the range of your animation frame Start and End.
  Save your .blend file.
  Press the big ''Animation'' button. Do a long task [like sleeping, playing a video game, or cleaning your driveway] while you wait for
  your computer to finish rendering the frames.
  Once the animation is finished, use your OS file explorer to navigate into the output folder (".\render in this example). You will see lots
  of images (.png or .exr, etc... depending on the format you chose to
  render) that have a sequence number attached to them ranging from 0000
  to a max of 9999. These are your single frames.
  In Blender, now go into the video sequence editor.
  Choose ''Add Image'' from the add menu. Select all the frames from your output folder that you want to include in your animation (Press A
  to Select All easily). They will be added as a strip to the sequence
  editor.
  Now you can edit the strip and add effects or simply leave it like it is. You can add other strips, like an audio strip.
  Scrub through the animation, checking that you have included all the frames.
  In the Scene Render buttons, in the Post Processing panel, activate Sequencer.
  In the Format panel, choose the container and codec you want (e.g. MPEG H.264) and configure it. The video codecs are described on the
  previous page: Output Options.
  Click the ANIMATION render button and Blender will render out the sequence editor output into your movie.


Removing item from bpy.app.driver_namespace


How to add textures to a collada file imported from Fuse

In order for the textures to appear on the object, you must assign a material that uses the textures.

Here is how you would set up such a material if you are using the cycles render engine.

First go to the materials section of the properties view, and click new to add a new material.

Then go to the node editor and use a node setup like this to combine the textures.

The main color of the material comes from the diffuse shader, which gets its color from the image texture node plugged into its color input.  This texture should be the one labeled "diffuse".

The gloss map (usually called specularity map, or spec map for short) is used to denote glossiness across the model.  To implement this you use it as the factor of a mix shader between a diffuse and a glossy shader.  Make sure the glossy shader is in the bottom socket, since the factor value is the fraction of the second input that contributes to the output.  If you want more control you can add a color ramp node between the image texture and the mix shader and play with the values.

Finally normal maps are used for altering the surface normals to fake small bumps on the object.  The red and green channels of the texture are used to define the x and y components of the normal vector at each point.  To use a normal map simply plug it into the color input of a normal map node and plug the normal output into the normal input of the shaders you want it to affect, in this case all of them (the duffuse and glossy).


How to get the grid size in a Python script?

Overlays are set per view.
You need to find the (or a) 3d view area.
import bpy

def get_areas_by_type(context, type):
    return [a for a in context.screen.areas if a.type == type]

# Get view3d areas
view3d_areas = get_areas_by_type(bpy.context, 'VIEW_3D')

# Assuming there is one (if not test it in your code)
view3d_area = view3d_areas[0]

# The view space
view_space = view3d_area.spaces[0]

# It has overlay
view_space.overlay.grid_scale = 4.0

Or if you know that your context is the 3d view, you can use:
context.space_data.overlay.grid_scale


You can use Drivers to automatically apply a Wind force around the object and to vary its intensity as the object moves. This can be achieved as follows.

Firstly, enable 'Autorun Python Scripts' in the File preferences window. This will allow you to run scripts in Driver expressions.

Create an empty to follow behind the moving object. This will be the 'source' of the wind and its distance from the moving object will dictate the magnitude of the forces. In the Empty's properties panel, right-click on one of its location properties and select 'Add drivers' - you should see the X, Y, Z properties turn purple to indicate  a driver is present.

To get the Empty to follow the moving object you can set its location to a running average of itself and the target object's location. This will result in it closing in on the target on each successive frame. To do this, select the Empty in the 3D window, open a Graph Editor window and change the context from F-Curve to Drivers and you should see the newly created drivers.

Select 'X Location' and set up 2 variables - both as 'Transform Channel' - one for the Empty's X Location and the other for the target object's X Location (named 'emptyX' and 'targetX'. Set the Driver value to be a Scripted Expression as '(emptyX + targetX) / 2'. This will result in the Empty moving halfway towards the target on each frame. Adjust this expression for a more gentle motion towards the target - eg, '(emptyX * 4 + targetX)/5' will cause the distance to close by 1/5th each frame.

Repeat the above for the Y and Z channels and you should have an Empty that follows behind the target object as it moves.

Create a Wind force at the same point as the Empty (select the Empty, Shift-S for 'Snap'menu , Cursor to Selected, Add/Force/Wind) and parent it to the Empty. Add a constraint to the Empty to 'Track To' the target object. Move the target away from the Empty and check that the direction of the Wind is correct - rotate it to point it towards the target object if it is incorrect.

Select the target object and go to its Object properties and create a Custom Property named 'WindMultiplier' and set its value to '35.0' (or similar). This will be used to control the strength of the wind.

Select the Wind force object and go to its Physics properties. Right-click the Strength property and Add Driver. Configure the rest of the force as required -- probably change the shape to 'Point', set the Falloff to Sphere and power to around 2 or slightly higher.

Go back to the Graph Editor window and select the new driver on the Wind force. Create a variable named 'distance' of type 'Distance' and set one object to the target object (in World space) and the other to the Empty. Create another variable named 'multiplier' as a Single Property, set the object to the target object and the path to '["WindMultiplier"]'. Set the Scripted Expression to 'distance * multiplier'.

You should now find that as the target object animates that the empty follows closely behind with the wind force varying based on its speed. You can repeat the above 'Wind' steps to create multiple forces - for example, a Turbulance force, vortex forces, etc., parenting each to the Empty and rotating it as required, affecting your particle system dynamically based on the motion. Tweak the force properties and multipliers as required.

You'll get strange results if you run the frame sequence in reverse or jump to points in the animation so it's best to play it forwards all the way through to make sure it's working as expected and then to Bake the animation and then disable the drivers until you need them again if you change the motion of the target object.

Here's an example using a Wind force and Turbulence force - there is no object collision involved. You could get more effective results by adding Vortex fields (as above) to simulate eddy currents in the air flow.

Note : You may find that Blender doesn't detect changes to your scene when adjusting the Driver properties (such as 'WindMultiplier' mentioned above) and will not refresh the particle system automatically. If this occurs you can simply go into the Particle System properties and re-bake the particle system. The other potential issue with the set up described above is that the initial state at frame zero will not be consistent - the Empty used to direct the forces may not necessarily be in the same place at the start of the animation. The driver Scripted Expressions could be adjusted to allow for this if required but I excluded this for clarity (eg,  something like 'emptyX * 4 + targetX)/5 if frame = 0 else targetX' should give the desired effect.


How do I stop the UV map from changing while adding bevels?

The reason this is happening is because you are beveling an edge with a seam on it. Since beveling creates multiple edges from a single edge, blender has to place the seam somewhere, yet there is no 'right' edge to place the seam on, so it gets applied to both created edges (extra segments do not receive a seam). What that means is that you will have to do some manual adjustments to make this work how you want. I would suggest removing the seam first, then beveling, then re-adding the seam where you want it. An alternative is to remove the seams after you have beveled the edges, but that will probably be a bit harder to do.


In your image you are in the scene context.

The Perspective, Orthographic, and Panoramic lens options are located in the Camera context.

Note that this is only available when the camera is selected.


How do I apply delta transforms to normal transform?

I ran into the same issue and used Bintang Senja solution. I also used for rotation and scale, maybe the code can help someone else:

import bpy
for obj in bpy.context.selected_objects:
# Store delta location, Eurler rotation and scale of selected objects
obj_deltaL = obj.delta_location
obj_deltaR = obj.delta_rotation_euler
obj_deltaS = obj.delta_scale

# Assign selected objects location, Euler rotation and scale as delta location, Eurler rotation and scale, Reset delta location and Euler rotation to 0 and scale to 1
obj.location = obj_deltaL
obj.delta_location = (0,0,0)
obj.rotation_euler = obj_deltaR
obj.delta_rotation_euler = (0,0,0)
obj.scale = obj_deltaS
obj.delta_scale = (1,1,1)

Please don't juge the code, I know it's crappy. I just wanted a quick and easy solution. It works fine :)


Fac. is short for Factor
Nodes that have such input can use scalar information, or a grayscale image, as values to control the mix between two different elements.


how to display some text in blender 3Dviewport?

You can draw on the 3D viewport by registering a draw handler and using the bgl and blf modules.

Registering the draw handler is done via bpy.types.SpaceView3D.draw_handler_add(). Just browse through the bundled Blender add-ons to get lots of examples on how this is used in practice.


Duarte's solution is the best solution I can think of. However, it will not work for more than cycle, meaning it worn't repeat more than once. To solve this, Animation Nodes can be used to automate setting the start frame and reverse options of a single build modifier.

Build Modifier

Lets say we want the length of each build to be 30 frame, then for the first 30 frames, Reverse will be False and Start will be zero, for the next 30 frames, Reverse will be True and Start will be 30, for the next 30 frame, Reverse will be False and Start will be 60, and so on. This pattern can be easily achieved using floor division, if we floor division the time by 30, the output will be 0 for the first 30 frames, 1 for the next 30 frames, 2 for the next 30 frames, 3 for the next 30 frames and so on. If we multiplied this output by 30, we get the Start value, which is $0, 30, 60, 90, \dots$. If we modulo the output by 2, we get the pattern $0, 1, 0, 1, \dots$ or in other words, $\text{False}, \text{True}, \text{False}, \text{True}, \dots$ which is the required pattern for Reverse. So we can imlement this and write the values using the Object Attribute Output Node as follows:

Which results:

Animation Nodes

Let me, in addition, show you how to replicate the build modifier in Animation Nodes. All we have to do is slice the polygon indices list using the Slice List Node, where the end index starts from zero, goes to the full length of the list, goes back to zero, and so on. The Repeat Time can be used to create a ping pong pattern where the output goes from zero to 30, then back to zero, and so on. If we divided that by 30, it will be in range $[0, 1]$, if we multiply it by the length of the list, we get the required pattern, and the node tree becomes:

And the result is exactly the same as the build modifier:


You can remove the lamps reflection in glossy materials. This will hide the reflection of the light source in glossy surfaces.

Select the light source, go to the "object tab". Under "cycles settings" remove the checkmark in "Glossy"


The short answer is, selecting them is not possible with Blender (at the moment?), since (viewport) hidden / disabled objects are treated like "Disable Selection" is turned on. The solution would be to use a workaround and depending on what you want to do. The good thing is, if you want to translate those hidden objects and they are parented to a visible object, they will perform the translation with their parent although they are hidden.
If you want to select all objects in a collection to duplicate them, instead of using RMB+Right-click > Select Objects try RMB+Right-click > Duplicate Collection.
This duplicates the collection with all objects, even those that are hidden (note: the option Hide in Viewport will be disabled, but the option Disable in Viewport  will keep its setting).
If you want to translate complete collections with hidden objects, the easiest way would be to add an empty to this collection, select all other objects in the Outliner and parent them to the empty by dragging them onto it with Shift+LMB.
To parent one object A with a hierarchy including children that are "Disabled in Viewport" to another object B, simply drag object A with Shift+LMB onto object B in the Outliner.


Emission material reflecting other emissions

The reason the effect is more noticeable with the yellow is due to how the colors are made up of components of Red, Green, Blue in conjunction with the high strength of the emission. The Red is pure red, the Green is pure green, while the Yellow is a mix of red and green. Since your emission is high (10) the rendered pixels in the camera will be truncated to an upper limit of 1.0. So for the Red LED the pixels will be around RGB values of (10,0,0), the Yellow (10,10,0) and the Green (0,10,0) and these are truncated to become Red (1,0,0), Yellow (1,1,0), Green (0,1,0). Adding in the reflection from the Yellow LED on the Red LED (assuming, say, 10% reflection) you'll get (11,1, 0) which will become (1,1,0) (yellow). The Red reflecting on the Yellow will be (11, 10,0) which will become (1,1,0). The Yellow reflecting on the Green will become (1,11,0) which will become (1,1,0) when values above 1.0 are clipped. ie, so Red + Yellow reflection becomes yellow, Yellow + Red reflection becomes yellow, Yellow + Green reflection becomes yellow - so it appears that there is no reflection of the Red and Green LEDs as they are 'lost' in the saturated yellow emission.

That's essentially what I believe is happening here. I don't think I've explained that too well - hope it makes sense.

I think this would actually be similar to how this would behave in the real world - although less pronounced since the human eye has a wide band sensitivity to light rather than the strict narrow banding in Blender's RGB model.


How do I make multiple Blender objects into one?

Remove the objects you no longer want in your model, like the interior objects. Then select all of your objects that you want in a single model and hit Ctrl + J then click Join selected meshes. The multiple objects will now be one model you can export.

For further reducing the complexity of the model for better performance, you'll need to either remove more objects before joining them or you need to remove details from the objects you want to keep.


I'm trying to install this add-on: blender_mmd_tools

Installable.

1) Unzip the blender_mmd_tools-master.zip file you downloaded

2) Open the folder containing your Blender.app

3) Right-click Blender.app and select "Show Package Contents"

4) Then open the "Contents" folder, followed by "Resources", then "2.76" (or whatever version of Blender you may have), then "scripts", and finally open the "addons" folder

5) Now inside the "addons" folder, you want to copy and paste the "mmd_tools" folder that was unzipped from inside the blender_mmd_tools-master.zip file

6) Now open (or restart) the Blender app and go to the User Preferences and search mmd_tools and check to use the add-on and "Save User Settings"

7) Now go back to 3D view and it should be a new tab called mmd_tools

Have fun!


If you accumulate 100 identical spheres into a sphere shape, how many will be on the surface or touching a sphere on the surface?

Rigid Body
According to your image you can use Rigid Body physics.

Add sphere as Particle in Physics properties add Rigid Body > type Active > Collision Shape Sphere
Add sphere as Emitter, enable Particles System > source Volume > Render as Object
Go to modifier properties and press Convert
Add sphere as Collider object, go to physics properties and enable Rigid Body > Passive > shape Mesh

When you finish with a spheres shaped into a ball (state in blend file) you can select spheres on a surface with Dynamic Paint.
In general - go to last frame of animation. Select all "particle" spheres and Join ⎈ Ctrl+J them into a single object. Disable Rigid Body and enable Dynamic Paint > Canvas > from Paint to aWeight. At the bottom you can see a red field of vertex group, click plus icon so group is created. Go to Data properties and unsure this data block is unique for this object and is not used for other object. If next the data name is some number (like 2 or higher) click on that. Then select "collider" sphere, scale it down so half of particle spheres on surface is out of collider sphere. Again disable Rigid Body and enable Dynamic Paint but now as a Brush type. Play once animation. Like that collider "paints" on all vertecies of particles inside collider. Now with particle object selected go to modifiers and Apply Dynamic Paint here. Now when you switch to edit mode and from data properties click on Select under Vertex Group all vertices inside a collider sphere are selected now. Invert selection Crtl+I and select Linked cmd+L. Now all vertices of spheres on surface are selected. Separate by Selection P. Now you have spheres on surface as separate object. To count them, simply Separate by Loose Parts P. Now you can see (in 2.91 text next to Tool shelf, left top corner of 3D view editor) how many spheres takes to cover surface.

For 180 spheres - 121 out / 59 in
For 100 spheres - 74 out / 26 in

Icosphere
Since any work with forces is a bit random (also thanks to more ways how to store spheres in the same shape as seen in lemon's link) you can try to use Icosphere as a base mesh for quite even distribution of vertices on a surface.

Spheres are distributed via Instancing - parent small Sphere to Icosphere ⎇ Alt+P and enable in Properties Editor > Object > Instancing > Verts


I tried to render your scene and I have no issues. I noticed "Square sample" was checked so you had to much sample to render. Try to render with "Square sample" unchecked (Properties panel -> render -> sampling).

And just for advise, if you are rendering with the CPU, set the tiles to 16*16 instead of 64*64 it sould be a little bit quicker


A snakelike group of Objects running on the same path

In the not so extreme case you might consider an armature with a one to one correspondence between and object and a particular bone. Spline constraint.
In the not so extreme case you might consider physics in the comment above.
Consider a [Follow Path Constraint] and .  Enable [x] Fixed position of the constraint.  Keyframe Offset.  (You have done that already)
In the [follow path constraint] case ...place keyframes on each object in the constraint in staggered (shifted) time form.  The [Follow Path Constraint] can be used with no deformation of the object.
Consider adjusting the off curve control points of your keyframes in the graph editor for more control.
The image below shows 3 object with a follow path constraint to the same path.  The dope sheet shows the staggered keyframes.  This is a slightly simplified view. You many not want the speed up and slow down associated with Bezier curves.  And the objects may have different starting and ending keyframe values when spacing is a requirement.

Read this bullet at your own risk.  By staggering form I mean the following.  Object[N] (where N is in the set of numbers (1 ..K)), Q is another convenient static positive integer for pausing, may have keys on frames [math formula ((N-1)*Q) and (N * Q)] approximately.  The keyframe values would be [0.0] and [1.0]. Yes that paragraph is not easy to read.
If you have a few objects to place, (<20 perhaps), the above can be done by hand.  If you have more than that a Script might be worth the cost.
Once those keyframes are placed and correct they may look like bumps and inclines ... just translated in the positive x direction in the graphs editor.


Each material has a unique name

Each ID object in blender has a unique name. Internally blender does this for us if needed. Eg duplicate the cube. This is often referred to as the "naming system".

For example, If another material already has the name you are trying to assign, to test bpy.materials.get("Glass") is not None then cannot name another material "Glass". Can try to, `anothermaterial.name = "Glass", but the naming system will rename it with a .nnn extension.

This explains the behaviour described in your question.

  I can rename them manually with no problems

Seriously doubt that claim. Contend that instead you are also unwittingly renaming the original. (or selecting it from material drop down)

Rename green material to "Material" just like blue

If you want to link to only one;  assign the material to the "Glass" original, eg using the tempholder name from script above

m.material = bpy.data.materials.get(tempholder)

Assigning each slot linked to  "Material.nnn" to "Material"

Prevent Blender to add numbers behind materials when importing a FBX

Disable Material Duplication


2 images as planes, one of them shows incorrect control for alpha

I exaggerated the problem due to lack to knowledge to application. I just needed to add BG's which can be reduced in transparency.
I was given simple solution of add Image as refrence. It is easy transparency with no grey etc issue.
Importing image as plane creates material complications which for SB work are unnecessary.
Thanks for taking the time out to answer.


What is the fastest way to create a 90° joint?

The spin tool is well suited for creating joins:

Spin Alt-R it works best (expected results) in orthographic mode. The selected parts of the mesh will be rotated around the 3D cursor. The 3D cursor should precisely set vie the properties panel N.

The last operator settings allow to adjust the angle and steps:

If you focus more on modelling speed than accuracy the the bend tool could also be useful: How does the bend tool work?


'Limit selection to visible' button missing in Edit Mode

You're in Wireframe shading mode, where the Limit Selection to Visible button would have no effect (as all vertices are visible all the time, so there is nothing to limit to). Change to one of the solid shading modes and it will return:


How do I force Graph Editor to show drivers for my Materials

Ok I was stuck there, but removing the drivers back and forth, and adding them not on the node but on the N-panel value forced the Graph Editor to update and I could see the drivers there.


Automatically draw hidden portions of paths with dashed lines

Can do this using Freestyle and choose how to render Hidden edges. The zipped sample file renders the image below.

Select dashed line style from the Freestyle Line Style Panel in Render Layers Properties.

Quick proof of concept on your file.


Does Blender support linear colorspace for vertex colors?

Answering my own question here. Looks like if I use Collada exporter the colors are correct. So they must use linear color space. Maybe it is more of a responsibility of the export plugin to set the color space used than Blender.


Mirror changes to side of cube across all six sides

Modifiers:
You could do this with a Mirror modifier and an Array Modifier:

Delete the excess geometry:

Add a Mirror modifier:

Add an Array Modifier.

Add an Empty rotated -90°, 0°, 90° (assuming the mirror is mirroring along the X axis):

Set the empty as the Object offset in the array modifier:

Result:

Duplifaces:
Another way is with Duplifaces:

Add a cube and a plane.

Parent the plane to the cube (CtrlP):

With the cube selected, enable Duplifaces in the Properties Editor > Object > Duplication:

Edit the plane object:

The duplifaces will be displayed in object mode:

Limitations:

The array modifier method will not rotate the duplicated faces in the same direction: (this is tweak-able by adjusting the rotation of the empty)

Duplifaces do not display in edit mode.


While you are working with 2D, don't forget that the Z axis still exists! If you're doing 2D you should be using an orthographic camera, so further elements won't appear farther. The Z axis essentially becomes the sorting order:

The reason your arm is cutting through the head is because you have the transparency set to Mask instead of Z Transparency. Just go through and make sure everything is on Z Transparency, and you should be good.


How to get OpenCL functioning for GPU rendering, AMD GPU?

From Blender manual on OpenCL support:

  OpenCL is supported for GPU rendering with AMD graphics cards. (We only support graphics cards with GCN architecture 2.0 and above).

2.79 release log says:

  Due to various issues with drivers for AMD GCN 1.0 architecture, those cards are no longer supported for Cycles rendering "

The support was dropped so you need Blender 2.78c version or a newer card.


I assume because the mirrored mesh doesn't really have vertex position in the memory(just fake), something that the generated node needs. you can see the only green side of the mirror to left.

but you can use the mapping node and move it.

UPDATE: just for sake of testing I came up with something. there's no real reason of why I did what I did, just experimented.
you can adjust the amount of the mirrored part by shrinking or fattening the "bell" shape in the vector curves node.


How to programmatically add an effect strip

Oh. I found it.

Not need select. Just add new effect strip:

eff = scene.sequence_editor.sequences.new_effect(
    name="Transform",
    type="TRANSFORM",
    channel=(c+1),
    frame_start=1,
    frame_end=240,
    seq1=seq) # this last arg is target channel


You could add a loop cut in-between each of that triangular faces.

You can do that by selecting these 3 edges and subdividing them.

Select the new vertices on the corner edge and the vertices on the triangle at the bottom. Press J.

Afterwards, remove the original edges

The subsurf modifier will work much better now!


I am trying to make a background, but the sky emits a light and tints the rest of my scene. How do I prevent this?

Here's a node-based solution:

Normal usage. As you can see the blue sky tints all surfaces

Using the Light Path node. The sky is still blue but it becomes invisible to all except the camera


Extracting key frames from long animation

Bake your animations

Make a backup copy
Select all the bones involved, then in Pose mode go to Pose > Animation > Bake Animation.
In the pop-up window:

Set Start Frame, End Frame, and Frame Step (in your example set it to 10).

Check "Only selected" (only selected bones will be baked); "Visual keying" (the position after all modifiers and constraints will be baked); "Overwrite current action" (you've made a backup copy, right??)

The "Clear constraints" option will remove all constraints from the armature after baking, making it perfectly animatable by the new baked action.

"Clear parents" involves object mode only, so it doesn't apply here.

Set "Bake data" to "pose"
Bake!


Just so this question has an answer for anyone else who might find it:

Select the light in the viewport by left clicking on it - it should be highlighted in yellow.
press g, then move your mouse to move the object. If you want to move it along a specific axis, you can press g, and then press, for example, x, to move it along the x axis. if you want to moe it a specific amount, you can type the number of meters to move it after the axis of movement (e.g. G > X > 0.5 to move it 0.5 in the +x direction).


In Blender 2.8x, every menu item that doesn't have a shortcut can be assigned one very easily:

right click on the menu item, then
either select

Add to Quick Favorites: your quick favorites will be available under theQ shortcut for quick selection
Assign Shortcut: you can now assign a custom unique shortcut.

I think the developers have made sure to leave F4 to F10 unassigned ("minimal keymap" philosophy) so that you can use these keys as custom hotkeys.


Array Modifier does not work as expected

When editing objects in Object mode, particularly scaling it, the mesh data actually isn't changed - scaling operation was performed in non-destructive way. This means that while object is displayed in viewport as scaled (and for simple operations it behaves like that too), its default scale is considered to be the non-edited one.

When scale is applied this means new values are taken into consideration as default ones. Modifiers work as expected with default values of transforms (and not only modifiers), so to see intended result you should apply scale.

Note though that it's a good idea to apply transforms before proceeding to some actions with object, especially animation. Once you'll notice that it doesn't behave as expected and decide to apply transforms, it may be too late - objects won't be changed as you want them to. So plan what is expected to do with object first.

In case of your object, this is as follows.

If scale is not applied

Given this snowflake:

If scale is applied

Everything becomes as expected:

To apply any kind of transforms, in Object mode press Ctrl+A and choose option from menu:

There are cases when applying transforms may be not desired, but in most cases it's better to apply scale and rotation first to avoid any kind of distortions and confusion later on.

Related articles:

Why is it important to apply transforms
Applying object transforms in wiki


I did this by chaining two rigid bodies, with two RB constraints.

Create a rigid body, give it "animated" or "passive" trait.  Change its collision collection to something weird and non-default like collection 20.  We'll name this body "anchor".

Create another rigid body, at the same location.  Leave this un-animated, but set its damping (translation and rotation) to 0.  Putting this in an out of the way collection-- again, possibly collection 20-- is a good idea.  We'll name this object "sub-anchor."

Create an empty, at the location of these rigid bodies, and give it rigid body constraint physics.  Set anchor as RB1 and sub-anchor as RB2.  Make it "point" type.  This allows sub-anchor to rotate about anchor.  Because both rigid bodies are at the same location, and because this is a point-type constraint, both rigid bodies should remain at the same location, given sufficient physics steps.  (Because constraints are imperfect and iterative in nature, it's not guaranteed.)

Create our physics object at the same location.  We'll name this "physics".  Again, give it dynamic, un-animated rigid body physics.  This is the object that will freely rotate within a given radial distance of anchor.  However, this is an object that we may want colliding, so put it in whichever collision groups you want-- the main thing we wanted to be careful of, was preventing this from interacting with anchor, since that lies as the center of our circle

Create another empty at the same location, give it rigid body constraint physics, set subanchor as RB1 and physics as RB2.  Set it to "generic spring" type.  (Although a "piston" type could be used instead.)  Enable linear limits at 0-0 for X and Y axes, and -n, 0 for Z axes, where n is the maximum distance we want to allow this object to travel from anchor.  Assign no angular limits or spring values.

What does this do?  It lets subanchor rotate freely about anchor, while physics exerts only linear force on subanchor.  If you watch, subanchor will rotate to point its z-axis at physics, wherever physics is.  Meanwhile, physics can move away from subanchor, but only in a single axis-- only toward or away from subanchor.
Do you want to establish a minimum distance?  Instead of using linear limits of -n,0, use linear limits of -n,-m, where n is the maximum distance from the anchor and m is the minimum distance from the anchor.  It will then push physics away from anchor.
Why do we use -n,0 rather than 0,n?  Because with 0,n limits, our rigid body is in a careful, computer-generated state of perfect equilibrium, like a pencil balanced perfectly on its tip.  Using -n,0 limits starts the pencil out of equilibrium, so that physics forces will act on it appropriately.
Note that there's no need to parent the empties to any anchors.  It doesn't matter where they are during the physics sim, only where they are at frame 1.  Parenting an empty will actually give a dependency loop warning in the console window, although this particular warning is safe to disregard-- at least in the case of empties parented to animated rigid bodies.  (I haven't done sufficient testing on empties parented to dynamic, unanimated rigid bodies.)  However, you cannot use any constraints on the empties that target physics objects, or you will get dependency warnings that are not safe to disregard and will screw up your physics.
What mass should you use for subanchor?  Rigid body physics are not real physics, and all of the mass of objects is concentrated on their origins.  That means that using very high mass values are fine, since this object isn't going to collide with anything.  However, if you use very low mass values, you will find that the point constraint will start breaking in deference to the mass of the physics object.  Default values were fine in my testing, but you may want to increase them if the point constraint starts failing.  As you increase the mass of physics, you may need to increase the mass of subanchor as well.
Here's a file.  I've created a 65 frame animation on "anchor" for you to see it in action.  I've also created a sphere (in wireframe) to give you a visual indication of the limits I've imposed, so that you can quickly see if they ever fail.

Feel free to delete the keyframes and play with animating anchor yourself.  Just be aware that if you let it loop over while you're moving anchor, you change the relationships of the rigid bodies, which are calculated at frame 1, and so that loop's physics will become invalid.


How to smooth curves in Graph Editor by Script

Basically, you have to take care of two things: first selecting the relevant bones you want to smooth and second to switch to the graph editor context. For some reason, selecting and deselecting the respective curves did not effect the operator. I rather locked the respective curves I did not want to smooth.

import bpy

# types = {'VIEW_3D', 'TIMELINE', 'GRAPH_EDITOR', 'DOPESHEET_EDITOR', 'NLA_EDITOR', 'IMAGE_EDITOR', 'SEQUENCE_EDITOR', 'CLIP_EDITOR', 'TEXT_EDITOR', 'NODE_EDITOR', 'LOGIC_EDITOR', 'PROPERTIES', 'OUTLINER', 'USER_PREFERENCES', 'INFO', 'FILE_BROWSER', 'CONSOLE'}

def smooth_curves(o):
    current_area = bpy.context.area.type
    layer = bpy.context.view_layer

    # select all (relevant) bones
    for b in o.data.bones:
        b.select = False
    o.data.bones[0].select = True
    layer.update()

    # change to graph editor
    bpy.context.area.type = "GRAPH_EDITOR"

    # lock or unlock the respective fcurves
    for fc in o.animation_data.action.fcurves:
        print(fc.data_path)
        if "location" in fc.data_path:
            fc.lock = False
        else:
            fc.lock = True

    layer.update()
    # smooth curves of all selected bones
    bpy.ops.graph.smooth()

    # switch back to original area
    bpy.context.area.type = current_area

    # deselect all (relevant) bones
    for b in o.data.bones:
        b.select = False
    layer.update()

# currently selected
o = bpy.context.object
smooth_curves(o)


I found out what I did wrong. The documentation of materials on the blender api page did not mention "get", but the bpy_struct said you can use "get" in the function, so:

mat = bpy.data.materials("Abc")

Should be:

mat = bpy.data.materials.get("Abc")

Also I have to define what scene of scene.frame_current is.
That means at the beginning, I need to import bpy.

import bpy
scene = bpy.context.scene

Also default_value is nonsense to be placed there. Being the diffuse color that's had its keyframe changed, it should be:

mat.keyframe_insert(data_path="diffuse_color", frame=scene.frame_current)

In conclusion, it should look like this:

import bpy
scene = bpy.context.scene

mat = bpy.data.materials.get("Abc")
mat.diffuse_color = (1.0,0.0,0.0)
mat.keyframe_insert(data_path="diffuse_color", frame=scene.frame_current)


How to deactivate a UI element in an add-on?

Try:

col = layout.column()
col.enabled = False
# Use col.prop, col.operator, etc. Everything you add to this column will be faded

col.active is also possible, it will grey out the column but the props will still be editable (this is probably not something you want)


How to add a distortion/roughness on a Vector axis/mask?

Building off of my answer here I add in a Noise Texture which creates the distortion.

The three selected nodes are the new ones for the distortion.

From left to right in the image below. The Z component of the normals, the Noise Texture, and the two multiplied together to make the final mask.


You have a copy of object in exact same place.

When z-buffer is same blender displays selected object on top of deselected.


If you are not interested in a perfect simulation (with wave interference, variations of the speed, true collisions...), but just a quick animation, I would give a try to the Wave modifier

Suzanne's bust is the origin of the wave. It is animated to go up an down on the Z axis. Then the modifier's wave speed and offste was tweaked to match suzanne's frequency to give the illusion that the two effects are related.

Result:


Below you find the updated remote_debugger.py which runs in Blender 2.80.

Install the add-on
Set the paths to the pydevd.py and pydevd-pycharm.egg (don't forget to save the preferences)
Configure and start the remote debug server in PyCharm
Search for the Connect to remote PyCharm debugger in the operator search using F3 or Edit > Operator Search

This works only with PyCharm Professional, the Community Edition is missing the remote debug feature.

"""
Remote debugging support.
This addon allows you to use a remote Python debugger with PyCharm, PyDev and
possibly other IDEs. As it is, without modification, it only supports PyCharm,
but it may work by pointing it at a similar egg file shipped with PyDev.
Before using, point the addon to your pydevd-pycharm.egg file in the
addon preferences screen.
For more information on how to use this addon, please read my article at
http://code.blender.org/2015/10/debugging-python-code-with-pycharm/
"""

bl_info = {
    'name': 'Remote debugger',
    'author': 'Sybren A. Stüvel and Robert Gützkow',
    'version': (0, 4),
    'blender': (2, 80, 0),
    'location': 'Press F3, search for "debugger"',
    'category': 'Development',
}

import bpy
import os.path
from bpy.types import AddonPreferences
from bpy.props import StringProperty

class DebuggerAddonPreferences(AddonPreferences):
    # this must match the addon name, use '__package__'
    # when defining this in a submodule of a python package.
    bl_idname = __name__

    eggpath: StringProperty(
        name='Path of the PyCharm egg file',
        description='Make sure you select the py3k egg',
        subtype='FILE_PATH',
        default='pydevd-pycharm.egg'
    )

    pydevpath: StringProperty(
        name='Path of the PyDev pydevd.py file',
        subtype='FILE_PATH',
        default='pydevd.py'
    )

    def draw(self, context):
        layout = self.layout
        layout.prop(self, 'pydevpath')
        layout.prop(self, 'eggpath')
        layout.label(text='Make sure you select the egg for Python 3.x: pycharm-debug-py3k.egg ')

class DEBUG_OT_connect_debugger_pycharm(bpy.types.Operator):
    bl_idname = 'debug.connect_debugger_pycharm'
    bl_label = 'Connect to remote PyCharm debugger'
    bl_description = 'Connects to a PyCharm debugger on localhost:1090'

    def execute(self, context):
        import sys

        user_preferences = context.preferences
        addon_prefs = user_preferences.addons[__name__].preferences

        eggpath = os.path.abspath(addon_prefs.eggpath)

        if not os.path.exists(eggpath):
            self.report({'ERROR'}, 'Unable to find debug egg at %r. Configure the addon properties '
                                   'in the User Preferences menu.' % eggpath)
            return {'CANCELLED'}

        if not any('pycharm-debug' in p for p in sys.path):
            sys.path.append(eggpath)

        import pydevd_pycharm
        pydevd_pycharm.settrace('localhost', port=1090, stdoutToServer=True, stderrToServer=True,
                        suspend=False)

        return {'FINISHED'}

class DEBUG_OT_connect_debugger_pydev(bpy.types.Operator):
    bl_idname = 'debug.connect_debugger_pydev'
    bl_label = 'Connect to remote PyDev debugger'
    bl_description = 'Connects to a PyDev debugger on localhost:5678'

    def execute(self, context):
        import sys

        user_preferences = context.preferences
        addon_prefs = user_preferences.addons[__name__].preferences

        pydevpath = os.path.abspath(addon_prefs.pydevpath)

        if not os.path.exists(pydevpath):
            self.report({'ERROR'}, 'Unable to find pydevd.py at %r. Configure the addon properties '
                                   'in the User Preferences menu.' % pydevpath)
            return {'CANCELLED'}

        dirname = os.path.dirname(pydevpath)
        basename = os.path.basename(dirname)
        if not any(basename in p for p in sys.path):
            sys.path.append(dirname)

        import pydevd
        pydevd.settrace('localhost', port=5678, stdoutToServer=True, stderrToServer=True,
                        suspend=False)

        return {'FINISHED'}

def register():
    bpy.utils.register_class(DEBUG_OT_connect_debugger_pycharm)
    bpy.utils.register_class(DEBUG_OT_connect_debugger_pydev)
    bpy.utils.register_class(DebuggerAddonPreferences)

def unregister():
    bpy.utils.unregister_class(DEBUG_OT_connect_debugger_pycharm)
    bpy.utils.unregister_class(DEBUG_OT_connect_debugger_pydev)
    bpy.utils.unregister_class(DebuggerAddonPreferences)

if __name__ == '__main__':
    register()


Loop cut entirely after dissolving an edge

You can not use the Loop Cut tool because you have an n-gon (face with more than 4 vertices, in your case 5) on the top.

The Loop Cut tool only works with quads (faces with 4 vertices).

First use Dissolve Edges then immediately after use Dissolve Vertices; Or update to the newest version and use Dissolve Edges and Vertices.


Does mesh size affect performance/should I make my object life-size scale?

while using real life scale, be careful, some simulations don't work all that great because of the tiny space between meshes, so if you do a sim and it feels off, that's probably why.


Why is my rendered animation different to what I see in the 3D view?

You have two UVMaps on the object where the fruits are mapped to. See this screenshot:

At the moment in the UV Maps section, UVMap_wheel02 is selected, and gets displayed in the viewport. But the other map, UVMap_wheel01, is set to be the renderable one (the camera icon behind the map indicates that). That means, if you don't manually override the UV map to be used, Cycles will pick the one which is marked as renderable, so the first one in your case. If you select the first UVMap in the editor, you see this in the viewport:

If you want to use more than one UVMap in Cycles, you can use the dedicated UVMap node to grab a map by name:

Or alternatively you can mark the UVMap_wheel02 as renderable by clicking on its camera icon in the UV Maps section.


how to stop additional bone and bone chains in the fbx file export

In the export options deselect "Add Leaf Bones" This option creates bones that are connected to the heads and tails of the bones you've created in your blender native rig.

This image shows the default options.


Using python to animate a curve FModifier

You have to specify a particular animation channel (fcurve) and a specific modifier. In this example I access the first fcurve in the fcurve list ([0]), which, because I animated the location of my object is the 'x' channel, and the first modifier ([0]) found on that fcurve:

ob = bpy.data.objects['Cube']
ob.animation_data.action.fcurves[0].modifiers[0].influence = 0

Because you have two modifiers on your fcurve it will be modifiers[1].

A good way to explore the Blender Python API is to use the 'autocomplete' feature of Blender's Python console, which allows you to type part of a command, and using the autocomplete feature, view all possible sub-modules (in green):

This may not necessarily show you exactly which option you need, but will at least list the possible options, which you can further research.

Whether your current logic will do what you want, I don't know, but this does address what seemed to be the main point of your question.