In the Properties Window > Scene > Units you can define what units your scene is in, and how dimensions are processed, although it is pretty irrelevant and won't really make any difference.

Then in the 3D view you can press the N button to open the Properties Region, there you have the Transform Panel where you can see the real dimensions of an object.

If you edit it don't forget to apply the scale to the object with Ctrl + A, so you are always working with evenly scaled objects and don't get unexpected results in Edit Mode.

Lastly in Edit Mode, under the Properties Region there will be a panel available called Mesh Display.
There you can turn on Edge Length option, so you can see the dimensions of your mesh.

You can also use Snap to Increment with the Absolute Grid Alignement option turned on to stick to an orthogonal worldspace grid.


how to generate rig without facial bones?

I could generate rig by following the process below.
first,duplicate the bone which had links to deleted bones.
then delete the original one, and rename the new one to be same name with old one.


Camera Properties > Lens > Clip End 100 change to above 120 m.

Your Camera is clipped in view. You can see Start-End clipping by enabling Camera Properties > Viewport Display > Limits


How can I get the "strip input" toolbar in the Movie Clip Editor?

You need to update to 2.82a: https://www.blender.org/download/
In the View Menu you'll find it:

For making the video fit the preview area, use this:


Mesh visible on object mode, invisible in edit mode

The crystal mesh is there, but because it's position depends on the armature modifier and the object controlling it, the crystal shows in it's original place when viewed in edit mode.

If you enable the modifier in edit mode you should be able to see and edit your object normally.

EDIT

As for transparency, you have not enabled any transparency on the texture or the material:


I accidentally dragged the timeline, and now it covers the entire screen. how do i put it back?

You can just change the Editor Type.
Or, if you want more editors side by side, drag the tiny corner to split the area.

Change the editor type or split the area.


Rebuilding checkbox indicators as in quick favourites

Feeling qualified to answer this by myself:

Inside the draw() method of the menu class, the self.layout.prop() method can to be used to access a property and automatically draw the desired checkbox:

class MyMenu(bpy.types.Menu):

    bl_idname = "OBJECT_MT_my_menu"
    bl_label = "My Menu"

    def draw(self, context):
        self.layout.prop(view3d_overlay, "show_bones", text="Toggle Bones")


How to paint vertex alpha in the new version for unity?

Are you using the latest 2.79? (if not 2.8)
https://forums.unrealengine.com/development-discussion/content-creation/1513940-blender-2-79c-finally-supports-the-vertex-paint-alpha-channel


The biggest thing missing in your screenshot is transparency.
To achieve this you probably want connect up the hair texture alpha channel to the alpha channel of your diffuse texture (I am assuming this is where it is stored, otherwise you may need an extra texture from somehere). Additionally, if you are using Eevee, you will also need the set the blend mode to Alpha Hashed in the material settings.
You may find this answer useful:
How can I make an image plane have transparency in Eevee with nodes?
And as @ChristopherBennett mentioned in the comments, you shpuld set your normal map strength to 1.


How to make an exact loop cut on an oblique edge?

Problem solved:

Subdivide edge one time.
With Edit Mesh Tools add-on set edge length (before this you need to apply scale by Ctrl+A> Apply> Apply all transforms or (in 3d Viewport) Object> Apply> Apply all transforms).
Switch to any orthographic view (top, bottom, left or other) and extrude vertex by pressing Ctrl and enabled (in 3d Viewport in Edit Mode) Options> Auto Merge> Split Edges and faces (on top).
Do this with all sides, removing duplicates if needed. You can check edge length by using Overlays> Measurement> Edge Length (in the 3D Viewport).

You can do the same thing with the Knife tool, but the Knife won't work in all situations.
Also, one of the ways:
Bevel edges with settings: segments - 2, profile - 1. Bevel has differrent modes (Offset, Width and other), we need Offset. For bevel modifier you can do vertex groups where you need and bevel just them.


There is no harm in trying out 2.81 and exploring Blender.
If you are new to Blender, go to page 4 for the playlists of tutorials, which I consider the BEST for absolute beginners.
Blender Tutorials scrapbook

Some addons or plugins get regularly updated. I have two versions of Blender on my PC: 2.79 and 2.8. I just changed the name of folder containing 2.79b files, before downloading 2.8, as I wanted to keep 2.79b because of old addons and Blend files.


Is there any difference in mesh generated by Bool Tool addon vs default Boolean modifier?

I don't think it makes any difference, BoolTool is just an addon that makes booleans easier to use, for example it makes the boolean object transparent without the need to go into its display options. Apart from that it creates a classic Boolean modifier.


There is an addon that provides similar functionality to what you described called Mira Tools by Paul Geraskin, here is a Video demonstrating how it works. You can get the addon from Github


Is there a more accurate way of knowing which vertice are affected by proportional editing?

This script / addon may help. It simply selects the vertices impacted by the proportional editing, starting from the current selection.

Once visualized, you can Ctrl+Z to come back to your current selection.

bl_info = {
    "name": "Select proportional editing impact",
    "author": "lemon acidjuice",
    "version": (1, 0),
    "blender": (2, 77, 1),
    "location": "View3D > Select > Edit mesh > Select proportional editing",
    "description": "Selects vertices influenced by proportional editing",
    "warning": "",
    "wiki_url": "",
    "category": "3D View",
    }

import bpy
from bpy.types import Operator

def Influenced( u, selected, size2 ):
    for s in selected:
        if (s.co - u.co).length_squared <= size2:
            return True
    return False

class EDIT_MESH_select_proportional(Operator):
    """Select proportional editing impact"""
    bl_idname = "editmesh.select_proportional"
    bl_label = "Select vertices influenced by proportional editing"
    bl_options = {'REGISTER', 'UNDO'}

    def execute(self, context):
        scene = context.scene
        obj = context.active_object

        size = scene.tool_settings.proportional_size
        size2 = size * size

        mode = bpy.context.active_object.mode
        bpy.ops.object.mode_set(mode='OBJECT')

        selected = [v for v in obj.data.vertices if v.select]
        unselected = [v for v in obj.data.vertices if not v.select]

        for u in unselected:
            u.select = Influenced( u, selected, size2 )

        bpy.ops.object.mode_set(mode=mode)

        bpy.context.scene.update()

        return {'FINISHED'}

# Registration

def add_select_menu(self, context):
    return self.layout.operator( EDIT_MESH_select_proportional.bl_idname )

def register():
    bpy.types.VIEW3D_MT_select_edit_mesh.prepend(add_select_menu)
    bpy.utils.register_class(EDIT_MESH_select_proportional)

def unregister():
    bpy.types.VIEW3D_MT_select_edit_mesh.remove(add_select_menu)
    bpy.utils.unregister_class(EDIT_MESH_select_proportional)

if __name__ == "__main__":
    register()


Why isn't 'Inset with individual origins' working?

With some faces selected in Edit Mode press I to create insets, the status bar changes and displays that you need to press I again.

What you show in the animation is changing the pivot point to individual origins which does not affect the inset operator.


Knee deforming when applying armature to character

I am not an expert myself, but I guess aligning both x normals to the outside should do the trick.

Hope this works out.


Unwrap final geometry, or split faces, or mark additional seams

You are unwrapped a model, which means to assign to evry face (5 in your case) a portion of the UV space.

By beveling the edges, your geometry doesn't have still 5 faces, but a bit more. The UV informations about those new faces are coming from an interpolations of the previous faces UV, so it may happen that not all of them are corrects (expecially when your UV is made by disjoined pieces) as in you case:

In addition your geometry has some caharecteristics that make the effect come out. If it has been more compact on the X axis you would not have such distortion.

Solutions:

1) Apply all modifers ( or converto to mesh your mesh... with Alt+C, or at least the ones that have more impact on the geometry, and THAN unwrap your geometry (Suggested if suitable)

2) If you need to keep the modifiers in your workflow you can try to disconnect the triangular faces. With vertex disjoined there will surely be no wrong interpolation between the triangular faces and the others (but you have to add additional vertex bevel modifiers to smooth the spikes..)

3) Mark all edge as seams. In this way Blender will consider each face separately and it will not occour unexpected interpolation and your topology will remain clean. Anyway your UVs islands may result slightely overlapped or disjoined, so you'll have to re-unwrap in anycase, but at least you can "preview" the UV correctly without applying modifiers.


2.8 Toggle the display of objects as a box of their extents?

To change the same attribute on multiple objects at the same time:

Select all objects
Hover your mouse-pointer over the attribute you want to change
Hold Alt and either enter the new value by selecting from a list like this:

(shown here is the UI of Blender 2.90, but it works the same in older versions.)
Or in other cases with values, click in the field and enter a new value.

After the list was opened with Alt held, or a value selected also while Alt was held, the attribute will be changed for all currently selected objects. This will though not work if you have different types of objects selected that do not share the attribute you want to change, like a few Cubes and a Light for example.

Happy Blending


How to limit holdout to one or more objects?

Using view layers:

Setup your scene with 3 collections:

One for the objects that won't be masked

One for the objects to mask

One for the holdout object

Then create a layer for the "no hold out":

No hold out collection is rendered

Holdout collection is indirect only

Holdout object is disabled

And a layer for the hold out:

No holdout part is indirect only

Holdout part is rendered.

In the compositor:

The hold out layer is alpha over for either alpha parts of the holdout layer or for the parts where holdout depth is greater than the no holdout one.
All is rendered with a transparent film.


How do I fix - "CUDA error : Launch failed in cuCtxSynchronize()" and "cuCtxCreate: Launch failed" in cycles

I did update my driver for my GTX660 to version 373.06. The only problem is that blender do have stability issues now but GPU rending do work.


Whatever I do in Pose Mode of my Rig, Tail of the Rig goes crazy

There is a Parenting loop.
What is happening is the green bone at the very top of your tail is copying the rotation of a bone that is parented to it (I cannot find it for some reason) this bone is called tail control. When your tail bone rotates, it rotates the control bone, which rotates the parent bone, which rotates the control bone, and so on.
What fixes the problem is simply remove the bone constraint from the green bone. If you still want to keep the copy rotation, just add a bone into your scene, press alt+p to remove parent, and use the new bone you created.


Bool Tool Addon (fast enabled)
⎈ Ctrl⇧ Shift+ after separating cubes using P> by loose parts in edit mode.


loop cut and slide to all edges selects?

Another way of cuts:D

select edge ring.
subdivide it and choose the number of cuts.


You must have accidentally pressed H (hide), it has hidden the last extrusion, and when you try to do a new extrusion, as one already exists, it just creates a single vertex. So try to press altH.


I had a similar issue.  I had to fix it with nodes.  Here's a screenshot showing how I did it.

After a log of experimenting, I found I had to add in a transparent BSDF into a mix shader with the Fac of the mix shader being the alpha color.

In the pic, the lower texture coordinate group did the trick for me.

If it doesn't work, let me know and I'll be glad to help.


Grease Pencil - broken lines that should be smooth

I believe your problem is related to a GPU / Driver issue.  I am seeing the same thing you are seeing on a Mac with an ATI graphics card.  If I save my blend file and open it on a different Mac with an Nvidia graphics card the lines are no longer jagged / pixelated.  Check out this link for more information:  Weird artifacts with Grease Pencil V2

I have not yet found a work-around for this problem, other than to render the final image/sequence on a computer with an Nvidia card.


Mirrored bones and IKs, ends up doing opposite rotations for no reason

Object>Apply>All transforms to deltas. Check that first. Then check you are mirroring accordingly in EDIT mode of the armature (check the wrench icon property tab to the left of the screen) and/or the tool's settings on the top bar in the viewport. Mark the correct axis.


How to achieve screen tearing effect or video glitches

This can be done in compositing with a displace node driven by a texture.

1st, let's see the basics.
In the node editor, select compositing and backdrop.

Now add a displace node (shift+A to open the menu or click "add")

link it to the image and to a viewer node (Ctrl+Shift+Click on the displace node) and you can move the image on X and/or Y with the X/Y scale values. Nothing really interesting yet.

Now we want to control where this effect will affect the image. This can be done with a texture.

In the properties panel, go to texture tab and click "new"

change the type to blend

and the blend to vertical

Now back in compositing, add an input/texture node and choose your blend texture

The outputs are Value and Color. Value is the alpha, color is...the color :)
Now plug the color output to displace's X Scale intput. You'll se a very small effect.

We now need to control the power of the effect.
Add a Converter/math node and change it to multiply. Connect the Texture-Color output to the 1st math input and the math output to Diplace-X Scale. Change the math value to 20 and you'll see something like that.

Some explainations :
The texture is black in the bottom, white in the top. Black means no effect, white means full effect (from 0 to 1). AFAIK, 1 is a 1 pixel displacement so the math node multiplies this by 20, what means 20 pixels.

Now let's play with the texture.
go back to the properties panel in texture tab. In color, check Ramp.

also chage the interpolation to constant (allows TV line/pixel effect).

We won't use alpha, all we will change here is the BW value of the colors and add/move color stops (with the "+" above the ramp). Let's do something like this :

and see the effect

This is what we want : we can displace some parts of the image (controled by the texture) and change the power of the effect with the math node (0=no effect, can also be negative). The the value in the math node can be animated.

This is the basic. We can do something more interesting.
1st, let's correct the hole created with the displace.
Add a Color/mix node, click use alpha and plug the displace output to the 2nd color input of the mix node. The 1st color input can be any color you want, or a texture/image and will replace the holes alpha.

As this is a bit long and the basics are covered and (hopefully) understood, let's see how we can achieve the effect on RGB. We could use 3 different textures but we'll do this with 1, controling the displacement of each color.
Go back to the properties/texture tab. The texture will now use RGB values to control the image RGB displacement.

Add as many color stops as you want, change their R G B values. I'll use this :

Back in compositing, we need to separate RGB colors from the image AND the texture, use the texture's RGB to control displace of each image channel and combine them back. This is the complete node setup :

The math value can be changed/animated separately or you can plug an Input/value node to control them all.
You can also use 2 (or more) textures with separate displaces and animate a color mix node to control wich one is used.
You can use the texture's alpha to control another displace plugged to Y Scale.


Blender material issue while snapping two objects snaps together

I think there are two reasons here for discontinuous smooth shading.

The normals are flipped on the right half ... CtrlF > F, Flip normals
The normals haven't got anything to interpolate to over the edges of the hemispheres.

To fix (2), retain an intact version of the sphere as a form, same topology, same location, and transfer the normals from it to the 2 halves, by giving them  Data Transfer modifiers, with the intact sphere as target, and the settings shown. You will have to set 'Autosmooth' on the hemispheres in their data tabs.


Blender let's us animate almost any value that we can alter. To get the results you want, you need to animate the values that change the effect you want.

To keyframe a value, go to the frame you want to set the value and with the mouse over the value press I or right click and choose Insert Keyframe. The value will get shaded in yellow to indicate the value is keyframed on the current frame or green to indicate it is keyed on another frame.

At frame 19 keyframe smoke density at 1.0 and keyframe flame rate as 0.0.

At frame 20 set density to 0.0 and flame rate to 2.0 and keyframe both.

Re-bake the simulation.

Now you only get smoke until frame 20 when you start getting flames. Keyframe other values to get the variations you want at various times. Note that for the simulation, you need to allow a few frames for the smoke/fire to disperse as it doesn't just disappear when you turn it off, you only turn off the smoke/fire being emitted.


How to get camera matrix frame by frame in animation?

import bpy
import os

scn = bpy.context.scene

for f in range(scn.frame_start, scn.frame_end + 1, scn.frame_step):

    # go to frame f
    scn.frame_set(f)

    # output the camera matrix on the current frame
    mat = scn.camera.matrix_world
    print(mat)

    # set the filepath
    scn.render.filepath = os.path.join("C:/my/path/to/file/basename", str(f).zfill(4)

    # render the current frame
    bpy.ops.render.render(write_still=True)


I've done.

Youtube:

First of all - seems that rigid bodies aren't working with armature-deformed meshes directly. But with some intermediate objects it is possible to make them. I made the chain: rigid proxy object ("fake tip") and ball constrainted by empty ("joint"), this empty is child of "fake tip", "fake tip" is child of last bone in armature. Also armature constrainted with IK and deforms mesh ("tentacle").

Looks like you have to place additional rigid proxy objects for every bone where could be collision with other rigid bodies.

I made some different attempts with different combinations and only this one works for me. But hope somebody could make it simplier.

Added some screenshot:


Yes, you can do that, by creating a floor marker and using a shrinkwrap constraint to raise it up the level of any bumps:

The wheel's armature has a wheel parent, an axle, and a floor bone.  Both the axle and the floor are parented to the wheel parent.

The floor bone is raised to the level of the mesh by a shrinkwrap constraint, as pictured.  (Not lowered, but you can build that in with a second constraint if you want.)  The axle has a floor constraint (with offset) targeting the floor bone.  As the wheel parent moves over a bump, the floor bone raises to the level of the bump, which raises the floored axle bone.


Freestyle is not exporting with the object

As mentioned in the comments the cartoon-style black outline is an image only effect done internally in post production over the rendered image, it does not affect the model nor is it part of the geometry, there fore it cannot be exported in any file format other than a rendered image, or at best as an SVG vector file (using the Freestyle SVG Exporter addon), you can then place over your image.

Where are you exporting your model in COLLADA too? Some Game engine? Other modelling application? You will most likely need to recreate the outline effect there in the destination software.

Otherwise if you actually want to have it in-model with actual geometry there are a few other options.

Either us a wireframe modifier over your objects to construct a cage-like structure over you mesh
Use a Bevel modifier on your mesh with a material index offset

Manually bevel your geometry and assign different materials
UV Unwrap your model and use an image texture, created in an external image editing software with the desired black edges in the correct places along the edges.


Are there any other script delays besides sleep?

Blender doesn't crash and you don't use it wrong. Because the BGE has only one thread you stop it for x seconds. So never use time.sleep(x) in BGE. What you can do instead is using a delay sensor, timer property or a variable that increments every frame. Here's an example for the last option that's probably the easiest one to do (taken from this thread from Blenderartists):

obj = cont.owner

if not 'init' in obj:
    obj['init'] = 1
    obj['timer'] = 0.0

obj['timer'] += 1.0 / logic.getLogicTicRate()

if obj['timer'] > 10: # 10 seconds
    #Do something

It basically just creates a property in your object and increases it every time the script is executed. If your script is executed every logic tick the property will count in seconds.

But you need to keep in mind that since you don't stop your script as it is but it starts over from the start every time it's called, all your variables defined like var = None will be gone (or have a new value). Meaning that if you have any variables you still need after delaying the script you'll have to store it either in your object (obj['var'] = None) or in the globalDict (bge.logic.globalDict['var'] = None).

The way you want it is that the script gets activated by a sensor and waits for a rotation to finish to apply a movement. What you can do is executing the script over and over again until then time is up and the executing the remaining part. And that's quite simple. Just add a property to your object (for example a property called execute). I guess the boolean type would fit the best for that so we'll use that one. Then add a property sensor, select your property, use the value True and activate True Level Triggering. Now the script gets executed when either the collision sensor or the property sensor or both are true. Now the property execute still needs to be controlled from the script. Therefore the lines obj['execute'] = True and obj['execute'] = True are needed. And the property obj['timer'] needs a reset after it's over 10 (in the example script) as well. obj['timer'] = 0.0 does the trick. And don't forget to import the logic module. Otherwise it's undefined and you'll get errors.

That's the full script:

from bge import logic
    obj = cont.owner

    if not 'init' in obj:
        obj['init'] = 1
        obj['timer'] = 0.0

    obj['timer'] += 1.0 / logic.getLogicTicRate()
    obj['execute'] = True # due to this the property sensor gets activated every logic tick and the script gets executed every logic tick.

    if obj['timer'] > 10: # 10 seconds
        obj['execute'] = False # now it doesn't get executed every logic tick
        obj['timer'] = 0.0 # reset the timer so that it can be used again
        #Do something

And here's the described logic brick setup:


Particle emission begins from the frame I start rendering from, not the frame it should begin from?

So I've discovered what causes this. When you're animated from a frame that isn't frame 1, in the timeline you have to make sure you're current time point is on frame 1. If you have the frame you're rendering from as your time point then it begins particle emission from that frame hence a few frames of no emission.


Marking seams is the right way to do it. It got split into three pieces because you marked TOO MANY seams. Think of the model as a paper box that you have to unfold flat. ONLY mark the seams where you'd have to make cuts in order to lay the box flat. Don't mark seams all the way around.

Even still, it might not unwrap straight. You may still have to tweak it a little, but that's why nobody likes UVs ;-) Your most useful tool in this case will be scale.
Select a horizontal line of UVs, then type S > Y > 0. That will scale them flat along the Y-axis, making them perfectly horizontal. Then you you can move them up or down. It's tedious, but that's the way it's done.


how to move multiple objects into the centre of a circle

My apologies for the fast gifs, but one way since the spokes are separate objects is to create one and offset it's Y axis if you need to (but you don't have to).

Then set the cursor to a center point in object mode and rotate the objects around it (alt + d).

Select one object and go into edit mode. Select the tip of the spoke and drag using the Y axis. It will maintain it's size and go towards the center.

Then you can make the objects one object (ctrl + j).

EDIT: Just found an even faster way if all objects are combined and you're selecting ONLY the edges...
Simply:  (Alt + s)


Adaptive Subdivision eating RAM incorrectly? Fails all GPU renders regardless of settings

Finally figured out what has been going on.
For some reason Blender is coded to stack the Standard Subdivision settings ONTOP of the Adaptive Subdivision. So if you uncheck Adaptive Subdivision, and have any subdivisions in the Render Subdivision settings, those subdivs are added along with the adaptive ones.
Set original subdivision settings to 0 before checking Adaptive and it seems to work as expected.
This definitely does not feel intended, and is super unclear for the user.
Hope this helps someone else.


You might look at the cycles material car thread on Blenderartists and see if you can adapt soe of the materials from there - then you could just assign as needed to parts of the mesh directly, or use a black and white image uv mapped to the mesh as a stencil between node trees, combining materials into one tree. https://blenderartists.org/t/car-paint-materials-iridescent-layers-carbon-fiber-leather/536803/108?u=craig_jones


CUDA ERROR: Launch failed in cuCtxSynchronize()” and “cuCtxCreate: Launch failed” when Rendering in Cycles using GPU

Bumped into the same error once.

Found following thread at developers forum:

  Then it occurred to me that the Gforce Experience runs in the background (and being in my opinion, not a well written program) may be overlapping the memory of Blender or at least hogging the memory. So I un-installed it and magic! All Cuda errors and memory errors went away. Blender works again as it should!


How to unfold mesh with a principled BSDF material onto a flat object in 2.8?

Add an image texture node
Click on new on it and create a picture file, this node must be active (select it)
Switch to Cycles render
Decrease the render sampling to 1
Select diffuse in the Bake tab and select only Color for the influence
Click on Bake then save the baked picture


How to attach parts of one model to another

In your case you can delete a lot of useless edge loops on your foot, you'll have the amount of vertices that will allow you to make the joint with your leg. As long as you choose the good edges it won't affect the shape of your foot. To do so you'll have to dissolve some edges, use the knife to create some edges between vertices, and at last merge the vertices of foot and leg. And don't forget to delete the face on the bottom of your leg.


You shouldn't have the wood image texture selected, when you do that a circular dependency is created, since you are trying to read the wood texture for use in baking and write to it at the same time. In fact, Blender warns you about this in the title bar:

What you should do is create another empty texture and select it to bake the texture onto:


How to save multiple blender scripts (text-files) at once?

Pathlib

Here is a script that writes all text files in blend with suffix .py to a designated folder.

IMO there is no need to timestamp a file name, since it is given a date when written to or touched.  Timestamp a containing folder name if need be.

import bpy
from pathlib import Path

destination_folder = "/tmp/texts"
df = Path(destination_folder)

#create if doesn't exist
if not df.exists():
    df.mkdir(parents=True, exist_ok=True)

for text in bpy.data.texts:
    p = df / text.name
    if p.suffix == ".py":
        p.write_text(text.as_string())

On getting the path from the blend file name

>>> bpy.data.filepath
'/home/batfinger/Documents/blender/tests/snurf.blend'

>>> Path(bpy.data.filepath)
PosixPath('/home/batfinger/Documents/blender/tests/snurf.blend')

>>> bp = Path(bpy.data.filepath)

>>> bp.stem
'snurf'

If the file is new and has not been saved the datapath will be "". The folder will revert to the base path blender was started from. In my case blender was launched from the terminal in the folder "foo".

>>> dp = Path('')
>>> dp
PosixPath('.')

>>> dp.absolute()
PosixPath('/home/batfinger/foo')


How do you use an F-Curve with negative values?

Do you mean, you want the driven property to range from a value of 0 to 1, as the driving property ranges from a value of -2.7 to -1.7?

What we're saying is, we want a function [f(x)=y] where f(-2.7)=0 and f(-1.7)=1.  F-curves are function curves.  The X and Y are what we want to see on our graph-- points with those X,Y coordinates.
If you look on the sidebar, you can see that the control point I have selected has some fields for manual entry.  For this particular control point, it has a value of 0, at a keyframe of -1.7.  The other one, naturally, has a value of 1 at a keyframe of -2.7.
You can select a control and manually enter these numbers if you'd like.  That's what I did.
If editing these manually ever screws up your handles, and you want it back to being a linear function like I have here, you can select all your controls in the graph editor and use set handle keyframe type ('v' for me) -> vector, which points the handles at the adjacent controls.
Note that in 2.91.0, when you edit a control point to cross another control point (in the x axis), the fcurve re-orders the points, and you lose active selection of the control.  It's fine, you just need to reselect.


How do I flip an animation pose without having my character walk backwards?

You want him to walk obliquely but it's not the right way to do it as all mirror will stay in the X or Z axis, you must create your walk cycle in Pose mode orthogonally to the grid THEN switch to Object mode and rotate it 45°.

You must keep in mind that, when you mirror a pose, it will be RELATIVE TO THE LOCAL AXIS OF THE OBJECT, so if you rotate your armature 45° in Pose mode instead of Object mode, the armature is 45° rotated but the local axis is still orthogonal to the grid and will act this way for whatever mirror you'll do. If you want to rotate the Local axis you need to do it in Object mode.

If you have secondary animations, like the head rotating, you can either do it after the rotation in Object mode OR do a second animation, the head rotation, and use the NLA to add it to the walk.

I would redo it from scratch: Close the action in the Action Editor (X button), in Pose mode select all the bones and reset the pose with alt R, alt S, alt G, in Object mode select your armature and rotate it 90° on the Z axis so that you can see its right profile in Front Ortho view, then back in Pose mode and begin with the first pose of your walk cycle.

Also, your foot is strangely set, in Edit mode I would delete the constraint, parent (Keep Offset mode) with the legIK controllers and also in Properties > Bone > Relations, enable Inherit Rotation.

If you want your character to walk sideways you have to rotate your character in Object mode, not in Pose mode


Use the Spin tool.

Create 1/5 of the chair base then move the 2D cursor to the center of the chair.

The 2D cursor will be the center of the Spin.

In Top view select the 1/5 chair base and then use the spin tool to create the other legs.

Use the Spin settings as shown in the screenshot below.


I just made an example.

Bind each half loop to each control bone;
Add a bone constraint called Copy Rotation to each bone except the outermost one, set all target as the outmost bone (the longest one in the image below), adjust the Influence value for each degressively.
After that, you can control the open/close action simply by just tweaking the outermost bone.


That action is dependent on having the Node Wrangler Add-on enabled. Go into User Preferences > Add-ons and enable it.


VSE: Use png images in one channel as alpha mask for another channel

I agree that it is a bit hidden.

I have three strips here, a blue one which serves as the background, an orange one as foreground and the black and white at the bottom to use as alpha channel.

The orange strip on top is supposed to get the mask. In order to do that, it needs a Mask Modifier with the Black & white strip as its source.

After that, simply select 'Alpha Over' as the blend type for the top strip.

The alpha mask:

What you get with the default blend type (Cross):

The finished result:


Hold ⇧ Shift MMB and drag the mouse to pan Blender 2.8 Release Candidate.


Tricky Bevel - How to get better bevels?

Here is a try for this kind of topology, perhaps not a perfect topology but it works:

The initial shape is rather easy to make from a plane, with some bevels and extrusions.
But when you add and apply a Bevel modifier (Angle mode) it begins to mess up on some parts.
You have to rework manually these parts with tris.
Now it looks better, give it a Subsurf modifier and a Smooth Shading.


Can't find Weight / Assign controls for Vertex Group

To be able to assign vertices to vertex groups, you need to be in EDIT mode


What a great question! It was actually surprisingly simple to make.
The texture:
I started by modeling a few snowflakes, and then used them as the display objects for a particle system. I then rendered out one frame with the screen covered nicely in snow:

Using the texture:
I then took that texture, and put it on a large transparent plane. The texture repeats way more than any normal should, but in this case it turned out fine. This plane is the most important part, and the settings are kind of hard to get right.

First, the face orientation must be set to Halo. This will make the plane track (along it's local X axis) to the player's camera. Second (but probably more importantly) the face's normal must be aligned to the object's local X axis so that it will face the camera correctly.
Now, regardless of the object's position or rotation, (because it only has one face with these settings) the face will always appear to the camera as if it were straight on.
The texture for this plane is a simple transparent texture. The Material's Z Transparency has an alpha of 0, and the texture's alpha influences the texture's transparency 100%. In this case, I have the snow texture influencing the material's color 10%, so that the base white color of the material is mostly used.
The physics settings and logic for this object is very simple. Physics type of no collision. Logic: Always - And - Motion (negative along the Z)

The snow plane is now done! if we press play, it should drop slowly, while facing the camera at all times.
The Empties to drop the plane
Now that we have a nice large snow plane, we can drop a few of them into the scene. We will basically be building a pseudo particle system, except that each particle has many, many flakes, instead of each particle being a single snowflake. (This is FAR less computationally expensive)
Now - we will need a few empties to periodically drop the snow planes. Use more empties packed closer together for more dense snowfall, fewer empties scattered further apart for less snowfall.

The empties have super simple logic: Random - And - Add Object (the snow plane.) Depending on how high up your empties are, you'll need a longer time for the snow to fall before being removed. There should be a long enough delay for the snow to fall entirely below the ground plane, as it looks really bad having snow falling from the sky and vanishing near the ground. While the difference is hardly noticeable, it helps to set a different seed for each empty, to make the randomness a little bit more random.
Positioning the Empties
These empties don't need to be scattered over the entire scene - that would waste computational power. It is enough to have the empties just above the character. Enter edit mode on your charter, and add a vertex at the character's object origin. Then, vertex parent all the empties to that vertex. (In this case to do a vertex parent, select the empties you want to parent, then select the object. Enter edit mode on that object. Select that one vertex, Press Ctrl + P, and click "vertex parent" Now, regardless of the character's location or rotation, the empties will stay in a fixed position relative to the character. If your character's physics type is set to dynamic or character, and there is no way it will ever rotate other than along the Z-axis, you can just use a normal parent for the empties.
The World Itself
You'll need fog set just right to make this effect go from nice to AWESOME. In this scene the following settings work, but depending on how dense you want to make your snowfall, you may want to tweak the fog settings to create the desired amount of visibility.

Of course, you'll also need a nice snow texture for the ground. It is kind of hard to get a good texture for this - I'm using a texture of ice to partially influence the material's color. This same texture controls the bump map.
I have a sky texture with the mapping set to reflection, also partially influencing the material's color.
All the important settings for the material:

And the snow plane in the scene:

Add in the snow, falling from a bunch of empties in the sky:

This is the very same method that was used to create the scene in the question. Settings are slightly different from those used in the following scene. To make lower visibility, make the fog end closer to the camera, and make the snow more dense:
Finished Scene

When combined with some wonderful explosions, the environment becomes Amazing.


Select box selects just one of multiple overlaping vertexes

Toggle X-Ray

In the 3D view header, check Toggle X-Ray (or press Alt+Z). You can now select the vertices sharing the same coordinates, but also the "backfacing" vertices (those hidden by the mesh).

Merge vertices

If you really want to merge those vertices (so your 5 independent vertices become one unique vertex), you can use the Merge by Distance feature.

Select all your vertices (A), then go to Vertex/Merge vertices/By Distance (or press Alt+M). In the Last Operator menu, you can specify the distance under which the vertices will be merged.


The answer in comments is what you need, but it is related to color and not coordinate space.  I usually do something like this:


Missing objects from old Blender in 2.8 (hidden in 2.79b and lost in 2.8)

Ok.. yeah... something new... thx @rjg to pointing into the right direction...

The restriction toggle let's me enable or disable single objects from the viewport - which has nothing to do with the objects visibility!

Turing the restriction thing on I was able to enable the object in the viewport:

I find it rather confusing that hidden objects (=visibilty!) in 2.79b become disabled (and NOT hidden) by opening in 2.8.  I would expect that a hidden object in 2.79 will be hidden in 2.8 and not disabled...

But great - something important learned about the switch from 2.7 to 2.8...


I would say the best thing you could do would be to decrease the amount of subdivisions on faces which are less likely to be seen, So for instance the chain, yes they play a valuable role in telling the story of the tank but when a texture is added you don't need as many faces.

So just think of spaces that people wont be able to see. Like the back part and the inside or even underneath it. But great bloody Model mate, I can see you like Battlefield 1.

Also for the pins/bolts/rivets along the tank, are they spheres? If so change them to Hemisphere's.


Do nodes in EEVEE work the same as in Cycles?

Eeevee uses the same node structure as Cycles, and its aim is to make its materials as consistent as possible with Cycles materials. Ideally, you should be able to preview the result of your Cycles node structure by switching to Eevee or by using the Eevee-powered "Material Preview" viewport directly.

This already works almost perfectly with the nowadays very common PBR texturing workflow that uses the Principled Shader and color/roughness/normal/displacement textures.

Here's an example material with Mix shaders, Fresnel inputs, Noise textures, Bump vector nodes, etc.: they all work in both engines and you can hardly see the difference in the final result.

Note: the wowen material in the rest of the monkey head is "Weavr" from Simon Thommes, which is also surprisingly consistent among render engines, despite it being quite complex.

However, not every node is present or is fully featured in both renderers equally. This goes both ways: the Shader to RGB node for non photo-realistic (NPR) renders is EEVEE only, as well as the Specular BSDF.

Anisotropic, Holdout, Toon, Velvet, Hair and Principled Hair shaders only work with Cycles, as well as several input nodes: e.g. Particle Info, Bevel.

This list may change: see "Node Support" in the Manual for detailed and updated information.

Note that you can have different "Material Output" nodes, one for each render engine, in the same material, in case you would like to tweak the materials independently (e.g. to make use of Cycles-only features in Cycles while faking them somehow in Eevee)


Get anti-aliased depth map in cycles render

You can easily extend the mist pass again.

  When measuring pixel values with ⎈ Ctrl LMB, be sure to set the display color color management to None otherwise your values will not be read linear.

Define an infinity limit, a value which is the maximum distance from the camera. Infinity will assume this value as well, objects beyond will clamp to this value. I used 1000. Set the mist depth to this value.
Set the mist start to 0.

Render a separate mist pass.

In Compositing:

Invert the Mist pass (1 - Mist).
Multiply it with the depth limit.

Remember to save as an .exr to retain values > 1.


How do I darken shadows from a shadow catcher in the compositor?

I would say, you should affect Alpha channel not the RGB values for correct result.

connect EXR alpha channel to RGB Curve node
to combine image and alpha channel back add Set Alpha node

RGB channels of Shadow Catcher probably does not contain any information at all.
Note: for images like PNG (without separate alpha channel listed) you can use Separate RGB node.


Python API: Custom properties for vertices/edges/faces?

Only objects which are derived from bpy.types.ID support custom properties. These subclasses are listed here: API docs - bpy.types.ID. You access them via bpy.data.

Additionally, Bone and PoseBone objects support custom properties as well: API docs - bpy.props.

The standard API does not support custom data for geometry elements (bpy).The BMesh Module  (bmesh) does however.

Note that custom data layers are rather slow when utilized with Python.

Keep in mind the "propagation" of custom data, the attributes are copied on operations like extrusion - hence, you can't really use it to give each vert / edge / face a unique number for instance.

See also:

Python: assign custom tag to vertices
API Docs - Custom data access


Not sure this question is really suited here, but well…

 x = 0
 y = 0
 for row in range(rows):
     x = x + scene.formationArrayColumnMargin
     for ag in range(int(agentsPerRow)):
         y = y + scene.formationArrayRowMargin

y must be reset to zero each time you run outer x loop, otherwise it keeps growing. Something like that:

x = 0
for row in range(rows):
    y = 0
    x = x + scene.formationArrayColumnMargin
    for ag in range(int(agentsPerRow)):
        y = y + scene.formationArrayRowMargin


How to transform a mesh with many objects?

Hook and Vertex Parent.

Triangle in edit mode.

Select each vert, hit CtrlH and choose add new hook.  This creates an empty at the vert.

Repeat for other two verts.

For each empty,

Select empty, Shift select cube to parent to.
Go into edit mode, select one, two or three vertices then CtrlP To make vertex parent.

Note could cut out the "middle man" empty and hook directly to cubes.


Stabilize a video using only one tracking piont

Use Tripod tracking instead and this will solve without 3D reconstruction. Also send the tracker to 2D Stabilization, it is located in the Movie Clip editor's Properties panel (n-key). Now you will have a motion vector based on a single tracker.


When I rendered my model with Cycles, it seemed to flatten out

Is this the issue you have mentioned?

A flat shaded model without shadows as shown in the image below.

Check your "Ambient Occlusion" option under the tab "World". If you have set its "Factor" value to a higher value like "1" you will face this issue.

Try unchecking the Ambient Occlusion option or turn the factor value down to a smaller value like 0.05 or so as required. This might help resolve the issue.

Furthermore, darken the background color towards black, otherwise the model receive equal amount of background light from all angles.

Use multiple (about 3 different) smaller stronger lamps opposed to a large lamp. A large lamp will generate soft shadow and large widely distributed highlights. Small lamps generate well defined falloffs and concentrated highlights.


Set up your bone chain with a spline IK, which is a different bone constraint than the standard IK. In Object Mode, create a path with Add > Curve > Path. Adjust it in Edit Mode to take the shape you want. Return to Object Mode and select your bone chain, then switch to Pose Mode. Go to the Bone Constraints Tab in the Properties Panel to create a Spline IK constraint. Give it the curve path you already created as its target. Provide the maximum number of bones to be effected, which presumably, is all of them in your case. After doing this, you can manipulate your bone chain by moving the control points of the path curve while in Edit Mode.
To keyframe changes to this rig, you will need a hook modifier. In Object Mode, create an empty and snap it at the outermost tip of your "1 position" bone. Select this empty, then hold  Shift, and select the Spline also, then go into Edit Mode, select the end point of the path which is closest to the "1 position" bone. Finally, press Ctrl + h to bring up the Hook menu. From the list, choose Hook to Selected Object. Now your rig will follow your empty, and you can keyframe the position of the empty in Object Mode.


I'll get to an answer in a second.

We've been back and forth in comments, and no, your latest .blend clarifies nothing.  Presumably, your object on the viewer's left demonstrates the need for the UV project modifier, but if you alt-g reset the bone and apply the UV project modifier, then move it back into position, it behaves exactly the same as it would with the active UV Project modifier.  So, yeah, I still have no idea about why this needs to occur.

Now, I'll give you an answer, but it's not the answer you're looking for, because I'll instead tell you how to limit a UV project modifier using only 2 UV maps, no extra objects (beyond the required projector and projectee), no extra materials.  Why ignore your explicit limits?  Because I still haven't heard any reason why your limits are important to your output, and because the reality is, doing it with 2 UV maps is extraordinarily simple and easy to implement.  Maybe you've been doing it a different way and think it's too complicated; it's not, and I'll show you.

Let's start with a single object and a single UV map.  Unbelievably, yours is already perfect...

Why is it perfect?  Because the faces that you want to use your UV projector modifier on are already out of bounds: all of the faces have U coordinates <0.  This is important as we'll see.

Now let's make another UV map.

So ugly!  But the actual content of this UV map doesn't even matter.  Do anything you want here.  Arrange your UVs into NWA lyrics as an easter egg, it's cool.  I just reset the whole thing to demonstrate that it doesn't matter.  In practice, it's just going to be a copy of your first UV map, since that's what you get when you hit the + button for a new UV map and don't do any other work, because you don't need to.

Time for the modifier.  This is the exact same modifier you have on your .blend, except it uses our second UV map.  I'll give you a picture, but you already know how it works.  You might want to notice that I'm back on UV0, and so I've got an ugly white face where my beautiful pixelly face ought to be.

Now, we don't need any additional materials, but we do need to edit our existing material.  I'm doing some hacky things here, just to save us some nodes, and I'll explain them; you can always feel free to do it the "right" way instead, and I can explain that too.  Here's our nodes.

So, first, notice the face is now there; it wasn't before.  This is working.  It's working in rendered preview too, but the lighting's poor, so I used mat preview instead.

Now, let's explain what I'm doing.  I'm getting two different UV coords.  And then I'm mixing between them on the basis of whether the first UV coords are out of bounds.  More particularly, on whether the U coordinate is less than 0.  So what I'm doing is using UV0 to code for whether or not my face should get affected by the UV project modifier.

The hacks are:

1) I'm just sending UV vector to a math node.  The math node ends up operating on the first element of the vector only, which is U.  That's why it works.  More professional would be to run this through a separate XYZ node first.

2) I'm using a Mix RGB node to blend between the UV.  Mix RGB doesn't actually know whether it's getting a vector or a color, all it does is mix.  Here, it does fine.  We could separate XYZ, multiply each channel by fac or 1 - fac, then add them, which would be more professional, but harder to fit into a screenshot, and Mix RGB works fine.

What do I end up with?  A single object where the OOB status of faces on UV0 determines whether or not we use UV1.  Add the armature modifier and you're good to go.

See?  Not so complicated.


HDR background rendering in view-port but not in final render?

That big plane - Plane.011 was turned off in display but not from rendering. So it occluded the reflection. You can also hide its influence in a scene by altering the object's Cycles Properties. I often turn off Camera Rays for lights so they can be in the frame but not in the shot.


Image texture rendered badly in Blender cycles

The shrinkwrap modifier must be applied first, before the subsurface modifier.


Here is a try for Eevee (a bit less al dente than your picture though), I guess the settings would be different for Cycles, and probably easier to find.
Use a Principled BSDF with a bit of Subsurface Scattering (don't forget to tweak the Subsurface Radius values), Specular at 1, a medium Roughness, and a bit of Noise Texture in order to have a bit of grainy texture:

For the pasta modeling:

Create 2 circles, checker deselect the outter circle, scale down:

Give it a Screw modifier to create a half torus:

Close the tips with LoopTools > Bridge:

Recalculate the normals, select the slots, bevel:

Give your object a Subdivision Surface modifier:

Deform it a bit with the Proportional Editing on...


Hair not emerging from all vertices in vertex group

I have solved the issue - I had placed a solidify modifier on the rectangle and it was conflicting with the hair somehow. Removing the modifier has fixed it.


This answer won't be an answer to your question directly, but I believe it will help you achieve what you want.

Before you do anything in blender, first try this:
place a lightsource low on a flat, slightly reflective surface, for example a wooden table. Look at the reflection of the lightsource on the surface from a high point of view and a low point of view. You will see that the surface is more reflective when looked at from a low angle than a high angle. Basically, the angle at which you are looking at the surface influences how reflective the surface is.

Now back to blender.
In order to create a realistic looking material, you need to use the same principle. In your current node setup, you are simply mixing a glossy shader with a diffuse shader. This means that your object will be half the color of the texture, and half the color of the light it is reflecting, which is most often white. And a black texture and a white reflection create, as you can probably guess, a grey mess, no matter from what angle you are looking at it.

In order to fix this problem, you need the material to behave like a real world material, like the surface from earlier in this answer. This sounds much harder than it actually is, the only thing you have to do is connect a fresnel node to the fac input of the mix shader, and you're done.

The fresnel shader connected to the mix shader:

From left to right: a diffuse only material, a material with diffuse and glossy mixed with a value of 0.5, and the above material with the fresnel node.


Vertex Color:

Assuming that you mean Vertex colors, and that you want to get it in the node editor, then you would type the name of the vertex color layer into the attribute node:

From the wiki:

  Retrieve attribute attached to the object or mesh. Currently UV maps and vertex color layers can be retrieved this way by their names, with layers and attributes planned to be added. Also internal attributes like P (position), N (normal), Ng (geometric normal) may be accessed this way, although there are more convenient nodes for this.

Note that if you have a UV layer with the same name it will be used instead.

Object Color:

For the Object Color property, the answer is no, this is not possible with the Attribute node currently.

You could try using a driver to get the color into a node tree, however I don't think it will do what you want it too. The driver can only access the object color of one object at a time, so you wouldn't be able to use a different color per object in one material.

As an alternative, you could specify the different colors in the node setup by using object pass indexes and the Object Info node:

Create an "equal to" nodegroup:

Then setup something like this:

If the object index is 1, the object will be green.
If the object index is 2, the object will be cyan.
If the object index is not 1 or 2, it will be red.
The object info node uses the Pass index of the object as the index. You can set the Pass index in Properties > Object > Relations:

You could write a python script to automatically set the colors, Pass index, and create the appropriate nodes for all the objects in your scene.

Here is a script (thanks to iKlsR and sambler for answering my questions here, here, and here) that will automatically setup the pass indexes and create an "Object Color" node group which you can add to your node setups:

import bpy

# Add "equal to" node group:
group = bpy.data.node_groups.new(type="ShaderNodeTree", name="Equal to")
group.inputs.new("NodeSocketFloat", "Value")
group.inputs.new("NodeSocketFloat", "Value")
input_node = group.nodes.new("NodeGroupInput")
input_node.location = (0, 0)

group.outputs.new("NodeSocketFloat", "Value")
output_node = group.nodes.new("NodeGroupOutput")
output_node.location = (600, 0)

# Add a greater than node
gtr_math_node = group.nodes.new(type='ShaderNodeMath')
gtr_math_node.operation = "GREATER_THAN"
gtr_math_node.name = "greater"
gtr_math_node.location = (200, 100)
group.links.new(input_node.outputs[0], gtr_math_node.inputs[0])
group.links.new(input_node.outputs[1], gtr_math_node.inputs[1])

# Add a less than node
lss_math_node = group.nodes.new(type='ShaderNodeMath')
lss_math_node.operation = "LESS_THAN"
lss_math_node.name = "less"
lss_math_node.location = (200,-100)
group.links.new(input_node.outputs[0], lss_math_node.inputs[0])
group.links.new(input_node.outputs[1], lss_math_node.inputs[1])

# Add an add node
add_math_node = group.nodes.new(type='ShaderNodeMath')
add_math_node.operation = "ADD"
add_math_node.name = "add"
add_math_node.use_clamp = True
add_math_node.location = (400, 0)

# connect nodes
group.links.new(gtr_math_node.outputs["Value"], add_math_node.inputs[0])
group.links.new(lss_math_node.outputs["Value"], add_math_node.inputs[1])
group.links.new(add_math_node.outputs["Value"], output_node.inputs[0])

# Create main "Object Color" node group
main_group = bpy.data.node_groups.new(type="ShaderNodeTree", name="Object Color")
main_group.outputs.new("NodeSocketColor", "Object Color")
output_node = main_group.nodes.new("NodeGroupOutput")
output_node.location = (600, 0)

#Add object info node:
ob_index = main_group.nodes.new(type="ShaderNodeObjectInfo")
ob_index.location = (-600,0)

index = 1
# Iterate through all objects in the current scene, set the path indexes and create nodes with the object color
for object in bpy.context.scene.objects:
    if object.type != 'CAMERA' and object.type != 'EMPTY' and object.type != 'LAMP':
        object.pass_index = index
        col = object.color
        if col != (1,1,1,1):

#            add frame node:
            frame = main_group.nodes.new(type="NodeFrame")
            frame.location = (-70, index*200)
            frame.label = object.name
            frame.use_custom_color = True
            frame.color = (0,.005,.133)

#            Add equalto node:
            group_node = main_group.nodes.new("ShaderNodeGroup")
            group_node.node_tree = group
            group_node.label = "Equal to"
            group_node.location = (-200, index*200)
            group_node.name = "eq_" + str(index)
            main_group.links.new(ob_index.outputs["Object Index"], group_node.inputs[0])
            group_node.inputs[1].default_value = index

#            Add mixRGB node:
            mix_node = main_group.nodes.new(type="ShaderNodeMixRGB")
            mix_node.location = (100, index*200)
            mix_node.name = "mix_" + str(index)
            main_group.links.new(group_node.outputs["Value"], mix_node.inputs["Fac"])
            mix_node.inputs["Color1"].default_value = col
            if index != 1:
                main_group.links.new(main_group.nodes["mix_" + str(index-1)].outputs["Color"], mix_node.inputs["Color2"])
            else:
                mix_node.inputs["Color2"].default_value = (1,1,1,1)

            index = index + 1
        else:
            print ("ob-color is white")
    else:
        print ("is camera or lamp")

main_group.links.new(mix_node.outputs["Color"], main_group.nodes["Group Output"].inputs["Object Color"])

# Optional: uncomment the following to add the node group to the active material automatically:
#tree = bpy.context.object.active_material.node_tree
#group_node = tree.nodes.new("ShaderNodeGroup")
#group_node.node_tree = main_group
#group_node.label = "Object Color"

Note that it sets the pass index for every object in the current scene that is not a Lamp, Camera, or an Empty. If you have pass indexes already set, this script will overwrite them.

Usage:

This is script can be run by pasting it into the Text editor and clicking Run Script. This will create the "Object Color" node group with all the nodes and colors set according to the actual Object Color property.

You can add this group to your setups by pressing ShiftA> Add > Node > Group > Object Color.

To change the colors, press Tab with the node group selected to edit it and change the colors of the Color1 slots on the mix nodes.

To update it for new objects etc. you will have to run the script again and create another node group.


Scripting help for Audio Visualizer Tutorial

It is only creating one cube because your for loop is wrong.  In python the indentation is very important.  Note that in the code below, all functions for object creation have been indented to become part of the for loop, so that it is run 25 times, rather than once.

for i in range(0, rows*columns):
    if c == columns:
        r += 1
        c = 0

    bpy.ops.mesh.primitive_cube_add(location =(r*2, c*2, 0))
    c += 1
    bpy.context.scene.cursor_location = bpy.context.active_object.location
    bpy.context.scene.cursor_location.z -= 1
    bpy.ops.object.origin_set(type='ORIGIN_CURSOR')
####
    bpy.context.active_object.scale.x = 0.5
    bpy.context.active_object.scale.y = 0.5
    bpy.context.active_object.scale.z = 5
    bpy.ops.object.transform_apply(scale=True)

    bpy.ops.anim.keyframe_insert_menu(type ='Scaling')
    bpy.context.active_object.animation_data.action.fcurves[0].lock = True
    bpy.context.active_object.animation_data.action.fcurves[1].lock = True

The other errors were since you used bpy.context.active_object.animation_data.action.fcurves[0],lock = True instead of bpy.context.active_object.animation_data.action.fcurves[0].lock = True.  That should be it, just pay very close attention to detail when copying code.  It's helpful if you can find tutorials that include working code, and then modify it yourself, that way you know what changes break it.


That should be a weightpainting problem.
As far as I can see you have more than enough mesh for the deformation in that armpit area and your geometry looks clean, too.
Weightpainting can be a pain in the butt and takes a lot of time to get it right.
I never weightpainted in Blender, but usually 3d programs can display the weights in different colors so you can see more clearly what's going on with your weights.

Hope this helps you a little :)


Hold down CTRL+MMB and move the mouse up or down in the window.


Add a Plane and make it rectangular shape scaling in x axis

Apply scale Ctrl+A -> Scale

Select the plane in Edit mode -> Select the 4 verts and Press Ctrl+Shift+B to Bevel

Select all and press E to Extrude

Select all and press Ctrl+ N to normal faces

Select the circle and Add a Edge Modifier & a Boolean Modifier with the target of plane

Add Bevel Modifier

Watch this preview


Blender 2.8 Circular dependency error when baking textures

Just disconnect the TEXTURE node you are baking to. Then reconnect after it is finished baking. HTH.


It depends on how the glove is connected to your computer, assuming it works with USB there're two common approaches (I don't know a finished plugin).

One is to use a server for the OSC protocol and receive the data in a python module in Blender. I used this for integrating a Kinect Sensor.
An example integration you find in this project's Bloop NUI zip file.

Another method would be to use the API of the glove (if available) and include this as a library in Blender to poll data. This I've used to read head tracking data from an Oculus Rift.

See How can I do a one-time Initialization? for an example on invoking methods of an external library.

If the glove comes without an API you could interface with hdiapi  and analyze the data.


How to show operator properties when running operator in scripts or console?

That is called the Redo Panel. Built in operators executed from the command line won't automatically show up here. You would need to make your own operator class with an execute function that has its own properties that are used in executing the operator.

import bpy
from bpy.props import IntProperty, FloatProperty

class BoxOperator(bpy.types.Operator):
    """example of making a box"""
    bl_idname = "object.box_operator"
    bl_label = "Simple Box Operator"
    bl_options = {"REGISTER","UNDO"}

    x_location = FloatProperty()

    def execute(self, context):
        bpy.ops.mesh.primitive_cube_add(enter_editmode=False, location=(self.x_location, 0, 0))
        return {'FINISHED'}

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

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

if __name__ == "__main__":
    register()

    # test call
    bpy.ops.object.box_operator('INVOKE_DEFAULT')

Executing this as a script will work. However, if you register this class and run it from the python console, you will still not get a redo panel. You would need to enter all of this line by line into the python console or execute the operator from the 3d view.


Mipmaps is a system setting, it would be set by the users startup blend file. Not sure that anyone would recommend overriding a users choice.

To change it you would use python to set bpy.context.user_preferences.system.use_mipmaps


Constrain a camera to an object while also aligning it perfectly to the center of the object (relative to the camera) even while using perspective

Shift the camera.
Adjusting the shift setting of the camera, such that the camera aligned 2d bounding box of object is centered.

Result of running on default scene, then transforming and re running, there is no constraint pointing camera to origin of object, if so there would be less shift depending on origin point

Firstly as mentioned in question am assuming you have the camera set
up and pointing to the object of interest.
A couple of useful links in regard to this.
Add camera at random position through Python
Script to render one object from different angles

Have added an optional option to create an object that shows the 2d
bounding box of object of interest lying on the plane defined by the
origin point of object, and with a normal matching the camera
direction.  Uses the code from
Getting edges of the camera's view on the scene XY plane
set create_bbox2d = True to False (or delete code) to remove completely.

It appears by your angles and camera positions that you are after a
"perspective isometric" view
Setting up an isometric view

To shift the camera requires using the aspect ratio from render
settings
Set Render/Camera resolution to Render Border coordinates

Putting it together as a script.  Select the object of interest, with a camera set as scene camera and run script.
import bpy
from mathutils import Vector
from mathutils.geometry import intersect_line_plane as ilp
from bpy_extras.object_utils import world_to_camera_view as w2cv
import bmesh
import numpy as np

create_bbox2d = True

context = bpy.context
scene = context.scene
ob = context.object
me = ob.data
cam = scene.camera
mw = cam.matrix_world
o = mw.translation

plane_no = mw.to_3x3().col[2]
plane_co = ob.matrix_world.translation

camdata = cam.data
bm = bmesh.new()
bm.from_mesh(me)
bm.transform(ob.matrix_world)
u, v = np.array([w2cv(scene, cam, v.co).xy
        for v in bm.verts]).T

tr, br, bl, tl = [
mw @ f for f in camdata.view_frame(scene=scene)]
# offset vectors from bl.
# eg middle would be bl + 0.5 * (x + y)
x = tr - tl
y = tr - br
# roll around in CCW direction

bbox2d = (
        (u.min(), v.min()),
        (u.max(), v.min()),
        (u.max(), v.max()),
        (u.min(), v.max()),
        )

if create_bbox2d:
    coords = []
    for image_coord in map(Vector, bbox2d):
        cx, cy = image_coord
        # vector pointing from cam origin thru image point (PERSP)
        vec = (bl + (cx * x + cy * y)) - o

        pt = ilp(o, o +  vec, plane_co, plane_no, True)
        if pt:
            coords.append(pt)

    if coords:
        name = f"{cam.name}_ViewPlane"
        me = bpy.data.meshes.new(name)
        faces = [range(len(coords))] if len(coords) > 2 else []
        me.from_pydata(coords, [], faces)
        ob = bpy.data.objects.new(name, me)
        context.collection.objects.link(ob)
        ob.display_type = 'WIRE'
# shift the camera
aspect = (
        scene.render.resolution_x /
        scene.render.resolution_y
        )

# UV origin shift
(u.min(), v.min() / aspect)
# UV shift

#v /= aspect
# move to UV (0, 0)
cam.data.shift_x += u.min()
cam.data.shift_y += v.min() / aspect

cam.data.shift_x -= (1 - u.max() + u.min()) / 2
cam.data.shift_y -= (1 - v.max() + v.min()) / (2 * aspect)

Quad view after making gif above, all the notice all "frames" (last one active) are in the same plane, normal to cameras direction
To animate this would use a frame change handler.


Need help/advice on how to fill in a groove/trench on a model's surface

Solved it to my standards. I selected a loop of vertices around and above the trench, hid it and removed the trench. Then I un-hid the loop and made some edges that ran across the new gap. Filled in the holes with faces made from the new edges and the loop.

Not the best or most elegant solution, but I wanted to get it done ASAP. Please let me know if anyone has a better way of doing it.


Scaling to 0 does not affect the underlying topology of your mesh, meaning that you still have the original 3 points, and all your faces are still quads, in your mesh. So the loop cut can be completed.

However, when you merge vertices, this changes the topology and effectively creates only 1 vertex out of the 3 original, thus creating triangular faces that cause the loop cut to stop when it hits a triangle.


How to move UVs by a set amount of pixels?

I just found it myself. Here goes:

In the UV editor, open the right-hand menu via N, then select the View tab. There, check Pixel Coordinates. Now, coordinates will be shown in pixels and the grab/move commands will also operate on pixels.


Is there a workaround for the known bug in dynamic EnumProperty?

The Warning in the documentation states the EnumProperty should have a permanent handle on the items. One way I see, without resorting to a global variable, is to add an attribute to the getEnumStuff function. See relevant PEP 232. And then "manually" update the values before drawing the col.prop drawing call.
By the way, if you pass the context in a function, you should not use bpy.context afterwards but rather the context parameter because there could be a mismatch between the two, resulting in an incorrect context error.
import bpy

def getEnumStuff(context):
    getEnumStuff.enum_stuffs = [((obj.name, obj.name, "")) for obj in context.selectable_objects]
getEnumStuff.enum_stuffs = []

class OBJECT_PT_example_panel(bpy.types.Panel):
    bl_category = "Example"
    bl_label = "Example"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_context = "objectmode"

    def draw(self, context):
        layout = self.layout
        col = layout.column()
        getEnumStuff(context) # Update enum items before drawing them
        col.prop(context.scene, "stuff", expand = True)

classes = (
    OBJECT_PT_example_panel,)

def register():
    for cls in classes:
        bpy.utils.register_class(cls)
    bpy.types.Scene.stuff = bpy.props.EnumProperty(
        name = "stuff",
        items = lambda self, context: getEnumStuff.enum_stuffs,
        description = "")

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

if __name__ == "__main__":
    register()

Result :


Troubleshooting when Addons don't show up

Addon which name (or folder name) contains  . (dot) cannot be loaded in Add-ons list. See this bug report.

Take list below for example:

Lens0.3 cannot be seen in Blender's Add-ons tab. And MultiEdit2.5.py cannot be sucessfully enabled even though it can be found in the list.

Solution would be to manually remove dots or replace with other valid characters.


How do I properly update an application handler?

Look at the function names and modules

If a function added to handler has a namespace it can be removed quite simply, as shown in the register and unregister methods in and addon.

def foo():
    print("bar")

def register():
    handers.append(foo)

def unregister():
    handlers.remove(foo)

if __name__ == "__main__":
    register()

The method has that import scope., if however it is added in main thread via a test script then editing to call unregister, rather than register,

if __name__ == "__main__":
    unregister()

foo now compared to then is a totally different foo and will throw an error

Recommend looking at the functions name instead.

EDIT  the module f.__module__ tested against __name__ would be the ideal way to remove these.

# handlers added to main thread

my_handlers = [h for h in bpy.app.handlers.frame_change_pre
    if h.__module__ == "__main__"]

The old code uses a test on the functions names.

import bpy

def foo(scene):
    pass

for i in range(4):
    bpy.app.handlers.frame_change_pre.append(foo)

# handlers named "foo"

foo_handlers = [h for h in bpy.app.handlers.frame_change_pre
        if h.__name__ == "foo"]

print(foo_handlers)

for f in foo_handlers:
    bpy.app.handlers.frame_change_pre.remove(f)

foo_handlers = [h for h in bpy.app.handlers.frame_change_pre
        if h.__name__ == "foo"]

print(foo_handlers)

I often use some silly prefix like def ST_____foo(): and remove all handlers with if f.__name__.startswith("ST____")


How to make a barcode like stripes texture

Shady's Answer works only in this scene and not only in all,So you will have to edit values per scene.

And that's why I prefer using some math Instead.

To get information about our object we will use the texture coordinates node,and use Generated coordinates.

Suppose you want the strips to be vertically,then you should use the Z axis only of the coordinates and that is by using Separate XYZ node.

Now let's do the math,I will first multiply the Z axis by a variable integer which is equal to the number of black or white strips.

Then I will Modulo the result by 1,Which means I repeat the gradient every 1,and since we multiplied the axis by "say 5" then we will repeat 5 times.

Now we have a number of gradients,I will limit them to be either white or black using Greater than node.

Here the node tree:

Which will produce the following result:

I can group it and expose the variable,and we got our node group:


What does the "Height" map mean in Blender?

Height map means that it has values of height from the surface mapped to color values in an image file. This usually means that black is the level of the surface and the lighter it gets the higher off the surface it is, however it could be implemented the other way around in some rendering engine and the maps could still be called the same.

This kind of a map can be used as a bump map or a displacement map depending on your needs and choice. Displacement maps can also consist of vectors. In that case 3 values are stored in the image to define the offset of the surface in 3 directions. In that case the displacement map would usually not be called a height map.

There is no real difference between a height map and a displacement map usually, however there is a small difference in the meaning of the names. A height map can be a displacement map as well as a bump map, however a displacement map does not necessarily need to be a height map. A bump map is pretty much always a height map. That is all as far as I know.


The ray distance has to be non-zero, increase it to avoid the problem.


How to apply custom lens distortion parameters to a rendered image?

You can enter the distortion data per loaded 'clip' in the 'Track' panel of Movie Clip Editor (N) and use a Movie Distortion node in the Compositor to distort your image based on the values:

I'd suggest go to the 'Compositing' workspace, enable 'Use Nodes', switch the editor type of the 'Timeline' to 'Movie Clip Editor', load any arbitrary image with the same aspect ratio, set your values for K1, K2 etc. and add a Movie Distortion node to your node stream in the compositor.


Why is it there?

It's basically because of Object Oriented Programming. In OOP, for matter of coding efficiency, you tend to create sub-classes of classes to re-use some or all of their properties. Since Image Textures and the Render Result slot derive from the same parent class, they inherit all those properties. The fake user property is already part of the parent, so there is actually no way for the child class NOT to have it.

Keep in mind that you're not setting a fake user on the render result itself, but on the datablock displaying it. Think of it as a container. This container inherits from ID, which holds the use_fake_user property.

How could it make sense?

Well, there is a case where you can make use of it. The Render Result slot isn't just the pixels, it's a whole datablock with properties attatched. One of those properties is a Render Slot name per slot. If you set the fake user, names you give to render slots will be preserved upon file save. In the example below, I created a render slot named Demo. When saving and reloading, the named slot is kept. If you don't set a fake user, you lose that data.


Material Shader not fully applied to selected faces? Why?

When you have more than one material on your object, usually you only have to select the faces you want to color and then press “Assign” in the material property panel.
Logically, you have the right (red) material in the list selected.
You can see every function you need on your screenshot.

Did that not work for you?


Where did the marble procedural texture go? (Cycles)

In the Cycles rendering engine, both the Marble and Wood procedural textures are merged into a single texture known as 'Wave'.

You can use the Distortion and Detail settings to achieve the old Marbles look. One setup to achieve a look like the old Blender-Internal Marble texture is:

This returns a texture that looks like:


Is there a way to register a python script at other moments than loading?

You can use an 'Application Handler' to register code to run after certain events in blender, like rendering, saving, loading files and several other situations.

For example, in the code below, appending the function to the save_pre handler would print out "Saving File" just before the file is saved:

import bpy

def my_handler(scene):
    print("Saving File")

bpy.app.handlers.save_pre.append(my_handler)

If you wanted code to execute after the file is saved then you would append to save_post.

I am not too sure how you would execute code periodically, though there is a scene_update_pre and scene_update_post which runs whenever the scene needs to be updated that you could look into.


Why isn't the car straight when following a curve?

If you zoom on your curve, we can see that these 2 vertices are not aligned, it must mess the normals:

Align them on the Y axis and it will work fine. Also maybe add some vertices on this part to make sure the car will stay straight all along:


Symmetrized armature keeps appearing on the same side as the armature that I wanted to symmetrize

That symmetrize function always works along the X axis, not Y.
Rotate the character and the rig 90 degrees along Z axis, apply (Ctrl A) rotations of both, then continue the rigging process using the symmetrize function.


Compositor viewer node output never updates when rendering via Python script

Solved -- my problem was actually related to Blender's hard-coded behavior in background mode, rather than to something going wrong with the render process itself.  In order to get the Viewer Node to work in background mode, you need to modify some source code and recompile Blender as described in the link, because it is disabled by default for optimization reasons.  Then run:
path\to\recompiled\blender --background --python my_render_script.py


Creating a single vertex on the cursor position

If you press the left mouse button while holding Ctrl you can add vertices at will. Any subsequent vertices created will be connected by an edge.

To create unconnected vertices only you would need to deselect the previous vertex.


Using a driver to control two shapekeys but triggering the second shapekey when the bone hits a certain value

You can do it if you add a driver to the second shape key.
The first driver:
max(min(var/0.8, 1), 0)

The second driver:
1 if var>0.8 else 0


How to add "Copy Location" Constraint programmatically?

import bpy

scene = bpy.context.scene
obj = scene.objects['Cube']
empty = scene.objects['Empty']

constraint = obj.constraints.new('COPY_LOCATION')
constraint.target = empty


Rematch a UV map to an Image Texture after separating a mesh section into a new object

The problem was fixed by extruding new faces from unaffected faces. Other ways of rebuilding the faces hadn't worked, but that did. Nothing I tried with the UV map worked.


Your object has Shape Keys (Properties / Data / Shape Keys). One of them, "mouth_U" has a value of 1.00, which mean it is fully "active". Set it's value to 0.00 to resolve your problem.

I guess you've used as a base, a mesh with an armature and a complete facial rig. It's probably safer to remove all Shape Keys and Vertex Groups, before running into other problems.


How to move pivot to center of an array object?

Here's one hackish way to do it, taking advantage of the fact that positioning the 3D cursor is not undo-able.

Apply the array modifier
Enter edit mode (Tab)
Select everything (A)
Press ShiftS> Cursor to selected
Exit edit mode (Tab)
Undo twice (CtrlZ)


Driver not always visible in the graph editor?

You have Show only selected enabled in the graph editor:

While this setting is enabled, only drivers and fcurves belonging to selected objects will be shown.


Practicality of fade-in/out transforms in Blender

The vse is quite powerful but you need to realise that it is media agnostic.  That is any track can accommodate any media. Because audio can be next to or above video you cannot easily add an effect at an edit point. And because there are effectively infinite vertical tracks you need to tell blender which media strips need to be used for an effect.

That is why you must first select the strips to effect then add an effect. If you want to fade from many mixed clips to black for example you would simply key frame the opacity of the top most in coming black strip.


Having problems with translating negative edges

The origin remains unchanged when the object is modified in Edit mode. To move the origin, switch to Object mode and use the button Tool Shelf>Set Origin (or Ctrl-Shift-Alt C)
Possibly, check the Snap during transform options (the magnet icon or Shift-Tab)

To reshape your wedge, start from a cube, switch to Edit mode, disable the snapping, select the vertices to be moved, enable the 3D manipulator in Translate mode and drag the arrow in the 3D view.


Subsurf Modifier

You can surely set up your own rigging system, but if you don't need to extremely custumize your animation, fastest way to show the position of the centroid is taking advantage of the Subdivison Surface Modifier with Simple type enabled in oder to see the medians meeting in the middle.

Drivers

In alternative, I would suggest to Hook the vertices of a Poly Curve (the triangle) to three Empties and use Drivers to control the location of a fourth object (the centroid). This way you should be able to customize almost everything in your scene (the triangle section, the presence of mendian lines, the shape of the centroid individuator..)

For each coordinate you should assing a value coming from a scripted expression capable of giving the Average mean of the other empties coordinate relative to the considered axis.


Best/ preferred way of storing Image references?

If you need multiple strings, why not use CollectionProperty? bpy.types.PropertyGroup comes with a StringProperty already (name), then just add new items to the collection and assign an image's name.

*VectorPropertys shouldn't be used if the amount of integers, bools or floats aren't limited conceptually. They are meant to store things like transformation matrices, which are never larger than 4x4.

Since image datablocks are ID types, why don't you add an IntProperty and assign a number, then sort images by that? Set the default to -1, and ignore these to distinguish unrelated images from your project images:

import bpy

# Register property - should be in register()
bpy.types.Image.project_id = bpy.props.IntProperty(
    default=-1,
    min=-1
)

# Assign number
img.project_id = ...

# Filter and sort
sorted(filter(lambda x: x.project_id > -1, bpy.data.images), key=lambda x: x.project_id)


How do you remove the object line between two objects when joined?

You can't sculpt 2 objects at the same time, and even joining the 2 objects won't be enough to create a weld between the 2 as they will still be 2 separate meshes. What you need to do is either keep them 2 separate objects and use the Boolean modifier, or join them and use the Boolean tool (the one I explain below). In both case make sure that the mode is Union
Boolean tool: Join the 2 objects (ctrlJ), go in Edit mode, select one of the 2 meshes, go in the header menu (or press ctrlF) > Face > Intersect (Boolean), then in the Operator box choose Union.
Now you can sculpt the way you want.


How to add buttons from "Overlay" section in custom panel?

I think the problem is trying to add settings for the 3D view outside the 3D view.You can place it in the Sidebar.

import bpy

class HelloWorldPanel(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Hello World Panel"
    bl_idname = "OBJECT_PT_hello"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'

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

        overlay = bpy.context.space_data.overlay

        row = layout.row()
        row.prop(overlay, "normals_length")

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

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

if __name__ == "__main__":
    register()


Why is my armature deforming it's mesh in a wrong way and how can I fix it?

That can only be because edges are separated. Try this : go to edit mode, select all vertices and remove doubles. Probably that will fix the problem.


OK now that it was confirmed to fix the problem I'll make it a response.

Blender zoom works in such a way that the more you zoom in, the less each scroll zooms in (still haven't found a better way to explain it). selecting the object you want to focus on and pressing "." on the numpad recenters the object in the view and resets the zoom so that it's much easier to navigate around your object.


Armature: Bones deforming mesh objects in GLTF viewer

As i found out from glTF Blender Exporter github issue thread, this is exporters problem.
Workaround to this is:

  ...to create joints and weights for this mesh and give full weight to
  the bone it is assigned to.

That worked for me, so i hope it will help someone like me in the future.


How to "widen" a mesh modeling from scratch

Specifically addressing how to take a 'uniform grid' area of mesh and insert a new face loop ending in a single 'diamond' quad:

Select the series of vertices desired 'above' the 'diamond' location using Shift-clicks. Use Ctrl-B to bevel the selected edge loop, resulting in a triangle at the bottom. Then use Ctrl-R to loop cut down the centre of the newly created faces, such that you now have 2 new face loops running down into the 'diamond'.

This is still a "manual" process, and does need to be repeated every time one would want to perform this action, so I'm not sure if this answers the question, as the question doesn't specify how 'automatic' or how much of a short-cut is desired.

To take it further, it would be relatively straightforward to make an addon that performs these steps as a single operator, but I'm unaware if this has been done. It's somewhat subjective whether the default actions are fine- or coarse-grained enough for specific use cases, and when modelling one might very likely want to adjust the results at this fine-grained a level anyway.


Can a glass object be made to act completely transparent to only the object contained inside of it?

Yes, this is possible.

To do this, we can make a glass material which allows some light rays through without refracting them based on certain conditions.

To get a good idea of which rays we want to let through, it's a good idea to try and visualize the possible ways rays could bounce through your scene (at least up to a few bounces):

This diagram doesn't show all possible light paths for three bounces, this is just for demonstration purposes.

I've highlighted the ray which we want to ignore in order to illuminate Suzanne as if the glass sphere wasn't there in green. Keep in mind that rays travel from the camera.

So as a solution for this particular case, you could create a node setup that ignores rays which:

Have bounced a maximum of once
Are not transmission rays
Are colliding with the inside of the glass

Result (200 samples):

For comparison, here's the same scene rendered with just a glass shader (2000 samples):


Objects disappearing in viewport but visible in outliner

Might have set View - Local toggle. If so, go to object menu View/Local and click toggle off, or shortcut key Numpad /. (I saw this in other listing in this chain).


How to load an internal blender image using OSL?

If I understand the question right. The internal images are values that are generated from coardinates and do not realy exist. You should be able to call the existing method eather direct or indirect.

If that don't worke for you all of the math to generate them isn't that hard to find on the internet.


What is the workflow to sculpt construction lines using the Curve Stroke Method?

I think I figured it out,

after you choose your brush type(scrape maybe)

and choose your stroke type to curve, make the curve by Ctrl LMB  all over the place

then try pressing Enter a couple of times, or just keep holding it down, or increase the strength of the brush.

I didnt know this was possible, nice


Particles are not visible when rendered (ver. 2.83.5)

This button was not enabled on your file, enabling it fixes this, it just controls whether the particles are on during rendering, it might look a bit different for you, but it should still be a camera in the particles section.


I figured it out. Go to Add  > Effect Strip > Transform, then right click on the element that you want to transform (i.e. the x offset) and select Add Driver. Now you will be able to pan/zoom dynamically and edit this change with keyframes on the graph screen.


What is the correct context area for bpy.ops.uv.snap_selected?

Turns out you have to modify not only the area type but also the ui_type for this to work. For the specific case of bpy.ops.uv.snap_selected operator, the area_type is IMAGE_EDITOR and the ui_type is UV. This piece of code works:
bpy.context.area.type = 'IMAGE_EDITOR'
bpy.context.area.ui_type = 'UV'
bpy.ops.uv.snap_selected(target='PIXELS')


I think the most easy method is to set Ambient Color in the World tab.


Get rid of /reduce Noise in Cycles Render

There are some general tips and guidelines, I am sure you can find something in Google as well, this article made a while ago is still today relevant and can help you to understand more about it:

https://www.blenderguru.com/articles/7-ways-get-rid-fireflies

Edit:

The guidelines are:

Use Bigger Light Sources (Bigger lamps or blurred HDRI)
Use Bigger Shadow Sizes
Use "Multiple Importance Sampling" for HDRs
Use 'Filter Glossy'
Check "No Caustics" (Trade-off losing some of the light information)
Use "Clamping" (Trade-off dampening highlights)
More Samples (Trade-off more render time)

For simple projects, I recommend you to enable Simplify:

Essentially it simplifies your shaders, mostly glossy shaders, to render faster, this will give you the advantage to increase render samples, thus, decreasing noise areas.


Expected a class name including _OT_
This should work.

class MAPLUS_OT_changetypebaseclass(bpy.types.Operator):
    bl_idname = "maplus.changetypebaseclass"


if you select several vertices and move them, they should automatically snap if you have these two options enabled: Align Rotation To Target and Project Individual Elements.


Adding thickness to 3d printed topographic map

I believe based on the comments, that you should be able to do the following.

It may get slower, but let's try:

Make a copy of the surface you have
Add a solidify modifier to the copy and set the modifier up like this:

The thickness can be small, as we only need one extra (the lower) loop going around to produce the thickness.
If you apply the modifiers now, it will leave you with only a thin rim.
Go in edit mode (vertex) and select the bottom loop with Alt+LMB
Now you can press G twice and move all the points up to end up on the upper vertices, confirm with LMB (makes sure the border will be straight).
Right after that press G, followed by Z to move the vertices down a good bit.
They are still not flat, so to fix that, press S, then Z and finally 0 to flatten them on the Z axis.
Now move them down as much as you need your thickness to be.
All you need to do now, that the lower loop is placed, is to press F and fill the bottom with a face.
Now you should have 2 objects, the surface build with the displacement, and the new bottom part build from the rim of the solidify modifier.
It should fit perfectly with each other, but make sure to check the normals, easy to check if you enable "Face Orientation", the border and bottom should be blue.

In case the objects need to be joined for the 3D printing, you have 2 options.

Apply all modifiers and join the meshes with a final Alt+M Merge by Distance, to clean up double vertices.
(keeping the modifier version) Select the upper part, then the lower part by holding Shift, the upper part should be the active one, the lower selected but darker. Then press Ctrl+J to join both. The result will be that the lower part now also get's deformed by the displacement modifier of the top part, for that go in edit mode and select only the lower part by selecting a vertex and then pressing L. Now generate a Vertex Group and click on Assign. Back in the displacement modifier, select the new vertex group in the corresponding field and then click on the double arrow button beside it to invert the group. Once you go out of edit mode the lower part should be back to how it was before the joining. Finishing the object only needs one more modifier. Add the weld modifier and the object should be clean without doubles.

I hope it's not too confusing, but i tried to add an as non-destructive version as possible.


What do these yellow key frames mean and why can't I select or delete them?

You are using the filter/search option of the dopesheet. You have entered the filter string i and hence only the names of curves containing i are showing. (Even though we still get the visual indication that there are more keys, which we can't select.)

Simply remove the search term, to view all of the keys of the selected objects.


Jagged and wrong looking shadow on hair particles

@Leon Cheung is almost right.

The hairs are coming out exactly parallel to the normal. Because all the hairs on each face are pointing exactly the same direction, the shading on the hairs is going to change sharply at the edge of each face, even though you're using smooth shading.

One way to solve this "problem" is tweaking the Random value on the children. This will prevent the hairs on one face from all pointing exactly the same direction. Another thing you can tweak is the random rotation. Just add a very small amount of randomness, and this will also keep them from all facing the same direction.

These solutions should work without having to make your hairs longer.


While you have Subsurf Modifier on your model, hit U button and select Unwrap from the menu, then hit F6 button to bring Unwrap menu or in the Unwrap operator panel select Use Subsurf Modifier


You have to specify the exterior volume of the objects inside the fog cube.
Plug a pointer to the fog volume into the "exterior volume" slot of the two glass materials of the lenses and prism.

Note, the beam between lens on the right and prism still stays very weak. To be honest, I don't know what's up with that. It could be another problem in the volume setup or mesh normals, or it might be a bug in LuxCore.
You can try asking about it in our forum where our main LuxCore developer Dade might be able to tell you more about it.
In the forum I have also written a bit of an explanation about interior/exterior volume setup, maybe it helps you: https://forums.luxcorerender.org/viewtopic.php?f=4&t=1178&p=13864#p13879

Before:
(HDRI was not packed, so I used a green color instead)

After:

(30 second renders)

The prism

The last piece is the prism. Originally, I did my prism from the cube by eliminating one face and merging disconnected edges. Now I tried cleaner way by adding cylinder and setting number of faces to 3. This did the job. The two ways obviously don't lead to the same mesh.

Result:

Link to fixed scene is here and link to HDRI image here.


This missing piece to your model is the process of weight painting, which I started here:

Your model -- at least the one you uploaded for me to look at -- does not have weighting that assigns each bone to the mesh: The bluer the mesh is for a particular bone, the LESS it is attached/attracted by the bone. The redder the mesh is, the MORE it follows the bone.

The subject of weight painting is one that is covered here and in other online tuts very well... but the summary answer to your question is "because your model is not weight painted...."

Some resources here: https://blender.stackexchange.com/search?q=weight+painting

and here might be another place to start:
https://www.youtube.com/watch?v=S0VS0IVylzg

Please let me know if I missed the point of your question, though... I often do!

best
rg


How to reset areas layout without losing data?

Save the project.
Go to the top menu and select: File>New to open an empty file with the default layout.
Again on the File Menu, select "File Open", when the window to select files appears press N  (or press the gear icon on the top right) to open the options tab.
Uncheck "load UI" and then select your file and open it.

The file should now open with the default user interface and layout.
I'm the future you can avoid creating a messy interface by using a layout instead of subdividing windows.


you want the pipe to branch off into the many pipes? I would try Boolean (union) a cluster of solid pipes (I used subdivided cubes) . Make sure the verts are aligned before you union. Delete the unwanted faces  then select the verts on one end and use the circle command to round them out. extrude then use the spin tool to add the elbow. apply subdivide to taste.
steps from right to left.