Generate thumbnail image in addition to main image? (command line render) I'd like to set up a command line script that renders out each frame to the desired output image type (EXR, PNG, TGA, etc.) at full resolution, but then also generates and saves a small thumbnail JPG image at a specified width (say 400px for example).

I'd like to generate this thumbnail from the command line or with a script instead of using the file output node in the compositor. Makes it easier to replicate for multiple render jobs.

Note1: I do not want to render twice. I want to render once and then scale and save out a second smaller file. I don't want to do this from inside the blender file directly, but with an external script.

Note2: I would be open to a second blender instance that renders by only using the compositor to input the large image rendered in the first instance with the new output resolution. That way it's only processing flat images and not doing any scene rendering.

Here's a second option, which I now believe is the best solution, as it is the most elegant and versatile that I've found so far.

The solution is essentially an extension of the Compositing nodes Scale and FileOutput option. However the critical difference is the addition of an Image node being mixed with the scaled Render Output image before being piped into the FileOutput node. The image node uses a dummy UV image created at the required Thumbnail output dimensions. When mixed with this dummy image, the FileOutput node will output the new dimensions without having to change the Scene Render Dimensions.

This option is better than my original solution because it is simpler to implement, shorter code, as well as not needing to rely on external file paths.

Command line usage (last argument pipes in thumbnail width):

blender -b "file.blend" -o "//out/" -P thumbnail.py -- 500

and the script thumbnail.py:

import bpy
import sys

class Thumbnail:

    tWidthArg = int(sys.argv[9])

    scn = bpy.context.scene
    resX = scn.render.resolution_x
    resY = scn.render.resolution_y
    thumbWidth = 400

    if tWidthArg > 0:
        thumbWidth = tWidthArg

    thumbHeight = ((thumbWidth/resX)*resY)

    #create new internal dummy image the size we want for thumbnail
    bpy.ops.image.new(name="ThumbNailDummyImage", width=thumbWidth, height=thumbHeight, color=(0.0, 0.0, 0.0, 0.0), alpha=False, generated_type='BLANK', float=False)

    #set up compositing nodes
    nTree = scn.node_tree
    Src = nTree.nodes["Render Layers"]
    Dst = nTree.nodes["Composite"]

    #image input node - use dummy uv image
    imageNode = nTree.nodes.new('CompositorNodeImage')
    imageNode.name = "INPUTIMAGE"
    imageNode.image = bpy.data.images['ThumbNailDummyImage']
    imageNode.location = (Src.location.x+300, Src.location.y-600)

    #scale node to resize thumbnail to correct size
    scaleNode = nTree.nodes.new('CompositorNodeScale')
    scaleNode.space = "ABSOLUTE"
    scaleNode.location = (imageNode.location.x, imageNode.location.y+200)
    scaleNode.inputs['X'].default_value = thumbWidth
    scaleNode.inputs['Y'].default_value = thumbHeight

    #mix the scale render output with the dummy uv image to force new output size
    mixNode = nTree.nodes.new('CompositorNodeMixRGB')
    mixNode.location = (imageNode.location.x+300, imageNode.location.y)

    #setup output filenode
    fileOutNode  = nTree.nodes.new('CompositorNodeOutputFile')
    fileOutNode.location = (mixNode.location.x+300, mixNode.location.y)
    fileOutNode.layer_slots[0].name='Thumb'
    fileOutNode.file_slots[0].path='Thumb'
    fileOutNode.format.file_format= 'JPEG'
    fileOutNode.format.color_mode = 'RGB'
    fileOutNode.base_path = '//out/'

    #connect nodes
    nTree.links.new(scaleNode.inputs[0], Src.outputs[0])
    nTree.links.new(mixNode.inputs[2], scaleNode.outputs[0])
    nTree.links.new(mixNode.inputs[1], imageNode.outputs[0])
    nTree.links.new(fileOutNode.inputs[0], mixNode.outputs[0])


Is it possible to animate the speed of a strip? I want to accelerate the speed of a video and decelerate some seconds before it ends. I wonder if it's possible to do it into the video editing.
I know how to increase the speed of a strip but, what I need is a trasition between normal speed and fast speed.

In the VSE with your video strip selected add a speed control effect strip. With the speed control strip selected, in the properties sidebar N under Effect Strip is an option 'Stretch to input strip length', this needs to be off, when it is off you will get a speed factor setting. The speed factor can be keyframed to alter the speed as you want.


How to render Wireframe for the entire scene not just one object? Sorry if this is a daft question but in all the tutorials I've watched it just shows how to do a wireframe for one object not an entire scene and I don't really fancy having to select every single object and apply the wireframe mod to it. I know about the wireframe material that I could apply to the scene but that displays it in triangles and I want it in Quads.

Here how would I do this task.

Get 2.8x version
Set up overlays like this:

When setup matcap and cavity as you want:

If the result is not bad, click View -> Viewport render.
If you want wireframe on top of Cycles (or outer) Render Setup viewport like this:

In color management set View transform to default

When  click View -> Viewport render and compose resulted image over render using multiply.


How would you cut out these table legs? Sorry if this is a dumb question to ask, I did try to search on here and on google to get my answer but I could only find cutting out circles, mostly. I did watch some youtube vids on cutting out holes but I'm stuck with how to work w/the legs in the middle. I'm trying to create this table from scratch and I'm not sure how I would go about to cutting my mesh to get the legs like this? Once the cut outs are done how can I then create the criss-cross legs? Extruding from sides loop cuts I've done and mirroring?

Again apologies if this can easily be done, I'm still new to blender so I'm feeling kind of stuck w/this. Any help is appreciated!

Since it's symmetrical, you can use Mirror Modifier.

Create bottom right part of the X stretcher (I used Knife project tool to cut the end part)
Position origin to the center of the table
Use mirror modifier on X and Z axis


Unwrapping beveled cube I don't unwrap my models very often so I decided I would give unwrapping this simple box-like shape a go. I beveled the edges and corners and tried my best to mark the seams (see below).

I then decided to unwrap the model on a 1024 x 1024 texture, but as you can see below some of the edges are a bit wonky looking (see below).

What should I do to prevent wonky edges? If anybody has any advice or tips I will be most grateful.

After a bit of thinking I decided to try something different. I performed a Smart UV project and made the most important area of the mesh the largest, since this model will be low poly. I could have managed my space a little better but I think it looks okay.


Is it possible to use "Animation Nodes" when exporting it to a game engine? I want to export an animation to Godot game engine. Would that game engine specifically support the use of "Animation Nodes"

As Duarte Correctly pointed out, animation nodes are Blender exclusive data. If you use a format that supports animations, such as Collada or Alembic, you should be able to export the animations as keyframe animations. However, this will only work for the basic location-rotation-scale animations, things like mesh deformations created with animation nodes will not be exported. A similar question has been asked here if you want a bit more info: Blender page animation collada file in Scenekit

If you have any issues, you can also check out this question that the creator of the addon answered: Convert Animation Nodes to Object and Keyframes


How to unlink a linked-duplicate? All is in the question, we can duplicate object with SHIFT+D but also with ALT+D, which is quite handy, because as you know every changes done on a linked duplicate object will be repeated on others linked objects ("same objects").

I've used it as example to create all the UVs of a box, all at once.. But now I would like to break it, to stop it... And I don't know how to do that...

You can press U > Unlink Object+Data. The object's "data" is the mesh itself. Multiple objects can use a single mesh, so that editing one will update the others (they're "Linked")
You could also go into the Object Data tab and manually select different mesh data for the object to use:

The 2 on the right indicates that that mesh is being used by two objects. Clicking on the 2will copy that mesh and unlink that object from the old mesh, linking it to the new one (using an incremented name like Cube.001), the same result as if you'd done U > Unlink Object+Data
I know you already know the answer, but this is a place for the future too :)


Some sites of the models won't illuminate properly I'm trying to render cars, but it seems as if they are not really affected by anything I do with the lighting. There seems to be a lightsource coming from the bottom right, but even if I put a Sun above them their roofs don't get illuminated properly. For comparision I added a cube without materials, as you can see it is already quite bright.

I tried:

Scaling the model
Different lights and lightsources (also objects with emission)
Changing the exposure and gamma in the scene colour management
Changing the background color

I attached the .blend too: Scene

Go into Properties > Data > Normals > and unclick Autosmooth, I guess it was creating a bug


Unhide all collections hotkey? It seems like there are only, an isolate and hide/show a single collection, hotkeys, but no show all collections hotkey. Am I missing something?
I often accidentally isolate a collection and it's a bit awkward, that you have to press undo, instead of clicking 1 twice for example.

Put the mouse cursor over the Collections field and press Alt+H to unhide everything.


What do the settings in the new Principled Shader actually do? I'm trying to understand how the new Principled Shader in 2.79 works, so I can make a video tutorial on it.

I get most of it, but a few things have me confused, and there currently isn't much documentation for it.

Since most dielectric materials have an IOR of 1.45, is the default 0.5 value for Specular the correct value?
What does "Sheen" actually do? I've read that it provides an "additional grazing" component useful for fabric. But what does it actually do? Is it adding an additional white fresnel component for the color channel?
Why is Sheen Tint 0.5 by default? Just looks odd since most values are 0, yet this is 0.5. Just curious since it doesn't do anything until Sheen is turned on anyway.
Why does it use Roughness for the specularity, but Gloss for the Clearcoat? Their only difference is that they are opposites of each other, so it requires extra mental effort to think before changing it. Is there a reason for this that I'm missing?
What are some practical situations where you would want a different clearcoat normal? I can only think of situations where you'd want a smooth clearcoat, like metallic paint or carbon fiber. Is there any other reason for wanting bump on a clearcoat?

Most of these answers can be dug out of the paper linked by timaroberts

The default specular of 0.5 corresponds to an IOR of 1.5. See section 5.4 of the paper:

  In place of an explicit index-of-refraction, or ior, our specular parameter determines the incident
  specular amount. The normalized range of this parameter is remapped linearly to the incident specular
  range [0.0, 0.08]. This corresponds to ior values in the range [1.0, 1.8], encompassing most common
  materials. Notably, the middle of the parameter range corresponds to an ior of 1.5, a very typical
  value, and is also our default. The specular parameter may be pushed beyond one to reach higher ior
  values but should be done with caution. This mapping of the parameter has helped greatly in getting artists to make plausible materials given that real-world incident reflectance values are so unintuitively
  low.

(cont) Note that this is different from PBR spec/gloss shaders, which directly map the incident specular (the 0.0 - 0.08) values mentioned in the above paragraph. "Specular" outputs from software such as Substance should NOT be connected to this input, they contain different data entirely. Cycles' fresnel node uses a default IOR of 1.45 instead of 1.5, so it will have a slightly different look by default. Both 1.45 and 1.5 were chosen for being nice round numbers in the rough ballpark of most dielectrics, so neither is necessarily right or wrong as the default. Worth noting the viewport shader in Substance does not allow editing of this setting and just locks it off at 0.5, so if you want to match Substance, you should not modify this value.
See section 4.5 of the Disney paper. It pushes up the specular component at grazing angles to approximate light interacting with cloth fibers. It adds some extra off-angle sheen similar to Cycles' velvet shader
Since the light diffusing through cloth will pick up the color of the cloth, there's an option, sheen tint, to tint the extra spec with the base color. Since this is useful in many cases, it defaults to 0.5 so it is auto-enabled when sheen is enabled.
To be honest, I have no idea why this was done. Some other PBR shaders, such as Arnold's aiStandardSurface, still use roughness for clearcoat. Likely it made sense to someone at Disney working on the shader and they just ran with it. They didn't bother to record their reasoning in the original paper that I can find.
The paper mentions they used clearcoat normals to get some floor sparkle effects in Wreck It Ralph. Also, since the clearcoat normal is independent (to allow things like carbon fiber as you mentioned), you still need some ability to set it when you DO want your base normals to also apply to the clearcoat. In this case you aren't really applying a different normal, you'd just connect the same bump/normal node to both inputs, but you need the separate input so you have the option to NOT apply the bump/normal map to the clearcoat.


Selection in files with many objects Selection seems to work in wierd ways. I have a 3D File with ~4.000.000 Tris and ~120.000 Objects. The file results from a CAD software and needs to be further processed.

My idea was splitting the File in smaller parts because opening it takes minutes and the viewport is very laggy. But the real problem is that simple things like selecting parts of something take ages (for larger areas minues) and give not the expected results. (100% one CPU-core the others idling - The machine isn't the problem)

Has someone tips for working with files like this?

Edit:
Selectable parts seem to be consitend till i moving the selectet parts to a different layer (takes minutes to finish). After that other parts become selectable.

Here are a couple of things, you might want to try (actually, this is more of a comment than an answer, but I haven't earned privilege to make comments yet).

Selections in outliner (the right hand side panel) are much faster than in the 3d area.
You can try hiding other objects with Shift+H (Alt+H to clear).
Alt+B will allow you to select a small portion (box select) to work in edit mode. You can switch back to the normal mode by pressing Alt+B again.


Object array doesn't follow spiral path I'm trying to create an array along this spiral, but I don't know why my object doesn't follow the path I created (I only modified the external line of the Blender curve spiral). It seems that the objects are following an offset path, but I don't understand why...

I use Blender 2.79 (downloaded 2 months ago) with Cycles Render

I placed the origin points in the same position and it worked. I didn't think the problem could be that easy. Thank you so much.


Is it possible to make Particles follow Displacement Node? I'm faced a problem that I can't find a workaround for.

Displacement Node and particles.
I understand that in modifiers section of an object the particle effects have to be the last ones to make them follow the modifications, but what about Displacement Node?

I'm using multiple nodes on my setup to modify the actual displacement, so it's not possible for me to use the Displacement Modifier instead of Displacement Node.
It would be great to make Particles just follow Adaptive subdivision + true displacement but I can live with normal subivision and displacement node (I duplicate the object and use one as emitter, with normal subdivision, and second use microdisplacement).
Any workarounds to make it work?

.blend as example:
mirror

My mirror of this .blend:
mirror2

Problem visualisation:

/edit:
Have to edit because someone marked is as duplicate:

  No, person you mentioned in link uses Displacement Modifier. There's
  no problem with Displacement Modifier and Particles. There's problem
  with Displacement NODE (material node), which is still in development,
  and I'm looking for a workaround.

This is a method that i used with true displacement in experimetnal 2.79

1)Use the node wrangler addon to preview the output of the displacement node

2)the values will most likeley be clamped, so you will have to normalize them in order to see the [0-1] range. Use greater then and less then operations to find what are the maximum and minumum values

3)Use add and divide operations using the values you got in 2) to get normalized map

4)Bake the height map (I used diffuse shader and baked colour)

5)Plug the baked height map into the displacement modifier


Python, what is the right context for bpy.ops.transform.delete_orientation() operator I'm trying to delete a Custom Transform Orientation using script, for a Custom Transform Orientation that I created using script, creating it is a breeze, no problems at all, deleting it on the other hand is a mystery, trying to execute the operation:

bpy.ops.transform.delete_orientation()

I'm getting a context is incorrect error, I tried to get the right context using the following hack, but it's not working for this specific operator, it worked for create_orientation() but not for delete_orientation():

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

area = bpy.context.area.type

for type in types:

    bpy.context.area.type = type

    if bpy.ops.transform.delete_orientation.poll():
        print(type)

bpy.context.area.type = area

Looking at the System Console after running the script above, is printing nothing, as if this operator is not available in any context in Blender! Even when I delete the Custom Transform Orientation from the Properties Shelf > Transform Orientations in 3D view, by clicking the X, nothing appears as executed in the Info Window!! Is it even possible to delete a Custom Transform Orientation using Python? I wonder why it's so easy to create one, and so hard to delete, if any one knows how to escape this incorrect context error, or how to delete a Custom Transform Orientation using a different method, would be appreciated.
Check the screen shots:

You need to override the context of the operator:

import bpy

name = 'Edge.001' #The orientation to remove

views = [area.spaces.active for area in bpy.context.screen.areas if area.type == 'VIEW_3D']
if views: #Assign the orientation in the view so that it is active and can be removed
    views[0].transform_orientation = name

areas = [area for area in bpy.context.window.screen.areas if area.type == 'VIEW_3D']

if areas: #Give the good override context
    override = {'area' : areas[0]}
    bpy.ops.transform.delete_orientation( override )

Edit: following the comment, some 'novice' explanations

Operator's context can be override. An override is a dictionary with some keywords. Among them you have the 'area' (because we have bpy.context.area). And if you look in the N panel where a custom orientation can be deleted, you see you are in the view3D area.

So... we just need to give a view 3D area to the override context.

Edit again:

What you did in your code is changing your current context (the view itself)... but that does not change the execution context itself (where delete_orientation is called), that is changing only the view.

More information here

Update:
In order not to get a ( Pycontext '' not found ) error in the system console, it's better to write the code this way:

...
if areas: #Give the good override context
    override = bpy.context.copy()
    override['area'] = areas[0]
    bpy.ops.transform.delete_orientation( override )

Reference: here


Rigging issue - The bottom of the torso is moving, where I only want the top to for this bone I am new to blender, and I'm trying to make some very simple rigs to test what I've learned. So, I've stopped at the torso(which is only one big resized cube with a loop cut in the middle, no deformation other than that), and as I started moving the armature, I realized the top bone, when rotated, caused the torso to rotate aswell, but it also moved the bottom of it, where it should have moved only the top part. I tried going into weight paint mode to fix this issue but I cant manage to remove weight on the bottom. Could anyone help me please?

So the bottom part is deformed aswell when rotating the top bone, where I only want the top part to deform. This object has one loop cut in the middle of it in the Y axis. The bones were linked by automatic weights. I cant seem to figure out how I can remove weight in the weight paint mode.

Select the center edge loop in weigh paint mode (use vert mode button in top panel to be able to do that or do it edit mode by going to the vertex group panel and remove the vertex from the vertex group) and set the weight to 0 in the weight slider, and press Shift+K to assign weights (but in this case removing)...


Textures appear different in object and edit mode I'm a novice with this program and 3D editing so I'm not entirely sure how I would fix this. Basically, I'm trying to make a 3D model of a character from a Nintendo 64 game, so I ripped the model and texture files using a graphics plugin on an N64 emulator, however the textures didn't map to the model properly, so I'm just going in the UV editor and trying to correct it. So far the textures appear fine in edit mode, but when I go to any others some polygons are textureless. Any help would be appreciated. Thanks.

For reference, here is what it looks like on edit mode:

And here is what it looks like on object mode:

Here is the project file for the model

Fixed it. It's because some faces were overlapping. Works fine now.


Cell Fracture Keeps Exploding When Another Object Is Set To Passive Animated So I've been experimenting with the Cell Fracture add on and it was going okay, but then here's what happened. I subdivided a cube about five times, used the add on (if it helps, the material value is one and the margin one is 0.0000), I made one cell active with start deactivation checked and everything is working fine. I add an icosphere, place it above the cells, set it to active with a heavier weight, and it works. Everything is fine. So here is where my problem occurs...

I added in a mesh (Godzilla, if you must know) and set it to passive. I animated it walking through the cells so it looks like it's getting destroyed. Nothing happens. I make sure to set the collision shape to mesh and then I check "Animated" since it's animated. Now suddenly the cells are starting to get destroyed the second the simulation starts, even though I checked "Deactivation < Start Deactivated". It's so weird, because when I turn off "animated", it goes back to working fine as if the cells need something that is active to hit it. Is this a bug? Thanks!

Guess I found out what I needed to do! Just make it Active and Animated!


Get position of node socket in python Is there a way to get the position (x/y coordinates) of a socket on a node in the node editor?

I'm working on auto layout functionality and having the actual socket position would make it much more useful.

You can get the location of a Node as well as the width and height, but the position of the socket does not seem to be available. This is likely to be because nodes can be in collapsed or expanded states and so a particular socket may or may not be visible at any given time.

You should be able to get pretty far knowing the dimensions and location of the node itself though. You know that all inputs are on the left side and all outputs on the right, and you can find out which nodes are linked to which, so you could do a topological sort and arrange the nodes with some minimum amount of spacing.


Is there any personal data saved inside a Blender file? If I upload a file with an HDRI-map, will the others see it? And will the name of the folder in which it lies be visible in the file? Will my computer name be visible? In general, what are the pitfalls about personal data when uploading blender files?

The path to the image will be visible even if packed. However if you used a subdirectory of the path of the .blend e.g. //Textures/ (// means dir of the .blend) only this will be visible, including the name of the image. The only way Blender uses absolute paths (to my knowledge) is when you import the image before saving the file, or if you told it that in the global settings.
Computer name etc. will not be visible, there is no username, registration or anything else. The version you used to last edit the file can be determined, eg. 2.83.
I am not aware of any (other) pitfalls.


how to generate rig without facial bones? I would like to ask how to generate rig after deleting some small bones from cat meta-rig of Armature.

those two pictures are the behavior of original rig.

but at third picture, when I delete facial bones, I get error saying "ORG-nose not found"

I noticed I have to set "rigify_type" to none in Bone properties panel, but I cant find the property in my version,

Where can I set the meta-rig to not related to deleted bones??

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


Help please with an animation of a cardboard chocolate package from a dieline I wonder if anyone can help me?  I'm new to blender and have managed to almost create the package and animate it folding from a flat dieline into a box.  However, in real life, the final shape isn't a straight box, there are additional folds in the side which create the box to slope at the top when it's folded up, and I have no idea how to make this happen in blender.
I've included the blender file as is,  and a photo of what I'm trying to create.  If anyone could give me a pointer I'd be super grateful.
Best wishes,  Jason

Reference image:

blender file - https://drive.google.com/file/d/15Lvgzm7NQUCQcS7niRhJe0vTo7uC1Efh/view?usp=sharing

In my opinion you should try something like that:

First merge by distance as it seems like you have overlapping vertices
You need to divide your sides like that in order to be able to fold them:

Then lower down the chain of bones in order to put the rotation axis at the bottom, and create 3 bones that you make children of the bottom bone in order to control the top vertices and make the fold fold:

Frame 0:

Frame 80:


How to flatten the curve of a complicated STL I have been working with this STL file (a gauntlet for a prosthetic hand.)

I need to flatten the curve at the top to fit the arm (basically just push the top down a bit), but the rest of it fits well, so I don't want to mess with the other proportions. I have been messing with selecting and grabbing the top and pushing it down, but this makes the inside of the gauntlet unsmooth with the pushed down materal. Any suggestions?

Here is the .blend file thru dropbox: https://dl.dropboxusercontent.com/u/95913396/extendedgauntlet1longer.blend

Select the parts of the object you don't want to affect and hide them with H.
Use projected proportional editing to adjust the model smoothly
Unhide the hidden parts of the mesh (AltH)


Overlapping Grease pencil showing jagged white or black edges Sometimes when I put two grease pencil objects on top of each other at a distance you see a black or white line appear around the edge of the object closest to the camera. From examining it in the viewport it seems as if the grease pencil object has a thickness the edge of which is catching the light from the scene.

Any ideas of how to deal with this?

Amazing my problem was solved with the 2.81 update. I literally did nothing, just waited for an update. Do you ever get that weird feeling that everything is ok?


How Do I Shrink/Fatten Selected Along The X Axis? I would have to select the shrink/fatten tool in tools or press Alt+S. I did, but it only shrink/fattens along the Y axis, but not the X axis and it is really peeving me off.

Press the corresponding button on the keyboard to tell Blender which axis you want to use, namely: X,Y or Z. Select the faces you want to scale, press S and press X to scale along the X axis.


Move pivot to bottom or top of object/selection Sorry if this has been asked many times but I couldnt find the answer that I was looking for.

Coming from Max I used to have scripts that would place the pivot to the left, right, top or bottom of an object by the push of a button. Now im trying to create something similar in blender python but I cant for the life of me figure out how it works.

I've searched online but the answers are all pretty confusing and most of them are written for versions earlier than 2.8.

However I found a script that should place the pivot on the bottom of an object AND doesn't throw an error. BUT actually it doesn't do anything at all either. So i'm wondering why this script won't work for me?

import bpy
context = bpy.context

for obj in context.selected_objects:
    mx = obj.matrix_world
    minz = min((mx @ v.co)[2] for v in obj.data.vertices)
    mx.translation.z -= minz

The pivot remains in the center of the object.

If you need to move the origin to the bottom, you would need to move it down by the distance it is higher than the lowest point, so you could do:

import bpy
from mathutils import Vector

o = bpy.context.object
d = o.data
m = o.matrix_world

lowest = min((m @ v.co)[2] for v in d.vertices)
difference = Vector((0,0,o.location.z - lowest))
local_difference = difference @ m
for v in d.vertices:
    v.co += local_difference
m.translation -= difference


Is there any "Show Brush On Surface" option in sculpt mode? I found this in the threads from GSoC 2010 or 2011, but can't find it now in blender. Is there an option somewhere or an addon that project brush circle on top of the surface of your model?

Sadly this isn't currently possible in blender, I believe that for one of many reasons it wasn't included into blender, that happens with GSoC projects quite often, sadly. (Maybe why blender didn't get any projects this year, 2015). As a result this isn't possible.


Csv Import pointcloud into Blender I have 24 points which correspond to 12 different "elements" (2 points per element) saved in an .csv file with the following column order (1: Element Name, 2: x, 3: y, 4: z).
I would like to import them so that there will be an edge between the two points for every element.
Alternatively if this is not possible. It would be great to import all the points as separate elements. So I can know which points correspond to which element by the order of import.

Update:

This is great and I would like to extend this to the first six point:
I tried to update your code with the edges I want, but it fails.

What does ensure_lookup_table() do ?

In if row[0] there is only one vert. How can I add more ?
The Ideal solution would be select 1,6 or all verts and make a mesh.
The order of the edges would be cool to have but if too much hustle.
Just importing 1, 6 or all verts and connecting them to a mesh would good.

Here my attempt to updated your code:

import bpy
import bmesh
import csv
from mathutils import Vector
from bpy_extras.object_utils import object_data_add

csvfile = open('path2csvfile')

inFile = csv.reader(csvfile, delimiter=',', quotechar='"')
# skip header
inFile.__next__()

for row in inFile:
    #  column order (0: Element Name, 1: x, 2: y, 3: z)
    if row[0] not in bpy.data.objects:
        vert = [Vector((float(row[1]),float(row[2]),float(row[3])))]
        mesh = bpy.data.meshes.new(name=row[0])
        mesh.from_pydata(vert, [], [])
        object_data_add(bpy.context, mesh)
    else:
        bpy.data.objects[row[0]].select = True
        bpy.context.scene.objects.active = bpy.data.objects[row[0]]
        bpy.ops.object.mode_set(mode='EDIT')
        mesh = bmesh.from_edit_mesh(bpy.data.objects[row[0]].data)
        mesh.verts.new((float(row[1]),float(row[2]),float(row[3])))
        mesh.verts.ensure_lookup_table()
        mesh.edges.new([mesh.verts[0],mesh.verts[1]])
        mesh.edges.new([mesh.verts[1],mesh.verts[2]])
        mesh.edges.new([mesh.verts[2],mesh.verts[3]])
        mesh.edges.new([mesh.verts[1],mesh.verts[4]])
        mesh.edges.new([mesh.verts[4],mesh.verts[5]])
        bmesh.update_edit_mesh(bpy.data.objects[row[0]].data, True)
        bpy.ops.object.mode_set(mode='OBJECT')

Python includes a csv import module, which makes reading the csv data and using it to create objects rather easy.

As we read through the file, if an object with the name in column1 doesn't exist we create it, if it does exist we add a second vertex and make an edge between the two.

This creates a new object for each element name, you can easily join them together once done by selecting them and pressing ⎈ CtrlJ

import bpy
import bmesh
import csv
from mathutils import Vector
from bpy_extras.object_utils import object_data_add

csvfile = open('/path/to/data.csv')

inFile = csv.reader(csvfile, delimiter=',', quotechar='"')
# skip header
inFile.__next__()

for row in inFile:
    #  column order (0: Element Name, 1: x, 2: y, 3: z)
    if row[0] not in bpy.data.objects:
        vert = [Vector((float(row[1]),float(row[2]),float(row[3])))]
        mesh = bpy.data.meshes.new(name=row[0])
        mesh.from_pydata(vert, [], [])
        object_data_add(bpy.context, mesh)
    else:
        bpy.data.objects[row[0]].select = True
        bpy.context.scene.objects.active = bpy.data.objects[row[0]]
        bpy.ops.object.mode_set(mode='EDIT')
        mesh = bmesh.from_edit_mesh(bpy.data.objects[row[0]].data)
        mesh.verts.new((float(row[1]),float(row[2]),float(row[3])))
        mesh.verts.ensure_lookup_table()
        mesh.edges.new([mesh.verts[0],mesh.verts[1]])
        bmesh.update_edit_mesh(bpy.data.objects[row[0]].data, True)
        bpy.ops.object.mode_set(mode='OBJECT')


Change the "OK" button name in dialog-boxes? My question is really simple, by default the button of blender dialog boxes is the "OK" string
what if I want to display something else? like "Execute" or "Play"? Something a bit more explanatory than "OK"...
Related : How to call a confirmation dialog box?

example of dialog box (nothing out of the usual)
import bpy

class SimplePropConfirmOperator(bpy.types.Operator):
    """Really?"""
    bl_idname = "my_category.custom_confirm_dialog"
    bl_label = "Do you really want to do that?"
    bl_options = {'REGISTER', 'INTERNAL'}

    prop1: bpy.props.BoolProperty()
    prop2: bpy.props.BoolProperty()

    @classmethod
    def poll(cls, context):
        return True

    def execute(self, context):
        self.report({'INFO'}, "YES!")
        return {'FINISHED'}

    def invoke(self, context, event):
        return context.window_manager.invoke_props_dialog(self)

    def draw(self, context):
        row = self.layout
        row.prop(self, "prop1", text="Property A")
        row.prop(self, "prop2", text="Property B")

class OBJECT_PT_CustomPanel(bpy.types.Panel):
    bl_label = "My Panel"
    bl_idname = "OBJECT_PT_custom_panel"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Tools"
    bl_context = "objectmode"

    def draw(self, context):
        layout = self.layout
        layout.operator(SimplePropConfirmOperator.bl_idname)

def register():
    bpy.utils.register_class(OBJECT_PT_CustomPanel)
    bpy.utils.register_class(SimplePropConfirmOperator)

def unregister():
    bpy.utils.unregister_class(SimplePropConfirmOperator)
    bpy.utils.unregister_class(OBJECT_PT_CustomPanel)

if __name__ == "__main__":
    register()

Unfortunately this isn't something you have any control over. The window_manager.invoke_props_dialog function is defined in C here, and ultimately uses the wm_block_dialog_create function, which contains this:
uiBut *but = uiDefBut(
        col_block, UI_BTYPE_BUT, 0, IFACE_("OK"), 0, -30, 0, UI_UNIT_Y, NULL, 0, 0, 0, 0, "");

As you can see from IFACE_("OK"), the text "OK" for the confirm button is hard-coded in the C source, so there's no way to override it short of rebuilding Blender from source.


Can a Deform Mesh Be Split Along the X Axis? I am trying to split a deform body mesh along the x axis in order
to further edit the mesh to use to create another object.In this case
form fitting armor, anyone have any advise ?
When I try to use Ctrl+ R , I get a
message that says loop cut does not work well with a deformed mesh.

not sure if this is the only answer but it appears the knife tool.if someone
with more experience with blender can give a more complete answer please do as
I  am very novice


Inconsistent visuals between Material view and Rendered Edit: Cant seem to set my answer as the answer yet so check my own answer for details on how I fixed this.
Im fairly new to Blender and Im trying to set up a material that can import textures and models from a game I need and edit with them in blender. (not edit them)
It has a lot of color lookup style stuff this "CC" texture but for some reason Im getting inconsistent visuals between the rendered version and material view.

The main question Im asking is... Should I make sure certain things connect correctly? (like yellow point to yellow, ect)
Or would having the color I end up with from a color ramp linking into a mix then going to a Diffuse BSDF then Output end up rendering just fine?
Here is a version I have currently, its in the end meant to apply a "base gradient", "Pattern Gradient", "Pattern" and "Sticker" to a part in that order (so a sticker covers the pattern and the pattern covers the base gradient).
(Details on what everything there means is documented on this guide here: https://www.overkillsoftware.com/workshopmanual/ )

Thank you for any help and tips!

Seem to have solved my own answer.

From what I understand I linked 2 Color ramps to different Fac areas relating to my "sticker" and its gloss causing a white fill effect in material view while not showing in rendered.

I guess the moral of the story is make sure everything links to the right place.

Thank you Duarte for the comment telling me to check if the right node types are connected.


I can't see a point in which to connect my nodes (Solved, wrong node) So I don't know if I'm being an idiot or what, but I can't seem to link my value nodes together in the same way as the tutorial.

I'm assuming I don't have the correct node?

Any help would be greatly appreciated!

My Nodes:

Tutorial Nodes:

"Cool, thanks. Yeah, it's the wrong node type so just put down a math node instead of a value node. – brockmann Jan 24 at 11:49 "


Can a glass object be made to act completely transparent to only the object contained inside of it? Say I put Blender's iconic monkey inside a glass sphere (hollow, but solidified around its exterior). All lamps and camera(s) are outside the sphere. Using Cycles.

What I want to accomplish is for the sphere to get rendered as an "ordinary" glass object, whereas the monkey inside of it gets rendered identical to the way it would get rendered if the sphere around it did not exist at all. (Most of all, I want to avoid the dimming effect the glass would otherwise have on the monkey's (diffuse) surface brightness).

Is this doable? By using the Light Path input in the node editor perhaps? Or maybe by compositing two render actions into a single image?

Yes, this is possible.

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

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

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

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

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

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

Result (200 samples):

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


PC "not responding" when I use the Subsurf and Bevel modifier at the same time Blender "not responding" when I use the Subsurf and Bevel modifier at the same time. That is the only time Blender does this.  Anybody an idea what could be the cause?

Blender can become unresponsive if

the combination of modifiers creates a large amount of Faces

Make sure the subsurf is turned to a low level when applying the bevel modifier!
Also keep in mind that changing the order of modifiers affects the order in which blender processes them.

placing the subsurf as the second modifier includes the bevel in the calculation

If neither of the above causes the problem, try a different version of blender or a new file.


Curve the transition to an inset face I'm attempting to replicate this geometry:

The main difficulty is curving that middle section. I have this currently, but am stumped on trying to graduate between the 2 selected edge loops:

Instead of the hard step from the inset, is there a way to curve between those 2 edges? The bevel tool doesn't quite do what I want it to and all the resources I google for "bevelling" are about round the corners of the shape, rather than between 2 edges.

EDIT:
Bevelling the centre edge doesn't curve, just adds loop cuts:

Ah I had the Profile variable set to 1! So it was trying to square everything off!

Changed the bevel settings to this to resolve my issue -


How to mix more than two shaders? How can I go if I want to mix more than two shaders? Lets say that I have a diffuse and a glossy shader pluged onto a mix shader and than I want to put in a third shader (or more). How can I do that?

The mix shader only directly supports two inputs, as you've seen. But the easiest fix here is just to use two mix shaders:

Mix Shader 1 takes Diffuse and Glossy as input.
Mix Shader 2 takes Mix Shader 1 and another shader as input.

If you want to make the shaders evenly distributed, you could set Mix Shader 2's Fac value to 0.333 (assuming Mix Shader 1 is in the first slot) to give each shader one-third of the overall influence.


Dos window opens along with Blender application. Is it safe? I have recently installed blender. Whenever I try to open the blender, a DOS window opens. It closes when I close the blender application. Is it safe?

The console window is the main part of Blender. If you are lucky, try closing the dos window before it loads the Blender UI, you will see that Blender automatically closes.


Separation gap after subdivide When you subdivide a cube into 9 smaller cubes,
how to separate them
so that between each smaller cubes is a gap ?

But, the mesh is whole so that each smaller cube is not represented by individual smaller cube meshes.

If you want individual smaller cubes it would be easier to generate them with an array rather than subdividing a large cube.  This is because when you subdivide, Blender doesn't generate internal faces.

Create a cube.
Add an array modifier with a count of 3 and an X
relative offset of 1.1.
Add a second array modifier with a count of 3 and a Y relative offset of 1.1.
Add a third array modifier with a count of 3 and a Z relative offset of 1.1.

At this point you should have something that looks like a subdivided cube.

To convert to a single mesh object, select the object then press Alt+C to bring up the Convert To menu then select Mesh from Curve/Meta/Surf/Text.


Does blender have useful skinning tools? I come from maya, and I'm used to several skinning tools that are quite useful, such as mirror skin weights on command, use a spread sheet to see all the weights of each vertex, copy skin weights between meshes, prune small weights, remove unused influences, etc...

I'm starting to rig in blender and so far the skinning process has been tedious and boring, compared to maya.

Is there any addon that helps with the skinning when rigging? Or is there a tab with skinning options in blender?

The skinning in blender leaves a bit to be deserved in my opinion but there are some options. In blender this is called weight painting and it uses vertex groups.

For every mesh there is a weight painting mode, where you can manually paint skin weights by painting. There are several tools here to help you out, with extra brush settings in the right settings panel.

In there is also a menu with some extra features.

Or you can manually add/remove/adjust the vertex weights in the edit mode by selecting vertices and adjusting in the right vertex group tab.

There is a paid add-on with extra tools for blender (also 2.8) available here: https://gumroad.com/l/weight_paint_tools


Unexpected behaviour on soft body collisions I'm trying to get two soft bodies to collide in a zero gravity environment. The way I'm trying to do this is by having soft body one and two close to eachother, and having a third rigid body collide with the first soft body, so that it moves into the second.
The first part works well. Rigid body one moves into soft body one, bouncing it off and giving it some speed. But when soft body one collides with soft body two, it seems like the forces aren't equally distributed. Soft body two doesn't move, or barely moves, while soft body one bounces off soft body two hard.
Both soft bodies have the exact same settings, so I expected the forces to be about equally distributed after collision. What I expected was that soft body two would also bounce away with a little speed.
Just as a check I tested the same objects bouncing off eachother with gravity on. The first soft body would fall until it hit a plane, and the second soft body would fall until it hit the first soft body. This seems to work as expected.
Anybody have some insight?

The problem is not with the soft body simulation but it with the collision between the two - as the collision is only effectively 'one way'.
Consider the following simulation where the Cube is animated and the two spheres are separate soft body simulations (ie, where each object is a separate mesh, each with its own Soft Body modifier).

The Collision modifier on each of the objects tells Blender how the soft body simulation should interact with that surface - but it does not tell that surface how to interact with the soft body. This means when the cube collides with the soft body, the cube is not actually aware of the soft body but the soft body finds itself squashed against the approaching cube. This does provide a seemingly correct collision between the cube and the first sphere.
However, when the first sphere then moves across to the second sphere, from the first sphere's point of view it is colliding with a static surface - so it bounces off. From the point of view of the second sphere, however, it barely notices the presence of the first sphere (even though that first sphere also has collision enabled) since at any point in time, it is never any closer to the first sphere's surface than that surface came to it - and most likely bounced off that surface. So the second sphere does not react appropriately as it is effectively a completely separate simulation, seeing the first sphere as a non-moving surface that is close but never 'too close' to it. This results in the one-sided interaction where only the moving object seems to react properly.
The solution (providing you want the same soft body settings for all interactions) is to join (Shift+J) the two soft body objects together so that there is only a single soft body simulation in the scene. This means that the two soft bodies can interact and react with each other (since they are part of the same simulation) - instead of seeing each other as a stationary surface. This produces a much more realistic interaction :

Note that the above solution only works where it is acceptable for both bodies to have the same Soft Body settings - it is not possible to give each their own distinct soft body settings (for this we would either need to be able to properly link simulations (not possible with the Collision modifier at present) or we would need to be able to set different soft body properties for different parts of the mesh - perhaps by way of vertex weights).


How to restrict certain lights from shining through specific materials? I'm trying to create an effect where a material/object will block out a specific lamp, but not any others

You can achieve this with Light Paths by detecting which lamp is being used for a Shadow Ray and change the material's shader between opaque and transparent.

I set up a scene similar to your example :

This consists of a 'wall' with a circular opening (with a solid border to the opening), a Spot lamp (green) and a Sun lamp (red). If I understand your question correctly you're looking to make the 'wall' be invisible to the camera but still block light from the green spot lamp - but allow the light from the sun through.

Blender essentially renders the scene by tracing rays from the camera out into the scene until they interact with a mesh. At this point blender 'bounces' the ray and also checks which lamps would be visible from that point. The Light Path node allows us to determine which of these rays is currently being calculated. For example, by mixing the material between a Diffuse shader and a Transparent shader based on the 'Is Camera Ray' property we can make it invisible to the camera and yet visible for other interactions - for example, a reflection or for the determining of shadows.

Additionally, we can use the Geometry node's Incoming property to determine the direction in which the ray has arrived at that surface point.

In order to make an object effectively invisible to just a single lamp we can calculate the direction of the lamp in relation to the point on the surface of the mesh and compare that to the direction of the Incoming ray - if the two match (or are close enough) we can deduce that that ray originated from that particular lamp, and decide whether to consider it for shadows or not.

To achieve this we first need to get the coordinates of the lamp - either by manually copying and pasting the coordinates into a Combine XYZ mode (fine if the lamp isn't going to move in the scene) or by way of Drivers - so that if the lamp moves the coordinates in the material are similarly updated.

We also need to be able to transform the Object coordinates into World coordinates (the object location and the Incoming vector are both in World coordinates). This can be done using the Vector Transform node which is described in How is the vector transform node used

Here's the material :

This takes the Object coordinate of the point being considered on the surface and uses the Vector Transform to convert it into World-space coordinates (convert from Object to World). The Combine XYZ captures the location of the lamp (using Drivers - hence the purple fields) and this is subtracted from the location of the surface point - resulting in a vector of the direction of the lamp from that surface point. The Dot Product is used to compare the direction of the calculated vector with the Incoming ray - with both vectors being 1 unit in length (which is what the Normalize vector math node is doing), the result of the Dot Product will be purely dependent on how close in direction the two vectors are - if very close to 1.0 they are in (almost) the same direction, but anything less than 0.999 means they are not in the same direction. The Minimum and Maximum then simply combine the 'direction', Is Camera Ray and Is Shadow ray in a way that gets the desired behaviour (ie, if 'direction is the lamp' and 'is shadow ray' or 'is camera ray' then make it transparent).

This produces the following result :

Blend file included


What is a good solution to store a json data in the code? I am carrying out a project that requires a json file, which is automatically downloaded when Blender starts.
This json file contains a list of internet sites, and I wish I could populate a series of buttons in the menu.
The fundamental problem is that I would only like to load the json file once I find it, but I don't know where to store it.
The script works like this (approx.):
File my_json.json:
 {
     "site_list":{"Stackexchange":"https://blender.stackexchange.com/",
                  "Google":"https://google.com/"}
 }

Code:
import bpy,json,os,webbrowser
from bpy.props import StringProperty

def open_json():
    json_file = "G:\\my_json.json"
    f = open(json_file)
    data = json.load(f)
    f.close()
    return data

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

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

        data = open_json()
        for site , adress in data['site_list'].items():
            col.operator("object.simple_operator",text = site).options = adress #I pass a string to the operator (Web address)

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

    options: StringProperty()

    def execute(self, context):

        webbrowser.open(self.options) #Open web adress in the default browser

        return {'FINISHED'}

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

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

if __name__ == "__main__":
    register()

Result:

This method works, but the problem is that it iterates over and over to the Json file, opens it, reads it, closes it, and returns the data contained in it in the function return.
I was wondering where I could store this data, one time only. Read the file once, not read it again, and store the data somewhere.

Only layout in the draw method.
Every time the UI is redrawn a new panel class is instanced and its draw method called. Hence the excessive number of reads.
If the data is not changing then can read once when the module is imported, or when registered.
Have added an example of reading the data in operator definition ,making the data an enum property of the operator, and using a generic layout to expand the operator enum.
import bpy,json,os,webbrowser
from bpy.props import EnumProperty

def open_json():
    json_file = "/home/batfinger/Desktop/json.json"
    f = open(json_file)
    data = json.load(f)
    f.close()
    return data

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

    def draw(self, context):
        layout = self.layout
        col=layout.column()
        col.operator_menu_enum("object.simple_operator", "site")

class SimpleOperator(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.simple_operator"
    bl_label = "Simple Object Operator"
    data = open_json()['site_list']
    site: EnumProperty(
        items = [(site, site, address)
            for site, address in data.items()],
        name="Site",
        )

    def execute(self, context):

        webbrowser.open(self.data[self.site]) #Open web adress in the default browser

        return {'FINISHED'}

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

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

if __name__ == "__main__":
    register()

Example of layout using
        col.operator_enum(
            "object.simple_operator",
            "site")

If you are going to be using the data a lot would consider moving all the json in a separate module and expose the data on import.
from my_json_data import data


Center 3D cursor with script I am trying to set the 3D cursor to the center using a script, so that when it then imports an FBX it is based on that cursor location.

So far I have this:

import bpy

for area in bpy.context.screen.areas:
    if area.type == 'VIEW_3D':
        bpy.ops.view3d.view_all(center=True)

But I get an error: Operator bpy.ops.view3d.view_all.poll() expected a view3d region

If there is a better way to set the 3D cursor then that would be nice. But if this is the best way, then can anybody help me mend my script?

Posting solution here, so that this is marked as Answered:

bpy.context.scene.cursor.location = 0,0,0


Can't get a specific mesh to render (though everything else renders fine) Trying to make my first 3d animation. Spent the past hour looking through fixes for similar issues but nothing has worked for me so far. This is really weird because I don't think the object is entirely invisible. Rather than describing, I'll share screenshots of 1. solid mode viewport, 2. material preview mode viewport, 3. rendered frame (note the eery black outline of meshes face, I'm certain it is the face because when I move mesh that black outline moves in render). What's weird is, I initially had this working perfectly, but after changing the keyframes for my animation (spacing them out), adding a floor and background it just stopped showing the humanoid mesh. I'm also unsure why it's completely black but that is not my primary concern right now. Things I've tried: hiding and unhiding in viewport, disabling and enabling in rendering, clear all resrict render.
Blend file (sorry, blend-exchange was taking forever so I uploaded to google drive):
https://drive.google.com/file/d/1_oInTQqhWHFPOl7p9XTM6LVqx6N-9wEc/view?usp=sharing

Your object have Alpha is 0, you need to go to select your object, then go to the Material properties > Alpha, and change this to 1


Animation extends beyond last keyframe I purchased an animated model of an opening book originally designed in 3ds Max and have been working on converting it to a COLLADA file for use with Apple SceneKit. I was able to get the vendor of the model to convert it to a Blender file, and theoretically Blender can output .dae.

I noticed that the animation was too long, with a delayed start, and continuing several seconds after the book was open. So I thought the right thing was to use the Dope Sheet to delete the unnecessary keyframes, and then shift the remaining keyframes back towards t=0. But As you can see in this screenshot, even after doing this, the timing of the animation is unchanged: the book is still only partially open when the Timeline scrubber is past the last keyframe.

This is my first time using Blender, so please don't hold back on spelling it out for me (e.g., key shortcuts to perform actions).

It looks like a few objects in the model had "mesh cache modifiers" which were affecting the geometry in order to create the animation.

I followed the instructions on this answer to "bake" the mesh cache into regular animation steps. I used this .pc2 importer add-on to use the point caches that had been provided to me; exporting them to .mdd and then importing again did not work.

Once that was done, I exported to a COLLADA file but it was huge—80 MB. I applied this trick to merge animations into one. But the animation does not work yet.


How to make a Text File dependent of an Armature object so that it appends with it to other projects? If you ever used BlenRig, you may have noticed that it pops up a text file in your text editor called "generate_customprops.py". This is a python script that the rig uses for various purposes such as automatically disabling drivers and hiding bones. When you append a BlenRig rig to another file, this text file comes with it.

I also need to execute some python script in my own custom rig, and I also have a text file. The functions in the script can be called from any Driver. All of this works fine and opens a lot of new possibilities for what a rig can do. However, if I try to append my rig to another blend file, the text file will not come with it, and has to be appended separately. Since I'm trying to create public rigs for other people to use, this is not ideal. Any help would be appreciated!

PointerProperty

Another method would be to associate the text with the armature object or armature itself using a bpy.props.PointerProperty(type=bpy.types.Text)

import bpy
from bpy.props import PointerProperty

bpy.types.Armature.script_file = PointerProperty(type=bpy.types.Text)

As shown in this answer can poll the property. Another test script with a sample UI panel and the text associated to an armature object.

import bpy

class OBJECT_PT_HelloWorldPanel(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Hello World Panel"
    bl_idname = "OBJECT_PT_hello"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

    #poll for armature object
    @classmethod
    def poll(cls, context):
        return context.object and context.object.type == 'ARMATURE'

    def draw(self, context):
        layout = self.layout
        arm_ob = context.object
        layout.prop(arm_ob, "rig_script")

def is_armature_object(self, object):
    return self.type == 'ARMATURE'

def register():
    bpy.utils.register_class(OBJECT_PT_HelloWorldPanel)
    bpy.types.Object.rig_script = bpy.props.PointerProperty(
        type=bpy.types.Text,
        poll=is_armature_object,
    )

def unregister():
    bpy.utils.unregister_class(OBJECT_PT_HelloWorldPanel)
    del bpy.types.Object.rig_script

if __name__ == "__main__":
    register()


stretched movie when masking? So I'm masking in the movie clip editor, and I noticed that the video is compressed on the sides to where its a square now, and When I use the mask in the vse, it comes out stretched out, but still offset. Help please

Unfortunately the movie clip editor doesn't seem to have a way to deal with non-square pixels. So your mask is getting created using a frame that is 1440x1080 pixels.

When you bring that into the VSE editor it is stretching that frame to fill a 1920x1080 canvas (as determined by your render settings)

So there are three choices:

1. (The one I would use because I dislike the VSE so much) Use the compositor.

Setup your mask at a fixed size of 1440x1080 and composite using the Alpha Over node.

2. If you must use the VSE. Change your render settings to 1440x1080 with a pixel aspect ratio of X:1.33 Y:1

or

3. Keep your settings the way they are now and deform the mask strip on the VSE:
In VSE you select your mask strip and add a Effect Strip->Transform strip. Then change the settings to use 0.75 on the Y scale to have the mask match the aspect ratio of the original footage.


How to get rid of sharp edges when using subsurf modifier? I am currently playing around with the Catmull-Clark part of the subdivision modifier and I'm starting to get the hang of it. However, I have one edge that does just weird things:

I want to have a smooth rounding here, but somehow the edges and vertices of this region don't seem to cooperate (other parts of the same mesh are fine).

I tried rebuilding this section from scratch and checked for hidden/inside faces or edges (didn't find anything). I joined adjacent vertices and am pretty sure there are no double vertices, edges, anything. There is a mirror modifier in front of it, but it doesn't interact with this particular region. I'm currently out of ideas and welcome input.

File (Has been cut down to the tricky part.):

http://www.mediafire.com/file/8u5tqhf1wyonr0y/for_stackexchange.blend

As we see if we enable the Face Orientation option in the Viewport Overlays, you have some flipped normals, Blender can't smooth correctly between the faces. In Edit mode select all and press ShiftN


Texture Painting on image is not showing up in Blender 2.8 I am a beginner to Blender. Currently I am following Blender Guru's Donut tutorial. When I tried to do the texture painting , color on the image is not showing up.

If I zoom in very hard then only the color is showing up.

And another problem I am having is event if I am drawing white color in the model some greyish color is getting painted. (I am not sure whether both problems are due to same cause or not).

Please help me out.

Here I am attaching the blend file and the texture files

Drive Link For Blend File

The reason that the colour is not showing up is because your image is being obscured by the UV mesh of your model which is crazy high resolution. In order to disable it go to View and uncheck "Display Texture Paint UVs":

The reason your whites are showing up as grays is because of how light works, your model gets shaded and will only display at full brightness under very strong light (which won't show in deafult Viewport Shading mode). It's normal.
In order to see the true colours on your mesh you can select flat shading for your viewport:

Also I would highly advise disabling your subsurf modifier for your texture painting, my God that donut mesh lags out my pretty decant laptop. I don't know what kind of PC you have but I'm almost sure you'll get a better expirience without the subsurf on.


Texture Atlas and Duplicates I would like to create a texture atlas for a larger scene with all sort of objects without having multiple copies of the same texture in it, based on how many times that object appears. So for example lets say I have 6 identical trees and 2 identical houses, I would like my textures atlas to contain one tree and one house texture as if I only had 2 objects, instead of having 6 tree textures and 2 house textures that look exactly the same.

I did find a solution to this, however it's not easy to use so I'm wondering if there's another easier way. The way I can do it is when I'm done with the scene is to delete all the copies so I only have 1 instance of every object. Then I can just join all the objects into 1, create a new UV map, bake my textures into a new image and be done. (I found this method here: https://www.youtube.com/watch?v=Tj-S5QAac3U ). Once my atlas is created then I can separate all of my objects and make copies again and move them where the old ones used to be. The new copies of the objects will take their texture from the atlas without needing to have that texture appear multiple times.

The issue with this technique is that if I end up adding a new object at any point in the scene, then I have to do this whole process again which is pretty annoying and time consuming especially if the scene gets larger and more complex.

So what I'm wondering is if there's a better way to create a texture atlas which will know that some objects are just copies and will only include 1 texture for all of those instances of the same object inside the texture atlas.

Thanks in advance!

I ended up finding a solution that is "elegant" enough to where it would work on even larger scenes where you might have 10-15 copies of multiple objects without being miserable to do.

First, I dragged a copy of each individual object away from my scene in an area where I'll basically have 1 copy of each unique object. You can even move these on a separate layer if it helps.
Next I grouped up (ctrl+G) all of the objects that are the same within my scene in separate groups. So all the houses in one group, all the trees in one group etc... You can find more properties for grouping under the Object tab (the square icon 3 to the left from Materials)
Using the simple process explained in the video above ( https://www.youtube.com/watch?v=Tj-S5QAac3U ) I created a texture atlas using the unique objects that I've dragged out of my scene.
Then, I simply went into edit mode and separated all of them out by selection. This is pretty easy to do because I made sure I left some space between them when I dragged the objects away. You just go into edit mode, using B you select the area where your object is and then P and pick by selection.
Next you just pick the groups of objects and the unique object that now has its texture part of an atlas and press ctrl+L to link and link the material and send over the UV mapping too. So for example I would first select the group of houses which has 6 houses that all look exactly the same and then I would select the house that I dragged out to make it my active and then ctrl+L twice to copy the material and UV maps.
The only trick here is that if you want to re-build your atlas at a later point, you need to create new UV maps for all of your unique objects that you've dragged aside. This is simple to do, you just go to the object data tab next to Materials, scroll down to the UV Maps tab, click + to create a new one and delete the old one. Nothing visible will happen when you do this, however if you don't, if you try to join your unique objects with new ones at a later point to try and create a new atlas, your textures will get messed up when you press ctrl+J.

Hope it helps!


Render view much too bright I was following a tutorial from Blender Guru, and in the beginning I had to switch from solid view to render view. But then my viewport was suddenly too bright. I have tried a solution. The link from the solution is here: Eevee render much too bright. But for me that didn't work. Because everything was already set as default. Does anyone else have another solution?
The link of the tuturial from Blender Guru: https://youtu.be/ZTxBrjN1ugA
Image of my problem:

As Ethan mentioned in his comment, the immediate suspicion in a case like this is that your World Shader is too bright. If you want the background to be as bright as it is without "washing out your mesh", you can separate the background "look" and the background "lighting" by combining two different backgrounds with a Mix Shader, using the Is Camera Ray output of a Light Path Node as a Mix Factor:


Trying to create a script that makes roofs on selected boxes I hope this question isn't too broad for Blender stackexchange.

Quite often in my work I import topographical data specifying the flat geometry of buildings. I'm trying to make a script that put roofs on these buildings. I have some Python experiences, but I'm having a really tough time using Python in Blender, and haven't been able to find any in depth tutorials to help me on my way.

The goal of this script is to iterate of all selected faces, check if they have four sides, extrude the faces, then scale the shortest edges to 0. I want to have the shortest edges so to roof aligns correctly. See the image for an example of what I want to achieve.

Here is a quick script that extrudes selected faces of selected mesh objects, if the face has 4 vertices and the angle between the face normal and the up axis is lower than 3°:

import bpy
import bmesh
from math import degrees
from mathutils import Vector

up = Vector((0, 0, 1))

for ob in bpy.context.selected_editable_objects:
    if ob.type == 'MESH':
        me = ob.data
        if me.is_editmode:
            bm = bmesh.from_edit_mesh(me)
        else:
            bm = bmesh.new()
            bm.from_mesh(me)
        bm.normal_update()

        for face in bm.faces:
            if len(face.verts) == 4 and face.select:
                try:
                    angle = degrees(face.normal.angle(up))
                except ValueError:
                    continue
                if angle < 3: # some threshold
                    ret = bmesh.ops.extrude_face_region(bm, geom=[face])
                    verts = [e for e in ret['geom'] if isinstance(e, bmesh.types.BMVert)]
                    faces = [e for e in ret['geom'] if isinstance(e, bmesh.types.BMFace)]
                    bmesh.ops.translate(bm, vec=face.normal * -0.7, verts=verts)

                    e1, e2, e3, e4 = faces[0].edges
                    if (e1.calc_length() + e3.calc_length()) < (e2.calc_length() + e4.calc_length()):
                        edges = [e1, e3]
                    else:
                        edges = [e2, e4]
                    bmesh.ops.collapse(bm, edges=edges)

        if me.is_editmode:
            bmesh.update_edit_mesh(me)
        else:
            bm.to_mesh(me)
        me.update()

The two shorter edges of the top-face is collapsed to create a sensible roof.

Note that it doesn't account of degenerated quads (non-planar, self-intersecting), but should work good enough for your use case.


How can I increase the grid floor line thickness for major (or minor) divisions? Running Blender 2.81: I can't find a way to increase the width of the grid floor lines (major or minor subdivisions). I found the theme setting for the grid color, and the contrast seems to automatically adjust based on zoom level, but overall on my 4k monitor it's difficult to discern the major grid subdivisions. For example, with the default 10, this is what I see:

Adding more details from a comment below, when I modify the resolution scale and the "line width" in the interface options, it seems to actually make the major/minor grid lines disappear more:

You can change the grid thickness in the Viewport Overlay drop-down menu.


How to get correct results when baking a fluid simulation I have a student who is trying to bake her fluid, but it won't do it correctly. Below are the steps she told me she takes when she does it. I have no idea on how to fix it and I have been trying for days. Any help would be appreciated. I also included screen shots of what she does.

"Before I bake, I assign the larger icosphere as the domain, and the cube to the fluid and the other objects as obstacles. When I bake it, the fluid moves up to its starting point at the square like it's supposed to. After that, however, when the fluid falls, it passes through the objects marked as obstacles and lands as if it were landing inside a large rectangular prism, or some of it gets suspended in midair. (the pictures show it)"

There are several issues:

The scene is upside down. The Z axis (blue) always points up in world space. In the file provided, the view is upside down and the blue arrow appears to be pointing down. When righted, it looks like this:

So in your scene the the fluid emitter is actually below the domain and collision objects.
The fluid domain is always a box shape, as it uses the object's bounding box. When assigned to a non-box shape, this means that it will be a cuboid with the same dimensions as the shape.

If you replace the icosphere with a cube, the reasons for the odd behavior become clearer:

Note that I duplicated the domain object in this screenshot so that the domain bounds would be visible at the same time as the fluid
The collision planes are non-manifold. The fluid simulator has no way of determining where the insides and outsides of the 2D planes are, so it will guess, usually resulting in strange behavior.

Related: Fluid not filling container completely

If the fluid emitter object is moved above the collision objects and the collision objects are given volume and correctly oriented normals, then it appears to work:


Shadows color for text I was wondering if you could change the shadow color from the sun? I'm making this for a T-shirt that will be black so I'd like to change the shadow to grey. Thanks!
 Now it got foggy...what should I do?

While user2859's answer is correct for changing the color of shadows, the shadows in your image are actually not those kind of shadows (or at least not to BI).

To adjust the color of those shaded parts of the mesh, try tweaking the ambient world color in Properties > World:


Blender 2.8 extrude vertices I apologise in advance if it's been answered before. I'm relatively new to blender and have been following this timelapse video (https://www.youtube.com/watch?v=wRzYBsTvnXY). At around 7:37, it seems the creator can extrude the vertices along the x-axis (or in any axes).

However, when I tried it, Blender just wouldn't let me extrude like the video did even I pressed 'xyz' during the extrusion.

From what I'm seeing is, he first selected (Ctrl) two vertices then extruded (E) using the mouse. Am I missing something? Or do I have to do some custom settings? I'm aware that there're some major updates from 2.79b to 2.8 but this is not changed, right?

Deactivate the Mirror modifier Clipping option to prevent vertices from sticking to mirror plane, then it's possible to move them away from it even if they are already placed on it.


Is there a way to enter the absolute (not relative) value of a transformation? When I press G, R, or S and enter a number, Blender will move, rotate, or scale the selection relative to its local value.  Is there a way to press, say R > 4 > 5, and then some other key to have it set the absolute rotation to 45° instead of incrementing it by 45°?  I know how to go into the object properties or right hand toolbar and set the position, rotation, and scaling there, I am wondering if there is a keyboard way to do it (as there is for most everything in Blender).

Not entirely the answer you're looking for, but at least for some cases it works nicely to do one or more of the following:

Object > Clear > Location  Alt+G
Object > Clear > Rotation  Alt+R
Object > Clear > Scale     Alt+S

And after that make the transform and input the desired value.

Also, it's important to mention that after pressing move G, rotateR or scale S, you can define:

global axis by pressing X,Y or Z
local axis by pressing XX, YY or ZZ.


How to sculpt folded skin I'm trying to copy this model:

what tools should I use to create the wrinkles and growths on the neck? Is there a seed up the process or must it all be done by hand?

You can use the Texture panel in Sculpt Mode, as shown below:

This will apply a texture to your brush. If it doesn't look right, you can adjust the size of the texture under the "Size" portion of the panel. Additionally, you can use "Spacing" under the Stroke panel to adjust the sample rate(?) of the stroke.

Edit: Here is a video of the texture brush in action, at around 35 minutes in.


Multiple GPU limitations with OpenCL and cycles? I'm trying to make blender work with 20 GPU's, however I'm able to concurenntly force only 13 of them to work together while rendering one frame(13 tiles, one gpu per tile). Is there any limitation of GPU's that can run together?

I know octane have/had 12 GPu's limitation, however i can not find any piece of information about limits in cycles.

TL;DR There is no official limit of GPU's on cycles but setups bigger than 10 GPU's were never tested so far.

After not so extensive research I've contacted one of the blender developers. According to him in this thread: Blender dev forum there is no official limit on cycles. However blender 2.80 is still under development and such a huge setup was never tested before by no one. At this moment I am unable to check it myself on 20 GPU's but I've done my best with what I had.

Natively(without my software, just pure blender) I was able to render on 10 NVidia GPU's both on CUDA and OpenCL concurrently.(commit 191b8951f7af, NVidia driver 398.11, Win10). Further commits were fine for CUDA but I was unable to run OpenCL so I had to checkout from the most recent to this particular one(no idea why, but it's beta so everything is possible). That is the maximum amount of GPU's I had on one node.

Non-natively(using my software to connect to GPU's via tcp/ip) I was able to render on 13 NVidia GPU's on OpenCL(no way to render on CUDA that way) concurrently.(commit 191b8951f7af, NVidia driver 398.11, Win10). All 20 GPU's were visible though. At this point(and in the closest future as well as I have to focus on the other project for now) I cannot conduct any other tests to check whether it's blender or my software.

When I will be back on this project I will provide more information both here and on blender thread, but for now that is all I know.


What to pay attention when modelling for animation? Modelling must be one of the first things to be done when it comes to 3D art and it must be one of the most intuitive stuff that depends more on practise. But, after 2yrs with Blender, when I finally came down to animation and it appears that there is more to it than that. Books and references on the internet suggest modelling for animation should be done very differently than how it is done for still imaging. Why is it so? What should be done to successfully optimize one's skills to model for animation? If there are any resources that would help us climb up the stairs(that is from very basic principles to advanced level), it would be very helpful if links were provided.

When people say "modelling for animation", they are referring to making a mesh that deforms well. A model that is used in a single image is easy to position and make look good. A model that gets animated will get deformed and twisted in ways you probably never thought of and needs to look good in the process.

You need to consider how the model will be animated, think of the arm being lifted and swung around, think of extremes like swinging from an overhead bar or doing a high roundhouse kick, your model needs to be deformed by the armature without the shoulders or hips getting kinked and looking unnatural. Some rigs also allow a character's arms to be stretched and bent which also needs to be considered.

Often shapekeys are used to clean up a joint during animation but you still need a mesh that looks good deformed before you make a shapekey that adds a little polish for certain extreme positions.

Not sure of any tutorials that explain this in detail, I think it is more a matter of experience from watching your mesh deform and working out a topology that works for each position.

You can find many rigged models online from sites such as blender cloud or blendswap. Download some of the characters, pose them and look at how the mesh deforms. Enable wireframe display so you can see the topology as it is deformed. Compare how some look better deformed than others. Compare them to your characters.


Mathematical formula for Bezier curves What mathematical formula does Blender use to calculate Bezier paths?

For each segment of the path between two control points, it approximates a cubic Bezier curve:

where P0 and P3 are the control points and P1 and P2 are the handles.


Does scaling a mesh/curve object to 0 remove its render impact? I'm currently using the latest build of Blender 2.8 as of this post's timestamp, and I noticed I can't keyframe the viewport visibility parameter (see above) in the Outliner like in 2.79. The render visibility parameter (already yellow/keyframed) works fine.

This error is probably because the feature is not implemented yet, but this whole situation has made me look into other methods of hiding and unhiding objects in my animation. Specifically, I want to know if scaling a mesh or curve object to 0 will remove that object's impact on render time, as if it was never in the scene.

It makes the most sense to just use 2.79 until this new Blender version is finished, but I vaguely recall overhearing once that keyframing this parameter with a large number of objects at a time is not recommended, so it's a good opportunity to explore alternatives.

So does scaling to 0 remove an objects impact on render time? If not, what are some other ways I can animate object visibility (excluding keyframing a material's transparency)?

Yes, if the object is 0, it does remove the object from render time.

Good Luck


Creating a trailer rig Right now I have a truck and a trailer. The trailer is parented to an empty, and the empty is vertex parented to the truck where the trailer would hing at. However, although the trailer is always locked to the hinging point on the truck, it does not act like a trailer when the truck is rotated and moved. What has to be done to make the trailer respond in a manner that an actual trailer would? I am trying to make this for the game engine, so using most constraints will not work. I thought of using the Camera actuator, but that does not work very well at all when backing up.

To expand on Jerryno's answer, a Rigid Body Joint is a perfect way to do this. To start with, make both your truck and trailer to the Rigid Body physics type, and position the trailer behind the truck where it would naturally sit while towing it. On your trailer, add a Rigid Body constraint, with the Pivit Type set to "Generic 6 DoF"

You can enable "Display Pivot" to help with placing the pivot, or leave it off if you know the offsets needed to put the pivot on top of the trailer hitch. (The pivot will not show in-game, so this option is only to help set up the constraint.)
To eliminate the possibility of collision problems between the truck and trailer, enable "Linked Collision." Ordinarily this would make the trailer able to clip into the truck and look really weird in the process, but you can adjust the rotation limits to stop the trailer from rotating too far. It is important to enable the X, Y, and Z location limits and leave them 0. This will lock the trailer in place behind the truck, and unable to move relative to the truck, it will only be able to rotate around the pivot within the rotation limits specified.

Using stand-in objects to test, this behavior is exactly what we want.


How to export grease pencil's layers to another Blender file? I want to export all grease pencil layers in a Blender file into another file, because I need to merge some drawings in one animation, but can't find any options to export Grease Pencil layers.

Additionally I no want to convert the grease pencil layers into a curve with Alt+C, because the program freeze and can't work with it.

I found a way to do this using Link or Append Data Block from Blender file, on the File menu.


Viewing topology while working when I try to model from tutorials the instructors' topology will show on both sides of a mirrored object, and won't be as hidden with gray in areas. I can't figure out how to set that up.

you've got to enable this display method in the mirror modifier by hitting this small icon:


Trying to fill an opening in an object and match depth I just started 3d modeling with Blender about 3 weeks ago. Steep learning curve but I was able to muddle along (thanks to this site). Now I am stuck. I am volunteering at a non-profit and I have to modify an existing container that has some openings in the bottom to allow wires to pass through. I received this as an STL file (I think from AutoCad). I need to fill in a portion of some of these openings. The openings and my patch are non-uniform in shape but should be the same depth (along z axis). I tried making a face in the opening and solidifying it down until it was the same depth as the existing opening. I guess I thought this would magically become part of the existing mesh and I would have the new smaller opening. Well, I had a lot of non-manifold edges.
I finally backed down to a simple test case to try to understand what was going wrong. I made a simple frame 50mm x 50mm and a depth of 5mm. This was made by applying a difference boolean to two Blender cubes. I then tried to make a "beam" go from one side of the frame to another on the y-axis. First I tried subdividing the two edges on the top and using those 4 vertices to make a face which I solidified downward to the same 5mm depth. This gave me non-manifold edges with the "multiple faces" selected. I figured this was because of the hidden faces at each end of the beam. So, I was able to delete the faces on each end of the beam but the original frame face was still inside.
I then tried again from scratch. This time I put two edge loops on the inside of the frame across from each other along the y-axis. I selected those two faces and deleted them. This was going to be where the face of the solidify object would wind up so I thought it had to go. I then did the same face solidify and then deleted the face on each end of the new beam. Now I get non-manifold edges with the "boundaries" check box.
Here is what Blender looks like now.

I am at a loss. I must be missing something pretty fundamental. I thought filling in a hole like this would be easy but I can't find any examples of someone modifying an existing object like this.
Here is my blend file.

Any help would be much appreciated.
Thanks,
Don
Update: I was still messing around and found that the "Make Manifold" option in 3d print fixes it. So, I must be close. Really want to understand what is going on here.
Follow up image

Final Update:
lemon was able to solve my issue and in doing so he shared a very great diagnostic/debugging technique which I hadn't seen in all my previous searches. I wanted to make sure to point it out for any beginners following me up the Mt. Everest of learning curves. ;-)
If you are having problems with an area of your mesh the 3d print tools or select non-manifold geometry will indicate the basic area but it can be hard to see what is going on. From lemon's answer and his image I learned the following..don't be afraid to grab a vertex or edge or scale a face. Move it around and it will be obvious what it is and isn't connected to. You can always do a RMB or ctrl-z to put it back when you are finished looking. I have been working on a more difficult variation this afternoon and using this technique I have gotten to 0 non-manifold geometries every time (eventually).
Thanks for the tip, lemon!

The reason.
The non manifold part comes from the bottom face of the "bridge".
You can see that if you select the face and scale it down:

Its sides are not linked to the main part of the mesh.

Few modifications in the file above, so that all faces are quads.


How can I subdivide and curve/smooth a low poly line without moving the original points I am trying to create the hull of my frigate by creating latitudinal curves, converting them to meshes, and then joining the mesh lines to create full mesh.  As you can see in the images, I am using diagrams from the plans of an actual vessel, and trying to redesign it accurately.

This image is looking directly aft, along the x-axis, to see a cross section of the hull.

My question is this:  How can I create the side meshes of the frigate time efficiently, and yet retain the proper curve?"
Below I manually created one rib for an example, and in the image below that I subdivided each section and manually moved the points to create a reasonably accurate curve.

Obviously, manually creating and adjusting many curves for the entire length of the vessel would be extremely inefficient.  Perhaps I could create a curve, and somehow intersect it with each longitudinal line, or shrink-wrap a curve to them, but I have not yet learned whether this is possible or whether it would create the desired result.  Perhaps I can take the low poly line before I manually curved it, and use some modifier to subdivide and smooth it, though it is important that the original points do not move.

not sure if it is the solution but if you quick add faces to your loop and then use the knife project fonction with the side curve and remove the vertices you don't use in the end.

Draw the side section with curve as you did for the front section.

Then convert all those new curve to meshes with command + c
Join those meshes with command + j

select the new mesh (the one made of the joined one) and then what you have already done for the front of the boat.

use the side view and go to edit mode en press space to search "knife project

this will cut your mesh where it intersect with the second one


Can animation nodes be used for animating a rubik's cube? First of all, wat an awesome adon
I made a Rubik's cube and was wondering: can it be used to randomly scramble the cube? And how would i do the parenting to 6 empty's i placed around the cube.

I tried to do the parenting based on XYZ position of the origin point of the small cubes I have split all cube locations into 6 lists(-X, +X, -Y, +Y, -Z, +Z)
Does anybody have an idea how i get those cubes to behave nicely and stay in the cube after 1 turn? And can the logic nodes or scripting node be used to do some 'smart' parenting based on > if a empty is rotating or selected?
Would it be better to make an armature and animate that?

Any hints,tips and tricks are welcome :)

It needs some work but possible. You can try using Child of constraints, to dynamically parent the cubes to empties as time going. Here is an example setup:

Also, you can try using particles to generate location set. Like this:

Both solutions are a bit tricky, and not perfect, still figuring out how to fix that, but that's how it goes for now.


Updated to v. 2.8; Why, now, all animations work except one in v. 2.79 .blend? I made an animated scene with Blender version 2.79 and then updated to 2.8.
 The animations for my cameras and second character work just fine. But, for some reason, the first character is not animating at all. The keyframes are still there.
 Am I missing some setting that's preventing the animation of the first character? Perhaps I have to retro-date to v. 2.79 to save the .blend in an alternate state, perhaps, with no objects selected, then try again in v. 2.8. Hopefully, there's an easier fix.

I fixed it by unparenting the character from the ground plane object. The configuration worked in 2.79 but not in 2.8 for some reason. Oh well, easy fix.


Is there a way to make render preview less fuzzy I know how to make my final render without noise or grain. But my preview render is always grainy/noisy. Is there a way to fix this?

The quality for the 3d viewport (in rendered view for cycles) is determined by the number of samples for preview.

For 2.79

Or samples for Viewport in 2.8.

You can use more samples, but be aware that it will make the interface less responsive.

Do a search also for Render Border, where you can just render a section of the image


Switching between different objects I'm sorry if it's something basic, but I really don't know which keywords to look for, so I have to ask.

Say I'm making an interior scene. I have three different types of chairs, three different types of tables, and two different types of plants. I would like to see different combinations thereof, before deciding which pieces of the furniture I would like to keep.

Is there an efficient way to switch between these objects, without having to manually toggle their visibility on and off?

Edit: thanks to Ben, I've defined an idea of what I would like. Is it possible to set up a dummy object like a cube that would contain, for example, all the chairs I want to test, and somehow cycle through them?

If you are still on Blender 2.79, you can use the Layer System for this. Simply assign the objects you want to view together to the same layer by selecting them in Object Mode, pressing M and then clicking the layer you want them to appear on.

Objects can appear in several layers, so if you wanted the same chair to be visible in multiple combinations, that can be done by adding it to multiple layers. You do this while holding Shift while assigning the layer.


Cut a hole in a cylindrical subsurf without losing overall shape? I'm working on a model that is based on a cylinder and I have given it shape using a bevel and a subsurf modifier:

Based on the edited low-poly cylinder structure:

I want to cut some holes on the offset at the top of the cylinder which I made using an inset face and extruding the result, I have tried making the holes by making some inset faces on both sides of the extrusion, cutting the faces, and bridging the openings on the low-poly mesh and then applying bevel weight to keep the shape of the hole but this makes the section of the subsurf come forward due to the new geometry:

I have also tried adding a boolean modifier after subsurf but this breaks the topology and the smoothness:

This looks the closest to what I want to do, but the resulting normals would cause trouble when trying to use the model on software like Substance Painter to generate mesh maps for a low-poly version.
Is there some way to make the holes in a non-destructive way while keeping the cylinder's surface plain and smooth?