text:
How to create socket that pass lists of POPO (Plain Old Python Objects)?
I am building custom nodes that operate on messages generated by an external source. I have developed Python classes that encapsulate these messages. I have a Blender addon that gathers a collection of these message objects and a custom node that packages multiple messages into plain old Python lists. I want pass these lists down stream to other custom modes across a socket. I have having trouble understanding List Sockets. I get "NoneType is not iterable" errors on even the simplest of implementations. I understand what the error means, but not why its being generated. Any pointers on where I should start? Also, is there any way to increase the fidelity of the diagnostic messages in Python / Blender / AN? I find that the stack traces and other information provided by these errors are not very helpful.
Thanks All,
Mike

I find that the error occurs when I have registered two or more of the custom sockets as outputs.  self.outputs.new("an_ChannelMessageSocket", "Channel 1", "chan1")
self.outputs.new("an_ChannelMessageSocket", "Channel 2", "chan2")

Would be useful if you could share some more information. eg the code of the socket, an image of the node setup etc. Not sure which additional information on the error you need..

The solution is pretty obvious, but here it is in case someone else has a similar problem. The problem was not with the socket but in the node, and the problem was that the node's execute() method must  return a collection of N items where N is the number of output sockets.


text:
Duplicating Objects with Rigid Body Settings
I am using Animation Nodes' Object Instancer to duplicate an object with Rigid body settings. A far as I can tell, the physics settings are being duplicated on the cloned objects, but the physics engine is not recognizing the clones i.e. their outline is not green and the clones do not interact. Thanks.

did you try to enable the "Copy Full Object" checkbox?

Yes I have enabled that setting.Rigid body settings (animated, etc.) are being cloned, but the engine ignores it (and its outline is not green). I can toggle Rigid Body off and on, and the clone object works as expected.

ok, I just tested it. The problem is that the instances are not in the group named "RigidBodyWorld". You can use a loop and the Object Group Operations node to link all instances to the group. I created a todo on github to make this easier in the future: https://github.com/JacquesLucke/animation_nodes/issues/574

I added the Object Group Op. node and tied to RigidBody... group. When I examine the cloned object, it is a member of that group. Also, the cloned object's outline is green. Sadly, the physics engine ignores the clones until I manually toggle Rigid Body as before. BTW I am using AN to stack N cubes and running a sphere though the stack.

Did you disable Auto Execution when you start the simulation? Otherwise AN resets the location of the objects all the time.

OK. Go It!. I was adding to the group Rigid Body Constraints, not World. Also, I can leave Auto Execute enabled and the simulation works as expected. Thanks Again!

@JacquesLucke There's been a follow-up question about the Object Group Operations loop that you mentioned. If you don't mind, I'll post an illustrated explanation of your comment as an answer here.

Kudos to Jacques Lucke for actually providing the solution in the comments above.
There are two conditions for an object to be considered in rigid body simulations:
A) Settings
The object has to include the actual settings for physics, accessible in the Physics tab of the Property area.
If you use Animation Nodes' Object Instancer to duplicate an object which already is set up for rigid body physics, then these settings will only be duplicated if Copy Full Object is selected.

B) Group
Blender does only simulate objects which are in a special group called Rigid Body World. Enabling rigid body physics on an object in Blender's native interface does automatically create such a group, assign it to the scene (visible in the Scene tab of the Properties area) and add the object to that group.
Duplicating an object with Animation Nodes however does not copy that group information. Instanced objects have to be manually added, e.g. with the Object Group Operation node.
To add all instances of an object:

Press Shift+A in the Node Editor and select Subprograms > Loop to add a Loop Input node
Click on New Iterator and type Object List Enter
Press Shift+A again to add the Object > Group Operations node.
In this node, click on the empty field of the first input node and choose the Rigid Body World group, named RigidBodyWorld by default.
(If this group doesn't exist yet then you have to assign physics to some object first.)
Connect the Object output of the Loop Input node with the matching input socket of the Object Group Operations node.
(The Linked checkbox has to be enabled to add the objects to the group, but it should be by default.)

Press Shift+A again, select Subprograms > Invoke Subprogram > My Loop (or however you might have called it) to actually use the loop.
Connect the Objects output socket of your existing Object Instancer node with the Object List input socket of the Invoke Subprogram node.

source: Stack Exchange

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

sort: votes


text:
How to maintain per-node instance state?
My question is about maintaining per-node instance state without the use of Properties. I though that standard Python instance variables would work, but it looks to me like a different node instance is invoked for each execute(). I see the use of properties in the existing nodes, but is there a way that I can use Python dictionaries instance variables instead? Thanks.

Generally it is not a good idea to store the state of a node in Animation Nodes. The execution of a node should not depend on the executions before. This is also important because nearly all nodes have to work inside of loops - so they can be executed many times with different input in the same node tree execution.
Beside that I agree that it is sometimes useful to store some information (cache data etc.) which cannot be stored in Blenders properties (bpy.props). You cannot use the python dictionary of a node as you noticed. However, it is possible to create a dictionary in the module (file) that contains the node. You can use the identifier of a node (myNode.identifier) as key in the dict. Animation Nodes ensures that each identifier only exists once. The disadvantage of this approach is that the data will not be stored in the .blend file. For eg caching that is no problem though.
This is a 'problem' that is caused by Blender. Animation Nodes (or other addons) cannot change this behavior. Personally I don't care that I can't use the instance dictionary. Maybe it is even better the way it is because so we cannot confuse the data that is stored in the .blend file and other variables.

I understand about nodes being stateless, but in fact I am caching a result that I think is currently wasting many processor cycles by recreating every evaluation. As far as caching in the module, can you provide an example of one of the current nodes that does something similar? Thanks!

Sometimes you don't have to implement caching yourself. The Invoke Subprogram node has a simple caching mechanism in the advanced settings. Here is an example where I used caching (not with the identifier though): https://github.com/JacquesLucke/animation_nodes/blob/master/nodes/text/text_file_reader.py

Store the dictionary on a class variable. Duh, that was obvious. Thanks again and thanks for all your efforts. Mike

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


text:
Navigate 3d viewport hovering the mouse (without any button click) with ctrl/alt/shift key combinations
Is this possible to navigate in the 3d viewport just hovering the mouse (or the pen on a tablet) with the existing ctrl/alt/shift key combinations BUT without the need to click on any button of the mouse/pen? Just hovering the cursor on the 3d viewport and with the keyboard.

You can use Walk or Fly modes to mavigate without keyboard; however it may be not convenient to stop flying at certain point. See also http://blender.stackexchange.com/questions/1511/how-can-i-control-the-viewport-without-a-mouse

Thank you Mr Zak. I would like to use the keyboard and the mouse (hover), but not using the mouse buttons. The same behavior as when using "walk mode" if you hover the mouse you can pan the camera, but I would like also to rotate and zoom the view, using keyboard combinations.

To rotate the view when in Walk mode use the same as for moving - move the mouse and it will rotate the viewpoint. If you'd like to change this behaviour you can always remap keyboard shortcuts for something else to move view without mouse buttons. You'll need remap all the keys responsible for adjacent behaviour.


text:
Why are instances of duplicated groups linked
I'm a bit of a newb, so please bear with me.
I have a number of objects (chairs) that are parented to another object (table). I have created a group of these objects and have many instances of this group. I was hoping to be able to duplicate the original group of table and chairs as I want to make slight adjustments to the duplicated group and in turn make instances of this new group.
However, once the group is duplicated there appears to be a link between the first instance of the first group and the first instance of the second group, so if I delete an instance from the second group, then it will also be deleted from the first group. Is there a way to duplicate the first group so I can modify the elements of the second group without it effecting the first group.
Thanks in advance.
Russ

An object can be a member of more than one group, they are more like tags or lists of objects than "groups" in the more traditional sense. So if I'm understanding your post correctly, you can make a group for the first table/chair set, then another one for the second set. Any objects you want in both sets, just add them to both groups.

Many thanks for your answer. It's not so much that I want to include an object in more than one group - it's more like I want to duplicate a group (and it's instances) and then tweak this second group, so that all of it's instances change as well. The only problem seems to be that whatever I do to the second group, also happens to the first group. Say

for instance the chair's back in group 1 is square (and of course all of it's instances have square backs). I duplicate group 1 to make group 2. I want group 2, (and all of its instances ) to have round backs. But when I alter the back in group 2, group 1 changes as well. when I make the instance real, in group 2, then the corresponding instance in group 1 is also made real. I want to be able to alter group 2 without effecting group 1.

To do that, you'd need to make a copy of the chair with the round back, and put that in group 2 in place of the square-backed chair.

As you guessed, these are indeed instances linked to the original, which is why they are called "Group Instances".
You can, however, Make the DupliGroup objects real using the keys: CtrlShiftA.
This will make each of the objects in the duplicated group separate and unlink these objects from the original group. The new objects will no longer be part of any group, and will no longer be parented to the empty that controlled the group instance.


text:
Does anyone know how to export a Sims 4 character into mmd?
I tired using Direct X and exporting it as an OBJ file and a dae then going back into blender to export it as a direct x
When I go into PMD it either won't let me import it or only the legs show up with no color
I got the entire body in their one time but it was still completely grey
I saw a few people  accomplish this. I tired to ask them but they either ignored me
Or told me it was "a secret." Sigh...
Idk if anyone knows what I'm talking about i don't know I'm allowed to post links This is my first time using this website
This is what I'm trying to do
https://www.youtube.com/watch?v=UzM_KOUrl0Q


text:
MakeHuman "MHX FK/IK switch" missing
I'm working with Blender 2.69 and MakeHuman 1.0.2. I have a character in MakeHuman, using the MHX format. I have the required addons to import MHX files into Blender, but I have an issue.
I'm trying to make a walk and run cycle for my character, following a tutorial by Alimayo Arango. He says to switch both legs of the character to Inverse Kinematics using the "MHX FK/IK switch" section in the Properties panel.
My problem is that on my end, it doesn't show up. It's supposed to be under "Import/Export MHP", but it's not. Can anyone help me? Doing walk cycles with forward-kinematics is painful as hell.

Could be a Blender version discrepancy? Maybe the option was moved to a different part of the interface. What version was he using, and what version are you using?

@Mentalist: He was using Blender 2.74. I'm using 2.69 as I couldn't even get the plugins to work on 2.74. I might try again in 2.74 as a last resort.

MHX or MHX 2? MHX hasn't changed in ages, so it doesn't matter what Blender version you are using unless it's maybe 2.5 Do you have the rest of the makehuman control panel, or are you missing the whole thing? Do you want to upload your file so we can check it?

I have Blender 2.79 and MHX2, for those figuring this out lately.
I did not access this through the properties menu.
I have found that option from the menu option below: View->Tool Shelf
OR
Pressing T.
After that, a panel will appear on the left.
Under the MHX2 Runtime you will see the submenu FK/IK Switch.


text:
Problems with the video rendering time
I'm new with blender and I have some issues with my rendering time.
I have made an animation that is 2:35 longer. I left the computer rendering the full weekend (it is in my office so I couldn't take a look during the process) and when I arrive to the office the rendering process is around the 1:35. I thought that is enough just to make my test and I stopped it.
But when I saw the video that blender generated, the video is 25 seconds long.
I don't know why can it be, I thought about the problem of the screen saver and the computer shut down, but that shouldn't allowed me to see that the rendering process was until 1:35, isn't it?
I'm working with Blender 2,75a for Mac.
I'm new here so I don't know which kind of information can be useful or not. I'm using blender for short time so I don't know either if I have done something wrong with the setups and all those stuffs.
I will try to upload the file, if you can take a look on it.
Thanks for your attention.
Jezujr.

And, how are you sure your animation is 2:35? that info should come from how many frames your file has and the animation framerate that is set...

Hello again,
First at all, Thanks for your answers. I could solve the problem and was something that I didn't expected.
I have made the video in .avi and I'm working with Quick Time Player, so when the program try to open the file converting it into .mov, it just do a piece of it.
About how long was the video I knew because I had setup the program with the frames numbers and the frames/second.
In my timeline I could see the seconds with the option of show seconds, because of that I knew that it wasn't working well.
Thanks again for all.


text:
Luxrender - Mixing materials using layer weight
Please can someone explain how to mix materials based on viewing angle in luxrender in a similar way to Cycles which uses the layer weight node. I would like to be able to combine several materials with the mix defined by the angle of the camera to the objects surface. Unfortunately Luxrender doesn't seem to have a layer weight node and I can't get the fresnel nodes to work to control a mix material.
Thanks

It is better to direct questions about Luxrender and the blender addon, to the luxrender website. http://www.luxrender.net/en_GB/index
The community is quite strong and active. http://www.luxrender.net/forum/ and has a materials help section.


text:
How to move my timeline window?
My timeline has moved to the top window on my project somehow.  How do I move it to the bottom of the layout?

Essentially a duplicate of http://blender.stackexchange.com/questions/1223/how-to-close-open-a-view-panel and http://blender.stackexchange.com/questions/5631/how-to-close-view-windows? You need to join the viewport and the timeline and then split them again or drag the grip icon to create a new timeline window and then close the old one. See this exact answer http://blender.stackexchange.com/a/5633/12


text:
Using Freestyle with semi-transparent materials
I am working on an animation which will have a model behind transparent materials making up the foreground:

However, no Freestyle settings ("QI Range", etc.) are working for me. I tried setting "Edge Mark" and "Exclusive", but depending on the "Visibility" setting I either get the lines showing through the foreground mesh or being entirely hidden by that mesh.
What would be the optimal way to approach this problem?

Via Carlo's comment above (linking to this question), it appears that in Blender, "transparent faces are treated as opaque faces," so my setup would not work. Instead, I will separate the Freestyle layer.


text:
Is it possible to bake from the point of view of the render camera?
As I understand, when we bake an image it is baked as if the camera is on top of each face. Thus, if I have a material that uses the Layer Weight -> Facing value in Cycles Render, this would not work as expected for the baked image.
See example below:

My question is, is it possible to simulate a similar effect as if I wanted to bake from the point of view of the render camera? If not, any ideas to achieve a result that is close to the rendered view above?

You may have to use a different input other than layer weight node for this, like say perhaps a Local Normal from a Geometry node instead, though I must say that baking normal based effects into a texture is generally uncommon as these will not look right from other angles.

Place an empty to the position of camera and use the empty's coordinates in the shader to calculate facing angles towards it. You will need some custom math. Then it is no longer dependent on camera and you can bake.

You can calculate the dot product between the Geometry -> Normal and a Vector -> Normal that you specify. It will give you a similar effect, ranging from -1 for surfaces pointing away, 0 for tangential surfaces, and to 1 for surfaces facing towards the specified normal.

What's the reason for down-voting this answer?

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


text:
Header flip/RMB
Is there a way to set the headers so they are always at the top, as default?
I can set them manually one at a time with a RMB, but this is distracting because you set it one way in one window, it does not do the same for all future windows, for example node editor, 3Dview.

Once you get a setup you prefer,  you can create a startup template file with the menu File >> Defaults >> Save Startup File, and then click Save... that pops up to verify.

The only way I know could be to set all of them manually in a file, and then set that file as default startup file, from the blender "file" menu (ctrl u)

Thanks.  This is what I am doing now.  If I add a new pane, got the same problem.  Another possibility is to create Python code, and tie to a hotkey; at least I minimize mouse movements.  As a newbie, mastering and memorizing the GUI is critical.  The header placement is a major distraction on concentration, particularly the pull down menus and the flip of the order of items.  Surprised this is not in preferences.


text:
Is there a way to restrict blender renders to a predetermined 256-color palette?
I suspect there isn't, as this sort of thing is rather retro these days. But any help would be appreciated!

I'm going to say "no".  Fortunately there are tools like ImageMagick that make it fairly easy to quantize images as a separate step.


text:
"Unable to create version backup"

It happens fairly often when I save. Incrementing the file name fixes it. It also doesn't stop the file itself from saving, as far as I can tell.
What causes this to happen? I do save my iterations via Google Drive, could that have anything to do with it?

Google Drive is very likely the reason in this case, as it has to lock access to the file while syncing it with the Cloud. But it can also happen (and does happen) to me when a file is located on the server, and the server is creating Shadow Copies of it. In our company the server is setup this way, every hour changed files will be backed up, so the likeliness of saving over just that one blend file which is currently being backed up is not that small.
What I noticed then is that on the Server a file with an '@' at the end will be left behind. I have to manually delete it, before I can save my blend file again, if not Blender will continue to complain about it being there.

I've also had this happen with background backup services other than Google Drive. Fix is to delete the @ file, pause the backup, and save again.

When google drive is syncing a file, it quickly locks the folder and this gives Blender issues when saving. Just wait a couple of seconds until the file is finished uploading or save and delete the file with the @ afterwards.

I have the same problem years later. Google Drive seems to be the culprit because I got the same error when I uploaded my .blend file to it. It saves the file but adds @ at the end. The error message alludes to the possibility of Google Drive/Blender trying to back it up which is weird as I didn't specify anything like that in Google Drive or Blender.
Edit: The problem seems to have solved itself a few hours later.

I guess the answer is in the attached image (File saved with @) looks like when saving, an unsupported character is in the file name (@) I don't know though if saving to Google Drive is causing this issue.

I tend not to use external images at all, actually. In any case, it's more of a minor annoyance I've been trying to work out for a few weeks now. Incrementing my file names often makes automated backups somewhat redundant anyway.

The solution is not very difficult. All you have to do is open two blender windows, then press you on the mesh that you want from the project (Ctrl+C) in the first window and in the second window, create a new project and press (Ctrl+V).


text:
Is there a good way to visualize progress for the end user?
I'm currently working on an addon that renders animations at many different angles. Think isometric sprites. Currently Blender just hangs while it's doing its work. Is there a loading bar, or some kind of adhoc popup I can access via code to give the end-user a visual update of what's going on?
The one thing I'm going to be picky about is a solution on the console - most users will not have that open. Unless, of course, there's a way I can force the console to appear.

Have you used command line rendering? I'm actually writing a GUI application to make it easy for artists to enter their parameters and automatically launch a command line render. When you launch a command line render, you can see it logging the rendering progress. So, I'm not sure what you mean by the the console to appear. As far as visualizing progress, I've actually searched and searched for this functionality with C++ and haven't found anything.

I found this along the way of my search and might help you since you want to work in python. https://blender.stackexchange.com/questions/28925/how-to-get-actual-rendering-progress-and-estimation-from-render-stats-python-han
you can follow the rabbit hole.

While you might be able to use threads to stay responsive during render I don't think you can get the progress from bpy.ops.render.render(), I expect using the subprocess module to be the answer, you can use bpy.app.binary_path to start another blender in the background and parse it's output for progress.


text:
Is there a way to find all actions an object is "involved" with?
To clarify, say you have ten actions. You want to find all actions that Object1 is affected by. If that object is changed by even a single F-curve in a given action, that counts. Is there a way to do this via code?
If this isn't possible in the current version, I'm also considering a user solution in the form of a naming convention. For example, include the name of the target object in the action name, and that action is added to a list. But I'd prefer to be told that my initial approach isn't feasible before going about it that way.

An object can only ever be assigned 1 action as far as I'm aware, so unless I'm misunderstanding, you would just check which action is assigned to it (if there is one).

Do you mean to say an object can only ever have one active action? That's true. But there can be any number of inactive actions that manipulate a given object. What I'm asking is it there's a way to find all actions (active or inactive) that manipulate a specific object. That's I meant by actions an object is "involved" with.

An object can have one active action, this is the one that is shown in the action editor. All other actions that affect an object can be found in the objects NLA data.
import bpy

for obj in bpy.context.scene.objects:
    ad = obj.animation_data
    if ad:
        if ad.action:
            print(obj.name,'uses',ad.action.name)
        for t in ad.nla_tracks:
            for s in t.strips:
                print(obj.name,'uses',s.action.name)

To nitpick, an object can have 2 active actions, a transform action and a shape key action: https://i.imgur.com/6u7CR5N.png :) But yes, action editor shows only the transform action, shape key editor shows the other one.

'action' current action...'nla_tracks' list of actions ...everything wrong with blender summarized right here


text:
Any way to have multiple ID masks?
It is possible to have multiple objects share the same ID mask in the compositor. It does not seem possible to have objects possess multiple ID mask values though. Is there any way around this? I want to use ID masks somewhat like groups, and for some objects to be in multiple ones.

The not very flexible way would be to add masks created by Object ID pass to each other, subtract them as needed with Math node. This is more like a workaround, of course and will increase the node tree, although this should be easy.

You could use a 'binary encoding' technique to allow you to assign each object to a limited number of groups.
To achieve this, allocate each group a power of 2 :
Group 1 = 2^0 = 1
Group 2 = 2^1 = 2
Group 3 = 2^2 = 4
Group 4 = 2^3 = 8
Group 5 = 2^4 = 16
...etc.

You can combine these 'groups' by simply adding them together :
Groups(1,3,4) = 1 + 4 + 8 = 13
So setting the ID to 13 would indicate that that object is in groups 1, 3 and 4.
So '0' is in no groups, '1' is in Group 1, '2' is in Group 2, '3' is in Group 1 and Group 2, '4' is in Group 3, '5' in Group 3 and Group 1, etc.
ie, in binary and each column representing a group (with the first being the right-most digit)
000000000000000 = 0
000000000000001 = 1
000000000000010 = 2
000000000000011 = 3
000000000000100 = 4
000000000000101 = 5
000000000000110 = 6
000000000000111 = 7
000000000001000 = 8
000000000001001 = 9
000000000001010 = 10
...etc....
111111111111110 = 32766
111111111111111 = 32767

Once you've assigned the IDs using the above scheme, you can use Math compositor nodes to determine which groups any particular ID represents by splitting off each binary digit in turn using Modulo 2 (which will give the value of the rightmost digit), subtracting the Modulo 2 to remove that digit from the result, and divide by 2 to shuffle the remaining digits to the right - then repeat for the next group and the next, etc. This can be repeated until you've split off all of the groups/digits into individual outputs to indicate the grouping.

The above image shows splitting to give 3 group outputs. Simply duplicate each block of three nodes (Modulo, Subtract, Divide) and continue the chain linked to the previous one in the same way.
It's quite cumbersome but can work for up to 15 individual groups (the ID has an upper limit of 32767 which is 111111111111111 in binary (15 digits)) but any object can be assigned to any or all of the groups as required.


text:
Separate window that is only a toolshelf?
I am rigging a character with the BlenRig addon. This addon provides a lot of controls for the rig in the Toolshelf of the 3D view. In order to have easy access to them without having the toolshelf use up too much of my workspace, I have made a new window on my secondary screen and set it to be the 3D view as well with the toolshelf open. However, this means I am also displaying my 3D scene a second time, which impacts performance.
Is it possible to have a window that is only the toolshelf panel without having to display my scene again? Or is panning to not show any model the best I can do?

Something like moving it to the properties area? bl_space_type = 'PROPERTIES'

AFAIK Blender's api doesn't allow to have the toolshelf in a separate window (as a fanatic multi-monitor user I'd like to see separate toolshelfs myself). One thing you could try is to maximize the toolshelf by hovering the mouse over it and then pressing Ctrl+Up-Arrow. I don't know if this will increase render performance in the other window.


text:
Hooks/controls on a bendy bone?
I have some hair being controlled by a bendy bone, set up following this tutorial (head bone > bendy bone > tail bone): https://www.youtube.com/watch?v=BsJ3Grq_3GM
This rigging method is convenient for hair as I can do all the manipulations by moving/rotating the tail bone, and it doesn't have issues with pole angles/bending angles like IK. But I want to get a bit more control. I would like to be able to grab individual segments and move them around, like adding more points on a curve, or do some other effect that is similar. Is there any way to do this, or a similar rigging setup that would allow for it?

if you need more control points than a simple bezier segment has, you need to look into Spline IK and setup it like this: http://blender.stackexchange.com/a/35442/7777 or this: http://blender.stackexchange.com/a/27655/7777


text:
Reflect set color, not actual scene
I have a glossy object in a scene. I want to have this glossy object render as if it were inside a pure white environment, and not reflect the actual scene around it. However, I still want it in the scene so that other objects will reflect it.
Is this possible? I am guessing it can be done if I render the object on its own layer within a pure white sphere or something similar. Is it possible without creating a separate layer/scene? Can I do it within the material?

The easiest way would be to just put it on another layer. You maybe also can do something with material settings. If you get the system behind layers once, its pretty easy. So i would recommend going that way.

Yeah. I'm trying to find another option so that I can avoid having to render a separate layer. It'll add a bunch of render time.

Maybe related http://blender.stackexchange.com/questions/15227/ibl-with-cycles-can-i-use-a-different-background-image-from-the-one-that-affect

Could you just bake it while in the pure white environment and then apply as a texture to an emission shader?

@RichSedman that would technically work, but it would then cause VRAM issues when GPU rendering, and would be a hassle.

Also wouldnt even look close as good


text:
Smooth modifier settings to match Subsurf
Is there a way to use the Smooth tool or modifier to smooth a mesh by exactly the same amount as using a subdivision surface on it would? For example, if you had a mesh, then gave one copy of it a subsurf with smooth, and another copy of it you ran a subdivide on and then used a smooth modifier, could you get them to match up?
How about if you didn't subsurf the second version? Could you get smooth settings that would have the shared vertices of the two meshes end up in the same location?

I think the two methods are unrelated, even they look similar. subsurfing is not simply an automated smooth, it's an interpolation method, and its results look smoother... But why is it important for you to know this? if you need to get a mesh identical to what subsurf would do, you can just apply the subsurf modifier.

It's not specifically important for anything, I was just curious. Sometimes it's nice to achieve the same things by different methods, especially when working with Freestyle, as it gives you more options for how to work with your geometry.


text:
Temporarily disable all addons
For troubleshooting purposes, I want to temporarily disable all addons, and then re-enable them after running some tests. Any easy way to do this other than manually?

addon_utils

Blender has a module it uses for addon management called addon_utils,
  this isn't in the API docs and is only for internal usage. But its a
  fairly straightforward
  module.

Disable all addons
Will call unregister on all registered addons.
from addon_utils import disable_all
disable_all()

Reset all addons
from addon_utils import reset_all
reset_all()

both two liners can be run from text editor, or python console.

This worked for me.
blender --factory-startup


text:
Proxy linked material
I am linking a large scene into another file. The scene consists of lots of objects and lights. All of the lights use the same material group, but it has a different output for each light. This lets me easily control their emission strength all from the same location.
What I want is to Link the whole scene into a new file, but then still be able to adjust the strengths of the lights, but for that file only. To do this I need to somehow have access to the Nodegroup that they all use.
I can make proxies of specific objects to change their settings for that file only, but is there a way to do this for materials/nodes?

You can alter certain nodes, after they are linked. I know for sure, that this is possible for RGB Curves for example. I'd suggest you build a fast testing scene, with just one object and shader, and drop in math and value nodes to see, which ones can be altered and are able to drive the strengh oft your emission.


text:
What's the order of constraint evaluation among multiple objects?
I've seen that Blender will evaluate the constraints in a stack from top to bottom. That's a very clear definition.
But in what order does Blender evaluates multiple constraint stacks? I've not found any explanation on that topic yet.
For example, I have A/B/C 3 cubes, all have a copy-position constraint to limit only Z position. And they form a constraint cycle (A->B, B->C, C->A)
I can see in blender that, no matter how I try to move them on Z axis, none of them would move a bit.
Could someone who understands the blender implementation help to clarify this part? or just point me to some code/docs on this?
Any help is appreciated,

The problem not the order of the constraints as much as the cyclic dependency between your objects' constraints. Blender even warns against it in the system console (in Windows, open through the menu Window > Toggle System Console):

Let's see What is happening when you have a dependency cycle of this kind of constraint. First it's best noting that generally, when you add a copy location constraint to an object, you can no longer set the constrained object's location manually. It will get its location values ONLY from the target object.
Let's say we started with these Z positions:
A = 5
B = 3
C = 0

When we add a copy location constraint form A --> B, A will move to from 5 to 3 since its copying its location from B.
A = 3
B = 3
C = 0

Now let's add another constraint from B --> C.
B moves from 3 to 0, and since A is copying its location from B, A also moves to 0 (this is the same as if both A and B copied their location directly from C).
A = 0
B = 0
C = 0

Currently the only non-constrained cube is C, so you can still move it wherever you want, and the other two will follow it wherever it goes.
But now you add another constraint, from C --> A.
A has a value of 0, which it copies from C. C has a value of 0, which it will now copy from A. Since all cubes are now constrained, you can no longer set their location manually, due to the copy location constraint taking over. And since both A and C have 0, and B copies its location from C, all are stuck in 0 forever and ever ;-)
Bottom line, cyclic dependencies are a bad idea, and if you add a Copy Location Constraint to an object, you can no longer control its location manually.

Thanks for the detailed explanation, I've also found a post on blender site explaining the blender dependency graph logic, in case someone else might get interested:   http://wiki.blender.org/index.php/Dev:Source/Data_System/Dependency_Graph/Overview


text:
copy the size and scale a texture is mapped by, from one object to another
I have two objects, of different size. For simplicity, we'll call them object A and object B. Both have their own unique UV maps, but the same material(with a texture assigned to it)

I would like to make the texture mapping of object B the same as object A(so they look the same). Ive tried "Transfer UV maps" but that doesn't work as their geometries are different: each object has a different number of faces.
I don't want to transfer the UV maps. I just want transfer the size and scale at which the texture is mapped by; rather than do it manually, which would be painstakingly slow (I have 20 models to process)
Any help would be greatly appreciated. If what I'm proposing is unachievable, an alternative would be be welcome. Ive tried using the extension Copy and Paste UV, but off course that is no different to what i've been doing. Ideally I don't want to be uploading textures into the UV editor; I need to take them from the textures assigned to the materials.
Thanks in advance

Are you using Cycles or Blender Internal?

Gonzou, Blender Render

Maybe you should try select object B, then shift select object A and press Ctrl+L-->Materials, since their materials are the same. This will unify the textures coordinates.

unfortunately that didn't work - it seems to be holding on to its texture coordinates. i even tried deleting its UV map, but it made no difference

What are the material and texture settings of the Object A, and what does the texture itself look like? It is important to know how object A is mapped so to copy that to the object B.

materials & textures

@MrZak i tried that, i even tried UV unwrapping object B as i was concerned that I'd used "cube projection" unwrapping before. Please can you have a look at the file?

Very big difference of UV maps
UV map of the "Object A" looks like this:

Note: it's scaled up very much; texture space isn't seen here, but it's located where the cursor is placed.
UV map of the "Object B" is this:

It's not scaled as much as the first one, and it's unwrapped not in the same manner. For the first object Project from View probably used (and no seams on the mesh), while some other method used for "Object B".
Thus the objects definitely won't look the same.
Make one object look like another
What you should try is to unwrap and scale UV maps of both objects roughly in the same way; then you'll be ready to assign the same material for the objects (or creating new one).
Possible solution

Enter orthographic mode (Numpad 1). Select "Object B", enter Edit mode, select all.
Use U > Project From View.
Open UV/Image Editor to scale and position UV map in adjacent way (it depends on texture, but most likely you won't need to rotate it). Make the scale of UV map so it to fit the texture space (it may be eaiser to setup mapping settings then).
Set the Size in the Mapping scroll of the texture settings to something like 50 (for X and Y axes). This is intended to substitute scaling UV map; while it does roughly the same, it's simply easier to control the UV map which has size of texture space in UV/Image Editor. To adjust scale just tweak that Size parameter.

Im nearly there i'm just not getting the same texture mapping scale(i did the Ctrl+L-->Materials too) . Like i said before, i have to repeat this process about 20 times(same object A, different object Bs), so how can i make it as quick as possible? can i optimise object A in any way to help the process?

To center texture space (grid in the middle) in the UV/Image Editor just press F (or Numpad 0 if vertices there selected). No need to scroll endlessly. 2. Changing scale has sense only if you scale UV map down and don't make it that big as you have (mentioned in my answer). 3. You reunwrapped the Object B in a wrong way. Project from View is called so because it's very important what do you see at that moment in the 3D View; the resulting UV map in case of using Project from View does depend on that. You should enter front orthographic mode (Numpad 1), and then unwrap.

It is shown here unwrapping as you did in video and you can see the UV map you get after that; and unwrapping using orthographic mode with resulting UV map after that.

Or you can mark seams by hand all over the models, and unwrap (simple U>Unwrap, the only way which takes seams into account) using any view you like. It's worth mentioning that those areas which aren't seen at the moment of unwrapping when using Project From View will get very much stretch. It's the downside of this method. You should select which one to use depending on situation.

As to repeating 20 times - the only thing you could do as for me is to automate the process of unwrapping - that objects' selecting, that pressing U 20 times etc (probably creating a script). There's no need to optimise object A - it's already unwrapped, and it differs from those 20 objects. So Object A may be important only for you as a reference; it makes no sense for Blender. There's also no need to link materials between these objects - the problem is with UV maps. The objects' geometry differs - UV maps will differ. Materials may differ, but may not - as you wish.

Thanks, i can see the difference the orthographic view makes. I've repeated the process, but the texture scale still differs - thanks for your patience, i'm probably making a silly mistake?

Please see the edit to my post; in particular, step 1 and step 2 order. You didn't do the step 1 in video (you should've pressed Numpad 1 before unwrapping).

Hi, this time i made sure i pressed numpad one and i pressed numpad 5 (for orthographic view). I think the problem was when I resized uv map A it ended up quite alot smaller than Object b so that's why the texture scale differed

so i think we've arrived at a solution now; the only thing i'd add is that when scaling down UV map of object A (step 3), make sure it is roughly the same size as that of object B - this ensures that when you proceed to step 4 the texture scaling matches. I know you've alluded to this above, but if its included in the step by step instructions it may be better.  Finally If theres a numerical way of scaling uv maps, so that its is more accurate that would be even better? = more automated :)


text:
Collada Import in 2.76
Just got blender and was going to get started trying my hand on some .dae files, however after trying several times to import them, nothing seems to happen. I get nothing. Am I doing something wrong, some settings need to be in place before doing a file>import>collada?
Any help pointing me in the right direction would be appreciated.

Possibly related: http://blender.stackexchange.com/questions/30530/how-do-i-get-blender-to-import-a-collada-file

I have the option to import, it simply is not doing anything when I try and import. No error, nothing on stage, just nothing happens. I have tired a number of different .dae's but still nothing.

I just imported this in my 2.76 just fine
http://www.3dvia.com/models/11F53407192B3D0F/fauteuil-flax

Is there anything in you scene hierarchy? I have issues with some Collada files. I checked that the schema is valid, and I can open them with other viewers, but Blender doesn't show anything on stage. There are new objects imported in the scene hierarchy, though, but when I click on any of the geometry, Blender just crashes.

It could be that the geometry content of your DAE file is a type that the Blender importer does not understand.  I was trying to read in Collada files that were made from triangle strips and I got the same result.  No error message, no visible geometry, no objects in the scene tree.  The files passed the consistency checker with no errors.  These were files I was generating myself, so I was able to change the geometry from triangle strips to triangles and it worked fine.  I am using an older version of Blender, 2.69.
When I searched for information on Blender importing Collada triangle strips I found old reports of the importer not working, but no recent reports on working/not working.


text:
please help me with a Hud bug i think
i'm making a intro in blender 2.76b .when i click compositing i don't see the view , select , add ... if you don't understand, here's 2 screenshot (i took one from a video)
the one from the video (How i want it to look like): https://gyazo.com/860ad6fe11fbf8bd6d08af09be01dd82
my verision
https://gyazo.com/939c74bf17570d67a50afa2ce713fce1
but the thing is that when i start i new prodject it looks normal again and then i switch to my prodject it isn't there! please help me (Sorry if i used wrong tag)

Welcome! Click the "+" on the bottom right to reveal the bar. There is should already be a more in-depth explanation somewhere on the site. I'll link as soon as I foud it.


text:
GPU and missing kernel...32b works but not 64b
So I just did a build with an ASUS GTX 980 ti with windows 7 64b OS. None of the 64b versions of Blender are working, they just flash a quick command window for a 1/2 sec and then nothing. The 32b versions seem to work ok but I can't use the GPU to render because I seem to be missing the kernel 5.2. I've looked up as much as I can to try and fix this but I am coming up short. The 32b versions don't have a kernel_50 that I can rename, which seems to be the solution for the 64b version. Any body got any ideas?


text:
Extra vertex in Cycles render
When I render a deformed cube using the Cycles engine, an extra vertex which crosses the top of the shape diagonally is processed. This vertex does not appear in Edit mode. How do I stop the engine from "halving" the face?

What you have is an extra edge. From what can be told from the picture, the positions of the vertices forming that face are not flat, and so you are asking it to make an impossible shape. You cannot have a square with diagonal verts at different heights that do not create a flat plane. It is showing the triangle because you are asking for something that is not possible.
Smooth shading may help. But for the shape you want, you need more geometry for it to be possible.

Looks like the the vertices of that surface are not co-planar. This breaks the face and to solve it blender displays 2 tris putting the new virtual edge were it finds most convenient. In edit mode you can't see it just because the shading is not very detailed, but if you turn on ambien oclusion (version 2.74) it will show.
You can enter edit and make the 4 vertices co-planar or e to add an edge and set it to shade smooth. But if you want more control of the curvature you will need to add more geometry.


text:
Linking Bones To Human Model
In my human walk animation, when I play the animation, only the bones of the human move. How do I link the bones to the body so everything moves together?

This is an addition to @Denis 's answer.
There are other armature deform options, but with automatic weights looks like it's the most reliable with empty groups weights in a close second. It all just depends on how you want your mesh to deform. I made a turkey to show you:

here is the article to look to for a run-down on armatures, by yours truly.

To rig your mesh you need to parent it to armature, select first the mesh, hold Shift and select the armature, while both are selected hit CTRL+P and select automatic weights from the menu. Additional weight painting may be required.


text:
Image not appearing in UV edit mode
In trying to place an image onto a surface (Blender v2.74), i've become unable to use the picture i've attached. The file format of the image is .png, and although it uploads fine, when switching to UV edit mode, nothing appears in the left-hand window [see pictures for reference].
Could anybody explain to me what the issue is here, and how to fix it?

You have no image selected, you need to select the image for it to be displayed.
To select an image, you must click the little image icon () in the bottom center of the uv image editor and find your image. Then select your image. If you have many images, you my need to you the search function to find the right one, just type the name of the title. of course, you only have one, so you don't need that. :D

Well that seems really simple ; ) Thanks!


text:
Can't select and delete an object
Okay, so this thing, is for me very strange. It still might be very obvious, but I started with blender 4 days ago.
So what is happening is that when I am rendering my animation, I have a white wall and ground where the scene grid is.
Here is a screenshot when in render mode:
And here it is in material mode:
I would really like to remove this, and I have tried for hours now with no success. I tried to unlink "world" from the scene but then it got all dark when rendered.
If you have any idea of what could be causing this?
(I am making an animated minecraft intro)
Edit: I was told to do alt + h and then the wall and the ground was visible in material mode as well. Here is a screenshot.

But I can't find a way to delete it...  :/

Try Alt+H to un-hide objects in the viewport.

Ok, now the wall and ground is showing in material mode.

It looks like a hidden object. The world datablock can't have any mesh data, so it doesn't really make sense for an object to be in it. If you can't select it in the 3D view with RMB, then look in the outliner for an object with selection disabled (mouse pointer icon).

There is no way to entirely disable World (although you can make it functionally do nothing.) However, you don't need to, because the piece you are having issues with is not World. World contains no geometry, it is only your background color. The piece shown in your images is a piece of geometry, and should be deletable like any other. You just have to find where it is and what its called. Try looking in the Outliner, and keep in mind that if the Arrow (looks like a mouse pointer) next to something is disabled, then it cannot be selected until you re-enable it. It could also be hiding on other render layers.
If you share your file, we can help you figure out the problem piece.
EDIT: Upon reviewing file, it was a piece called "Plane".

Here  is the file
http://www.mediafire.com/download/b92gnjzu3eamezc/shared.blend

I can't select it either. Very interesting. @drudge That isn't really an answer necesarily

@NoviceInDisguise Let me know if you figure it out? (If you feel like trying of course) I am going to bed now so hopefully someone have come up with a solution tomorrow :/

I will, this is very odd behavior, so I'm afraid it might be a bug. I will be sure to let you know what I find though.

It is a piece simply called "Plane" that is set as unselectable in the outliner. Check the Arrow and you can then select and delete it. @NoviceInDisguise: It's an accurate answer to the original question, which was in regards to World. And it turns out to have been accurate to the real issue as well. I have updated it.

Good, that is fine then :D


text:
Is it possible to make the 3D view in the UV Editing context 'opaque'?
When I set 'viewport shading' to solid in the 3D view panel in the UV Editing context, occluded geometry is still visible in edit mode:

A similar view in the Default context:

Is there any way  to get the Default behaviour to occur in the UV Editing context?

Enable limit selection to visible in the header of the 3D view:

Ah! Thanks so much, this was becoming pretty annoying.


text:
Rigging an umbrella-like object
I'm trying to figure out the best way to rig this setup. I have several pipes arranged vertically, right next to each other. I want a rig where I can use a single controller to have them spread out at the base, similar to opening an umbrella.
Here's an example object showing how it should look when opened:

I want the rig to work by scaling a controller at the base of the pipes (like the circle in the image.) I also want to be able to translate the controller, and have the individual pipes stay locked to it, but not have their lengths change.
I know I can do the rotation by putting a bone down every pipe, then using constraints to have them rotate on their local axis based on the scale of the controller. But this doesn't handle the translation. I could also do it by IKing each one to a point on the circle, but then it starts getting very complicated and can have Roll problems.
The actual object I'm trying to rig will have a lot more pieces than this example, so I'm trying to find a way to NOT need to make and position a ton of bones or constraints.
Is there any simpler way to solve this problem?

Not sure if this helps or not but here is what I could come up with using only constraints  to simulate an umbrella like opening mechanism.
If you actually need an armature (for exporting purposes, linking, or otherwise) you could probably construct a similar setup with bone constraints on an armature object.

Make a three rod system with a $Post$ (blue), the $Arm$ (white) and the "muscle" or $Piston$ (red) object.

After that add two empties, one at the base will be the $Master$ controlling object, and should lie somewhere along the blue post, the other $Pivot$ will act as a hinge point and should lie somewhere along the arm length.

Then it is all based on a system of parents and constraints.
The red piston should be parented to the $Master$ controller empty, and constrained with a Track To to the Pivot empty along the $Arm$.

The white $Arm$ should have a Track To constraint to the $Pivot$ empty;

And lastly the $Pivot$ empty should have a Limit Distance constraint set to the $Master$.

The distance value should exactly match the total length of the "Piston" object (red). You can optionally constrain angles and movements of different parts, like say, constrain the master to move only in $Z$ axis no more than the height of the blue $Post$ rod.

Lastly duplicate the whole system around, making sure you leave the $Post$ and $Master$ out of selection so they remain as single objects

You can then probably use drivers to link the positioning of the $Master$ control object to the scale of any other object, thus achieving what you need.

Duarte, you have no idea how much time I spent creating similar umbrella rig some time ago. If I only knew your answer then... Very smart solution! +1 from me.

This is an alternative, if you're looking for a fixed hinge on the umbrella spokes, using drivers.
Working Y up, X across.

4 Empties. A circular handle at the bottom, 'A' the slider, 'B' the hinge, 'C' the stop.
ABC must be isosceles: B's Y must be halfway between A's and C's
By Pythagoras, B's X must be the square root of (CB squared - (AC / 2 ) squared). CB is fixed. AC varies with the position of the slider.
Stop, Hinge, and Slider Empties are all parented to the handle

The hinge at B is driven by A and C as follows:
X location (all driving and driven coordinates in the handle's space):

Y location:

The AB spar is parented to the slider at A. The spoke which extends CB is parented to the stop at C. Both have Damped Track constraints, so they are aimed at B.
Once the rig has been set like this in 2D, The hinge at B, the spoke, spar and handle can be duplicated round, using, for 8 spokes, ShiftDRY45, leaving a single copy of the slider and the stop.
The duplicate handles can be parented to a single root for moving the whole rig: the larger cube Empty at the base, below.

Very nice. Could the distance type driver var be used here?

@batFINGER   I was wondering about that, myself, I don't know whether it would constrain radial direction. I guess you could just use IK, anyway?

Since someone has resurrected this thread, I thought I would just add a little more here. Here is an example I was tasked with a couple of years ago, bones only, copy rotation constraint for the 'R(number)' bones, A driver for the 'R(number - letter)' bones that just copy rotation in reverse and doubles it. Everything copies 'R0' bones local 'Z' rotation. This pic shows everything needed to reproduce this, bones axis is displayed, Outliner shows parenting.

Here is a compact folding version, this one was a bit of a challenge

Lastly, A more technically correct one that acts more like the real ones where the stretchers actually flex, uses a spline IK.

If anyone is interested in the blend files, contact me or PM me(ajcdfin) here. Thanxs

If you wish to add a blendfile use https://blend-exchange.giantcowfilms.com rather than requesting personal messaging requests.


text:
Rigging strands to spread not stretch
I'm working on rigging some very long mesh hair.It is made of a bunch of tapered mesh tubes. I am looking for a method to rig it without needing a bone chain/curve for every strand.
My current setup is several bone chains that each control a clump of strands. When I spread the hair out, I get this:

Alternatively, if I put the strands inside a deform cage and have my bone rig control that instead, I get this:

In the first image, the problem is that the strands separate, rather than properly fanning out. In the second, the problem is that the deform cage stretches the strands horizontally. What I want is for the strands to interpolate between the control bones, like you can get with Particle Hair Children set to Interpolate.
I am aware of 3 ways to do this, but each has problems:
1: Rig every single strand with it's own bone chain. This is a massive hassle.
2: Use Curves instead of Mesh strands and rig them with the deform cage. This works perfectly, but then limits the shape of my strands to what I can create with curves, or requires me to use a curve modifier to attach each mesh strand to the curve (too time consuming.) And I lose Local Y/Roll rotation in either case.
3: Make curves that follow each bone chain and use them as Curve Guides for a few particle hair strands. Make interpolated children for these strands. Use Particle Instance to put mesh strips down each child particle strand. Then either use those as the hair, or have them control other mesh strands via Surface Deform modifier or Solidify+Mesh Deform. This technically works, but again is a huge hassle, loses Local Y/Roll, and is extremely kludgy and unstable. It crashes and regularly needs to be re-bound.
I've spent awhile on this problem, and at this point I'm hoping there's something simple I've missed. Does anyone know a better way to handle this?


text:
Custom Split Normals Data broken by Subsurf?
I am using the Data transfer modifier to transfer normals from one object to another. This works fine when it is in the modifier stack after the subsurf modifier. If the subsurf comes after, the mesh reverts to it's regular normals.
This is not a problem if leaving the modifiers, but I want to avoid this because Data Transfer of normals adds a big delay to the start of renders. I can create a Custom Split Normals Data layer and then apply the Data transfer. However, this is then the same as having the custom normals before the subsurf, so using subsurf again reverts to the regular mesh normals.
Is there a way to stop this, or a work around? Could I bake a normal map of the data transferred model to the default model and get the custom normals as a texture instead (perhaps a different question: Does baking a normal map include custom split normals layers.)

I was able to get around this by baking a normal map from a version of the model with the data transfer modifier on to a regular version of the model without it. Both had subsurf. I then used this normal map in the object's material.
I baked the normal map in Blender Internal as Cycles was giving me artifacts and horribly pixelated results, but I do not know if that matters. I may just have been using the Cycles baker incorrectly. I am using it in Cycles without issue (tangent space for the bake.)
I am still looking for any other solution, as use of a normal map isn't always possible, such as when using normal editing Addons.


text:
How can I get a volume to expand uniformily in all directions, like a nova?
I would like to simulate a star exploding into a nova, ie

I have a quick smoke where the density is keyframed, emitting smoke from a sphere for few frames only. I need a force that pushes this smoke in every directions, uniformly. Vorticity, noise, texture, collisions, high definition smoke, etc will do the job of modelizing the shape as it goes and offer nice details. I do not want to use a mesh.
But it doesn't seem to exist any force field that acts like a sphere, attracting or repulsing everything from a single point and uniformly. This is very easy programmatically so I surely missed something and I hope someone will point me to the correct feature ! Otherwise I'll have to learn a bit of python I guess.
Wind only pushes smoke in a single direction. I can make it a cone-wind, with an angle of 90° and both 2 directions, I can only get :

(Direction says : both Z, by the way gravity is off and the domain density and temperature parameters are 0).
I can put it to sphere of course, this is another frame but same :

No idea why it raises upwards, same params as before, but anyway this is not even a sphere.
At last what approaches the most my needs is the "force" force field, in "sphere" mode, but it is absolutely not uniform :

I don't know why it acts more on the horizontal plane. I tried to modify the domain resolution since the voxels grid contributes to non-uniformity anyway but even big resolutions end this way.
I have to mention I also tried to expand an invisible sphere used as a collider, however I cannot use this then to get the vorticity, smoke effects precisely, that I am looking for.
Any idea ?

I would suggest to add particle system to the sphere, and make it emit smoke. Thanks to that you will have great level of control over the explosion. This tutorial gives quite good understanding of the process.

Had not seen this one yet, seems cool ! But, I missed the correct word for 'exploding star' in my OP, I mean something like a nova or a supernova, that is why I'm looking to use wind on smoke.

I editted my question, I upvote for your time anyway, thanks.


text:
Material will not assign to selected vertices
My material will not assign to the selected vertices. I pressed the assigned button, but it still isn't working.

You can't assign a material to vertices or rather it won't work/show, make sure that the vertices you have selected form a face or look into vertex colors.

@iKlsR All of the vertices form a face. You can see the uv mapping when you move it too. But when I select the vertices, and then assign them, it doesn't work because when I hit select it selects the whole object instead of the selected area.

Mind uploading this file or adding some images.

@KeshaWilson the first material is assigned to the whole object by default, you'll have to unassign first

@Chebhou you unassign by deselecting right?

@KeshaWilson no you have to add another slot and assign to the new one

@iKlsR Sorry but I will have to upload a photo later because the wireless part of my internet box is acting up. I will upload as soon as possible.

@Chebhou Okay adding a new material worked just fine. Thanks, guess you should answer the question now...

The first material is assigned to the whole object by default , to un-assign some faces from this material you'll have to :

create another material slot ( with a material )
assign these faces to the new material slot


text:
Wrinkles or cloth stimulation
I am making a pair of pants and I am wondering if sculpting or using cloth stimulation would be better for creating wrinkles.

"better" is quite subjective. If it will be animated, go with a cloth sim, ok? that way everything updates and you don't need to make a sculpt for every frame. else, just sculpt, it faster and easier, plus usually looks "better".

If you need to animate your model you can try a simple trick: get a 2D image of a curtain with wrinkles, desaturate it, make it tileable and use it in "multiply" mode with the diffuse texture of your material.
This makes fake wrinkles that very often do the job!


text:
How to unparent a deleted armature?
I deleted a armature without unparenting it, and now it is affecting my particle system for some reason. The hair particles do not look like they do in particle edit mode, they go in all kinds of directions. Before I parented the armature, they did not do that. What should I do?

there are 3 things you can do manually, both in properties panel :

Remove the armature modifier (click the 'X')

remove the parent manually in object properties (click the 'X')

remove the armature related vertex group in object data tab (select a group and click the '-' button)

Additionally, if it was an armature deformed object, go and delete all the armature related vertex groups.

@RadishoftheOpera yup, good point


text:
How to paint through a whole mesh while weight painting
Is there a way to paint through a mesh while weight painting? I have clicked the "limit selection to visible" button, but I still cannot paint through all visible faces in wireframe mode.

Make sure Limit selection is off. It should work.

@iKlsR As mentioned in my question, the limit selection is most definitely off.

People often confuse the toggled states, can you share your file.

The toggled states? What is that? Can you please explain.

@KeshaWilson Actually I think they are painted, but you can't see it from this point, if you rotate the view to look you see it is actually painted. It doesn't matter whether you are in wireframe mode or solid mode, since the only difference are the edges that are displayed.

Disable the Limit selection to visible option as people suggested you in their comments. Make sure, that the icon is not highlighted.

Also make sure, that you haven't masked some part of your object. Select the whole mesh before painting (A).

Thank you! The reason why it didn't work was because the whole mesh wasn't selected.


text:
How to map an image on a texture?
I'm very new to Blender and I'm just learning textures. When I take an image like this and place it on a plane:

and render it I get a visible line in the final image like this:

I'm so new I'm not sure what words to use to search here in Blender Stack Exchange to find if someone has already asked and got the answer to this problem I'm having.
I know I must be doing something wrong.

Hi, your object is a plane? I would in edit mode and top view, press U->Project From View Bounds. If that fixes it I'll put together an answer. If not, could you post more information like what your object's geometry looks like, how it's UV unwrapped, or even better, a .blend file (use BlendExchange)

If you wish to obtain a perfectly mapped image on a plane, try the "import images as planes" add-on (bundled but not enabled by default): when enabled, in the file > import menu you'll find that option. You can then use that mapped plane to understand how the image is mapped, learning how to do it yourself, which is always best...

Dalek Maker - thanks for that suggestion but that is what I did. I found that if I don't go to edit mode and press U->Project From View Bounds that it will only render as black plane. I do appreciate you taking the time to answer. In the future I now know that I should have included that information in my question.

m.ardito - I am not aware of the "import images as planes" add-on so I'll look into that and see if it works. As I said I am about 3 weeks into my playing with Blender so much is unknown to me. I appreciate you taking the time to answer my question.

cegaton - I do have a basic understanding about the UV unwrapping but only with 3 weeks of playing leaves me with much that is unknown. I'm working on texture/materials for my first focus area. I appreciate that you took the time to answer my question.

Tab into edit mode, and in top mode, press U -> Project From View (Bounds).

This should unwrap your plane properly so that the image maps across it correctly.

If your image isn't square, you'll need to do some extra scaling (of the plane) in the UV Image Editor to get it to match correctly, or you'll get stretching on the plane.
Then just apply the texture in the material.

Dalek Maker - I'm not sure that I follow what you're suggesting. My assumption is I have to match the image size with the size of the plane. However, I was thinking that might be a problem but I'm not sure how to go about doing that. I was trying to figure out where I do the plane scaling to the image scaling. The problem I had was that the image is in pixels and the plane has size but I'm not sure of the units that the values represent.

I tried m.ardito's suggestion of enabling 'import images as planes' and this seemed to work for me. I've got some other images that I was having trouble with so I'll try this on those images too.

Just updated to try to make it a bit more clear. Import Images as Planes is an excellent addon, so if you're just trying to import image, that's probably the best option. But doing it manually is a good way to learn.

Thanks Dalek Maker for the clarification. I will learn to do this manually but I'm a little overwhelmed by all that is going on in this software.

Yeah, it's a lot to get your head around, but it's definitely worth learning.

Dalek Maker - thanks for the short tutorial. The new topic in it to me is the  UV Image Editor. I've never looked at it before. Maybe that is what I was missing. Anyway, thanks again for taking the time to introduce a noob to image unwrapping. It's something I will be looking into.

authors: Александр Колодкин


text:
Broken Meshes error in meshes.faces
I am trying to generate synthetic data for a machine learning project. the first step is to use make human to generate human model then i have to import OBJ file to blender and run a script however, I have an error which I can not understand
this is the script
##########
# Blender Script
# To be Used with Imported Obj Mesh with Groups Option Checked

# Inputs Needed:
# 1 - Character Name (to be used for distinguishing between different Characters)
# 2 - path (to be used for writing output files )

# Outputs :
# 1 - _BrokenMesh.coords            ( contains the Coordinates of the Mesh in T-Stance Pose)
# 2 - _BrokenMesh.labels            ( contais the Label for each Coordinate. A Label tells us which body part this pixel belongs to )
# 3 - _BrokenMesh.faces             ( contains the data for which coordinates to use to make faces that draw the whole character
# 4 - _BodyPartsSchematic.labels    ( contains the names of all the body parts in the mesh )

## Importing Data From Blender and OS
import bpy
import os

## Setting the Paths

# 'rootPath' refers to the Directory Where you want to output the Files
rootPath = "Users/mohamedkhaled/Documents/test/"
# 'newDirectory adds a subdirectory in the Root Directory so that all the Different Files for a character can be put in the same directory yet be organized
# 'newDirectory' creates a directory called '
newDirectory = rootPath + "\\Mesh\\"
# 'characterName is what you want to name your Character.
# all files generated come with the characterName as the prefix to their name. This allows for easy reading
characterName = 'GirlOne'

# Creating New Directory if it does not exist
if not os.path.exists(newDirectory):
    os.makedirs(newDirectory)

 # Initializing file writers
writeVertices = open(newDirectory +characterName +  "_BrokenMesh.coords","w")
writeLabels = open(newDirectory +characterName+ "_BrokenMesh.labels","w")
writePartFaces = open(newDirectory+characterName+"_BrokenMesh.faces","w")
writePartLabels = open(newDirectory+characterName+"_BodyPartsSchematic.labels","w")

# Initializing Structures to hold data that we are going to read and subsequently write
bodyPartsCoordinates = [];
bodyPartsCoordinatesLabels=[];
bodyPartsFaces = [];

# Reading Data From Meshes
# Each Character has been designed as combination of Mesh Parts.
# Each Part has a fixed number of Coordinates that are deformed to make different Characters.

# Writing Known Data
# 1- the number of different component Meshes that make up a character.

# Writing number of component Meshes that make up this character
# It is always 266
writePartLabels.write("%d\n"%len(bpy.data.meshes))

# Data is read Part by Part, first the mesh for a part is completly read and then the next one is read
for aMesh in range(0,len(bpy.data.meshes)):

    # Initializing a Character Part
    characterPart = bpy.data.meshes[aMesh]

    if (characterPart.name != 'Cube'):

        # Writing Mesh name to the file
        writePartLabels.write("%s\n"%characterPart.name)

        # Reading all coordinates of the current Part and appending them to their respective storage structure.
        # Reading all labels of coordinates of the current Part and appending them to their respective storage structure.
        for aVertice in characterPart.vertices:
            bodyPartsCoordinates.append(aVertice.co)
            bodyPartsCoordinatesLabels.append(characterPart.name)

        # Reading all faces of the current Part and appending them to their respective storage structure.
        for aFace in characterPart.faces:
            bodyPartsFaces.append(aFace.vertices)

        # Deleting the meory we got allocated in this run
    del characterPart

# Closing the file Part Labels as it has  been written
writePartLabels.close();

# Writing number of Vertices that make up this character
# It is always 17735
writeVertices.write("%d\n"%len(bodyPartsCoordinates))

# Writing number of Labels for the coordinates that make up this character
# It is always 17735
writeLabels.write("%d\n"%len(bodyPartsCoordinatesLabels))

# Writing number of Faces that make up this character
writePartFaces.write("%d\n"%len(bodyPartsFaces))

## Output the Data stored in the files

# Single for loop used as both have same number of elements
for aCoordinate in range(0,len(bodyPartsCoordinates)):
    # The vertices are in the order of X Y Z and so are written that way.
    writeVertices.write("%f %f %f\n" %(bodyPartsCoordinates[aCoordinate][0],bodyPartsCoordinates[aCoordinate][1],bodyPartsCoordinates[aCoordinate][2]))

    writeLabels.write("%s\n"%bodyPartsCoordinatesLabels[aCoordinate])

# Closing the Files that have been completed
writeLabels.close()
writeVertices.close()

# Writing data for faces used for rendering the mesh
for aFace in bodyPartsFaces:
    writePartFaces.write("%d %d %d %d\n"%(aFace[0],aFace[1],aFace[2],aFace[3]))

# Closing the file as all data has been written to it
writePartFaces.close()

# Emptying out the data structures that we constructed
del bodyPartsFaces;
del bodyPartsCoordinates;
del bodyPartsCoordinatesLabels

the error is in
for aFace in characterPart.faces:
            bodyPartsFaces.append(aFace.vertices)

as there is no (.faces) inside meshes
How I can fix this error ?

replace faces with polygons

@batFINGER thanks for the comment but can I ask you what is the difference between faces and polygons ? and why my data does not contain faces ?

The important difference is that when blender introduced ngons (more than 4 sided faces), can't remember when :- late 2.5's to mid 2.6's the developers changed mesh.faces to mesh.polygons in the API.   The script you have must have been written before that change.  Either find a prior version that still uses faces or change the code.


text:
Audio Visualization with Background Image
I am not able to render background image and audio visualization into one video. I have tried compositioning audio visualization(spectrum) and background image into one but the render gives me only images 0001.png, 0002.png and so on.
Here's how it looks in blender:

Here's what I get:

Basically if there's another way to render audio visualization with background image, please mention it. I have no experience in blender.

You need to render the sky with alpha, see this here (look to the second heading, Blender Render): http://blender.stackexchange.com/a/1307/3127

Yeah this solved my problem. Thank you @GiantCowFilms

You could actually record the 3D screen view via OpenGL. This would render it exactly as you see it. Look at the bottom of the 3D view there's a little Film Clapper icon. It will render out in the format that you define in the scene render properties.


text:
User defined initial velocity for smoke simulation
my aim is to create a plugin for Blender which allows defining a specific initial velocity field on a grid for a smoke simulation.
I'm rel. new to Blender and I didn't find anything on the internet related to it. I would really appreciate a little help/advise from somebody :)
The idea is of the tool is:
Presets:
- Modell an object (closed surface. f.i. a bunny) which will represent the smoke
- Paint on it some weights/colors --> this represent the velocity of the smoke in direction of the facet normals. (this can be represented as a vortex sheet on the surface of the object)
- Create a grid around the object with the painted vortex sheet
To do (scripting):
1) from the painted vortex sheet on the object recreate the entire initial velocity field on the grid
2) give this computed initial velocity field to blender's fluid solver, which will advect the particles i.o. to visualise the smoke
QUESTIONS:
1] Where can I find documentation on how to implement point 2) ? or could somebody give me a hint how to solve this?
2] Will python be enough for the tool? or do I need to code in c++ ?
4] Is there any function in Blender which can tell me if a voxel (of the grid) is inside or outside of the modelled surface (the bunny)?
Thanks!
Pablo


text:
How to center object in global coordinate system?
I'd like to locate a object at (0,0,0) in the global coordinate system, but the object has its own coordinate system, such that bpy.context.object.location = (0,0,0) does not work:

How can I determine the offset to move the object to the global point of origin (0,0,0)?

related: http://blender.stackexchange.com/questions/24015/how-to-place-objects-on-the-center-of-the-ground-plane-via-python/24018#24018

without origin_set(): http://blender.stackexchange.com/questions/35825/changing-object-origin-to-arbitrary-point-without-origin-set

@poor Thanks, this goes definitive in the right direction, I still don't have a working code, but I will continue to figure it out ...

Glad I could help. What exactly is not working?

I did not recognize that the object dimensions are local coordinates too ...

Using the ideas of the proposed solution, this snippet does the offset calculation:
bpy.context.scene.update()

# determine minima of the object
min_x = min_y = min_z = 999999.0
for vertex in self.blender_object.data.vertices:
        # object vertices are in object space, translate to world space
        v_world = self.blender_object.matrix_world * Vector((vertex.co[0], vertex.co[1], vertex.co[2]))

        if v_world[0] < min_x:
            min_x = v_world[0]

        if v_world[1] < min_y:
            min_y = v_world[1]

        if v_world[2] < min_z:
            min_z = v_world[2]

# convert to world coordinates again
size = self.blender_object.matrix_world * self.blender_object.dimensions

offset = Vector((min_x +  size.x/2, min_y - size.y/2, min_z))

self.blender_object.location = self.blender_object.location - offset

Tested, works well! The only change for me is offset = Vector((min_x + size.x/2, min_y + size.y/2, min_z)). Also note in Blender 2.8 Matrix-Vector multiply is now expressed with '@' sign.

You can also do this with three operators and no calculations (will certainly be faster than iterating over all vertices if you have a high-resolution mesh). That is if you don't mind that it will center your object's origin point.
import bpy
bpy.ops.object.mode_set( mode = 'OBJECT' ) # Make sure we're in object mode
bpy.ops.object.origin_set( type = 'ORIGIN_GEOMETRY' ) # Move object origin to center of geometry
bpy.ops.object.location_clear() # Clear location - set location to (0,0,0)


text:
Timeline Red Line

In my timeline there is a red line, and I am thinking it might have something to do with blender only rendering one frame instead of the whole animation. What does this red line mean? What can I do to remove it?

Have you tried switching back to the default theme?  See if it's still there after you do that.

@MikeBelanger It is not the theme, perhaps an error.

I can see the "red line" in the image above. It seems you have 3 particles on the selected object. If so, try stacker's answer.

Your image doesn't show a red line. If the line occurs horizontally above the frame numbers it displays the baked cache steps for the active object.
Full documentation;
https://www.blender.org/manual/editors/timeline.html
Which caches will be displayed can be setup in the menu: View / Cache:

Sometimes a particle system, rigid body world, or another type of baked physics simulation leaves a line at the bottom. Check the world and particle systems panel and see if there's something there that you added by accident.

I didn't add anything by accident, maybe its because it hasn't been baked?


text:
Pauses for 2 minutes in between rendering animation frames
Blender will render 1 frame, then pause for two minutes, then do the same thing again with the next. Is there anyway to fix this? I posted a question thinking blender just stopped after frame one, but the program pauses for two minutes in between two frames.

@cegaton I don't know what you mean when you say message at the top but, I have 4 particles systems, no big textures, I have 353,646 vertices, I am using cycles, I have 16 gb 1600 MHz ram, and I can only use CPU. Also when I render it only goes up 1 gb. I don't know if its using too little ram or what's going on

@cegaton Okay so what should I do?

@cegaton Okay so when I try to bake anything, it says that the program is not responding. Is there anything else I can do?


text:
My Blender duplicates the render
I'm new in Blender. I have a problem. When I hit F12 to render my project with Cycles Render, the Blender duplicates the image. I think it will increases my render time.

So I just don't want this happen. Anyone can help? Thanks for the reply

Whoa! I have never seen that before!

In render window hit N button and deselect repeat

@NoviceInDisguise : Yeah, this is the first to me too, I'm so confused

@Denis : I did it, but now there's no image when I render it

@RoboticPuppies Hit F button to center the image?

@Denis : Oh, now the image's appear. Thanks :D

@Denis : Yeah, I forgot to hit the F button

@Denis Add that as an answer please :)

@Denis : Done :)

To disable tiled render display, use N button in Render window to show properties panel, then in Display section disable Repeat. If the image is offscreen use F button to center it.


text:
How to change camera focus in Blender?
I want to ask, is it possible to change camera focus in Blender? For example, I want the camera to focus to an object. So the other objects behind the focused object have a blur effect. How to do that?
Thanks for the reply :D

I think you should search for depth of field setting, it would be easier to find already answered questions here on SE - https://blender.stackexchange.com/questions/1927/depth-of-field-in-2-68

compositor: http://blender.stackexchange.com/questions/8126/blender-cycles-manual-dof, cycles: http://blender.stackexchange.com/questions/7923/real-depth-of-field-in-blender-without-post-processing/7925#7925

If the links/answers doesn't solve your issue, leave a comment here or edit your question. Note: Since 2.74 you can preview dof in the viewport, see the release notes: http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.74/UI


text:
How to calculate the angles between axis and bounding box normals?
I would like to determine the torsion of an object bounding box in reference to the global coordinate system (such that for a axis aligned object all angles will be 0).
My idea was to create a bounding box object bb via bpy.ops.mesh.primitive_cube_add() and copy its parameters from the object obj:
centre = sum((Vector(b) for b in obj.bound_box), Vector())
bb.dimensions = obj.dimensions
bb.rotation_euler = obj.rotation_euler
bb.location = (centre[0], centre[1], centre[2])
bb.location = obj.matrix_world * bb.location

Than I tried to calculate the angles:
for poly in obj.data.polygons:
    # angle of bb normal against z axis
    angle = Vector((0,0,1)).angle(obj.matrix_world * poly.normal)
    print("%6i  %.3f°" % (poly.index, degrees(angle)))

But the values don't make any sense. I am not sure whether this is a good approach at all.
Any suggestion to solve this problem?

Another idea might be to align the object to the axis somehow an than read out the difference from rotation_euler

What you're looking for is the Vector.rotation_difference function. It gives you the angle between two vectors. https://www.blender.org/api/blender_python_api_current/mathutils.html?highlight=rotation_difference#mathutils.Vector.rotation_difference

It is unclear what you mean by "torsion".  The obj.rotation_euler describes how the object is transformed from the world coordinate system.  Each of the normals of the bounding box point in a different direction, so the angle between that normal and the z axis will vary.  You probably need to sit down and think about your question.  How does your question apply to a sphere? how would it apply to Suzanne (the monkey head)?  How would it apply to to a boomerang model?

@MutantBob Sorry for my unclear explanation. I try to rephrase: Considering Suzanne (or any complex objects) I would take its bounding box cuboid. So let's imagine a cuboid with a arbitrary position and rotation in the scene. Now I like to know which rotation I have to apply on the cuboid on each axis to reach axis alignment. But I am thinking now about your hint, maybe the solution is simply the euler rotation?

@TLousky Thanks for your hint, the functions gives the same result though. But it confirms that the problem is not the angular calculation but the bounding box normal vectors

The orientation of an object is obj.rotation_euler or obj.rotation_quaternion (and whichever one does not match the object's rotation_mode can be invalid or inaccurate).
The orientation can also be recovered from obj.matrix_world.decompose()[1], but that's a little bit of overkill.
For a slightly deeper dive down the rabbit hole, check out Relationship between global vertex coordinates and mesh object's matrix attributes .


text:
How to join different objects (different modifiers)
What I would like to do is a merge of two objects without applying their own and distinct modifiers.
In other words: the first object has Sub.Surface modifier active but not applied, the second one does not have any modifier. Can I somehow join them without losing the sub.surface of the first object and avoiding the second object getting that modifier as well? (I wouldn't like to apply sub.surface before joining them)
Thanks

The short and simple answer is: no.

Similar question, Object reverts back to non-modified state after joining.

It was exactly what I hoped not to hear... but also what I expected =)

You can set the joined mesh CREASE where you wish to limit the subsurf effect:

with CREASE 1.0 subsurf has no effect at all...

Thanks for your help!
However "crease" doesn't really solve my problem... I forgot to mention that the main aim is to keep the vertex number of the second object lower than that of the first one. Keeping your example: the two cubes are a single object, one is normally affected by subsurf while the other is bent by "crease"... anyway they both have their vertex number increased, isn't it?

ok, I understand. But what is the strong reason for the need to "join" them? they could be parented, instead, or have constraints to copy location or trasforms... but modifers act on all of the object mesh...

Since the goal is to import the fbx in UnrealEngine4, I think that having two distinct objects would be a bit more troublesome for what concerns the lightmaps... I would like them to have exactly the same response to the light! If I join them there will be no problem!


text:
bl_context multiple areas
Is it possible to make a panel in multiple areas at once?
Below I make a button, I want it not only on the materials tab, but also on modifiers and other tabs (all in properties).
bl_context = "material, modifiers, ..."

Example code:
class myPanel(bpy.types.Panel):
        bl_label = "My Multi-Panel"
        bl_idname = "scene.multi_panel"
        bl_space_type = 'PROPERTIES'
        bl_region_type = 'WINDOW'
        bl_context = "material"

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

        scene = context.scene

        row = layout.row()

        row = layout.row(align=True)
        row.operator(myClass.bl_idname, text="Button")

AFAIK not directly.  Often use type(...) to register multiple classes. Code below will register a panel with "material", "object" and "data" bl_context, based on your myPanel class definition.
import bpy
from bpy.utils import register_class

class myPanel(bpy.types.Panel):
    bl_label = "My Multi-Panel"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'

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

        scene = context.scene

        row = layout.row()

        row = layout.row(align=True)
        row.operator("wm.splash", text="Button")

contexts = ["material", "object", "data"]

for c in contexts:
    propdic = {"bl_idname": "mypanel.%s" % c,
               "bl_context": c,
               }
    MyPanel = type("My%sPanel" % c, (myPanel,), propdic)
    register_class(MyPanel)

Another method would be to make a list of the panels you want to append / prepend the button to.
import bpy

panels = ["SCENE_PT_scene",
          "OBJECT_PT_context_object",
          "DATA_PT_context_mesh",
          "MATERIAL_PT_context_material",
          "TEXTURE_PT_context_texture",
          "OBJECT_PT_constraints",
          "DATA_PT_modifiers",
          "DATA_PT_context_metaball",
          "WORLD_PT_context_world",
          "DATA_PT_context_lattice",
          "DATA_PT_context_lamp",
          "NODE_PT_active_node_generic",
          "Cycles_PT_context_material"]

def draw_func(self, context):
    layout = self.layout
    layout.operator("object.select_random", text="BUTTON")

for p in panels:
    panel = getattr(bpy.types, p)
    if panel is None:
        continue
    panel.append(draw_func)


text:
Disabled constraints still being calculated?
I ran into an issue where an Eye rig setup to track a camera using bone constraints was causing performance issues. Each eye had a bone with an IK constraint targeting a gaze control bone, which had a Copy Location bone constraint set to copy the Camera.
When I move the camera, the viewport lags badly, even with a relatively simple character. What is strange is that the performance drop continues even if I disable the copy location constraint by unchecking the Eye icon on the constraint panel. This suggests that the constraint is still being calculated even when it is disabled.
Is this correct, and is there any way to deal with this problem? Some of my rigs need a lot of constraints, and I don't want to be stuck with this performance problem when doing basic posing and scene composition.

Have you deleted the constraint to check that that is really the source of the performance drop? Copy Location is very simple, so I find it hard to believe that it causes this.

@dr.Sybren Yes, I have. Note that the model does have a subsurf after the armature, so i'm not surprised that there is a performance drop, only that it doesn't go away when I disable the constraint! If I disable the subsurf that does solve the problem in this specific case, but then that messes up my viewport render previews.

Ok, so it's not the constraint that's the cause.

It is the constraint, because the problem does not occur if I delete the constraint. It occurs when the constraint exists, even if it is disabled. The performance drop is coming from a combination of the subsurf and the rig moving. It exists if I manually move the eye target. That's not the issue. The issue is why does it exist when I move the camera even when the eye target is NOT moving because the constraint is disabled.

Post a minimalised version of the file. That is, remove everything from it that's not necessary to demonstrate your issue.

It's not the constraint that's the cause. The common way to deal with this is to enable "simplify" and globally reduce the subdivision level while you're animating.


text:
Compositor: Get the second darkest value
I have an image that is mostly values between .3 and 1, but has a few areas of solid black. I want to set all the pure black areas (or perhaps near black to also catch aliased edges) to be the next lowest value instead.
This is possible with color ramps on a per image basis, but I need a setup that will work across multiple frames where the specific values could change quite a lot (in one frame it may be .3, then the next .5, etc.)
It seems like the way to accomplish this would be to create a mask of the dark areas, and then have a node group that mixes that area with the second lowest value. For this to work, I need some way to get the lowest value in an image, and a way to ignore certain areas.
Is this possible? Or any other ways to solve this issue?

This node setup is mostly what HenrikD proposed:

It takes an image input and tests for pixels whose R, G, and B values are all less than a user-specified value (in this screenshot, it was .0005, which appears as .001 in the entry box).  Those pixels can then be replaced by any user-specified color, I'm using red here to show the affected pixels but you would instead substitute your almost-black color.
Output with limit value of .01:

Output with limit value of .03:

If it is necessary to actually calculate the almost-black color from the image itself . . . I'm not offhand sure how to do that, sorry.

I would use the Math Node with Maximum selected. To use that it would be necessary to seperate RGB channels and combine them after that. I guess you could also try to Add your second darkest color with the MixRGB Node, if that would fit your application. The Color Balance Node would work even better then, but is more difficult to work with.

I think you can do this using math nodes, just use "less than" with a very small value (ex. 0.001) and use the result as your mask, i don't know it that's what you asked for, but I hope this can help you :)


text:
Does decimate help viewport performance?
I'm seeking to increase viewport performance to help when posing/animating. Does it work to just toss a decimate on my objects? Will this actually help performance, or just add the extra calculation of the decimate onto my stack? (I would put it before the armature, of course.)

It should imrpove performance a bit, but if it really decimates a lot of geometry. If there're 1,5 mln faces and decimating to 0.3 mln then it worked better but I tested Object mode, Pose mode might behave differently. If there's not so much geometry to remove then might be just another modifier

It does not, unless you apply it.


text:
Node setup to access ID masks in Cycles?
In the compositor, there is a dedicated ID mask node where you put in the number of the mask you want, and it will output it.
We can get access to ID masks in Cycles materials via the Object Info node, but there is no dedicated ID mask node. I assume it is possible to make something similar with some combination of math nodes and group it up. Has anyone figured out the best way to handle this?

Aren't masks the product of rendering? How can you access the result of the rendering process prior to generating an image? That would be impossible and create a dependency loop. Also you can access ID Indexes in Cycles materials, not ID Masks

@DuarteFarrajotaRamos You are correct, I mean ID Indexes.

The mask from the object id is the entire object, meaning any ray that hits the object which is affected by the material you are working with. You could use a math greater/less than node to vary based on id.


text:
Bounding box as mesh?
Is there a way to make a mesh cube match the size of another object's bounding box, and have it updates as that size changes?

Would a child that scales with the object work? as in bertmoogs answer? or would you want a bounding box that resizes as an armature expands the bounds?

@sambler It needs to resize as an armature moves.

One way to do it if your bounding box fits the object's dimensions:
1.) Select the Mesh Cube and then add the other object to the selection
2.) Copy the Dimensions and rotation info to the Cube
3.) Add Child Of constraint to Cube and select the object as the parent
4.) It will go wonky, so press the Set Inverse button in the constraint
5.) Finally, Restrict Selection so that it can't accidentally be manipulated

This addon will create a bounding box for each selected object, it is a variation from this answer.

You could setup drivers on the scale property to be driven by the bounding box dimensions of the other object.

Please add details of how this can be done.