text:
Clear Custom Split Normals Data on all objects
I am cleaning up a large file imported from another program with 500+ objects. All of these objects have Custom split normals that need to be cleared, and then Auto Smooth turned on. I know I can make changes to all selected objects at once by holding down Alt while changing a value or checking a box. However, this does not seem to work for pushing buttons, which is what you need to do to Clear Custom Split Normals Data.
Any ideas on how to do it to all my objects at once?

Does selecting them all and then going to <Space> > Clear Custom Split Normals Data work, or does that only work for the active object?

import bpy

selection = bpy.context.selected_objects

for o in selection:
    bpy.context.view_layer.objects.active = o
    bpy.ops.mesh.customdata_custom_splitnormals_clear()

This is the new code as the coding has changed a bit in 2.8

Thank you for this code, it helped me, it is bad the alt+click on the button to remove custom split doesn't work like all other part of blender where alt+changing value or clicking does it on selected meshes.

Just stumbled upon the same problem. Here's the code. Select the mesh objects you want and run it. It'll think a bit if you have a ton of objects, because of make each of the objects active. May be someone knows the way to avoid that, but this one works.
import bpy

selection = bpy.context.selected_objects

for o in selection:
    bpy.context.scene.objects.active = o
    bpy.ops.mesh.customdata_custom_splitnormals_clear()

I am trying to modify a OBJ import script to custom split normals automatically. I believe this is the place to do it.
ob = bpy.data.objects.new(me.name, me)
new_objects.append(ob)

However, I only get errors when I try to do stuff like     ob = bpy.ops.mesh.customdata_custom_splitnormals_clear()
Can anybody help me?

Please post this as a new question. Posting it as an answer to a related question will not give it better visibility. You can learn more about asking questions here.

There. I have a workaround for that: Select all objects. Ctrl + J to join.
then hit " Clear custom split Normals data ", then go Edit mode, Mesh - Separate - By loose
parts. That's all.

Your solution would work, but is a bad workaround. You'll loose all your individual object names when joining meshes.


text:
Find a bone by name
Is there a way to search for the name of a bone within an armature and find where it is? Many complex armatures have tons of layers. When attempting to modify them or their constraints, it can be very difficult to locate a specific bone.

There is a search box in outliner window view, does that help.

I know you might know this already, but any specific requirement? I am trying to make an extension which helps me in this and few other stuff, dealing with shortcuts and selections.

Sorry, I had no armature, but would do that for you :)  ... edited as suggested

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
Rig doesn't keep X-Ray enabled when linked into new file
I have a character using the Rigify rig, with X-ray enabled both in the armature properties and object properties. The rig and character are part of a group. I link the group into a new file, and then make a proxy of the rig to pose it. However, the rig now does not have X-ray enabled on either the object or armature.
Why does this happen, and can it be fixed?

The object properties used will depend on the way you link the object in. If you link an object directly it will honour the external X-Ray setting.
When you link in a group, which contains a mesh and an armature, a local empty object is created which uses DupliGroups to show the mesh and this ignores most of the linked object's settings. Only the properties of the local empty are used, think of the local empty as the parent and the external mesh inherits the parent settings.
When you create a proxy rig, you are creating a new Armature object that is local to the current file, which then uses the external rig data and the external armature's object settings do not get consulted.
An addon could be created that will copy various settings when linking and making a proxy rig, or add a button to copy these properties between the external and local objects. You may also ask a developer to adjust blender so that it copies some of the object properties when linking or making a proxy, which sounds like a reasonable request to me.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Vertex colors are wrong value?
I am using a renderlayer with some vertex colors to render some masks. I have an object with a vertex color layer. The entire object is set to RGB values of .25 each (using set vertex colors command.)
The vertex colors are used in a material via an Attribute node. The Fac socket of the attribute node is connected to an emission shader. This is rendered on it's own layer using a material override. In the compositor, the Emission output of the renderlayer node is connected to a viewer node.
The problem is that after rendering, when I look at the image in the Image/UV editor and click to view the individual pixel values, it says my R, G, and B are .05098 each, not .25! The CM R, G, and B are .2503, and the HSV value is .25
What's going on? I need to use this mask into a math node and get a proper .25 for the math to work correctly.

Stuck on the same problem... For now, i manually reajdust values with pow(channel, 0.45188), which maps 0.5 in vertex color editor to 0.5 in Attribute node, but... that`s weird.

I wouldn't be surprised if this is related to or directly caused by reference frame translation. In short, the "real" color calculated by Blender has to be mapped to a 0-1 (0-255) range for display on a monitor. This requires some assumptions, one of which is "what value is grey?" that may lead to middle values (like 0.25) being scaled in order to "fit" on a screen. EXRs are (mostly) unconstrained, so they don't have to scale to a 0-255 range. I'd recommend rendering to an EXR, loading it into a compositing setup in Blender, and seeing if the values are correct there.

This is related to https://blender.stackexchange.com/a/87583/29586
The Vertex Colors are held as 8-bit sRGB values. This means that, say, 50% Red is not held as 0.5 - as the sRGB color space is optimised to make best use of the 8-bit values (see https://en.m.wikipedia.org/wiki/SRGB). This is similar to the Color Data/Non-color Data setting on an Image Texture node - but the Attribute node used to retrieve the 'raw' Vertex Color data (which will be held as 8-bit sRGB values) does not provide such a color space translation. You will need to manually convert those values as you have already discovered.


text:
Get list of attributes of a bpy.data struct?
Is there a way, in python, to get a list of each of the attributes that are part of a data struct? For example, I know you can get Object.data, Object.name, Object.location, etc. I've tried doing a basic for loop, but it says that the "object is not iterable."

Have you tried dir(Object)?

I see 3 options :

Looping through object.bl_rna.properties.items() (I think this is the preferred way since this is supported by the API)

Looping through dir(object), which is the python way so you might break things if you try to use these attributes if they are not exposed to bl_rna.

Looking in the official documentation, which at least gives examples and explanations about each attribute.
import bpy

obj = bpy.context.object

print('Using bl_rna :\n')

for prop, value in obj.bl_rna.properties.items():

   print(prop, value)

print('\nUsing dir(object) :\n')

for attr in dir(obj):

    print(str(attr), getattr(obj, attr))

etc.

etc.

That seems to work in general, but I can't figure out how to use it for this case: I'm adding a poseboneconstraint with constraint.new, which takes a (type) argument, and fails if you don't give it something on the type list. You can see the list in the documentation. I can do dir(constraint.new) and it tells me some stuff, but I can't figure out how to find the list of constraint names. See https://docs.blender.org/api/current/bpy.types.PoseBoneConstraints.html

I am not well versed in bone constraints, does this help ? https://blender.stackexchange.com/a/46986/86891

That covers setting up the constraint and assigning various parameters of it. I've already got that working. I'm trying to figure out how to access a list of arguments/types that a command can accept in the python api. I'm just using the constraint as an example.

how would I only get the non-inherited properties?

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Keep Scene resolutions in sync
Different Scenes can  have different resolutions. But a lot of the time, you'll always want them to be the same. Its a big hassle to have to update several other scenes all the time, especially while still working on things. And for whatever reason, you cannot use Drivers on the resolution fields.
Is there any workaround to have my secondary scenes always have the same resolution as my primary?

This script will apply the resolution of the first scene to all other scenes. It will auto-update all scenes as soon as you change the resolution in the first scene.
import bpy

def set_resolution(scene):
    x = bpy.data.scenes[0].render.resolution_x
    y = bpy.data.scenes[0].render.resolution_y
    for scene in bpy.data.scenes:
        scene.render.resolution_x = x
        scene.render.resolution_y = y

bpy.app.handlers.depsgraph_update_pre.append(set_resolution)

All you have to do is run the script once after opening your project in the Scripting workspace.

I haven't worked with the new handlers in 2.8 so if another handler would be more appropriate for this task, let me know and I'll update the script.

It looks like I have to run it every time I open the file, unless I check Register so that it auto-runs on file opening. Thanks!

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Align normals to camera with material nodes
I am using the Normal Edit modifier (aka Set Split Normals) on directional mode to align an object's normals towards the camera. This gives me some of the shading that I want. However, it causes me to lose access to the unmodified normals, which I need for other parts of my setup.
It seems that it should be possible to get the same effect by using material nodes since we have the camera's view vector from the Camera Data node. I don't understand vectors and the math enough to know what to do with it though. And I'm not clear on what exactly the Normal Edit mode is doing.
Anybody know if this can be done?

Just out of curiosity: Why would you want to do this? What use do you have from this effect?

@MartinZ Flattening/simplifying the shading on Toon Hair :)

Geometry node has an Incoming vector output. That is the vector pointing towards the point the shading point is being viewed from (Blender's manual). If you align surface normals to the camera you also get vectors pointing towards the point the shading points are being viewed from. So that's the same thing. You should be able to just plug Geometry node's Incoming output to Normal inputs of your shaders.

Ah hmm, I had tried that and it was giving different results, but now I've tried it again and it does seem to be the same as Direction set to camera with Max Angle set to 180 deg. I think I can duplicate the Max Angle feature by mixing it back with regular normals based on layer weight. Any idea if we can duplicate Parallel Normals?


text:
Text on a curve with consistent length
I have several circle curves that will have different text objects wrapped onto them. Each text object is a string of 64 random characters. The text should exactly fill the size of the circle without any overlap or gap. But different letters are different sizes. Depending on what is randomly put into them, I'll end up with them being too short or long for the circle.
I need a way to keep the text to a consistent length, but the font size needs to stay the same. How can I do this? I suppose if there's a font with all the letters being the same width that would work. But it seems what I really need is for it to adjust the distance between the letters to make sure they fit.
Is there a way to do this? Something like the Fit to Curve option on the Array modifier, but for text?

Maybe what you are looking for are Monospaced Fonts
Monospace fonts are often used in programming, code editors, command lines or consoles, and have the same space between characters regardless of the glyph width.
Just pick any monospaced version of a font file for use in a Blender text object and it should solve this particular case.

If you don't have one you can freely download any from the internet.
This will solve your problem if all strings have the same character count, otherwise if their length varies, you would have to find some other way to calculate and adjust character spacing on a case by case basis depending on resulting width.


text:
How would you curve the edges of a 3D shape?
I have a basic shape that at one end is wider than the other, the object gets thinner basically but the edges of the shape are straight, instead i want them to bow inwards.
Picture to demonstrate what i have and the red lines show what i am aiming for:

Is there some modifier for me to do this? Not sure i can see an easy way to do it manually.

Possible duplicate of How can I make a plane's edges taper inwards?

You can't curve edges without subdivision

@DuarteFarrajotaRamos does that work for 3D objects too ? Seems to only show how to do it for a 2D plane and that it does it to all 4 sides. Converting to a curve does nothing for it.

Add some Subdivision as Duarte Farrajota Ramos suggested and use Proportional Edting (Found just above the Timeline).

@Dontwalk but according to the answer that was linked above you only need to subdivide once. But the answers he linked to only works for a 2D plane it seems since it doesn't let me apply any curves to the 3D object when i apply scale to the central vertex.

Here's a 3D version of your Plane.

Add some subdivisions by pressing CTRL + "R" The more subdivisions you use the smoother the curve you are after will be.

Select two edges (You could also do one at a time). Turn on Proportional Editing and choose a "Falloff" type. I choose "Smooth" here.

Press "S" to scale and the Axis you want to scale on. I pressed "S" + "Z". Use the mouse wheel to affect more or less vertices.

Add a Subsurface Modifier and "Smooth Shading" if you want a smoother look. *You can use the same method with a plane.

EDIT You could also do this with a "Bezier Curve". Create your shape and change the curve to 2D to fill the shape.

Oh i see, thank you :) I was selecting edges incorrectly. This was very helpful. Thanks again!


text:
Smoke & fire simulation: Cycles material not showing fire
Fire is no longer being emitted from my material, even though I have not made changes to my material. The node setup is exactly as I had it before, but now nothing works.
Here's the .blend file.

The problem isn't the material, it's that there are no visible flames in the simulation.
On the "Debris Emitter" object, the Flame Rate set set to .025 If you set it to something like .25, the material works fine:

Thank you! I was just looking through older incremental saves and did find a working one. I was just at the stage of trying to figure out what on earth was different between the older working version and the broken present version. You solved it!

Something interesting to note: In my earlier working file the Flame Rate was set to 0.025 and yet flames were visible. I think this means that the Flame Rate value required to make flames visible is also dependent on some other variable - but I don't know what that variable might be.

@Mentalist There is a Speed setting in Domain settings > Smoke Flames > Reaction which affects the behavior of all flames in the domain. Perhaps it was set lower in the working .blend? (lower = faster burning = more fuel burned at once = larger flame)


text:
Script only running on Active Object, not whole Selection?
I am trying to make a script to Clear Custom Split Normals on all the objects I have selected. I have copied code from other scripts that run a command on all selected objects. However, this only seems to work on the Active Object, not the rest of the selection. Anyone know why?
import bpy

selected_objects = bpy.context.selected_objects

for selected_object in selected_objects:
    bpy.ops.mesh.customdata_custom_splitnormals_clear()

Is this a problem with my script, or with bpy.ops.mesh.customdata_custom_splitnormals_clear()? I am trying to make this a script because selecting everything an Alt clicking the button for it does not work on all objects either.

Here the code ported to 2.8 ;)
import bpy

context = bpy.context
scene = context.scene

selected_mesh_objects = [o for o in context.selected_objects if o.type == 'MESH']

ao = context.view_layer.objects.active

for o in selected_mesh_objects:
    context.view_layer.objects.active = o
    r = bpy.ops.mesh.customdata_custom_splitnormals_clear()
    print(o.name, r)

# change ao back to original
context.view_layer.objects.active = ao

Set the active object in the loop, as it appears bpy.ops.mesh.customdata_custom_splitnormals_clear only works on the active object. Not on all selected.
import bpy

context = bpy.context
scene = context.scene

selected_mesh_objects = [o for o in context.selected_objects if o.type == 'MESH']

ao = context.active_object

for o in selected_mesh_objects:
    scene.objects.active = o
    r = bpy.ops.mesh.customdata_custom_splitnormals_clear()
    print(o.name, r)

# change ao back to original
scene.objects.active = ao

Note added print statement with name and operator "result".  A {'FINISHED'} set will indicate object had custom split normals and they have been removed.

Last suggestion doesn't work in latest 2.8. I think the problem is in the new API. Can you help with upgrading the code? I want to apply my script to the selected active object.


text:
Increase power of emitters on objects?
Is there a way to change the power of an emitter hitting a certain object? For example, if I had an emitter object with strength 5, and nearby had several other objects, could I set one of those nearby objects to treat light rays hitting it as twice as powerful, so that it would be hit for strength 10 while leaving the emitter as strength 5 for the rest of the objects?

The closest I can think of would be to plug your shader nodes into both sockets of an add shader at the very end.  That would double all rays hitting the object though, not just the ones coming from a specific light.

The closest thing I can think of is doubling the entire shader of the object you want to be more illuminated.  This is done by adding the shader to itself.  To do this plug plug your shader nodes into both sockets of an add shader at the very end of the node tree.

It produces the following result.  The center ball uses the above technique while the other two use just the node group.

The disadvantage of this is that it doubles all rays hitting the object, not just ones from a specific emitter.
See this post and this post for more on the add shader node.

Excellent. I think I could probably deal with the other rays getting doubled by re-combining the passes in the compositor and clamping certain ones.

@Drudge  Great.  I am working on another answer using fake lights too if you want to check that out in a few minutes.

Sure, I remain interested.

Another solution, which doesn't do exactly what you are looking for the way you describe, but can produce a similar result, is to fake a light source in the material of the object you want to be more illuminated.
To do this, take the difference of a normalized vector determining the direction of the fake light (it helps to use a normal node for this) and the geometry's normal, tweak the falloff with an "RGB curves" node, and use that as the factor to mix an emission shader with your normal shader nodes.  I like to create a fake light node group (which I include in my startup blend) which takes the direction, strength, light color, and input shader.

Here is the node group.  I also have included an exclude parameter which can be used to have a mask define areas of the mesh to not illuminate, just leave that at 1 if not used.

Here is the result, the middle ball has the fake light.

This also looks really interesting. Thanks for 2 great answers.

@Drudge  No problem!  Due to their limitations, fake lights are usually just used for subtle rim light effects and the like, so if you can get it to work it's probably wise to use the other solution.


text:
ID masks for reflections
Is there a way to get ID masks or otherwise isolate an objects reflection in the compositor? For example, if I have a sphere above a reflective plane, I can set an ID mask on the sphere and use that to manipulate it in the compositor. But then the reflection will no longer be accurate. If I want to do the same manipulation on the reflection, I have no way to get it.

Do you mean that if object B is reflected on the surface of object A, that you can use an ID mask for object B to play with its reflection?

Yes. That is what I want to do.

You can use Glossy Pass both in Compositing and Shading
Compositing

Shading
You can apply a Light Path Node to the Sphere Material:


text:
Add weight to all vertex groups on an object?
I have a mesh attached to an armature with many bones. I have generated weights off the bones automatically. In some areas, the amount of weight each bone got is uneven, causing distortion between bones. In these areas, the weight of the groups does not reach 1 for those bones. I could solve these problems if I could add to all groups to bring them up to weight 1.
How can I add a set amount to the weight of every vertex in a vertex group (such as +.03), and do this automatically for every vertex group on an object? I have far too many bones to do it by hand.

select the object  set the addition value and Run this script :
import bpy

addition = 0.1

obj = bpy.context.active_object
obj_data = obj.data
bpy.ops.object.mode_set(mode = 'OBJECT')
for vert in obj_data.vertices:
    for g in obj_data.vertices[vert.index].groups:
            g.weight  = g.weight +addition

Thanks, I gave it a try and got:
Traceback (most recent call last):
File "<blender_console>", line 4, in
RuntimeError: Error: Vertex not in group

@Drudge can you try the update please


text:
Relation between BI and Cycles lamp energy/emission values?
I have two identical scenes, one in BI and one in Cycles. They both have point lamps in the same place (or, in the case of a linked scene, it's the same lamp with different settings in each). The BI lamp's strength is controlled by the Energy field. The Cycles lamp's strength is controlled by the Strength value of it's emission node. They are both pure white. All other settings are default.
What values of Energy and Emission strength will give me the same amount of light? Will other settings, such as Size in Cycles, change this? Does it depend on materials (assuming no other emitters/lights, or reflective surfaces, etc. Light bounces will also make a difference, but we can do this without those for now.)
For example, my Cycles version currently has an emission strength of 500. My BI version has energy of 1. The BI lamp seems to be significantly brighter than the Cycles!

Related https://blender.stackexchange.com/questions/261/what-are-the-differences-between-lamps-in-cycles-and-blender-internal/500#500

Cycles is a physically based renderer, whereas Blender internal is not (it is a rasterizer I think), the two are fundamentally different, and hence no real relationship can be established between them.
Lamps in Cycles physically accurate, emission node intensity is specified as power in Watts, according to the manual, the exception being the sun lamp, which uses a power per area notation instead, as in Watts/m2, as stated in the previous link.
Blender Internal Render lamps are specified as an energy value from 0.0 to 10.0, which has no immediate real world physical connection, as far as I know.
While it is probably possible to establish some sort of "visual correspondence" between two lamps using an equivalent scene as reference, it is probably hard to establish any sort of mathematically correct one.
From there lamp power will likely progress linearly for both cases, so changing one for X units will probably have a similar effect in both scenes, so it may be possible to establish some sort of directly proportional relationship between the two.
As Cegaton mentions, other than that film settings like exposure, and color management and post processing will also have a noticeable impact in scene lighting.

True, forgot about that, film exposure and color management settings will also have an impact on final result, added to answer.


text:
Straighten all bone chains in an armature
I have a hair rig with a lot of bone chains in a single armature. The bone chains are curved in their rest pose, matching the hair curving down around the character's head. I want to straighten out all the bone chains and save it as a new pose. The problem is that rest pose is already seen as 0,0,0 for rotation. How can I straighten these bone chains?

Script to align child edit bones to the selected edit bone. (The base of hair bones)  To use: have your rig in edit mode, and the desired base bone(s) of hair bone chains selected..  As with all scripts save first.
import bpy
context = bpy.context
for eb in context.selected_editable_bones:
    parent = eb
    v = (eb.tail - eb.head).normalized()

    while len(parent.children):
        bone = parent.children[0]
        bone.head = parent.tail
        bone.tail = parent.tail + bone.length * v
        parent = bone

One option to do that would be to use Auto IK, which is located in 3D Viewport > Toolshelf > Options tab (use T to toggle open/close the Toolshelf). When Auto IK is turned on, you can select last bone of the chain and pull it straight to any direction you want.
Alternatively (necessary if your hair chains are directly connected to head), you could use IK Solvers. In Pose Mode, select the last bone of the chain, key Shift + I, select To New Empty, and in the Properties panel > Bone Constraints tab, set the chain length to the right amount of bones. Then, you can use the empty object created earlier to pull the chain straight.

To align bones regardless of parenting you can temporarily add a copy rotation constraint for each bone, then apply the visual transform by selecting the bone and clicking CTRL+A > Apply visual transform to pose and CTRL+A again > Apply pose as rest posefor it to take effect in the edit mode as well, then you can delete the copy rotation constraint.

Not sure what you are implying re "If don't want to mess with your bones parenting""???  Neither of the other answers change bone hierarchy

I meant that your script required that the bones be parented to the bone you want them to be aligned to, in my situation that wasn't the case. anyways, I can delete my answer if it will confuse anyone, since the script solution had nailed it already.

NP, . Def. no need to remove answer.  Little confusing to me,  as bone chain implies parenting   Was seeking clarification  To align bones regardless of parenting  maybe?


text:
Does Cycles calculate 0 factor shaders?
If you have a material with shader nodes that are at 0 factor in a mix, does cycles still have to spend time processing them?

No, cycles doesn't have to spend time rendering those nodes:

Unnecessary shader inputs inside the Mix Shader are now ignored, in case the factor is 0.0 / 1.0 and not connected.

Also if a node branch is not connected to output, that branch is skipped. So for example when you have a node group outputting multiple shaders, it calculates only the connected ones:

Or:

This way you don't have to use Mix node "0/1 switches" and you can keep your node group count low and organised.

I believe I've read somewhere that optimizations are made internally at render time before rendering scene to skip these sort of things
Very low (close to zero) or extremely high (close to 1) 0.0 and 1.1 values are skipped to improve performance. (could find evidence of rounding values, maybe I misread or was wrong about that one)
These probably include shaders, mix values, roughness, emissions, fully black or white textures, etc.
Here are a few examples, there are probably a lot more:
https://developer.blender.org/rCfb7d4b2269b3edd44df869854f58962c2f051b07
https://developer.blender.org/rBS2c58e96685e80e4e12dfad56ed3bb51fa3824197
https://developer.blender.org/rBcbffc7499ef89cac19c07ee2116b8e1e5d38afe5

please add a reference for "close to zero" and "close to 1" if you are sure. Imho there is no such thing as rounding values to skip them!

Yeah couldn't find any either, maybe I'm wrong on that one, fixed the answer


text:
One node group input override another
I have a procedural texture node group that is being commonly used by a lot of materials as part of a global shader setup for a project. For a few objects in the scene, I want to use a image texture instead. It would be convenient for my setup if an object defaulted to using the procedural textures in the group unless another texture was plugged into the group. In that case, I need it to use that new texture and ignore the procedurals.
This could be accomplished by adding a mix node between the two, and giving the Fac as a group input. But is there a way to automate this? It seems it should be possible with some sort of math that controls the mix Fac based on the texture input itself. If the input was Black by default, then math with Greater Than could be used to set the mix fac to 1 if the input is anything other than solid black. But then if the new input texture has solid black pixels, I'd still get the procedural texture on those pixels.
Is there a better way?

You can do this by filtering on the Pink colour the Image Texture node outputs when no image is loaded. The only caveat is that it won't fully work if your Texture Image contains any pixels with RGB values of (1.0/0.0/1.0).

I've bundled the switching logic into a node for ease of viewing. Here's what the interior of the node group looks like:

Handling 2 Procedural Textures
In order to handle 1 or 2 procedural textures, you can set the default Colour on the Switch node to the Pink colour (R1/G0/B1). This way if nothing is connected it uses the default texture, and if the 2nd procedural texture is connected it uses that.

Blend file attached:

That looks good for image textures. What about if I'm overriding with another procedural texture? Would it work to just have the default color input for the group socket be that pink, or another unlikely color, if nothing is connected?

Yes, you could set the Colour input on the Group node to have a default colour set to the Pink, so that when it is not connected it feeds in the pink colour.

I've updated the answer to reflect this alternative usage with 2 proc textures.


text:
Multiple Random numbers per material
I want to randomize several procedural textures in the same material. For example, have 3 different Noise textures with a random number as their Scale. I can use the Random output of the Object Info node, but this gives me the same random number each time.
Is there a way to get more random numbers?

The random output of the object info node is a random number for each object, not for each output. I don't believe there is a way to do what you're looking for without hard coding in values, but I might be wrong.

Could you use a script node and get a random value from Python?


text:
Interlace frame numbers with file output node
I have a setup in the compositor that takes a piece of footage, does some operations, and outputs 3 difference files. Let's call them output A, B, and C. I have the file output node with added sockets to output each. What this gives me in the output folder is each output followed by the frame number. For example, frame 1 will give me A-0001.png, B-0001.png, C-0001.png.
What I would like is to alter the frame number appended to the output files so that instead I would have A-0001.png, B-0002.png, C-0003.png. Frame 2 would then give A-0004, B-0005, C-0006.
The end result would triple the number of frames of the animation and have them interlaced.
Is this possible with the file output node? Is it possible with a script?

I think, the frame number will only be added if you don't specify the complete filename but omit the ending (the file suffix like .png). However, you might script a complete filename including your desired frame numbers via a driver function. You should be able to calculate your frame number via (bpy.context.scene.frame_current - 1) * 3 + output_offset (with output_offset being 1..3 for A..C. in your custom function.

The File Output node seems to add the frame# and format regardless. If I tell it the output is A.png, it'll give me A.png0001.png.

I have the same issue :(
Seems no way to stop blender appending the exact frame number to the filename.

Setting render.use_file_extension=False removes the extension, but the frame number is still added.

I'm maybe wrong but it seems there is no way to avoid Blender (2.8) to remove the frame number and the extension of the filename with CompositorNodeOutputFile object, as I'm rendering by a python script I finally fixed it by renaming the files with os.rename combined with a regular expression just after render.


text:
Video format/encoder settings that don't destroy image?
I'm trying to render video of something where the individual pixel color matters. I need whatever format and encoder I use to preserve the basic colors as much as possible. All of the formats in Blender seem to totally destroy the image at a pixel level (except RAW, but that is massive.)
For example, here is a test image. Above is the original .png. Below is that image rendered with the default MPEG output setting.

The colors have been drastically altered, and it's added value into solid black pixels. I assume this is some feature of the codec meant to help interpolate between frames in a video or some such. But I'd like to just get regular video, same as an image sequence.
The base .png is 23.1kb (2400x600) so I'd expect to be able to get a video file that is 360 frames of that at ~8316kb. But it seems my only option to get this into video without destroying the quality is a ~460mb RAW file?
Is there some combination of format/encoding settings where I can just get the same thing as a PNG sequence but as a video without any added effects?

You might want to render to png, then look at using ffmpeg to make the video so you get more encoding options. Check this answer

The short answer is that you can't.
The longer answer is that it is an extremely complex series of transformations to take something from the RGB domain to the YCbCr domain, as outlined here.
Finally, even if you manage to leverage a 444 output stored in YCbCr that doesn't decimate your work, the output from Cycles is known as scene referred data. This data cannot be captured properly in a PNG nor any codec format. For a larger explanation into some of the nuances of this, see this question and answer.

I'm not using this for rendering a 3D scene, just for processing some existing images and video footage. Does that make any difference?

Same answer applies. It is always much more prudent, where possible, to stay in the RGB domain with still frames, then migrate to codecs for delivery. Same transformations apply as per the other thread.


text:
Texture paint mode: is is possible to paint over multiple materials?
Let's say I have a cube with two materials assigned to it: cat and dog.
The cat material is assigned to one face, and it's a simple image texture node with a picture of a cat.
The dog material is assigned to another face, and same node setup.
Now I understand that a model can be assigned multiple materials,
but each face can only be assigned one material, and so my question is:
Is is possible, in the texture paint mode specifically, to create a painted line that would start from the dog face and end in the cat face?
If so how?
Now it seems to me that it's not possible unless you make two textures (splitting your painting in two in this case), one for the dog, and one for the cat, but I'm a beginner so I still hope it's possible somehow in a simpler manner...

If you are using Cycles, this is as easy as copying and pasting the new overlay image texture set up into the second material so that when painting on the single image, it is references in both materials and can allow interaction in Texture Paint mode with Material Draw mode. I have a screen shot to show a simple two side set up.

@Craig D Jones, thanks, that worked like a charm.
Now if there are other beginners like me who wants to know the exact steps to implement Craig's method, here is what I did:

Split your screen in 4 (3d view, 3d view rendered, node editor, uv/image editor)
3DView > add cube
switch to Edit mode, unwrap the cube (place your seams before hand if necessary)
Properties > material > add two materials:

first one named red, with a red diffuse color. Note: at this step blender will assign the whole UV map to this red material
second one is blue, with a blue diffuse color

In the 3d view, select a face, then back in properties > material, select the blue material, then click assign to assign the blue material to the selected face. Now it's time to add the paint overlay!
3DView > switch to texture paint mode, then open your toolshelf with "t" if not opened yet. Click the "add paint slot" button. A dropdown list appear, I chose alpha (but I guess I could I have go with diffuse color as well). Blender will create an image texture named "blue Alpha" (visible in properties > texture tab) and also create an image texture node (visible in the node editor). Notice that the node is not connected to other nodes.
3DView > toolshelf > Slot tab, change the painting mode to "image" to be able to draw on the whole mesh (and not just the selected material).
Then in the "canvas Image" section (just below), click the dropdown menu and select the "blue Alpha" image texture. In your 3d view, your mesh should turn from white to black, indicating that it's ready to be painted on.
Paint your mesh as you like. Notice how it affects the "blue Alpha" image texture in the uv/image editor.
Now it's time to render your paint. In the node editor, add a color>mixRGB node then implement the following connexions:

image texture (blue Alpha).color > mixRGB.color2
image texture.alpha > mixRGB.factor
mixRGB.color > diffuseBSDF.color
diffuseBSDF.BSDF > Material Output.surface

Then in your mixRGB node change the blend mode to "add" or "screen" (otherwise your background would probably look black). You should be able to see your first face in the 3DView (the one with the rendered mode active).
Now select both the image texture node and the mixRGB node (now labelled "Add" since we changed the blend mode to add), and copy them (ctrl+c), we are going to paste them in the red material.
In properties > material, select the red material
Back in the node editor, paste the nodes from your clipboard (ctrl+v), then connect the mixRGB.color node to the diffuseBSDF.color.
Change your background color to whatever (mixRGB.color2).
Done :)

Note: if you want, you can replace your background color (in mixRGB.color1) with an image: create an image texture node and plug its color to mixRGB.color1, that should get you started.
Hope this helps.

I just used regular texture mode, not image mode, and I used Mix instead of Add, as I used the Alpha input to control the amount. Other than that, at least you figured it out now.


text:
bpy: how do I list the "pivot center for rotation/scaling" items?
I'm new to blender and python.
I would like to create a pie menu that lists the "pivot center for rotation/scaling" items (active element, median point, 3d cursor, ...).
I found the very useful "Ui Pie Menu" python template in the text editor, but I don't know what to replace the "pie.operator_enum"'s function arguments with, here is the template code:
import bpy
from bpy.types import Menu

# spawn an edit mode selection pie (run while object is in edit mode to get a valid output)

class VIEW3D_PIE_template(Menu):
    # label is displayed at the center of the pie menu.
    bl_label = "Select Mode"

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

        pie = layout.menu_pie()
        # operator_enum will just spread all available options
        # for the type enum of the operator on the pie
        pie.operator_enum("mesh.select_mode", "type")

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

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

if __name__ == "__main__":
    register()

    bpy.ops.wm.call_menu_pie(name="VIEW3D_PIE_template")

I know that I need to replace this line:
pie.operator_enum("mesh.select_mode", "type")

But what with?
I tried this without luck:
pie.operator_enum("bpy.context.space_data.pivot_point")

but it didn't work.

Window manager context operators
Just as there is a window manager operator to call a pie menu, there is also a cluster of bpy.ops.wm.context_blah(...) operators, including
bpy.ops.context_pie_enum(data_path="")
which  expands the enum property elements in a pie menu.  The data_path parameter is the path from context. In this example  context.space_data.pivot_point the RNA string path from context is "space_data.pivot_point"

Test script, needs the context of a VIEW3D space. For convenience I prepended a button to the VIEW3D header.
import bpy

def piebut(self, context):
    layout = self.layout
    op = layout.operator("wm.context_pie_enum")
    op.data_path = "space_data.pivot_point"

def register():
    bpy.types.VIEW3D_HT_header.prepend(piebut)

def unregister():
    bpy.types.VIEW3D_HT_header.remove(piebut)

if __name__ == "__main__":
    register()


text:
snap element, snap to vertex OR edge (both)
Is there a way to make the "snap element" be both vertex AND edge?
In the tutorial I'm following I need to stitch two different objects together. I do this manually by adjusting the vertices of object A to either the vertices or the edges of object B.
Currently I'm constantly switching from snap element=vertex to snap element=edge, which takes me about 1sec every time (and there are a lot of vertices..) and it would greatly improve my workflow if blender could just snap to whatever my mouse encounters (edge OR vertice).
An add-on maybe?

could you please show a screenshot of your mesh? are there not other solutions like bridge or grid fill?

Not at the moment, as far as I know.
Multi target snap has been introduced in New Feature Proposal: Mixed Snap in 3d View. by Germano Cavalcante, and is planned for the upcoming 2.8 releases.
For the time being as a workaround you may try multi point snapping


text:
python: removing vertices from mesh but still can access them from data
I'm trying to understand what's going on here:
obj = bpy.context.object
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.delete(type='VERT')

# The instruction below prints <bpy_collection[8], MeshVertices>,
# but I expected the vertices to be gone.
print(obj.data.vertices)

My intent was to delete the vertices of the current object.
When executing the bpy.ops.mesh.delete(type='VERT') instruction I can tell that the vertices are gone because they don't show up in the GUI anymore.
However, I can still access them via python with obj.data.vertices.
Is that the normal behaviour? Why are the vertices still accessible if I deleted them?

You can access all of Blenders mesh data with bpy.data.objects[i].data. However this data can't really be edited as you do in edit mode. When you switch to edit mode, a whole new object (at codelevel) is temporarily created untill you exit edit mode and return to object mode. When you return to object mode, the temporary edit mesh is converted to an object mode mesh.
This means while you are in edit mode, the changes you see are not reflected in yourObject.data. yourObject.data only contains the object mode mesh. It will be updated once we exit edit mode.
You could add the lines to update the object mode mesh, before printing its data.
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.mode_set(mode='EDIT')

But this only adds unnecessary overhead to your operations. (And you shouldn't be using the bpy.ops functions anyways.)
The solution is to use the bmesh module, it is designed to handle mesh data and has calls to update it.
Import it with import bmesh.
Then get the object data with me = bpy.context.object.data
Getting and setting the object data is dependant on which mode we are in.
Edit Mode
bm = bmesh.from_edit_mesh(me)

# manipulate the mesh data with the bmesh reference here

bmesh.update_edit_mesh(me, False, False)

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

# manipulate the mesh data with the bmesh reference here

bm.to_mesh(me)
me.update()

If you don't know, wether you are in edit or object mode, when your script executes, use this answers code (last block). It will check if the object is in edit mode and use the according functions.

Thanks for the insightful explanations, makes sense now.


text:
python: select a tab in the Tool Shelf
I'm trying to activate a specific tab in the tool shelf from a script.
The idea being that my add-on would setup an "enhanced/tailored" environment for the user when certain button is clicked.
Is that possible?
Also, following this idea, in the "Tools" tab of the tool shelf, there are many sections (i.e. Transform, Mesh Tools, Weight Tools...).
Is is possible to collapse/expand those sections from a script?


text:
is there an auto-cage add-on?
I'm following a tutorial by Zacharias Reinhardt: "Mastering sculpting in Blender", and at some point we try to draw a cage around a dragon (see picture)

In the tutorial, we do the cage manually.
I was wondering if there was an add-on or a technique to create such a cage automatically. Ideally, an add-on that would draw the cage around any selected object, with an offset option.
I tried this workaround but the results were terrible: copy the dragon, decimate many times until it's very low poly, then add a solidify modifier and adjust the thickness. The problem with this technique is that it doesn't create a cubic cage, but rather follows exactly the contour of the dragon, which create undesirable spikes at some locations (around the toes and the horns).
So is there such an add-on?


text:
Select sharp edges what's the angle value
in the manual
here is what is said about the "selecting sharp edges" command:

This tool selects all edges between two faces forming an angle greater
  than the angle value, Where an increasing angle selects sharper edges.

Ok, but what's the angle value then?
I tried to play with the angle value in the data tab of the properties editor (with autosmooth on), but it doesn't seem to affect my selection, so what is it? is it a fixed value internally coded?

You determine yourself the value on the bottom of the 3D view Tool panel (on the right of the 3D view, activated with T). Every edge with an angle above this one will be selected.


text:
Why can't I paint on an existing texture?
I downloaded a texture model for a tutorial and wanted to fiddle with the texture painting tools. I somehow got it to work, but after I updated blender to an newer version it stopped to work. Tried to reinstall both versions and take the clean file.
link to the blender file
http://www.blendswap.com/blends/view/74021
Help would be much appreciated

It works out of the box for me, just open the .blend and start painting.. What exactly isn't working?

Make sure the the image editor is in paint mode. There is a dropdown box in the header, that will change the mode. By default it is set to view, so no painting.


text:
What is the best way to make textures?
What is the best way to make textures? Which way do you use?
I think UV mapping is most popular but not easy.

Do you mean "make textures", or "apply textures"?

UV unwrap, bake ambient occlusion, texture in Photoshop, then touch up seams with the paint and blur tool.

It really depends on what kind of texture it is.
For a texture which looks mostly the same everywhere (e.g. a dirt texture), you can use Blended Box mapping:

For a texture which has an obvious definition of what should go where (e.g. a head texture), you probably want to use UV coordinates.


text:
Copy a file with linked object data
I am making several renders of a scene, with each shot needing a different camera, pose, and Freestyle settings. I want to setup each shot and their settings separately. Normally, I would make different Scenes in the same file with Link Object Data. However, unlike other render settings, some parameters of Freestyle that I need to change affect all Scenes in a file. If I change a parameter in a Line Style such as the displacement value on a geometry modifier, it changes in all Scenes in the file. I can change Line Set settings per scene, but I need both.
Is there a way to make a whole new file but that still has Linked Object Data the same as if I had made a new Scene?

Did you try making a single-user copy of Line Style settings in second scene which is with linked copies ?

Ah, you're correct, that does work. I didn't realize that was an option. I can do that instead for now, but am still curious about the original question.

You can still use the same file with different scenes but and make single user of object only (not object data) that should keep mesh data linked but modifiers independent in the same file.


text:
Smoke simulation collision distance padding
I am simulating smoke around building rubble. I have the buildings set as smoke collision objects. However, the smoke seems to leave a huge collision padding around my objects. The buildings are to scale (1 unit = 1meter), and my smoke seems to be leaving padding of several units. It will also not flow between gaps smaller than this.
Others physics sims have options to adjust collision padding distance, but smoke does not. How do I deal with this? I see people's test videos and the like where their smoke is colliding with surfaces without any visible padding, and certainly not several units worth.


text:
Displace perpendicular to normals?
The Displace modifier has the option to displace based on the face's normal, so upwards/downwards relative to the face, same as Z translate based on normal. Is there any way to get it to do an X or Y translate in relation to the normal?

This a type of what is typically referred to as vector displacement, where the displacement map provides RGB values which are used to get displacement along different axes. This displacement can occur along different orientations (or coordinate spaces) of the axes.
Currently, to my knowledge blender only supports local object space (The 'RGB to XYZ' option in the displace modifer, see https://www.blender.org/manual/modeling/modifiers/deform/displace.html). To displace along vectors perpendicular to the normal the displacement would need to be applied in the vertex tangent space. If you are familiar with normal mapping this is very similar to the difference between object space and tangent space normal maps.
Local object space displacement will work fine so long as your mesh does not dynamically deform (e.g. armature modified, cloth sim etc).

The manual states that the 'RGB to XYZ' option is sometimes referred to as Vector Displacement. There is a separate 'XYZ' option which they call local space. Would 'RGB to XYZ' work like Vector Displacement in other applications?

I'm not terribly familiar with how vector displacements work in other applications, but it would depend on what coordinate space the displacements are being calculated under. Blender only supports the local/object coordinate space. From a mathematical perspective it is possible to do this in tangent space (which is what the asker is describing)

Its probably worth noting that under the hood the Corrective Smooth modifier is effectively doing tangent space displacement to reconstruct lost detail from the smoothing, this just isn't available to the displace modifier.

I've been looking for an answer to this myself. I found that the following node group works quite well for this, extruding displacement along normals. I found that adding an additional bevel modifier after displacement helps to smooth the geometry, otherwise there are visible gaps between displaced planes.
Example:

Node Setup:


text:
Texture slots and viewing combined textures
I am painting textures in Cycles. My material contains multiple textures that are color mixed together in various fashions. I can use the Paint Slots in texture paint mode to view any given texture and paint on it. However, I want some way to view the whole combined stack of textures.
Is there a proper way to do this other than rendering or viewport rendering?

Simply using Material Draw Mode for combined textures is the only option in Cycles for now. Blender Render used GLSL viewport to get combined, but the nice thing about Cycles Material Draw mode is that you can toggle shadeless in the N panel without affecting the shaders themselves. Also, you might be interested in looking at BPainter addon as it simplifies and streamlines the painting experience in Blender all around.


text:
Faking the speed/vector pass
I want to use the Speed aka Vector pass in the compositor for some motion blur. Currently, it works based on rendering multiple frames. This is time consuming in Cycles. So I am wondering if there are any ways to fake it.
Since the output is a vector, it should just be an RGB or XYZ. Can this be faked with a material? Could you do something like make separate mesh and render it on a different layer with a shadeless material? Or rig up a widget that uses drivers and the position of an object to control a material? Has anyone tried this sort of thing before?
I don't really have enough info on how the speed pass works in order to know what the best method is. Can anyone shed some light on how it works and what would be necessary?

Thats a cool idea but you get a vector pass from Cycles already?

Only if you render multiple frames and have animation.

Vector Pass: Motion vectors for the vector blur node. The four components consist of 2D vectors giving the motion towards the next and previous frame position in pixel space. [ref: https://docs.blender.org/manual/en/dev/render/cycles/settings/scene/render_layers/passes.html ]
The VectorPass stores these 2 vectors using an RGBA only the node editor renders the socket as being a vector. The R+G channels are used to store the motion towards the previous frame. and the B+A channels are used to store the motion towards the next frame.
Your goal of influencing this in a material is possible by using a Transparency Shader and Emision Shader and mix those together.


text:
Hide an object in a linked group
I have a character made of several objects that I am linking into a scene. The character's objects are part of a group, and I'm linking in the group. However, for certain scenes I want to hide some of the objects inside the group (articles of clothing the character is wearing.) Is there a way to do this?
I am familiar with the proxy system. It allows me to create a proxy of an object, but even if I set the proxy to be hidden, it still shows. If I move the proxied object somewhere off camera that seems to work. Using mask modifier on it doesn't work either. The proxy itself does get hidden, but then it still shows a version from the group.
It seems I can start with the items hidden and then proxy the ones I want to show, but that quickly defeats the point of linking. Any other options?

Only workaround I see is using group isntances inside the main character group instance. Include said artivles as group instances in the Character group, then you can use the Outliner in Group Mode and turn off visibility/renderability of individual groups on a per-scene basis.


text:
Update objects in a Scene without re-creating it
I am making a template file setup that contains various render settings, render layers, etc. Objects will be linked into this file to create shots for a project. Part of the setup is that the file contains two Scenes with different settings. The second Scene links all the objects of the first, but has different render engine, render settings, etc.
When you create a linked scene, it links all the existing objects in the first scene. However, if the linked scene already exists, it does not get any new objects you add to the first scene. This means that to get my objects linked, i need to do it manually, or I need to re-create the linked scene, which will mean manually re-doing all its different settings.
I'm looking for a way to update/link all the objects from the first Scene into the Second Scene so that I don't have to manually do either part. Does this sort of thing exist anywhere? What would a script need to do to do it?

Linking scenes will not update automatically. You need to use Background scenes.

In a background scene all the changes are directly available. But be aware that some parts of blender will not work as expected. Like physics between background and foreground objects. But if it is just render engine and settings it can be a solution.


text:
Stop a material from reflecting the surroundings?
Is it possible to have a material only respond to light, and not reflect the environment or surrounding objects? In other words, always treat everything around it as pure black, same as if you had only the object and the world color was black?
This seems like the sort of thing that should be possible with Light path, but I haven't been able to figure it out.

It's kinda workaround but check here: https://blender.stackexchange.com/questions/90481/how-do-i-limit-gloss-reflection-to-only-intense-sources-such-as-a-light-source/90502#90502

Can you provide any visual references for the result you want to achieve? I've seen OSL scripts that base their lighting only on Lamp light sources while ignoring indirect bounces... (to achieve a toon shading look.)

maybe you could render just that object into another "black world" scene and then composite it back in the full scene?


text:
can makehuman/MB-Labs be used to make a SPECIFIC human face from photos?
I've been trying to use either of these two tools to create a model, in this case, based on the actor Pete Postlethwaite. Now, I'm not a very good artist, which is why I was trying to use these tools to generate this model, and a whole slew of others I need.
I cannot seem to get the model in either tool to look anything like the source. Naturally I'm going to blame my tools first instead of the craftsman, so I'm wondering if it is "possible" for a skilled artist to actually make the generated models look close to what they are supposed to look like, or are the tools only for generating "generic" characters?
Bonus points for being able to provide a link to some sort of information on how to do what I am trying to do. (Yes, I've read the manual for MB-Lab and have been screwing around with makehuman for over a year watching various tutorials and what-nots)

Tools like this are best viewed as a starting point, they are generally designed to provide a broad range of human shape variations rather than specific ones. Every human is slightly different and it is infeasible to provide parametric controls sufficient to capture all this variation.
The idea should be to start with major proportions and work down to finer details, getting as close as you can in the tool and then switch to sculpt/manual modelling etc to refine. Textures also make a big difference, and neither makehuman or mb-lab provide much here, you may want to look at projection painting from photos if you can find some that are good enough.

ok at least now I can stop thrashing about with the generation tool and start thrashing about in blender proper. thanks!


text:
how does one edit the mesh generated by MB-Lab?
In a previous question I asked if it was possible to model a specific human face. The answer I got was that its used more as a tool for approximating your target face, then manually adjust the mesh to get as close to the desired look as you care.
My question now is how does one do that? or rather, what is the best workflow? I tried both modeling and sculpting the changes, but when I applied the various expressions, the shapekeys ended up being way out of wack. Is there a way to preserve the shapekeys, or apply the same changes to the shapekeys at full value as gets put on the basis?


text:
What is causing these artifacts when using booleans?
I'm attempting to follow this one minute tutorial on creating post-apocalyptic buildings. The dude goes hilariously fast But I think I must have missed something. After I create a cube and use the subdivide tool to make it an object to take a "bite" out of the buildings, I get the following artifacts:

It appears the extra edges are caused by a discrepancy in the size of the faces on the blob and the building. In the video he has no such errors. I've tried playing the video at slower speeds but I don't see anything different.

yes, I duplicated the object and scaled it. I think that's for the internal rebar structure.


text:
Sunroof style motion - conceptual issues
I'm trying to make what is essentually a sun-roof, in that the object lifts up slightly and moves back over the surrounding frame. I figure what I need is a curve and a "clamp to" constraint, but it is not clear to me the proper way to implement this. Whenever I get to the part after I select the target curve, my sunroof object jumps elsewhere. I have yet to find the combination of the below where I get satisfactory results.
I have tried:

Making sure the origins are the same for a curve and object
Using a bone to follow the curve (with the idea of attaching the bone to the object
applying all transforms to the object, curve and bones
Watching a lot of vidoes that didn't provide the information I am looking for.

My end goal is to rig up this sunroof in an array and be able to control their position all from a "control nob" empty.
Thanks!

Might be doable with shape keys? One key for the lifting of vertices, second key for the sliding of vertices to the side. It very much depends on what actual shape the sun-roof will have though.


text:
How can I quickly manage visibility of channels across multiple objects in the graph editor
Say i have made an animation i want to modify. I know that i just need to tweak the rotation of every bone in the spine by rotating X on every bone across every frame. I want to maintain all existing rotation while adding some on, so i use the graph editor and move the curve up. But finding and adjusting the x rotation curve is hard because every other curve (rot yzw, scale xyz, loc xyz etc..) is overlapping it and confusing me.
The only way i know of to deal with this atm is to go through every object in the graph editor list and do the same thing: Un-checking visibility on every instance of a channel that isn't the x rotation channel. This is very time consuming.
Something better might be if i could only see the transformation channel matching the 3D manipulator i have selected in the 3d view. Or if there were a way to hide all other transformation curves that aren't x rotation at the same time.
I'd like to know if there is a faster approach to managing the visibility of channels in the graph editor.

Related - http://blender.stackexchange.com/questions/42225/shortcut-to-show-a-single-channel-solo-mode-in-the-graph-editor

You can edit curves only for selected objects, or filter unneded curves by various types.
Hide channels for other objects
Enable Only Include channels relating to selected objects and data in the Graph Editor header. With this enabled you can edit channels of only selected objects which decreases amount of data to handle with.

Filtering channels
Filtering by type
Enable Filters in the window header. From there select which type of animation data is desired to be shown, from 8 categories of animation data: scene, world, nodes, objects transforms, meshes, datablocks related to modifiers, lamps and cameras. Click LMB to select / deselect multiple:

Only transfroms animation data is shown above because it is what location / rotation keyframes of objects are.
Filter by keyword
Enable filtering by keyword; the filter will be applied while you type it in.

"X" is typed as keyword; shown all keyframes which have letter X in their property.
Visibility of channels
Also it's possible to hide all but selected channel, see shortcut to show a single channel (solo mode) in the graph editor ?, or disable visibility for multiple channels.
You could do that quickly by clicking Eye icon of one channel and hover it over Eye icons of other channels up / down without releasing the mouse. The channels will be hidden.

@cegaton thanks, I didn't try that one, seems promising. I think deserves another answer.

In particular 'Filter by word' was something i hadn't explored, and best answered my question for handling many of one kind of channel. Although i'm not familiar in manipulating keying sets.

Aside from the built-in features mentioned by @Mr Zak, you can install the Highlight Channels addon to achieve this with hotkeys:

Disclaimer: I'm the author of the Highlight Channels addon.


text:
Why is "create snapshot (ghosts)" disabled? (baked sound F-Curves in Graph Editor)
In VSE I have inserted a sound clip and added two custom properties.
This is purely so I can bake different frequencies as F-Cruves which greatly helps with aligning video with music.
I want those two F-Curves to be always visible in the Graph Editor. There seems to be an option that should do exactly that. In Graph Editor on the bottom bar (with menu) at the very end there is a button with a ghost icon (a second one in that row, first one is to show channels from not visible objects) that has a tooltip saying:

Create snapshot (Ghosts) of selected F-Curves as background aid for active
  Graph Editor bpy.ops.graph.ghost_curves_create()

However this button is disabled and there is no indication why.
I have my sound clip selected, with two custom properties keyed and F-Curves for those selected.
How do I make snapshot of those baked sound F-Curves?
P.S. If it makes any difference I have Blender v2.77

@Shady how is code block better than quote?
a. it is a quote
b. code block gives rather random highlighting.

No reason given, so I rolled back to formatting that seems to make more sense.

The button you are after I believe is on the left of the ghost button.
Graph editor with 16 channels baked to sound to custom properties AA0 - AA15

Click on the cursor button (show_only_selected = False)  and it wont matter if the object you have baked the fcurves onto is selected or not.

Lastly I've added AA9 to the search field, and filtered to only show Speaker animations.  Now that is all this graph editor will display. If I used "AA1" as the filter string it would show AA1, AA10 ... AA15.

The BGL overlay is from my Sound Drivers Addon and can be drawn on top of graph editor, 3D view and timeline.

That seems to be workable solution, though it is still not as useful as I'd hope. If all my video strips will end up with keys on properties it will be a mess in that graph editor unless I will manually hide all except for the two I am interested in. Would much prefer to just pin specific ones.
If there won't be a better answer within few days, I will rephrase question and accept this answer.

Due to no other ideas I can see here I am accepting this answer.
It allows me to go through with my workflow, even though it is a bit more cumbersome than I hoped it will be.

authors: 艾萊思茵教育科技有限公司


text:
VSE proxy and offset+crop
I am trying to edit high resolution footage in VSE. To make it possible I need to use proxies for all strips. Due to high resolution I opted to get only 25% sized proxies which seem to have enough detail to do editing.
However now I am facing issue with cropping footage. When I enable proxies in preview it shows it scaled down.
This makes proxies rather useless as I can't see what will be the result of my transformations.
Is there a way to make use of proxies?
P.S. I am using blender 2.69
edit:
Below are images that show what I am talking about:
Default strip settings, no proxy and offset disabled. It gets stretched to fill frame (which screws up aspect ratio).

Enabling proxy makes quality lower, but framing is same.

Now enabling offset makes strip exceed frame as it is bigger than target resolution.

Now my problems comes here, as after enabling proxy I expected to see same part of image, but at lower quality. This is however what I got:

And unsurprisingly any translations/scaling when using proxy doesn't let me estimate what will happen to final render.

I might be wrong (I don't use the VSE a lot) but I thought the point of using proxies is to display it scaled down?

@gandalf3 I would think proxies are meant to preview in lower quality, but with exactly same result as far as transformations are concerned.
Currently if I select "no proxy" my video is cropped to output frame (as it is bigger than my target resolution), however just changing preview to use 25% proxy makes it appear tiny in corner.
Which makes proxy entirely useless if you intend to crop/offset as you can't see what will happen in full render.
Will try to add pictures showing issue when I will get back from work.

I was assuming the same thing (i.e. proxies were just for low quality previews), I believe this is a bug. I've recently had the same problem for a project I was editing with about 20 clips that I wanted to show in the screen at the same time, I ended up giving up of scaling them in blender, cropped and resized all clips in pre-processing and then didn't use proxies.

After a bit of more searching I found VSE Transform tool which does exactly what I needed.
If you apply it to raw clip it scales it to keep it's aspect ratio while keeping it centered and stretched to either fit width or height (so you see whole video as big as it can be).
In addition you can manipulate (translate, scale and rotate) directly in preview window. And add keyframes. And probably something else I haven't yet discovered/used.

Actually, the normal crop and offset only work with the same strip that shown in the same panel.

However, you can add an Transform effect strip, it will work despite of resolution difference between proxy and original strip. Just be sure to have Transform strip selected. (Select the original strip, then ShiftA > Effect Strip... > Transform)

Will try that, but I have a feeling that it will not work.
I enabled offset on original strip only to stop it from being stretched to fill the output frame. And by adding that to transform strip I think original one will get stretched again (before transform will get to work on it), thus entirely defeating the reason why I enabled "offset" in first place.

I know, that's why I always prefer to only use Transform strip for such tweaking, especially when using with proxy. Just simply copy and paste the crop/offset value from original strip to the transform strip. and uncheck or clear those settings on the original one.

"Just simply copy and paste the crop/offset value from original strip". There is no crop/offset on original strip, so I am not sure what I should copy. Just adding transform and enabling offset makes no difference. Aspect ratio is screwed.
Also note my strips have different ratios and there is a lot of them, so I'd need a script/plugin to use that in a sensible manner.

@elmo, I see your point. It indeed seem strange that weird things happen once you toggle it no matter what value it used. To be honest, I don't know if it is normal. However, in my opinion, There are two separate panels you should notice -- "Effect Strip" and "Strip Input". You would also notice that when using proxy preview, the Original Dimension for the strip is also switched to the actual proxy size, as shown in the Effect Strip panel.

@elmo, continue to the last comment:
But the Crop / Offset toggles are indeed located in another panel called "Strip input", which probably means: toggling them means that you dicided to use the size of original strip input, not the effect strip (now the proxy one).

@elmo continue: Sadly, you were still using proxy size for the preview, I think that can explain what you are facing. The reason why I suggest Transform is that it only effect the actual strip, no matter the size it is being of. Hope you can understand that. If you do, just simply leave the Crop/Offset on the original one untoggled. :)

However, your third image made me thinking that you were using an improper dimension or aspect ratio setting in Render Panel. Try Menu > Strip > Set Render Size, before everything.

I am using correct render size. It is what I want. And I want to crop+scale everything to match it (I have strips of different ratios).
The only way I can think of making it work currently is to use transform to get proper aspect ratio for each strip and work from there. But this means I need to learn Blendr API to create simple plugin to do that. Surely not going to do it by hand for over 100 strips. I was hoping there is some out of the box feature or I am missing something.

Well, in that case, you may group all your strips as a Metastrip, then add a single Transform for that metastrip. However, if each of them got different aspect ratio, I don't think there is any automatic way to do this, since blender cannot guess what aspect ratio you really want for each single strip, right?

It knows original size, so it can. I will probably end up scripting something (or trying to find something someone else scripted).

Maybe there is something misunderstood. Sorry can't help you.

I'm pretty sure that this behavior was a bug, and is corrected in 2.74. Now the proxy fits the original screen dimensions which are not altered to suit proxy scale IIRC.

@3pointedit I'm on 2.82 and I've got the same issue : I've got offsets & crops set in Strip properties, and when choosing the option to see Proxies in the scene they show up tiny.

This is still happening in 2.83.4 but has been fixed in the 2.91.0 Alpha. You can now tick offset which will scale your footage to it's original dimensions, actually offset if you need to, and proxy cache with no effect on the preview dimensions.


text:
Matte Render from Alpha
An already rendered animation needs to have the background color-corrected. It will take too long to re-render the shot in full color. How do I turn the alpha channel of the combined layers (which are now set to render over transparent) into a black & white matte or solid color over transparent, and render quickly as just a matte pass with no lighting calculations?
Once I have the matte pass I can isolate the background and perform corrections.
I searched but could not find this exact issue in the forums.


text:
Why is the Mask size mismatched in the Compositor?
I masked an image in the UV/Image editor masking section. I then used that mask in the compositor for background replacement. However, the mask size seems to be different. Why is that? Here's a screenshot:

That was part of it. The ratio was also off.

The reason seems to be that the render resolution didn't match up with the image size.


text:
Branching a cached cloth simulation
I figured out I could get cloth to sew itself without gravity issues by animating gravity. So, after several minutes I end up without between fifty and a hundred frames of cloth simulation that result in a clothed character. Now, the problem is I want to animate the character doing multiple things while wearing the same set of clothes. Is there a way to bake the simulation up to a certain point, then drop the whole thing into a scene for further animation? I'm sure I could script something, but I'm just wondering if it can be done by default. I don't want to apply the cloth simulation, because then I'd end up with a non-planar base mesh.

You would have to apply it...why the worry about a non-planar base mesh?

Because it seemed like it might make transformation calculations based off the original state of the mesh. Like, if you have a hoodie, it's going to deform differently than a piece of flat cloth temporarily pushed into that shape. That was my line of thought, anyway. Maybe there's something I'm not understanding there.

You can duplicate the cloth object in an animated state (there is an addon called Corrective shape keys) where vertices are already in a "clothy" way. You can then use this as a base for other animations. The problem is: The cloth modifier still takes some frames of jiggling before it is stead


text:
How to get bpy.data.is_dirty updating when changes are done by script?
My addon relies on checking bpy.data.is_dirty. This seems to work fine in interactive mode, however when I tried adding automated tests for my addon I have faced issue with bpy.data.is_dirty not updating correctly when things are getting changed from my tests (Python script).
Example script to reproduce (on Blender 2.79):
>>> bpy.data.scenes[0].frame_start = bpy.data.scenes[0].frame_start + 1
>>> bpy.data.is_dirty
False

I can see starting frame change on the timeline, however there is no asterisk "*" visible in title (which generally indicates unsaved changes).
If I change starting frame by clicking on small arrow by number it marks the file correctly as changed (both the asterisk appears and bpy.data.is_dirty returns `True).
I have also managed to get a state in tests that have bpy.data.is_dirty returns True even on the next line just after call to bpy.ops.wm.save_mainfile().
Is there some function I need to call to get Blender's internal state to update bpy.data.is_dirty?
Alternatively, as I need it only for tests, is there some way to make sure that bpy.data.is_dirty is in a desired state? (i.e. I need to be able to set it both to True and False depending on scenario)
I read https://docs.blender.org/api/2.79/info_gotcha.html#no-updates-after-setting-values and tried using bpy.context.scene.update(), but it doesn't seem to impact bpy.data.is_dirty.

There are many problems with "bpy.data" updates, I suggest you report this


text:
How to access object instance from property instance? (in `update` callback)
I am trying to create an add-on to create parametric objects (Blender 2.8rc1)
I have defined a custom PropertyGroup, i.e.:
def _update(self, context):
    print(repr(self))

class FurnigenProperties(types.PropertyGroup):
    width: FloatProperty(
        update=_update,
        unit='LENGTH'
    )
    length: FloatProperty(
        update=_update,
        unit='LENGTH'
    )

When I change property I can see out of _update:
bpy.data.objects['GeneratedObject'].parametric_properties
What I essentially want to get access to would be bpy.data.objects['GeneratedObject'] however I am unclear how to get from self in callback function to actual object that property we just modified.
Looking at documentation for bpy.props.FloatProperty there isn't much detail on what I should expect context to be.
I.e. would context be the place to retrieve object reference? I was thinking about context.object, but I am not clear how object is determined. Is that object selected by user in viewport? In which case it wouldn't work if I modified property from some other Python code (as it would be most likely for a collection of objects of which none would be selected by user).
Or is context.object in callback guaranteed to point to object that self belongs to in above callback?
edit:
context.object doesn't seem to work. I just tried setting value of one of my properties through Python console and the object that I get from context.object is (as I expected) object selected in viewport and not the object I modified property of.

id_data
the id_data property of any blender object is a refernce to the ID type object it belongs to.
def _update(self, context):
    print(self.id_data)


text:
How to deal with a "non manifold edge" high count
I have an object with a high non manifold edge count. Is there a way to resolve them automatically or a way to make it easier to solve them manually?
Some of them are edges without a face and others are cubes connected to the object by one edge.
The object have a high polygon count because it is the result of various modifiers applied.
__
Edit:
When I delete those edges they leave others "non manifold edges"

After deletion, the solid is open and some new non manifold edges are formed

Using  make faces creates some non manifold vertices

What do you want to do to these (what do you mean by "resolve them")? Delete them? You can select them with Ctrl + Alt + Shift + M in edit mode

I tried to delete them, but more non manifold edges are created. Then I used make face to close the opens, calculated non manifold edges again and repeated the process, but it takes a long time and it gave me the impression that a better and faster solution could exist.

Re-topology is the best option, since it will generate a clean mesh for 3d printing and will consume less time then removing unwanted cubes, edges etc.
In given situation, I'll first delete half of my model and add a mirror modifier to it. covert my mesh to Quads and remove extraneous edges and vertices manually.
Use BSurface Addon for Re-topology, as it is the fastest method.

Note that using the mirror modifier will only work with a symmetrical mesh.

As gandalf3 said, the above method works only for symmetrical mesh. is there anyway to handle this for non-symmetrical meshes? I was wondering if it is possible to get the outer-surface shape of the geometry and build a clean mesh on it?

If your concerned about non-manifold edges then you plan to 3D print this model. In that case I would add some "material" to the edges being joined. By that I mean some solid printed material that will hold the pieces together rather than a flimsy paper thin join that can break easily.
Start by separating the joined edges. Add a small bevel CtrlB so that the new edge is wide enough. You may want to display edge sizes while doing this, see Mesh display in the properties panel. The width you use here will depend on the material you plan to use, the width of the new edge added by the bevel should be at least the minimum material thickness you can use. Repeat for the other edge.

Select the vertices or edges around both new beveled faces and bridge edge loops (in the specials menu W)

This will remove the non-manifold edges and leave you with a solid join in your printed model.

You may want to bevel these new edges to get a more rounded join.
Another option is to move the cubes together so that both beveled edges meet up and then remove doubles. This will effectively make the corner of the cubes intersect a little and depends mostly on your needs. If your using the array modifier then you can intersect each cube by using and offset a little less than 1.0, I'm not certain if this overlapping non-connected geometry is acceptable for 3D printing so you may have to manually join the overlapping areas.

If I understood correctly you this manually. is there a way to do this by an script? in case there are many objects.

I don't know of any script to automate this.

You can select all non-manifold edges/vertices by pressing Ctrl + Alt + Shift + M.
I don't know if this works for 3D printing, but you make it so Select non-manifold edges does not select those edges by making them separate:

So the cubes are separate, but those edges are in the same place. (one vert is move to the side in the image so you can see they are separate)
Another way you could try is the 3D print toolbox addon (introduced in 2.67), which has tools designed to help clean up meshes for 3D printing.

Thanks gandalf. I have edited my answer and added som screenshots. After deletion Ctrl + Alt + Shift + M still finds the connected edges to the deleted edges to be non manifold edges. Maybe deleting the edges fixes another scenario but it seems not to be my case.

@Lucass I have update my answer, but I don't know how well this solution will work in reality. The only other way I can think of is to connect those parts by more than a single edge.


text:
How can I access the values set via normals_split_custom_set()?
I use a variety, of, methods to set the loop normals but want to read them to do some raycasting.
I thought I had to call calc_normals_split() then match up vertices via their vertex_index.  However the result I get seems off from that shown by entering mesh edit mode and turning on show_normal_loop ("Display vertex-per-face normals as lines").
Here're are the results with colour names in top right describing each:

I want to get the magenta one which is produced by Blender itself.
Red and yellow are the untransformed and transformed point normals.  The yellow ones correctly line-up with the blender-displayed point normals when turned on.  That implies I'm using the correct matrix for transforming them from local to world (I used the inverse transpose technique explained here and here).
The black and cyan are the untransformed and transformed loop normals.  Obviously they aren't near the magenta ones.
And finally a code excerpt.  Obviously I'm using the GreasePencil API to do the drawing.
def getFirstLinkedLoopForVertex(objData, v):
    for l in objData.loops:
        if l.vertex_index == v.index:
            return l

def getMatrixForNormals(obj):
    return obj.matrix_world.inverted().transposed().to_3x3()

normalMatrix = getMatrixForNormals(raysSource)
raysSource.data.calc_normals_split()
 # TODO: Restore retro-normalized() -- non-uniform scale messes it up.
for l in [(p.co * raysSource.matrix_world, p.co * raysSource.matrix_world + (getFirstLinkedLoopForVertex(raysSource.data, p).normal * normalMatrix) * 0.2) for p in pointsToRaycast]:
    debugDrawLine(l, Color((0, 1, 1)), "loop * normalsMatrix = broken?") # cyan = loop * normalsMatrix = good?

Any help appreciated.  Thanks in advance!
p.s. If I don't issue calc_normals_split() then the loop normals are all zero.  Since I now suspect they're not the normals I'm looking for, I guess it's no value but I thought it'd be good to mention.


text:
How to display names of objects in viewport
Is there anyway to display the names of objects in a scene, all at once like the option we have for bones? Yes,we can do it individually..but if there are many objects its better to have common control.
I am working with a mechanical assembly,its very difficult to keep track of objects.
Any hidden option or  add-on information would be helpful.
Thanks.

Select all objects by hiting A. Then in the
Properties areas Object tabs Display
group check the checkbox Name for name display.
Then right click the checkbox and select the option
Copy To Selected. Works on almost all options.
Edit: In current versions, using alt-click on
properties applies them for every selected object.

Woah awesome. I've still been changing things and then trying to figure out which ctrl-c category will replacate them ("draw options" for this one)

"using alt-click on properties applies them for every selected object." Sweet! :-D I've been using Blender a while now and this is news to me. Thanks!

The UI has been updated. As of version 2.82, still use A to select all, then Properties panel > Object > Viewport Display > Name, use ctrl-alt-click to toggle the setting for all selected objects.


text:
Use Camera/Window projection when texture painting?
I am trying to paint a texture mask based on a certain camera angle. This texture will then be used with Window coordinates in the material nodes. However, in texture paint mode, its only possible to paint based on UV maps. I can set an image as a camera background image, but you can't paint on that.
If I paint in the Image Editor paint mode, then I can only see the single image I'm painting, and not the other things in the viewport I'm painting over, so its no good.
Is there anyway around this?

You can give your model a secondary UV map to base your mask on, using Project from View through your camera you have sized to match your mask image. Call up the mask image in the Masking tab either in the mask tool itself or in the Texture Paint tool, and invert as you need to.
Add your image to the image editor to see the scale and set up your camera to match.

Added a second UV mapping layer

Before painting, showing the original mapping active for target image

Here is the paint on top of the mask, holes showing through


text:
Fit Object to curve length
I have an Object that is using a Curve Modifier to be mapped down the length of a curve. Is there a way to make the object stretch to fit the length of the curve, even if the curve changes sizes?

what do you mean when you say that your object is mapped down the length of a curve, do you use an array?

Yes, the array modifier as a Fit to Curve option, other than that, I'm not aware of any other way. Can you post some screenshots of your usecase? Is it a simple object, a complex one? You could possibly use hooks

@DuarteFarrajotaRamos The use case is that I have a bunch of curves of different lengths, and a collection of objects that are all the same dimensions. I have a script that will assign a random object to a random curve with the Curve Modifier, and I want the objects to match the length of the curves. I'm sure there's some scripting solution, but I'm looking for other ways first.

A setting with Animation Nodes (to get the length of the curve) + a lattice around the meshes to scale + an empty that hook the lattice?

@lemon animation nodes is my next stop if there isn't already a proper way to do it, yeah. That sounds like it could work.


text:
Change Object Index of Objects in a Collection Instance
If you make instanced copies of a bunch of objects (alt+D), then it is possible to give them different Object Indices from their originals. This is useful if you are using Object Index as a mix factor in the material of the objects. This is especially useful when working with multiple Scenes. However, Instanced Objects don't copy all changes from their originals. If you make a change to a modifier, or Transform the original object, it does not update the Instances. So as you are working, you are stuck constantly re-creating the instances.
You can get around this problem by instead using a Collection Instance of all the objects you need copied. Then any changes are reflected. But then you can no longer change the Object Index of the copies. You can set an Index on the Collection Instance itself, but this doesn't effect the objects within it.
Is it possible to somehow get at the Objects within a Collection Instance and give them their own Object Index that is different from the original object?

Have you looked at this answer. Wouldn't the script at the end do what you want?

@Leander If I'm understanding it correctly, that script is for applying modifiers to instances objects. i don't fully understand it, but it somehow updates them. That does not seem to be related to this issue.

I read "If you make a change to a modifier, or Transform the original object, it does not update the Instances." and thought, make the change, use the script and the instances are updated.

Oh, yes, that could let me get around this issue entirely. That is true. I may go that method if its not possible to set different Object Indices.

@Leander so it's true that modifiers can't be instanced (rather than copied in their current state) between objects? I can't immediately see why not.. it would be very handy, and consistent with the behavior of, say, materials...

@Robin I guess... Materials can be linked to Object or Data. Modifiers not.

Found a workaround. Instead of Index, I'm using the RGB color value from the Object Properties -> Viewport Display of each Collection Instance to drive mix factors in the material of the objects.
From the Object Info node, instead of Object Index, link Color to a SeparateRGB node, and change the Red of the Viewport Color of the instance, same way as you would use Index. Then connect R to Mix node or any other node. Nice thing is you can control each channel separatley, using the Green and Blue value for different things in the same collection instance.
Maybe not as elegant as it should be, but at least for me in the same use case as yours, it does the job.

Thanks for posting, so long after your question went unanswered !


text:
Project Texture from Camera (like Window, but not from Viewport)
I have a Window projected texture and a fixed camera. The texture was made in another program based on a render of the scene. As long as I am looking through the camera, the texture is lined up properly. But if I switch to the viewport camera, then the texture is projected from the viewport, and so looks wrong.
Is there a way to do something like Window projection, but have it always be projected from the Active Camera (or object I can place in the same location), and not the viewport? Preferably a node based solution. I understand that the UV project modifier might work for this, but then I have to maintain that on every object in the project rather than just adding some nodes to a group.

Sorry if that seems obvious, but did you tried with a Camera (instead of Window) texture coordinate?

Good question. Had probably the same issue a while ago. Rich's solution might help in this case too: https://blender.stackexchange.com/questions/121210/camera-projection-without-generating-uvs

This setup projects texture from camera and adjusts scale based on Z depth.
Works only in camera/perspective mode due to Z-depth socket used in calculations, viewport zooming doesn't affect texture scaling also due to Z-depth.


text:
Workflow: Cloth simulation without disabling armature
The typical workflow for cloth is to have areas that are attached to the body be Pinned, and influenced by an armature limited to the Pinned group. The rest of the garment would not be influenced by the armature. An example of this would be a skirt or baggy pants with a pinned waistband, but the rest unpinned and uninfluenced by the armature.
If you have the full garment rigged to the armature and run the cloth as well, then you get the movements of the cloth AND the armature adding together, which makes problems and is not accurate.
This presents the limitation that you cannot put the character into any poses without running the simulation to get them there. This means that before the start of every animation, you need to add extra frames to get the character from their rest pose into the pose for the start of the animation. It would be nice if you could pose the character with the armature into the start pose (granted this may deform the cloth in bad ways, but it often won't matter) and then run the rest of the animation from that start point. But to do this right now, you need to apply the armature as a shapekey or something and then disable it because if you leave the armature active during the rest of the animation, then you'll mess up the cloth sim as described above.
Is there a way around this issue? Is it possible to have the cloth sim start from the posed mesh, but ignore the armature for the rest of the animation (except in pinned areas)? Or some other workaround?

Have you tried the recentish cloth enhancements by Luca Rood? I think many have have been merged to 2.8, in particular I know he made improvements to how the base shape is calculated with respect to modifiers and pinning at some point.

Yes, that's in 2.8 and is what I'm using. It's a big upgrade to the sim overall, but does not address this problem as far as I know (maybe there's some setting hidden somewhere.)

Ok, I think what you need could be achieved with the external rest shape feature discussed here https://code.blender.org/2017/06/improvements-to-the-cloth-simulator/. As far as I can tell, it hasn't been merged into 2.8 yet, but may exist in the cloth-improvements branch.

@Sazerac Yes it looks like that exists in the cloth branch builds. I've tested it and it doesn't seem to handle this problem, but I may be misunderstanding how to use it.

My understanding, and I may be wrong, is that it will allow both the pins to update with armature (existing dynamic mesh option), but the rest shape to be based on the external mesh. That should lead to things like edge lengths for springs etc being calculated based on the length in the external mesh rather than recalculated after deformation from the armature. I guess the start from pose part might still be fiddly. It might be worth presenting your use case to Luca Rood in the Blenderartists thread and seeing what he suggests.

Option A: Cache and export to Alembic. But still have to wait 50+ frames for the collision to happen. There´s no instant "anything" on 3D. Never fall for that trap.
Option B: To my understanding that "pre-simulation" until the cloth is calculated and "rest" to the collisions, has always been like so in any 3D application. Yes, you need to let some previous frames to calculate, rest, and then get the character to pose. even Marvelous Designer works like that. So comparing it to Blender, you´ll have to wait to frame 75 or so, until the cloth "rests" to the collision.

I'm not clear on how this answer relates to the question? What does caching it to Alembic achieve in regards to armatures? What does B have to do with ignoring armature motion?

If user chooses Option A: he can playback at any given frame without using simulation.
If user chooses option B (default in any 3d application) he has to wait for frame by frame simulation.

That's good to know, but I don't know what it has to do with the original question? You can also use other mesh caches, or use a disk cache within blender. It doesn't address the armature problem.