Turn Obj-sequence into FBX file for Unity?

You can try Import OBJ Sequence As Shape Keys blender add-on from here. As described by you and shown in the video on the add-on page, it seems to work in your case.

Download the add-on from here (Windows).

Initial setup is as follows:

Select “File” - “Import” - “Wavefront.obj” from the “file” menu and navigate to the directory which holds the OBJ sequence
Select the first OBJ file in the sequence and click “Import OBJ”.
Select the newly imported object in the 3D view or the outliner
Select the “Object Data” tab in the main properties panel
In the “Shape keys” section, click the “Add shape key to object” button (+)
Uncheck the “Relative” Checkbox and set the interpolation dropdown menu to “Linear”
Change the current frame in the timeline to “0” and set a keyframe for “Evaluation time” (as “0”)
Change the current frame on the timeline to “1000”
Enter “10000” as evaluation time. (it seems to go in steps of 10 strangely!), then set a keyframe for “Evaluation time”
Change to the graph editor window, then select the curve for “Evaluation time”
Select “Key” - “Interpolation Mode” - “Linear” from the graph editor menu.
Change back to the 3D view.

Once you done that, you use the script to import the sequence:

Select “File” - “Import” - “OBJ as Shapekey” from the “file” menu and navigate to the directory which holds the OBJ sequence.
Select the rest of the sequence(all except for the first obj file in the sequence) and click “Import OBJ as Shape Keys”.
Wait as it loads the sequence…

A video tutorial..


In Python how can I name the active selection Low Poly, join the others and name them High Poly?

I hope that's what you're looking for.

Select the low-poly object and run the script to add a <Name>_LowPoly suffix to the objects name in the first place, join all other mesh objects of the collection and rename the result to <Name>_HighPoly:

import bpy

suffix = "_LowPoly"
act_obj = bpy.context.view_layer.objects.active

# Append the suffix to the active object
if suffix not in act_obj.name:
    act_obj.name = act_obj.name + suffix

# Get the collection of the active object
obj_coll = act_obj.users_collection[0]

# Create an empty list
high_poly_objects = []

# Append all mesh objects (of the collection) to the list
for ob in obj_coll.objects:
    if not "Low" in ob.name and ob.type == 'MESH':
        high_poly_objects.append(ob)

# Deselect all objects
bpy.ops.object.select_all(action='DESELECT')

# Select all High-Poly objects to call the join operator
for ob in high_poly_objects:
    ob.select_set(True)
    bpy.context.view_layer.objects.active = ob

# Join all objects selected before
bpy.ops.object.join()

# Get the object in context and re-name it
if "High" not in bpy.context.object.name:
    bpy.context.object.name += "_HighPoly"

# Optional -> Invert the selection for fun
for ob in obj_coll.objects:
    if "Low" in ob.name:
        bpy.context.view_layer.objects.active = ob
        ob.select_set(True)
    else:
        ob.select_set(False)

You can also override the context of bpy.ops.object.join() to avoid any viewport selection changes. Select all objects, make the low-poly object the 'Active Object' and run the script:

import bpy

hp_suffix = "HIPOLY"
lp_suffix = "LOWPOLY"

C = bpy.context
scene = C.scene

ob_active = C.active_object
if not ob_active.name.endswith(lp_suffix):
    ob_active.name += "_{}".format(lp_suffix)

obs = []
for ob in C.selected_editable_objects:
    if ob.type == 'MESH' and ob != ob_active:
        obs.append(ob)

if len(obs) > 1:
    c = {}
    c["object"] = c["active_object"] = obs[0]
    c["selected_objects"] = c["selected_editable_objects"] = obs
    bpy.ops.object.join(c)

if not obs[0].name.endswith(hp_suffix):
    obs[0].name += "_{}".format(hp_suffix)


Can we smooth selected faces to make curved surface more precise?

Using the built-in smooth tool on two axes
Applicable to few cases

Temporarily rotate your model so that one axis is close to parallel to the edge loop.
Temporarily remove edges adjacent to the edge loops, so the edgeloop which needs smoothing are selected and not connected to anything else.
Execute the smooth operation W < Smooth and set the Smoothing parameter to 0.5. Increase the iterations as desired.
Reconnected the edges with the bridge edgeloop tool.
Realign your model.

To script the functionality, start with a bmesh and the get the edge loop. Then implement your custom smoothing function.
I have hacked a short script together. This also works on curved surfaces.

Select the starting edge of an edge loop.
Select the ending edge of the edge loop. (They don't have to cover all of the edge loop.)
Edit the smoothing and iterations variables and execute the script.

This also works with multiple edge loop simultaneously.

Another application example.

import bpy
import bmesh

def bm_from_me(me):
    if me.is_editmode:
        bm = bmesh.from_edit_mesh(me)
    else:
        bm = bmesh.new()
        bm.from_mesh(me)
    return bm
def bm_to_me(bm, me):
    if bm.is_wrapped:
        bmesh.update_edit_mesh(me, False, False)
    else:
        bm.to_mesh(me)
        me.update()

def get_loop_untill_selection(loop):
    verts = []
    while len(loop.vert.link_edges) == 4:
        loop = loop.link_loop_prev.link_loop_radial_prev.link_loop_prev
        verts.append(loop.vert)
        if loop.edge.select == True:
            loop.edge.select = False
            print(loop.edge.select)
            return verts, loop.edge
    return [], None

def smooth_coordinates(coords, smoothing, iterations):
    for i in range(1, len(coords) - 1):
        med = (coords[i - 1] + coords[i + 1]) / 2

        coords[i] *= 1 - smoothing
        coords[i] += med * smoothing

    if iterations > 1:
        smooth_coordinates(coords, smoothing, iterations - 1)

def smooth_loop(e, smoothing = 0.5, iterations = 1):
    edges = []
    for edge in bm.edges:
        if edge.select:
            e = edge

            for start_loop in e.link_loops:
                verts, end_edge = get_loop_untill_selection(start_loop)
                if end_edge is not None:
                    verts.insert(0, start_loop.vert)
                    if (start_loop.vert == e.verts[0]):
                        verts.insert(0, e.verts[1])
                    else:
                        verts.insert(0, e.verts[0])
                    for medge in [edge, end_edge]:
                        edges.append(medge)
                        medge.select = False

                    if len(verts) > 2:
                        co = [v.co for v in verts]
                        smooth_coordinates(co, smoothing, iterations)
    for e in edges:
        e.select = True

me = bpy.context.object.data
bm = bm_from_me(me)
smoothing = 0.5
iterations = 2
smooth_loop(bm, smoothing, iterations)
bm_to_me(bm, me)


I think the shader node setup is not correct. You can use this node setup for the smoke domain.. I think you will get the desired result. You have to tweak with some variables in the node setup.


What version of Bullet Physics engine does the blender game engine use in 2.74?

According to the commit notes which you can read online the current bullet version is from svn revision 2719 from 26 Dec 2013 which appears to be 14 revisions after the bullet 2.82 update.

There are a few newer changes but they appear to be blender only updates.


Removing Doubles Ruins Mesh of My Character

One of the known limitations of the automatic weighting system in Blender is that it really doesn't like dense meshes, especially ones that aren't really close to the bones or that overlap.

With that in mind there are a couple of things to do when parenting your character to the rig. The last one is what's giving you the trouble, so pay close attention to that.

First, and this is also just a good practice, is to make sure your model is neat, with no messy areas, excessive overlap, etc.

Second, make sure all your bones are placed appropriately. In many cases this will be roughly in the center of the parts of your character.

Third, you want the Armature modifier to be as high on the modifier list as possible for a bunch of reasons (do keep it after the mirror modifier though). One of them is that placing a subdivision surface modifier before it will give it a TON mode geometry to try and weight. More geometry equals more problems when weighting. Plus, when you place the subsurf after the armature, you get the added bonus of some smoothing after deformation instead of before, which gives cleaner results in many cases. One of the steps I took when getting it to parent was to remove the subsurf, parent the character, then re add the modifier back afterwards (note: I did not test to see if this was absolutely necessary, but it can only help).

Fourth, and this is the main issue you were having, is you need to be conscious of the scale of your objects. Your scene was in Blender units (the default, and that's completely fine). Blender units are for all intents and purposes the same as metric units, just with no name. So 1 Blender unit is 1 meter. When modelling in 3d, it's best practice to keep things reasonably sized. Approximately real life is best, or somewhere around there. A typical human sized character would be somewhere a bit under 2 meters. However, your character was only the equivalent of 27 cm high. That's a lot of detail squeezed into a small area. Blender can handle it, but the automatic weight painting really doesn't like that. So, to fix your problem, you will need to scale up your character and the rig. I scaled them by a factor of 50, but you can try less if you like. You can also resize things after you've parented them. After resizing, it's also a good idea to apply the scale (and rotation and location while your at it) so that Blender knows where everything is and how big it is (this can be done with Ctrl+A).

The steps I took when I got your file to work were to place the take the unmodified character you provided, as well as the rig from layer 20 and place them on a separate layer (just to keep things clean, not really necessary though). Then, I removed the subsurf from the character. Then I scaled both objects up by 50 (note you'll have to scale up the eyes and any other parts as well after) and applied the location, scale, and rotation (Tip: when you scale up the eyes and things after, if you apply location first they'll scale the same as the rest of the character). After that, parenting with automatic weights should work. It may take a bit to sort itself out, but it shouldn't fail.


How do I render viewpoint shading in Blender?

It looks you're having a problem with your UVs. Check your UV Maps in the 'Object Data Properties' panel. If you have multiple, try enabling the camera option for the other ones.
If you only have 1 UV Map, then you might have to re-align your mesh UVs (You can do this in the UV Editing workspace)


Apply scale (Ctrl+A -> Scale) for target model:


How can I get rid of these two vertices without faces being deleted

Welcome to Blender Stack Exchange!

When you choose to delete vertices, it will not only delete the points themselves, but also any faces or edges that the vertices are part of. That's why part of the mesh disappears. Any face that the vertices were part of are now deleted.

Because of this, Blender has a number of dissolve options, that will delete your selection but keep everything connected.

The option in the delete menu that you'll want is dissolve edges or limited dissolve. Since two connected vertices form a edge, dissolving that edge will remove the vertices too. Limited dissolve will remove vertices, edges, and faces, but only if removing them won't change any angles in your object by a certain angle (5 degrees by default).

I highly recommend testing out the different options so you know what they each do, so that when you have a task to do, you know what tools are available to use.


I figured it out. Landscape meshes are created with inverted normals. I inverted the normals back on the left sidebar. Afterward I was free to paint.


Finding out which polygon a vertex belongs to in AN


Can I use splines and bones together in the same rig?

There is nothing stopping you from doing both.  This situation comes up from time to time when rigging polygonal hair to a character: the hair usually has spline control, and the body is made of bones.  Just make sure your parenting hierarchy and weight paint makes sense.  For simplicity, you may want to make the tail and body two discreet objects with their own deform modifier.

Also, there is the spline IK modifier for bones, in which a spline controls a series of bones.  So it's kind of mixing both.


Axis Bands of Rotation Gizmo Difficult to See

I submitted a bug report and received the following reply... This is indeed a known issue on Mac, which uses more strict version of OpenGL. Marking as known issue, but even so this is quite problematic on Macs, especially since they all ship with retina displays, making the 1px lines extremely thin.


Edge slide is indeed a special case, triggered through double G (grab mode -> edge slide). For this reason it doesn't show a key map entry.

You can however assign it yourself a key in the input configuration of user preferences. Under 3D View open the Mesh operator tree, scroll down and press Add New. In the first box write "transform.edge_slide", and give a key or key combo to trigger this. After that you should see the shortkey in the operator search menu as well. In the example image below I've used the equal sign.


The circle has no faces ( surface to reflect the light so it can be seen ) it can't be rendered like that. You have to make it 'thicker'. For that :

In Object Mode select the circle and switch to Edit Mode (Tab)
Hold  Alt and right-click on the circle ( to select it all vertices )
Press E then S ( extrude and resize )
Move the mouse till you get the desired result


The solution to your first problem will require a look at the file. But your second one can be solved without seeing it. The most straightforward way to attach your props to your rigs is probably to create a Child Of constraint. With your prop selected in Object Mode, look for the Object Constraint tab in the Properties Panel. From the Add Object Constraint dropdown, find and select Child Of. For the Target, choose your armature. Once chosen, you have access to a new text field for choosing the bone itself within the armature that you want to become the prop's parent. You probably want to make the target the IK handle of the hand in this case. You may notice after choosing a bone in this field that the prop jumps wildly. Press Set Inverse to make it return to its original position. When you move the parent, the prop moves as well.
The reason we use a Child Of constraint instead of a direct parenting relationship (from the Set Parent To menu) is because you can't keyframe changes to direct parenting relationships. But you can keyframe a change to the influence of any constraint, by right-clicking on the Influence slider, and setting one. This allows you to turn off the effect of the constraint at will, such as in those cases where the prop is intended to be free of a character's grasp at the moment.


Gray cone obscuring/clipping the 3D Viewport

You somehow enabled the clipping region (or clipping border). It's created in 2D, but projects into 3D, thus it looks like a cone from certain angles.
Disable it by clicking View > View Region> Clipping Region... in 3D View header, or press AltB


How do I add a procedural confetti pattern to a plaster wall?

You will need to do this with a texture. (I have created a seamless texture for you) I don't believe there are triangle shapes with nodes, so I dont think this can be done procedural.

Here is the Link for a seamless 4K texture I made real quick in PS.

This one below is just a reference of what it looks like.

Hope this helps.


I don't know any way of doing this automatically, but you can do it manually.  I believe what you want to do is export your UV layout.  You can do this in the UV editor under UVs > Export UV layout.

It will export a .png file with transparency which you can then use as an overlay in a program like Photoshop or Gimp to manually cut up your existing UV atlas.


How can I use a block size of 1m for different sized models using the remesh modifier?

Your illustrations are of a scripted expression driver, driving the 'Scale' property of a Remesh modifier with a function of the dimensions of the object to which it is assigned.

A complete description and examples of setting up drivers can be found here, but as a rough start:

Right-Click the 'Scale' field of your Remesh modifier, and select 'Add Driver' > 'Manually Create Later'
Make the object active, and open a Graph Editor window.
In its header, set the Graph Editor window to display 'Drivers'
You should see the 'Scale' driver in the left region; select it .. use N to open the property region on the right of the graph youmay have to fiddle with the graph region's width to get it to appear.

Now as a start, you could fill the panel as shown above. This is a tweak of the setup you illustrated, adjusted so the cubes will be 1 unit in width, whatever the size of your model, or octree depth.

Select 'Scripted Expression'. You may have to give it explicit permission to run in user prefs.. see here.

In this example,the model is called 'Suzanne'. (you can pick yours with the eyedropper). Here I've added 4 variables, using the driver UI: naming them dx,dy, and dz referring to the dimensions of the unmodified object, and od referring to the Octree Depth in the modifier, which I've named 'RM' in its own panel, to keep everything short.

In the modifier, the 'Scale' is (object size)/(modifier base cube size) where the object size is measured by its maximum dimension, and you can implicitly vary the base cube size. 'Octree Depth' is the number of times the base cube is subdivided to give your blocks. So this expression will yield blocks with one-unit sides: max(dx,dy,dz)/(2**od)

This is the result as Suzanne is scaled up: the blocks stay at 1 unit on the side, (the view is tracking back)


Cloth Simulation Not Rendering Correctly Over Network

Under Cloth Cache, if you enable Disk Cache, blender will create a folder holding the cloth simulation data, without this no simulation data can be used while rendering. This cache folder needs to be copied to each computer that will be rendering.

The name of the folder should be the blend filename prefixed with blendcache_ and be in the same folder as the blend file.


bpy.ops.object.select_inverse() removed from Python API?

select_inverse() was available up to 2.61 (API docs), it's missing in docs from 2.62 on.

The following operator inverts the current object selection and should be equivalent:

bpy.ops.object.select_all(action='INVERT')

You can get every past release here:
http://download.blender.org/release/

Blender.org forums were meant for developers, and the user community was mostly active on http://blenderartists.org/ anyway. Consider BA.org the successor to the official forums.


This can be done with bpy.ops.logic.actuator_add

import bge
import bpy
cont = bge.logic.getCurrentController()
own = cont.owner

m = []
for k in range (1, 95):
    bpy.ops.logic.actuator_add(type='MOTION', name="Motion"+str(k), object="Cube")

Where type must be in ('ACTION', 'CAMERA', 'CONSTRAINT', 'EDIT_OBJECT', 'FILTER_2D', 'GAME', 'MESSAGE', 'MOTION', 'PARENT', 'PROPERTY', 'RANDOM', 'SCENE', 'STEERING', 'SOUND', 'STATE', 'VISIBILITY')

This was tested in the BGE using default scene with "Cube"


colored shadows for transparent objects with shadow catcher

I do not believe this is possible at this point with just the shadow catcher function added in v2.79.

The function is imperfect for compositing, it also does not catch light or refraction/reflections for example.
Its just a quick way to composite your scene for mock-up purposes.

I would suggest to use the compositor and render passes to achieve the desired effect, which is much more involved and exceeds the answer to this question.


How can I adapt my topology around beveled corners?

I don't think it's horrible, maybe you don't need so many edges on your bevels, and maybe add some additional edge loops through the shape with the knife tool, for example:


This can be modeled using blender physics.
The animation was generated in Blender 2.76b from the attached .blend file. It uses the built-in physics. It shows attraction (blue-red), followed by repulsion (red-red).

Create a scene with a plane and two cylinders above the plane. Add two empties.
Parent an empty to each cylinder. The forces will be driven through the empties.
Select the plane and go to the physics tab. Enable rigid body physics for the the plane. Specify the plane will be animated. This will prevent movement of the plane, but give the cylinders something to slide on.

For each cylinder, on the physics tab, enable rigid body physics. This will let the cylinder collide with the plane and each other.

For each empty, enable forces in the physics tab. Set the forces to -100. You may need to adjust the forces depending on the spacing. The negative values indicate that the empties will attract each other. Positive values will cause the empties to push each other apart.

Run the animation to see the result.

A blender file illustrating this approach:

This solution is similar to the approach described in this question: How to have rigid-bodies and charge fields interact?


Found out that I can drag the "browse material to be linked" icon and drop it on the thing I wanted to change just like in regular 3d materials.


The constraint is in "world space" switch it to "local space"


Blender 2.75 now has a feature a tool to perform exactly this operation.

Mesh > Cleanup > Split Concave Faces


How do I give a keyframed object a bit of vibration/shaking when it's at the destination point?

To add to Chris' answer, you can use a Noise modifier in the Graph Editor. Create your animation, open the Graph Editor, select the bone (or object), select the track where you want the vibration to happen, for example here the Z Rotation track, ShiftH to hide the others, and in the N panel, on the right of the Graph Editor window, create a Modifiers > Modifier > Noise. Now if you click on the Restrict Frame Range you can decide in what range of frames the vibration will happen. Here is what it can give:

Another solution, if you select your track, select the vertex or vertices where you want the effect to begin and press T (or header menu > Key > Interpolation Mode) you can create a Dynamic Effects like Bounce or Elastic (the settings are in the FCurve tab):

If these solutions are not satisfying I guess you need to do it manually...


To everyone who wanted to also know why this doesn't work - here after long fight I managed to make it work, here's code:

# This example adds an object mode tool to the toolbar.
# This is just the circle-select and lasso tools tool.
import bpy
from bpy.types import WorkSpaceTool

class Circularize(WorkSpaceTool):
    bl_space_type='VIEW_3D'
    bl_context_mode='EDIT_MESH'

    # The prefix of the idname should be your add-on name.
    bl_idname = "ui_plus.circularize"
    bl_label = "Circularize"
    bl_options = {'REGISTER', 'UNDO'}
    bl_description = (
        "Move selected vertices into a circular shape"
    )
    bl_icon = "ops.generic.select_circle"
    bl_widget = None
    bl_keymap = (
        ("mesh.looptools_circle", {"type": 'LEFTMOUSE', "value": 'PRESS'},
    {"properties": [("custom_radius", False), ("radius", 1)]}),
        )

def register():
    bpy.utils.register_tool(Circularize, after={"builtin.scale_cage"}, separator=True, group=True)

def unregister():
    bpy.utils.unregister_tool(Circularize)

if __name__ == "__main__":
    register()


I pressed alt+f to change the camera view and I do not know how to revert to the original camera MOVEMENT

Just found the solution: Messed up zoom navigation, need help! (somehow I locked the view to the object which can be changed in the panel where you press N to hide and reveal it)


when I add IK, my bone moves out of place in Blender 2.8

Thanks "Serge L" here I did it.
I want to show the solution with picture so that if anyone else have this problem it help them as well.
When I created my IK bone, I deformed it and also cleared parent but mistakenly moved it away from armature, that was the problem. so as you can see from the picture below, you should extrude a new bone, deform it and clear parent then add ik, but be aware to not move it from its place.


How can I get the world grid and backdrop grid to be visible in a render?

Unfortunately, this is not possible using the standard render methods.

However, one way you can add it is by capturing an image of the grid as a screen shot from top orthographic view after hiding all visible objects. The grey background can then be removed using an image editing program and added to the scene as so:

Grid image (you are free to use this one if you like):

Then create a plane exactly the size of this image (6x6) and UV unwrap the plane

Cycles:

Set the material to the following node setup:

This makes the material only visible to the camera and transparent where there is no grid.

This can then be used in your renders :)

Blender internal:

For blender render simply enable Z-transparency in the materials and set the alpha to 0. Also enable shadeless and disable cast shadow.

Then select the image in the textures tab. Then ensure that the texture affects the alpha of the material by turning up alpha (just under color) to 1.

If the grid is too thick you can scroll up to image sampling, disable MIP map and lower the filter size. This should make the grid thinner.

You can now use it in your renders :)


Strange particle omission area in render (Internal)

Turns out the mist was actually affecting the particle emission volume, so the corners were being affected more by the mist and getting culled out closer towards the vertices. I solved this by just making it a perfect cube and adding power 4 subdivision surface. Not sure why mist affects an invisible particle volume in the first place, but it's for Internal so I guess I can't really complain... :P


It looks like this would be possible to do with Boolean modifiers. Just create a sphere, deform it with modifiers so it looks more like a blob, then repeat it in a bubbly pattern within the fluid object. Once you've got all the bubbles where you want them, select them all and join them with CTRL + J. Then select the fluid, go to modifiers and add a Boolean modifier. Then select the bubbles under object. and apply.


Are there any placeholder models included with Blender?

Blender does not natively have humanoid characters installed, but MB-Lab is an open source Blender add-on (v2.79 and v2.8) - creates rigged, textured human characters

https://mb-lab-community.github.io/MB-Lab.github.io/


I would use the path; it probably won't be too hard on the game engine. The extruded one should also work, although I would make it out of simple rectangles to keep the poly count down, unless you need to see it up close.

That said, you probably don't even need a handle at all--you can just paint it into the texture on the side of the vehicle.


It should not affect the render in any way.

I don't know the inner working of Cycles specifically, but ray tracing, as you might know, works by shooting a bunch of rays from the camera to the light source, having the ray bouncing around the scene, simulating the real behaviour of a ray of light (only in reverse).

The thing is every single ray is independent of each other. No ray knows about what another ray is doing, or where is going, or what color it is or what it hit. This means that the ray tracing alghoritms can be parallelized to an great amount without having to worry about race conditions and dependecies between two rays (I'm trying not to get too technical here, this is just the gist of it).

The reason why using tiles is a good technique is a bit techincal, suffice to say that because of the way CPUs and GPUs are designed, they get better perfomances with either small tiles (CPUs) or big tiles (GPUs). Changing the tile size used while rendering just takes advantage of the difference in architecture between the two kinds of processors.

That said, does the tile size alter the quality of the final render? No, it should not, not in a perceptible manner anyway. Why? Because each individual pixel in the is treated the same way, and will get the same amount of samples computed over it.

If you use, say, 200 samples per pixel, then using either 32x32 pixel tiles or 512x512 pixel tiles doesn't make a difference, the final image will have the same number of total samples computed for it, therefore the same appreciable quality (the only difference might be the noise pattern). The difference in performance is given by the way GPUs and CPUs handle the data they're given, but it does not cause a loss (or gain) of quality.

Tl;dr: The speed up is given by the way the hardware handles the data it's given, doesn't have anything to do with the quality of the final render.


Cubic bezier and cubic hermite interpolation for FCurves

Blender also supports cubic (3rd order) curves.

Hermite curves can be converted into Bézier curves with a bit of math. From the two control points and the derivative at those points you can compute the two other points to complete the Bézier curve. More info can be found at https://pomax.github.io/bezierinfo/#catmullconv


It's recommended to apply the mirror modifier for humans, animals & creatures. This allows you to paint both sides differently to add scars, freckles, spots, tattoos, wrinkles, skin pores, imperfections, etc for a more realistic appearance.
Hair/fur/whiskers should also have some asymentry to look natural and realistic.
You still can use mirror mode in texture paint and particle edit mode to save time.
About the displacement modifier I don't know. Do you need it? After retopology the low poly mesh should be fine.
A common workflow is to create a high poly object, retopologize it to get a low poly version. Then you bake a normal map and apply this baked texture to the low poly object. If you want to add more details like wrinkles, etc you can add a multires modifier to the lowpoly and bake the normal map again.


Why are these mesh white and does not appear in rendering?

While you are in Object Mode press W and then Clear All Restrict Render. Hope it helped


The material surface selection field is not available in 2.79b

You probably need to switch from Blender Render engine to Cycles Render:


Select the armature, go to the Modifiers tab. I think you are looking for this:

Some operations (such as loop cut) may not work as expected on deformed edit mesh display, so, be careful when editing.


What does 'Clear Origin' (Alt-O) do in the 3d view?

Select a child object of a parent, and press AltO (that is the letter O). It will move the child to the parent, while still keeping the parent relationship intact. The name Blender uses is "clear its origin".


VSE questions (playback, proxies, etc..)

You can reduce the frame dropping by increasing the following values in the User Preferences.

To move video and audio track as one unit select both and combine them to a meta strip Ctrl-G.


Long hair collapses with soft body physics in animation

Probably the first thing people find when they enable soft body is that it all collapses in on itself. You need to stiffen it up a bit to have it maintain it's structure.

The first thing I would do is enable Stiff Quads and turn up Bending to 3, damp to 20 (under soft body edges) and damping to 12 (under soft body goal).

You will need to experiment more to get it right but that should get you closer.

You might find this video helpful in explaining some of the options.


Rigid body simulation: how to return vertex location frame by frame using Blender's Python API?

Generally you can access the object's pivot point (location) via its world transformation matrix (matrix_world.translation). This value also reflects any constraints, simulations and transformations (location, rotation, scale) on the object.

You can use the world matrix to also find each vertex's global location in each frame, by multiplying it by the individual vertex's coordinate (vertex.co).

Here's a script that prints out the location of a rigid body simulated cube and the location of its first vertex (index=0) in each of the simulation's 40 frames:

import bpy

S    = bpy.context.scene
cube = bpy.data.objects["Cube"]
mw   = cube.matrix_world # World transformation matrix of Cube object

for i in range( 1, S.frame_end + 1 ):
    S.frame_set( i )

    vert0loc = ( mw * cube.data.vertices[0].co )[:]  # Global location of vertex 0
    cubeloc  = mw.translation[:]                     # Global location of cube's pivot point
    print( "Frame (%s) Vert %s Pivot %s" % (i, str(vert0loc), str(cubeloc) ) )

This is how the simulation looks like:

And this is how the output looks like:

Frame (1) Vert (-1.0, -1.0, 11.264372825622559) Pivot (0.0, 0.0, 12.264372825622559)
Frame (2) Vert (-1.0, -1.0, 11.256199836730957) Pivot (0.0, 0.0, 12.256199836730957)
Frame (3) Vert (-1.0, -1.0, 11.223535537719727) Pivot (0.0, 0.0, 12.223535537719727)
Frame (4) Vert (-1.0, -1.0, 11.188177108764648) Pivot (0.0, 0.0, 12.188177108764648)
Frame (5) Vert (-1.0, -1.0, 11.14197063446045) Pivot (0.0, 0.0, 12.14197063446045)
Frame (6) Vert (-1.0, -1.0, 11.052353858947754) Pivot (0.0, 0.0, 12.052353858947754)
Frame (7) Vert (-1.0, -1.0, 10.979090690612793) Pivot (0.0, 0.0, 11.979090690612793)
Frame (8) Vert (-1.0, -1.0, 10.848958015441895) Pivot (0.0, 0.0, 11.848958015441895)
Frame (9) Vert (-1.0, -1.0, 10.74873161315918) Pivot (0.0, 0.0, 11.74873161315918)
Frame (10) Vert (-1.0, -1.0, 10.578221321105957) Pivot (0.0, 0.0, 11.578221321105957)
Frame (11) Vert (-1.0, -1.0, 10.451122283935547) Pivot (0.0, 0.0, 11.451122283935547)
Frame (12) Vert (-1.0, -1.0, 10.240371704101562) Pivot (0.0, 0.0, 11.240371704101562)
Frame (13) Vert (-1.0, -1.0, 10.086490631103516) Pivot (0.0, 0.0, 11.086490631103516)
Frame (14) Vert (-1.0, -1.0, 9.835636138916016) Pivot (0.0, 0.0, 10.835636138916016)
Frame (15) Vert (-1.0, -1.0, 9.655065536499023) Pivot (0.0, 0.0, 10.655065536499023)
Frame (16) Vert (-1.0, -1.0, 9.364243507385254) Pivot (0.0, 0.0, 10.364243507385254)
Frame (17) Vert (-1.0, -1.0, 9.157073020935059) Pivot (0.0, 0.0, 10.157073020935059)
Frame (18) Vert (-1.0, -1.0, 8.82641887664795) Pivot (0.0, 0.0, 9.82641887664795)
Frame (19) Vert (-1.0, -1.0, 8.59273910522461) Pivot (0.0, 0.0, 9.59273910522461)
Frame (20) Vert (-1.0, -1.0, 8.222389221191406) Pivot (0.0, 0.0, 9.222389221191406)
Frame (21) Vert (-1.0, -1.0, 7.962289810180664) Pivot (0.0, 0.0, 8.962289810180664)
Frame (22) Vert (-1.0, -1.0, 7.5523786544799805) Pivot (0.0, 0.0, 8.55237865447998)
Frame (23) Vert (-1.0, -1.0, 7.2659502029418945) Pivot (0.0, 0.0, 8.265950202941895)
Frame (24) Vert (-1.0, -1.0, 6.816610813140869) Pivot (0.0, 0.0, 7.816610813140869)
Frame (25) Vert (-1.0, -1.0, 6.503941535949707) Pivot (0.0, 0.0, 7.503941535949707)
Frame (26) Vert (-1.0, -1.0, 6.015308856964111) Pivot (0.0, 0.0, 7.015308856964111)
Frame (27) Vert (-1.0, -1.0, 5.676488876342773) Pivot (0.0, 0.0, 6.676488876342773)
Frame (28) Vert (-1.0, -1.0, 5.148696422576904) Pivot (0.0, 0.0, 6.148696422576904)
Frame (29) Vert (-1.0, -1.0, 4.783813953399658) Pivot (0.0, 0.0, 5.783813953399658)
Frame (30) Vert (-1.0, -1.0, 4.216994285583496) Pivot (0.0, 0.0, 5.216994285583496)
Frame (31) Vert (-1.0, -1.0, 3.826138496398926) Pivot (0.0, 0.0, 4.826138496398926)
Frame (32) Vert (-1.0, -1.0, 3.2204246520996094) Pivot (0.0, 0.0, 4.220424652099609)
Frame (33) Vert (-1.0, -1.0, 2.803682804107666) Pivot (0.0, 0.0, 3.803682804107666)
Frame (34) Vert (-1.0, -1.0, 2.1592068672180176) Pivot (0.0, 0.0, 3.1592068672180176)
Frame (35) Vert (-1.0, -1.0, 1.716667652130127) Pivot (0.0, 0.0, 2.716667652130127)
Frame (36) Vert (-1.0, -1.0, 1.0335607528686523) Pivot (0.0, 0.0, 2.0335607528686523)
Frame (37) Vert (-1.0, -1.0, 0.5653115510940552) Pivot (0.0, 0.0, 1.5653115510940552)
Frame (38) Vert (-1.0, -1.0, -0.15629464387893677) Pivot (0.0, 0.0, 0.8437053561210632)
Frame (39) Vert (-1.0000004768371582, -1.0000001192092896, -0.08050315827131271) Pivot (-1.651987702189217e-07, -6.964894083694162e-08, 0.919496476650238)
Frame (40) Vert (-1.0000011920928955, -1.0000011920928955, 0.012565473094582558) Pivot (-4.125758152895287e-07, -5.586560973824817e-07, 1.0125640630722046)


How to the set orientation for spin tool

Select the face you want to spin, then use View >> Align View >> Align View to Active. Find the view you need to see along your desired spin axis and spin. You can use a second window to do the selection if necessary.


Well I figured it out with much googling. I even redid the mark seam and everything.

Turns out when creating a new image texture, I had to click on the checkmark that says 32 bit float and now the seam problem went away along with some sloppy normal map problems that I kept getting. I guess the extra resolution is needed.
source: https://developer.blender.org/T42056


As Chetan Trivedi said:

  .. . I overlooked the parenting of the minds eye (the parent of the two individual eyes). Minds eye was not parented to the head deformation bone which was causing the problem. Its fixed now.

Posted to take this off of the un-answered list


The first thing to note is you need to ensure that your domain resolution is set high enough so you have enough fluid detail to fit through any holes. Look at the small cube in the bottom corner of the domain - visible in your second image; that’s the size of one ‘cell’. Any hole smaller than the width of that will definitely obstruct your flow. Start by increasing the Resolution and/or increasing the size of your ‘holes’.
Also, make sure any obstacle meshes are Manifold (completely enclose a volume).


First, create the initial animation using an approach like this:

Next, we take the output time and delay it by some amount using a Delay Node. This time is then used as the time for an Animate Vector node, the start vector will be a zero vector (No offset) and the end vector will be the offset vector. A list is then filled with this vector to match the objects' count. Finally, we set a certain list element to zero, this element corresponds to the object that will not move. Then the list is added to the vectors:


Same thing using API methods.
Instead of using the operator calls can individually set each cube's z location to a random float value between 0 and 2, and insert a keyframe, in this case Z location at a designated frame. Notice not changing frame.
import bpy
from bpy import context
from random import uniform

#col = contxxt.collection
col = bpy.data.collections.get("Cubes")
if col:
    for frame_number in range(0 ,50, 5):
        for o in col.all_objects:
            o.location.z = uniform(0, 2)
            o.keyframe_insert("location", index=2, frame=frame_number) # z axis only

A transform, moves an object from where it is plus an amount, would be same as using
o.location.z += uniform(0, 2)

To have the value always zero on frame 0 could use
o.location.z = uniform(0, 2) if frame else 0

To insert all location keyframes, omit the index argument of Object.keyframe_insert
o.keyframe_insert("location", frame=frame_number)


You first need to create one segment. Use a Mirror modifier to make it easier. It should look like that:

Give it a Solidify modifier, press AltD to link-duplicate in order to see if it works, make the necessary modifications in Edit mode:

Once you are good, give it an Array modifier in order to repeat:

Blend file:


Not sure why Reload Scripts didn't work at first for me, maybe I didn't save the correct file or whatnot, anyway, that's a possible way. My issues were however with this method is that

I have to edit files in Blender addons folder, not in my project folder;
this reloads all the scripts, on my machine with a lot of addons installed it takes about four seconds and plus after that some addons reset their settings;

In the end I followed this article for creating and debugging multifile addons. Author suggests using a specific setup for the __init__.py file and then provides a Blender script in the second part of the article to update only a specific addon. I've assigned this script to a hotkey and it works much faster than reloading all the scripts.

Here are the final scripts from the article. __init__.py:

bl_info = {
    'name': 'Test Multifile Addon',
    'category': 'All',
    'version': (0, 0, 1),
    'blender': (2, 80, 0)
}

modulesNames = ['addCube', 'addCubePanel'] # a list of imported module names

import sys
import importlib

modulesFullNames = {}
for currentModuleName in modulesNames:
    if 'DEBUG_MODE' in sys.argv:
        modulesFullNames[currentModuleName] = ('{}'.format(currentModuleName))
    else:
        modulesFullNames[currentModuleName] = ('{}.{}'.format(__name__, currentModuleName))

for currentModuleFullName in modulesFullNames.values():
    if currentModuleFullName in sys.modules:
        importlib.reload(sys.modules[currentModuleFullName])
    else:
        globals()[currentModuleFullName] = importlib.import_module(currentModuleFullName)
        setattr(globals()[currentModuleFullName], 'modulesNames', modulesFullNames)

def register():
    for currentModuleName in modulesFullNames.values():
        if currentModuleName in sys.modules:
            if hasattr(sys.modules[currentModuleName], 'register'):
                sys.modules[currentModuleName].register()

def unregister():
    for currentModuleName in modulesFullNames.values():
        if currentModuleName in sys.modules:
            if hasattr(sys.modules[currentModuleName], 'unregister'):
                sys.modules[currentModuleName].unregister()

if __name__ == "__main__":
    register()

Blender script to reload the addon:

import os
import sys

filesDir = "d:/Python/TestMultifile"

initFile = "__init__.py"

if filesDir not in sys.path:
    sys.path.append(filesDir)

file = os.path.join(filesDir, initFile)

if 'DEBUG_MODE' not in sys.argv:
    sys.argv.append('DEBUG_MODE')

exec(compile(open(file).read(), initFile, 'exec'))

if 'DEBUG_MODE' in sys.argv:
    sys.argv.remove('DEBUG_MODE')


registering a new prop in bpy.types.VertexGroups

Unfortunatly I have solved (not really) the problem myself. It turns out that the VertexGroup type is "Read Only" meaning you cannot add properties to it. The reason that it worked with the Object type is that it is not "Read Only". I guess i am going to have to come up with a new solution to the problem.


How to match bone orientation between two objects in Python?

First of all, if you have 2 armatures with different object rotations relative to each-other, simply copying the roll value won't give you (visually) the same orientation (or if it does it will only be by accident).

The basic solution to this is:

Get an orthogonal direction from the bone (X or Z axis).
Transform that axis into world-space.
Transform the axis into the local space of the other object.
Algin all bones (X or Z) to that axis.

This is a working script written by @Tak, updates by @ideasman42:

import bpy
import math

def align_bone_x_axis(edit_bone, new_x_axis):
    """ new_x_axis is a 3D Vector the edit_bone's x-axis will point towards.
    """
    new_x_axis = new_x_axis.cross(edit_bone.y_axis)
    new_x_axis.normalize()
    dot = max(-1.0, min(1.0, edit_bone.z_axis.dot(new_x_axis)))
    angle = math.acos(dot)
    edit_bone.roll += angle
    dot1 = edit_bone.z_axis.dot(new_x_axis)
    edit_bone.roll -= angle * 2.0
    dot2 = edit_bone.z_axis.dot(new_x_axis)
    if dot1 > dot2:
        edit_bone.roll += angle * 2.0

source = bpy.data.objects['Source']
target = bpy.data.objects['Target']

# Needed to account for object rotation
source_to_world_matrix = source.matrix_world.to_3x3()
world_to_target_matrix = target.matrix_world.inverted().to_3x3()

source_x_axis = {}
bpy.ops.object.select_all(action='DESELECT')
source.select = True
bpy.context.scene.objects.active = source
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.armature.select_all(action='SELECT')

for b in source.data.edit_bones:
    source_x_axis[b.name] = source_to_world_matrix * b.x_axis

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

bpy.ops.object.select_all(action='DESELECT')
target.select = True
bpy.context.scene.objects.active = target
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.armature.select_all(action='SELECT')

for b in target.data.edit_bones:
    align_bone_x_axis(b, world_to_target_matrix * source_x_axis[b.name])

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


Make a seamless, continuing texture on two separate models

Look into UV project modifier.
It allows an object (could be an empty or the camera) to project an image into UV unwrapped objects, Very easy to control the size and positioning in real time.


You will definitely have to adjust and ignore some code, paths etc, but most of it is reusable. You also need the MultiCamera addon.

import bpy
import time
import numpy as np
from datetime import datetime
import os
startTime = datetime.now()

def delThisObj(obj):
    bpy.data.scenes[0].objects.unlink(obj)
    bpy.data.objects.remove(obj)
    return

def setupCamera(scene, c):
    pi = np.pi

    scene.camera.rotation_euler[0] = c[0] * (pi / 180.0)
    scene.camera.rotation_euler[1] = c[1] * (pi / 180.0)
    scene.camera.rotation_euler[2] = c[2] * (pi / 180.0)

    scene.camera.location.x = c[3]
    scene.camera.location.y = c[4]
    scene.camera.location.z = c[5]

    return

# Assumes there is only the car object (no camera etc.)
# example use:  oldmat = [['body'], ['M_0056_Yellow']], newMat = 'Body_Pain_new'
def changeMaterialColor(old, new):
    for o in old:
        for mat in bpy.data.objects[0].data.materials:
            if mat.name == o:
                bpy.data.objects[0].material_slots[mat.name].material = bpy.data.materials[new]
    return

def setEnvironmentTexture():
    # TODO: Load all environment textures if possible
    # TODO: and just exchange which one will be used for curret render

    # Add Environment-texture to image collection
    fileName = 'shanghai_bund_8k.hdr'
    filePath = 'D:\\Anon\\HDRIs\\' + fileName
    fileDir = 'D:\\Anon\\HDRIs\\'
    bpy.ops.image.open(filepath=filePath, directory=fileDir)

    # [4.9.1] Set HDRI background

    # Add nodes
    bpy.data.worlds['World'].use_nodes = True
    texEnv = bpy.data.worlds['World'].node_tree.nodes.new(type='ShaderNodeTexEnvironment')
    nodeMap = bpy.data.worlds['World'].node_tree.nodes.new(type='ShaderNodeMapping')
    texCoord = bpy.data.worlds['World'].node_tree.nodes.new(type='ShaderNodeTexCoord')
    background = bpy.data.worlds['World'].node_tree.nodes['Background']

    # Link Nodes
    links = bpy.data.worlds['World'].node_tree.links
    links.new(texCoord.outputs[0], nodeMap.inputs[0])
    links.new(nodeMap.outputs[0], texEnv.inputs[0])
    links.new(texEnv.outputs[0], background.inputs[0])

    bpy.data.worlds['World'].node_tree.nodes['Environment Texture'].image = bpy.data.images[fileName]

def main(model):
    # [1] Reset Scene, based on factory settings
    if list(bpy.data.objects).__len__() == 3:
        defaultCube = bpy.data.objects['Cube']
        defaultLamp = bpy.data.objects['Lamp']
        defaultCamera = bpy.data.objects['Camera']

        delThisObj(defaultCube)
        delThisObj(defaultLamp)
        delThisObj(defaultCamera)

    for item in bpy.data.meshes:
        bpy.data.meshes.remove(item)

    # [2] Change to Cycles Render
    bpy.context.scene.render.engine = 'CYCLES'

    # [3] import .obj
    filepath = model + '\model.obj'
    bpy.ops.import_scene.obj(filepath=filepath)

    # [4.9.2] Create shadowcatcher
    # Create plane
    bpy.ops.mesh.primitive_plane_add()

    # Make it a shadow-catcher
    bpy.data.objects["Plane"].cycles.is_shadow_catcher = True

    # Scale the plane to match modelsize
    bpy.ops.transform.resize(value=(10, 10, 10))

    # [5] Enable multi-camera addon
    bpy.ops.wm.addon_enable(module="multiplecamera")

    # [6] Add Sun and position it
    #x, y, z = 1, 2, 3
    #bpy.ops.object.lamp_add(type="SUN")
    #sun = bpy.data.objects['Sun']
    #sun.location[0] = x
    #sun.location[1] = y
    #sun.location[2] = z

    # [7] Add cameras and position them
    numberOfCameras = 4
    scene = bpy.data.scenes["Scene"]

    # [euler0, euler1, euler2, x, y, z]
    cam0 = [77.487, -0.000244, 91.4015, 13.6156, 0.094522, 2.19869]
    cam1 = [70.2677, -0.000819, 173.623, 1.1328, 11.1731, 3.33687]
    cam2 = [85.5084, 0.000169, -90.6852, -12.8706, 0.355527, 1.29131]
    cam3 = [74.6794, -0.002039, 11.1926, 3.2923, -15.5643, 4.444]

    camList = [cam0, cam1, cam2, cam3]

    for i in range(numberOfCameras):
        bpy.ops.object.camera_add()
        newCamera = bpy.data.objects['Camera']
        newCamera.name = 'c' + str(i)

        newCamera.rotation_mode = 'XYZ'
        scene.camera = newCamera

        config = camList[i]
        setupCamera(scene=scene, c=config)

    # [7.5] Set resolution
    bpy.data.scenes["Scene"].render.resolution_percentage = 100

    # [8] Enable CUDA and activate GPU
    # code from https://developer.blender.org/T54099

    scene = bpy.context.scene
    scene.cycles.device = 'GPU'

    prefs = bpy.context.user_preferences
    cprefs = prefs.addons['cycles'].preferences

    # Attempt to set GPU device types if available
    for compute_device_type in ('CUDA', 'OPENCL', 'NONE'):
        try:
            cprefs.compute_device_type = compute_device_type
            break
        except TypeError:
            pass

    # Enable all CPU and GPU devices
    for device in cprefs.devices:
        device.use = True

    # [9] Select all cameras
    for i in range(numberOfCameras):
        camera = 'c' + str(i)
        bpy.data.objects[camera].select = True

    # [10] Render selected cameras with mutli-camera addon

    # define outputpath
    path = r'C:\Users\Anon\Desktop\3DModels\TestRenderings4\\'

    bpy.data.scenes['Scene'].MultiOutputDir = path+model.split('\\')[-1] + '\\'
    # render
    bpy.ops.render.multiple_camera_render()

    # [12] Delete every object in the scene
    bpy.ops.object.mode_set(mode='OBJECT')
    bpy.ops.object.select_by_type(type='MESH')
    bpy.ops.object.delete(use_global=False)

    for item in bpy.data.meshes:
        bpy.data.meshes.remove(item)

if __name__ == "__main__":
    print(datetime.now() - startTime)

    listOfModels = [
        '1a30678509a1fdfa7fb5267a071ae23a',
        '1a4337da899da1936909632a947fc19b',
        '1a7125aefa9af6b6597505fd7d99b613',
        '1a7d2c9d3a084885afa2ee0adc62d22',
         ]

    setEnvironmentTexture()

    for p in range(listOfModels.__len__()):
        main(model=r'C:\Users\Anon\Desktop\3DModels\02958343\\' + listOfModels[p])

    print(datetime.now() - startTime)


Autosmooth script fails in edit mode but works in object mode

bpy.ops.object.shade_smooth() is only accessible from Object Mode (poll). To use it, you would have to toggle into Object Mode first. To shade in Edit Mode (using ops) you would have to use bpy.ops.mesh.faces_shade_smooth(). This will only work on selected faces though.


using subsurf modifier to object with boolean undoes boolean

The reason might be that the Sudivision Surface modifier creates additional geometry that makes the boolean fail because of overlapping vertices/edges/faces. Just try to slightly move the boolean object to avoid that.


Rigid Body Simulations never work- everything flies in random directions

This one is rigged, not physic'd.  (I've treated it as a lock)
(Blend file below)

The bones are pulled in reverse to guarantee the locking shaft will move in a dead straight line.
To this end an Empty is animated to the left and is a parent for the shaft.  It's also an IK target for the bone that controls the middle linkage.
As it moves it pulls that bone across to effectively rotate the 1st child-bone that parents the disc, forcing it to rotate also.
It's all done back to front but as far as I can make out, it's the only practical way to guarantee the locking shaft won't vary from it's straight path.
As you've come to realise, Blender is an animator/modeller, not an engineering tool and does require some innovation to get around it's physics limitations at times.  It can be a marvelous brain stimulator!


How to get the color of a vertex group with python?

Finally the answer is found.
https://developer.blender.org/T82451
Thanks to Phillip
You need to read this from the evaluated object, see

import bpy

ob = bpy.context.object

depsgraph = bpy.context.evaluated_depsgraph_get()
object_eval = ob.evaluated_get(depsgraph)

#vertex colors are in fact stored per loop-vertex -&gt; MeshLoopColorLayer
if ob.type == 'MESH':

    #how many loops do we have ?
    loops = len(object_eval.data.loops)
    verts = len(object_eval.data.vertices)
    print("--------------------------------------------")
    #go through each vertex color layer
    for vcol in object_eval.data.vertex_colors:
        # look into each loop's vertex ? (need to filter out double entries)
        visit = verts * [False]
        colors = {}

        for l in range(loops):
            v = object_eval.data.loops[l].vertex_index
            c = vcol.data[l].color
            print("Vertex {0} has Color {1}".format(v, (vcol.data[l].color[0],vcol.data[l].color[1],vcol.data[l].color[2])))
            if not visit[v]:
                colors[v] = c
                visit[v] = True

        sorted(colors)
        print("Vertex-Colors of Layer:", vcol.name)
        #print(colors)
#        for v, c in colors.items():
#            print("Vertex {0} has Color {1}".format(v, (c.r, c.g, c.b)))
#
        print("")

The magic of depsgraph


How to model concavity, depression on a mattress surface?

This is really just a starting suggestion; it could be tweaked for ever..
Prepare your mattress for cloth simulation.. I have subdivided this box, triangulated its geometry, and decimated, for this random triangulation. I'm not claiming this is necessarily the best for this. Other topologies may work better.
Create your pattern as flat, reasonably dense, geometry, and Knife Project it down onto the mattress. It will remain selected. Make a Vertex group from the projection...

..and use it as a Pin group in a cloth simulation, including an inflation pressure, which the group will resist.

I'm sure this could be refined further. Whether or not this is better than, say, masked sculpting, is another question. Maybe someone who knows more about that will contribute an answer.


one way could be by running Blender from the terminal and just add && at the end.
NB. not sure on windows though havent try it myself.

mac:

cd /Applications/Blender
./blender.app/Contents/MacOS/blender && do_something

linux:

cd <blender installation directory>
./blender && do_something

windows

cd c:\<blender installation directory>
blender -and do_something

on unix based system the && command does something if the command before has successful, so basically in this case only after you quit blender it will run the second command. on windows -and should probably do the same.

you could also probably catch it by launching blender inside python using the subprocess module. But haven't try that yet.


Is there any difference between "triangulate faces (Ctrl + T)" and "triangulate modifier"?

Traingulate modifier is non-destructive (it's a modifier) and you can choose which faces to triangulate based on their number of edges (i.e in some case you only want to triangulate ngons but not quads, like after a boolean operation that leave you with a messy mesh a part of your object and you don't want to spend time fixing it)


As said by Bithur in the comments, it is quite possible that you are rendering an animation. Stop the current render with the Escape key. Then press F12 (make sure that you don't press Control+F12 by accident!), or go to Render -> Render Image from the toolbar.

If it continues to do the same, go into the render settings and make sure that Sampled motion blur is unchecked. If even this doesn't help make the render finish, uncheck Anti-Aliasing (I am not really sure this will help, but you can try...).


Blender Guru Tutorial - Part 5 - Coffee Cup

You have Proportional Editing on with Random Falloff selected. You can turn this off by pressing O once or twice or by changing the menu manually at the bottom of the 3D Viewport.

A Gif to explain:

Proportional Editing can be extremely useful for deforming a mesh in a mathematically precise way. For example, with your coffee cup, I might loop cut the main cylinder several times and then use proportional editing with Smooth Falloff while scaling the bottom loop to create a loose conic shape. I then might use Sphere Falloff to widen the middle and shrink the top.


logic editor: delay sensor activates too soon

Delay is like a timed trigger. Think of it as an Always sensor, with a delay in frames. The Delay and Duration Settings, are like the ping-pong counts.  Ping -> true for sixty frames, pong false for 60 frames.

If Duration is set to 0, then it's just Ping, Ping, Ping every 60 frames, from the moment you hit Go!

Probably the easiest way to deal with this, without getting into Python, is to use the Logic States.

In your first state, set up your sensor for keyboard, and use 'State Actuator' to set game to second state.

In your second state use the Delay Sensor. The Delay won't start running until we enter the new state. So, you will have 60 frames from that point before the object disappears.

Things that you want to pay attention to:

Controllers link directly to states. So, make sure you have the correct State selected before adding your Controller.
Make sure that you Keyboard Sensor is in the 'Inital' State. Otherwise it won't get triggered.
It is possible to have Sensors and Actuators linked to multiple States. This way you don't have to rebuild your logic for each State.

hope this helps.


How to keep one object on certain view mode?

In the object properties there is an option called maximum draw type. Set this to wire. It will display the object as wire like the wire view mode, although a handful of things are different regarding selection in edit mode and such.

If you want to select the object like in wireframe mode as well, you can turn off limit selection to visible:


First off you have to be in either Edit mode or Object mode to see the manipulator options, and the 3D manipulator.

If your 3D view header looks like the image below, then you toggled off the 3D manipulator. All you have to do is click the toggle 3D manipulator button (highlighted in red), or press Ctrlspace (which is likely how you disabled it without knowing).

The options in the user preferences, Interface tab for the manipulator won't disable it, but if the size is set to the min (10px) it will be very hard to see.

This is the actual size when Handle Size and Size are set to the min. The image has the 3D cursor as a size reference.


Just to illustrate cegaton's comment.

Filepaths in Blender are saved as relative by default.

You can still change them to absolute/relative though.
File > External Data > Make all paths relative/absolute.

You can also change this default behavior in preferences:
Edit > Preferences > Save & Load

On top of that, you can set default relative/absolute paths for some types of data (scripts, textures, etc...)
Just go to Edit > Preferences > File Paths


I can't figure out the nodes to have light trough the windows

To make the lights shine through the windows, make sure you have your material's Shadow Mode set away from Opaque. Alpha hashed seems to work well for most situations.

The reason the Material Preview looks better is because it uses a HDRI Environment image to provide lighting and reflections. To add your own (so it appears in the render), go to the shading tab and switch the drop box from Object to World. Add an Environment Texture and choose your image. The default ones that come with blender (.exr files) are in the blender folder at 2.90/datafiles/studiolights/world. If you want more, there are several places you can get them online for free. The most popular is HDRI Haven (https://hdrihaven.com/hdris/).


Best way to cut a hole through an object?

Two things to make this work

Keep the geometry all quads
Keep the quads pointing the same way (all up)

Cutting the shape using Knife project. Boolean would work too.

Repair topology - make it all quads. Using loopcuts and adding new vertices.

Final result - added edges are marked blue.


They should have a magnitude of (approximately) 1. I say approximately as precision could be an issue.

You need to make sure that you are mapping the rgb values correctly back into decimal values, each colour range should map to the decimal range -1 to 1 with 128 mapping to 0.

You mention in comments that you renormalise by dividing by 255, this is incorrect. You should divide by 128 and subtract 1.

Note that the z / blue channel has its sign flipped compared to the others, but this shouldn't be an issue checking the magnitude. Also some software also flips other channels.

See https://en.wikipedia.org/wiki/Normal_mapping#How_it_works


How can I make a sound wave effect on a "wall" of cubes through animation nodes?

Without using animation nodes you can create a subdivided plane and make it the parent of a cube, then enable dupliverts on the plane to have an instance of the cube at each vertex. As you deform the plane the duplicates will move with each vertex.

To your question of using animation nodes - A Grid Mesh node will give you an array of vertices that you can use for the location of duplicates, while an Object Instancer node will make the duplicates, then use a subprogram to adjust each duplicate. You create a subprogram to be able to repeat a node setup for each item in a list.

Add a loop subprogram - A->Subprograms->Loop
On the Loop Input node add two iterators, one as an object list, the other a vector list.
Add an invoke node with A->Subprograms->My Loop (unless you renamed it), the Invoke Subprogram node will have input sockets for each iterator you have added.
Connect the output of the object instancer to the object list input of the Invoke node.
Connect the vertices from the Grid Mesh to the vector list input of the Invoke node.
Add an Object Transforms Output node.
Enable the location checkboxes to get an input socket for location.
Connect the Loop Input object to the object input of the Transforms Output node.
Connect the vector from the Loop Input to the location input of the Transforms Output node.

Now that you have the duplicates in place you connect in other nodes to alter the location. In this example I use separate and combine vector nodes and add in a number wiggle to alter the z location.

To get the distance between two objects there is a distance node -

Zach Hixson has recently started a tutorial series for animation nodes, you may want to have a look at his playlist


Is it possible to give the procedural checkers more than 2 colors?

You can feed a checker texture as the color to an other checker texture and play with the coordinates to create endless different combinations.

(click on the images to enlarge)


Whats the best way to make an operator tooltip depend on a Blender version?

There isn't really a right/best way to do this.
It depends on what kind of control you want.

Personally, I would go for the least intrusive option where possible, so code remains readable, and when you finally drop support for older versions it can be removed without messing up your code history (so code annotations remain useful, eg git blame).

class bpy_support:
    """Store all supported features here"""
    has_normals = ('normals_split_custom_set' in bpy.types.Mesh.bl_rna.functions)
    has_other_feature = (...)

...

class WeldNormals(bpy.types.Operator):
    """Weld Normals to adjacent objects """ \
    """(only operates on boundary edges)"""
    bl_idname      = "sparkles.weld_normals"
    bl_label       = "Weld Normals"
    bl_options     = {'REGISTER', 'UNDO'}

    @classmethod
    def poll(self, context):
        ob = context.active_object
        return ob and ob.type == 'MESH'

    ...

    # Remove this block when 2.74x support is dropped!
    if not bpy_support.has_normals:
        __doc__ = "Unsupported, upgrade to Blender 2.75 or newer! " + __doc__

        @classmethod
        def poll(self, context):
            return False

This way exceptions are isolated and can be cleanly removed when they're no longer needed.

The trade-off of using a simple override is you can't mix in logic so easily.

If you were to do this for more then a few classes, you could make a utility function for this which overrides poll and the tool-tip.

# run before registration
operator_requires(WeldNormals, version_atleast=(2, 75))
operator_requires(AnotherOperator, features={'has_normals', 'has_other_feature'})
operator_requires(ThirdOperator, depends={WeldNormals, AnotherOperator})

...

def register():
    ...


This looks to be a problem with Normals - with the Normals at one side of your model pointing ‘outwards’ and the other side ‘inwards’. Did you model by mirroring the opposite side?
Check and correct your normals (might be able to just ‘recalculate normals’ or select the problem areas and ‘flip normals’) and re-run your simulation.


How to fix Normal Map Artifacts (Humanoid)

Thanks to @mobin for prompting me regarding my cage, I did some further research and found out the proper way to do a cage.
My steps to resolve artifactings:

Duplicate lowpoly model, and name as Cage
Select all faces of Cage, alt s, to scale up the faces in normal directions
Toggle on mirror selection mode
Compare Cage to High Poly model, and push out all faces to completely surround the High Poly. i.e. Cage should be slightly bigger than the High Poly
Ensure there are no overlapping faces, i.e. tight areas like fingers and groin can be problematic, and require quite abit of manual adjustments
Bake for a perfect normal map


If you look closely, you can see that this is caused texture interpolation getting a little bit of the alpha surrounding the wood texture. So in other words, your wood texture is outlined with a line alpha less than a pixel wide which lets you see through to the objects and sky behind.

This is why you usually want to have a small margin around UVs so interpolation will have something outside with which to interpolate with besides alpha.

To fix this, you can try using the solutions below individually or in combination.

Scale the wood UVs in a little so the UVs aren't right up against the alpha:

This is really a pretty generous margin for this situation. In this case it only needs to be scaled in about half a pixel, but a little extra can't hurt.

Not completely ideal, as you lose part of the texture (though it's unlikely anyone would notice).
Disable interpolation. It won't completely get rid of the problem, as the texture is still filtered a bit when it's distorted by perspective etc, but it will be so small that it's only visible when viewed really close up. This way you can also save some memory by using the 512x512 texture, as it will no longer be blurred by interpolation if it's disabled.


In order to have each 'square' to be a consistent color you need to change the coordinates fed into the Noise texture to change in discrete steps. This can be achieved using a Modulo function. The Modulo node effectively divides the input value by the specified amount and outputs the remainder. By subtracting the remainder we can produce a 'stepped' value. Since this value does not change over the specified range (in this case 1/7 - to match the scale of the 'squares' texture of 7) the result of the Noise will be constant over that range, resulting in a constant color.

Note that I also added a Mapping node to offset the coordinates slightly - so that the squares correspond to all faces.


Texture not visible behind glass in Eevee?

EDIT - Solved
You had the blend mode on the textured cube set to Alpha Blend, this stopped the refraction. You still need to use Alpha Blend on the Transparent cube however, as well as using more than a plain Glass BSDF node.
Alpha Blend:

Opaque:


Can't select a vertex group in this hook modifier

The hook modifier have to be set on the hooked object not on the hooker (well... not totally sure this is the good term in English).

Concerning the stretch on top of the sphere: this is due to a rotation.

The hook is influenced by all objects transformations. So these transformations needs to be coherent at the moment the hook modifier is set.


It's a matter of changing your over-all approach.

Only add as many polygons as you absolutely need to begin with.
Sometimes adding loop cuts or subdividing only certain selected edges or faces is better than using a SubSurf Modifier.
If you end up with extra edge loops you can press X and Dissolve them.


Weird lines across model when rendered in low resolution

I suspect the image textures are scaled down. The light marks are the "background" color of the image texture you are using. They appear precisely where your seams are.

I'm sure there is some setting that does this and it may not be a default setting.

You could work around this by dragging in the seams in your image texture more towards the center or maybe find an option, so the image texture won't be scaled down. Alternatively you could render at a higher resolution and later manually scale it down.


How can I select all roofs in blender and change material

You can press ShiftG (Select Similar) > Normal, it will select all the faces that point in the same direction. You can extend its threshold in the Operator box. Then in the Properties panel > Material, choose the material and press Assign.


How can I properly import this .OBJ file?

The trees use alpha maps, and you can see these inside the 3d view, It is meant to be like that until you apply materials.
I'm not sure if this is the case but if it is then this may help. For the water there are 3 things I could think of:

The.OBJ is so big, that when you zoom out you can't see the water since the 3d view cannot trace that far back. So try zooming into the water.
Try removing doubles by pressing T in the 3D View, and on the left you should see remove doubles button. Also try and recalculate normals, which is right under remove doubles.
Since the model is ripped, the model just might be clipped and the person who ripped it might not have gotten all the water polys.
Select the water and try and move it upwards, from the image it looks like it's colliding with the sand instead of being above it.


The solution to this issue was in fact to remove the empty keeping the children (applying any transformations made using the parent), and then create a group of objects.

Creating a group of objects can be done by selecting each object you wish to have in the group and pressing ctrl+g. To select all objects in the group, simply select one object, press shift+gand select group.


v2.77a - Textured object not updating when manually changing UV coordinates

If you're using Cycles, you will also have to have the image mapped to a material node (like a diffuse or something) before it will show up properly in the Viewport.

Try setting up the material nodes the way they should be, and see if the texture updates better.

The other thing that might be causing this is if your texture is set to repeat. If it's repeating, then when you move a UV island outside the red area, it will still be red. It might be updating... you just can't tell.


If i understood the question the pointed area of the wrist cuffs is render with freestyle line and the arm is not.

Reason is the wrist cuffs has a fill mesh.

Look this way.

And the arm line is just a line not filled

How can you make it fill.

Just select the verts and Press Shift+D to duplicate little below the line.

Select the duplicate and the above original line and press F key

Now render and get the Freestyle render


You can preview the current selected render layer by enabling Render Layer button located on 3D View header:


Conversion of fine organic surface mesh to a few patches of NURBS

You could write a python script in blender to import each stl in a folder, generate a cylindrical nurb surface around it (I am imagining long bone models like tibia and femur) and use the shrinkwrap modifier to approximate the tesselated surface of your STL model. Iges export would in theory keep the native surface nurb description intact for further cleanup in a solid modeling software, but in the past implementation in blender, it would chop the smooth surface up into polygons during export.

There is a lovely pure python nurb curve and surface library outside of Blender
https://nurbs-python.readthedocs.io/en/latest/index.html that might be helpful.


Using EEVEE for interactive VR presentations?

https://godotengine.org/

I think you might be better served using Blender to prepare your assets, but then use Godot Engine for the actual deployment.

Here's a recent video with a bunch of games showcasing Godot's power and versatility:
https://www.youtube.com/watch?v=UTAeDoRIHaA

Here's a video of Godot 3 new features:
https://www.youtube.com/watch?v=XptlVErsL-o

Godot is an open-source, modern, PBR-based Game Engine that can export executables for all major desktop and mobile operating systems, and also for HTML5. It also has a nice audio engine so you could add 3D audio with reverb zones etc. to increase the immersion of your presentation.

You could prepare your interactive demonstration, and host it on a website and let the client view it on-line or deliver an elegant Windows/OS X/Linux executable.

Godot has all the great features of a modern rendering engine you'd find in Eevee, but is a bit more robust on that front and it have been used to build quite a lot of games at this point. The PBR engine is a relatively new addition but seems to be working very well.

Godot works very nice with Blender-made assets. You can use COLLADA to export your models from Blender and Godot will automatically reload them once you re-export an updated version from Blender. I've even read somewhere it's possible to export PBR materials with textures in COLLADA from Blender right into Godot - haven't tested that too well myself though.

Godot also provides an improved COLLADA exporter for Blender.


Where did my texture go after selecting Use Nodes?

Materials created for Blender Internal are not compatible with Cycles. Blender Internal uses an entirely different nodes system, stemming from the fact that it is an entirely different rendering engine and rendering images via an entirely different method.

To use your texture in Cycles, you would need to recreate your texture in Cycles, or otherwise use a script to convert it to Cycles. See this answer for more information.


SheepIt! Rendering produces weird icosphere-esque object

Figured out the problem. SheepIt! Does not support fluid, which is why it made that shape.


Note:

  This answer is connected to this one so I'll not go into details
  as much.

Final result:

Steps:

Create Sphere and remove bottom half of it.
Add Solidify Modifier and set desired thickness. Apply this modifier.

Select outer side of the object (you can select top vertex and hit Ctrl+NumPad+ couple of times), then hide it H.

From the inner part of the mesh select needed edges and scale them down.

You can make bottom edge even by scaling it 0 on the Z axis.
Alt+H to unhide outer part of the mesh.
Select all and Recalculate Normals.
In Object Mode choose Smooth Shading and Auto Smooth in Data tab.


How to set a different background color for each node editor

It is a bit janky but you could use a Frame node, set it to a custom color, uncheck Shrink in its properties then stretch is as far as you can with a node.


Materials have no color when put in unity

you have to bake the whole material. unity otherwise you do not recognize the materials of blender.
look at this exhaustive answer to my question that is similar to yours


Script for render many different material on one object

If your "image" is actually an Image Sequence then it will cycle through the various images as the frames of the animation iterate.  Your screenshot shows you using a single image.  If you were instead to load that texture node with multiple files (shift-click, or maybe just a in the file selector dialog) then it would have a few more options.

Edit: The example image is for 4 frames, but it is not hard to build an image sequence of thousands of frames if they are all in one directory (a selects them all).  If they are in multiple directories you might have to use some python to get them all into the same image sequence, but I haven't experimented with that situation.

If you were unable to use an image sequence, you would probably end up using a bunch of MixRGB nodes and keyframe the factor value to switch between inputs.  This would quickly get messy as the number of options grows and your binary tree of MixRGB nodes becomes a forest.


Particles Emit from Collection instead of particle emitter

As commented by atomicbezierslinger, this was a problem with the origin of the collection, when it is created, being the center of the scene.  This is as opposed to the object being used with its local origin when being emitted as a particle.
Moving the collection to the world origin emits it correctly.  This does, however, lead to the problem of having your original object right in the middle of the scene and causing you to move everything else away from that point in order to not see the original object.


Where to suggest Blender additions and fixes

For bugs that need fixing use the bug tracker. For feature requests, there is no official place, but you can try Right-Click Select, the bf-funboard mailing list or simply ask on Blender Artists where other users can give you feedback and build on your idea.

Please note that Stack Exchange is not a suitable place for bug reports or feature requests, hence this question should be closed.


What is node tree execution in the animation nodes addon and how should it be used?

Execution:

When you build a node tree in the Animation Nodes addon (AN), you are basicly creating a python script in a visual form.

Now you have to control when this script will be executed. If "Auto Execution" is turned off the script you "developed" only executes when you click on the Execute Node Tree button.

Many of the buttons you see in Blender have python scripts attached to them which execute when you click on them. It is the same here, only that you didn't had to write any python code. It is generated from your node setup by the addon.

Networks:

A network within animation nodes of a group of nodes that belong together. You can have multiple node trees. In cycles each node tree can have only one material, but in AN you are allowed to have multiple networks within a single node tree. Nodes that belong to the same network have the same color (well, there are exceptions but they are not important here).

There are two different types of networks:

Main Networks, which they have a neutral gray color by default
Subprograms, which have a random color by default (this color can be changed in the Color panel when one node of this network is selected)

Beside that there are some subcategories of the Subprogram Network type: Loops, Groups, Scripts.

Subprograms cannot be executed on their own, they need to be called from somewhere else. You normally call them with the "Invoke Subprogram" node.

Main networks on the other hand can be executed on their own. This makes them the entry point of the node tree execution.

Auto Execution:

In some cases you may want to have total control about the exact moments your node tree is executed, but most of the time (when you do animation or something similiar) you want that the scene updates automatically when you change the node tree. This is where Auto Execution comes into play.

When Always is checked the script continuously executes (around 20-60 times per second (can also be changed with the Min Time Difference slider)). This gives you a good real time experience in the viewport but as soon as your node tree becomes more complex this permanent execution can slow down your scene drastically.

If this is the case you should uncheck Always and think about when you want that your script executes. If you do animation you want to check Frame Changed most of the time so that the animation playback works. If Tree Changed is checked your script will automatically executes when you make/remove nodes/links. And if Property Changed is checked the script runs when the you change a property of a node.

Which configuration of settings you choose here is totally up to you.


Is it possible to get nx, ny, and nz values of an object's coordinates in blender?

Global representation of normal axes.

The global value of the  z axis z_axis = Vector((0, 0, 1)) of an object obj can be calculated using

nz = obj.matrix_world * z_axis

All can be calculated from the matrix world using,

nx, ny, nz =  [v.normalized() for v in obj.matrix_world.to_3x3().transposed()]


You can just do it by

Selecting all strips.
Changing value in the active one.
Do a right click with mouse cursor over changed value.
Choose Copy to Selected item in Pop up menu.


Exporting from Cycles to FBX is somewhat fiddly at the moment still.
As far as i'm aware the exporter reads only trough a principled node - and then not all slots.
I found this Method to somewhat work, its essentially the same as it has been with the old Blender render:

1. For the images to be packed into the .fbx there are two important parts, first you need to connect them to certein inputs of a principled bsdf node. Sadly not all work tough (at least for me atm) i expected the normal input to also work, but it didn't.

2. When exporting to .fbx theres two settings you need to change:

You need to change "Path Mode" to "Copy" and hit the small icon behind it, i'm currently on 2.8 but the method should apply to 2.79

After that, you can try to reimport the texture into Blender, your Textures should show up in the image/UV Editor.


Why do I get an "no suitable context info for active keying action" message when trying to keyframe a camera?

I parented the camera to an empty and then keyframed the empty. I couldn't find any other solution to the problem.


OpenCL build failed on AMD R9 290 - Insufficient Private Resources

The solution is the update the drivers. Version 15.07 works fine with 2.75a.


I know it's probably too late but maybe it will help someone in the future. I had the same problem and found out that you can key bone constraints during the animation, so after trying a few options I found out that if you apply Limit Location constraint, check all the boxes without changing their values and set Convert to Local With Parent the bone ignores parent and stays in place as if it was "independent", so the only thing left is to key Influence to 1 whenever you want the constraint to take effect, hope it helps
If there are any issues with language feel free to point it out as my English is far from perfect


How to hide edges/viewport after import from Warehouse (Sketchup/Collada)

I had same look with my model when imported .dae
In my case it was textured mesh+ wireframe. So just go to edit mode, and in material properties click on your material and press select (do this with all materials).
After that you should have selected all mesh without wireframe (you can press ctrl+i to invert selection to wireframe and delete it)
Hope this will help you.


You could parent a second camera to the first one. If you duplicate the first one, select the second one and in the dropdown menu of the Dopesheet (Action Editor mode) click on the X button to unlink the action from the selection. Now the second camera will follow the first one. The only problem is that the gravity center is the first camera, but maybe it doesn't bother you.

Maybe the best solution is this one: Create an empty. Keep the empty selected and in the dropdown menu of the Dopesheet (Action Editor mode) select the animation that you've already created for your camera, the animation is assigned to the empty. Now select your camera and on the right of this same dropdown menu click on the X button to unlink the action from the selection. Now only the empty will move. Parent your camera to the empty. Create a second camera and same thing, parent it to the empty. Both the 2 cameras will follow the empty.

Does it answer?


After asking a good number of questions,
I felt it best that I come with some tips that I have discovered and learnt on my own.
One of the things I've heard is that there are people that have tried to render a video
and that Blender (or CUDA, GPU rendering) would crash and their video file would be corrupt.
This usually happens in Cycles.
How to avoid this?
What I'm about to tell you is no miracle worker.
There is still a chance it dies depending on how complicated your scene is
and how much memory your computer or video card has.
To begin with, set all your rendering options according to what you want.
Make a few still image renders here and there to make sure you are satisfied with the quality.
In Output set where you want the result to be saved to and give it a name and a period (.) but without setting an extension (png),
check File Extensions, but uncheck Overwrite, Placeholder and Cache Result.
Set the format to PNG, and Compression to 100%.
Yes, we are writing image sequences here. Even the most professional Blender Gurus
with the most powerful of computers do this. This is to ensure that no matter what happens,
be it that the OS decides it has had enough or power failure/outage,
what you have rendered so far is safe and sound and you can pick it up right where you left off.
Another option you can check in Performance to save on RAM is to check Save Buffers.
Now that all that is setup, Close Blender!
To ensure that there is enough memory to render our video
we do not want Blender's GUI to be using any of it, and if possible, not even the Desktop.
What we are going to do now is write a little script file that is going to render our video.
Linux Bash Script
#!/bin/bash
cd "/path/to/blender/"
for i in {1..250}
do
   foo=$(printf "%04d" $i)
   if [ ! -f "/absolute/path/to/project/imgseq/video.$foo.png" ]
   then
      ./blender -b "/absolute/path/to/project/project.blend" -f $i
   fi
done

Lets go through this step by step.

The first line #!/bin/bash is pretty much the header telling Linux this is a bash script
and should be interpreted as such.
Next we Change Directory to wherever you have Blender installed cd "/path/to/blender/".
Now we create a for loop in which we iterate over the number of frames your animation has,
in which i holds a number from 1 to 250. Don't forget the do right after that.
The command foo=$(printf "%04d" $i) creates a formatted string where the number i gets 4 leading zeros. Remember that Blender will name the file with 4 leading zeros.
Next we test if a file with your video name that you set in File Output plus the frame number and png does not exists.
The ! in front of the -f is a negation so one would read it as 'if not a-file "video.number.png", then...'
This will ensure that Blender will not be launched to render this frame if the frame already exists.
So if this frame has not been rendered, launch blender (./blender) in the background (-b) and render the blend file
("/absolute/path/to/project/project.blend") on frame i only (-f $i).
Finally, end the if block with fi and our for loop with done.

Save this file somewhere, maybe with your blend file, and call it something simple like render.sh.
Make sure it is executable by doing sudo chmod 755 render.sh.
When you are ready to leave your computer running for hours on end, open a terminal or drop to a tty
(Ctrl+Alt+F1 - F6),
navigate to this render.sh and run it (./render.sh).
How to stop it?
If you want to interrupt your rendering at that moment, hold Ctrl+C
until Blender isn't trying to restart itself anymore.
If you want Blender to finish off its current frame, open a new terminal or jump to a different tty,
type in ps -A |grep render.sh or whatever name you gave your script, make note of its number
and type in kill number, and wait until Blender is finished.
Windows Batch Script
echo off
C:
cd "C:\path\to\blender"
for /L %%i in (1,1,250) do (
  set 'foo=0000%%i'
  set 'foo=!foo:~-4!'
  if not exist 'C:\absolute\path\to\project\imgseq\video.!foo!.png' (
    blender.exe -b "C:\absolute\path\to\project\project.blend" -f %%i
  )
)

Pretty much the same principle as the shell script, but lets go through it anyways.

The first part is optional. This will ensure that the whole script is not printed on screen each time a frame is to be rendered.
After that, C: ensures that we are in the drive that Blender was installed to.
Next we change directory to wherever you have Blender installed with cd "C:\path\to\blender".
Now we create a for loop in which we iterate over the number of frames your animation has,
where /L tells for that we are looping through numbers, %%i shall hold these numbers,
within the range of (start, step, end). Don't forget do ( at the end of this.
We then set our zero padding to %%i using the two lines set 'foo=0000%%i' and set 'foo=!foo:~-4!'.
The first adds the zeros and the second makes sure there are only 4 digits in total. Remember that Blender will name the files with 4 leading zeros.
Next we test if a file with your video name that you set in File Output plus the frame number and png does not exists.
Notice the ! surrounding the foo which is our zero padded %%i.
Unlike the shell, batch uses not instead of ! to negate what we are testing for.
This will ensure that Blender will not be launched to render this frame if the frame already exists.
So if this frame has not been rendered, launch blender.exe in the background (-b) and render the blend file
("C:\absolute\path\to\project\project.blend") on frame i only (-f %%i).
Finally we end the if and for blocks with a ) each.

Save this file somewhere, maybe with your blend file, and call it something simple like render.bat.
If you want the console window to stay open, press the Window Key, type in cmd and enter,
navigate to where this render.bat file is and simply run it by typing in render.bat.
If you don't mind it closing when it's done, simply double-click render.bat.
How to stop it?
Pressing Ctrl+C, Y and Enter will stop the loop, but Blender will continue on its current frame.
To stop Blender itself one would go into Task Manager, find blender among the Processes and End Process.
To stop it all, simply close the terminal (x).
Mac OS
As far as I can tell, Mac uses the same bash script as Linux, but if I'm wrong do let me know.
Additional Thoughts
Some of you may be noticing that this method will close and re-open Blender for each frame rendered,
and you are probably wondering "Won't this put a strain on the computer?"
Not necessarily. I have noticed that if I were to run Blender in the background and include -a
to render the whole animation in one sitting, it won't clear the memory properly between frames
and one would run into memory problems.
By closing Blender after each frame it will clear all of the memory (if not 99%)
and leave plenty for Blender to take care of the next frame.
The only factor that may interfere with this is how well your OS manages memory.
"What if I just give my project to a Render Farm like Sheep-It?"
That is a possibility if you need to use your computer for other things in the mean time,
but there are a few factors to consider which would make this difficult.

In the case of Sheep-It you can only upload 500mb, so if your project has a lot of textures or cached dynamics
that exceed this limit, even compressed, this will not work.
If your project takes a long time to render you'll run out of points,
and based on that system your project will get less attention, and thereby take longer to complete.
You are part of a studio of some kind and doing this may violate any agreements you have with your boss.
You yourself want to keep this project a big secret and you do not want the slightest bit of exposure until it is done.
Your project contains questionable material that may violate the Render Farm's terms.
You want to render your project in a special or non-linear way.

Render Farms like Sheep-It pretty much does the same thing as the scripts above.
Get the project, check what frame hasn't been rendered, then tell Blender to render that one frame in the background, then close.
Although because there is a little shuffling involved, projects will be downloaded and deleted several times
as well as Blender being re-opened and closed.
"My Blender project contains audio. Can I render that in the background?"
As far as I can tell, you cannot. That would've been a handy command to add at the end.
Sadly, you'll have to open Blender and click the Audio button in the Render panel and wait.
So, now that your rendering is complete and you have a long list of PNG files,
you'd like to turn them into a complete video. There are a number of ways to do this.
The first and foremost way would be to put them into your video editing software
so that you can apply any extra visual effects or sounds that are needed.
If you want an mp4 as soon as it is all complete, you could add the following to the end of your script:
ffmpeg -r 24 -start_number 1 -i "/absolute/path/to/project/imgseq/video.%%04d.png" -f mp4 -crf 15 "/absolute/path/to/project/imgseq/video.mp4"

This will of course work if ffmpeg is installed and recognized as an internal command.
If not you'll have to Change Directory to where ffmpeg.exe is hiding just before this command.
The first part of this command -r 24 sets the frame rate. Be sure it is the same one you set in Blender.
The next part -start_number 1 tells ffmpeg that the image sequence starts at 1. If your video actually starts at frame 0, you can skip this part.
The -crf you can change to 0 if you want 100% lossless compression, but that would be a huge video.
For any other video format, feel free to look them up on your own.
Hope this helps you in rendering your massive projects.
If the CUDA still gives up half-way through a single frame then the only thing I can think of is that
there isn't enough VRAM or there is a Shader that your GFX card does not like.
You can experiment and see if CPU rendering works any better, even if it is slower.
/Edward
(blender 2.79)
EDIT It has come to my attention that sometimes the console in Linux (tty) can be a bit slow if it halts execution as it refreshes the screen for a new line. This can be a problem if your project has a lot of objects and textures, and printing out each line takes far too long. One way to speed things up is to add  | grep Remaining to the end of the ./blender line or after typing ./render.sh.


How to parent one vertex group to a specific bone in Blender 2.8

In my opinion you’re not working with the good method, if you were you would not ask some of these questions, but to answer:

I don't think there's any way to see what is the bone affecting a group of randomly selected vertices, because for example a group of vertices may be affected by several bones and each will have a different influence, so I it may be technically possible to display them but it won’t help a lot.

That said, you can see what bones affect one particular vertex, and how much they affect if, if you select the vertex and open the N panel > Item tab > Vertex Weights.

It's a bit tedious though and I don't think that's what you want.

The easiest way to know how bones affect vertices: Select your armature, switch to Pose mode, then shift select your object, switch it to Weight Paint mode, then select a bone and visually see its influence on the mesh. Also in that same mode, if you select a vertex group in the Vertex Groups list, you’ll see what part of the object it enlights. But you may miss some small influences because at a low value the weight won’t be visually noticeable.

But as I say I’m not sure you use the good logic to rig.

When you parent your object to your armature With Automatic Weight, the vertex groups will be automatically created with the name of the bones that control them.

Once done you can check the bones influences, and you can correct it, either in Weight Paint mode, or giving more or less weight to some vertices with the Assign or Remove button on the bottom of the Vertex Groups list. Or even use the N panel if you like this mode, but again, a bit tedious.

You can always create an additional bone. Give it the name you want. If you want some vertices to be affected by this bone, select them, create a new vertex group with the name of the bone, and click Assign. As the mesh is parent With Automatic Weight this vertex group will automatically be controlled by the bone that has the same name. And again you can play with the weight value to increase or decrease the influence.

You can also create a vertex group and create its bone afterwards, as long as it has the same name as the vertex group, it will control it.


Here is a way to do it, but if you want to avoid any pinching it needs more geometry than on your screenshot. Once done, you can delete the useless geometry, i.e. vertical edge loops on the rest of the cylinder:


This tree reproduces the function you describe:

It could be made smaller, but I hope this is more self-explanatory. Note that this is Non-Color data, set in the input image.


This was easier then I was making it. Don't create a line in the back. Just take the front verts and extrude them.


Why does parenting an element deform all of the vertices in Grease Pencil?

Can you upload a .blend file - it may help to see exactly what is happening.

I've had similar issues with GP and rigging.  From what I understand, when you create a bone, or armature, they default with their own local axis (which point in a different direction to the world axis).  When you parent the Grease Pencil object to the bone, it inherits the object's local axis and flips, turns, or moves.

Possible Fix:
You can try adding a 90 or 270 to the rotation on that object to see if it comes back.

Future prevention:
As soon as you click on parent: armature with automatic weights (or something similar), there will be a small window that appears at the bottom left corner of the screen - you can click "Keep Transform" - this my prevent your geometry from getting away from you.


There is a little trick to it. When you have selected one UV Map and hit the plus button it duplicates the currently selected UV Map and puts it at the end.

So here are steps needed in order to reorder the order of UV Maps :

Select the first UV Map.
Click on the Plus button.
Delete the first UV map.
Rename the last UV Map to not contain the .001 suffix.


Blender modifiers are always calculated from top to bottom, where on top is the raw unmodified base mesh, and modifiers are calculated from the first in the list down to the last one at the bottom, as stated in the Blender Manual