text:
Scale a 3D beveled bezier path vertex on 1 axis, not 3
I'm trying to create a complex beveled bezier (bezier curve with a spline object as the bevel). It needs to have the same Z+Y scale throughout the object but the X axis needs to scale to widen to fit the letter shape.
In edit mode with a vertex selected and using Alt+S I can scale the control point and get the scale I want one the X axis ... but ... I am also getting Y/Z scaling.
Is there a way to lock the axis with this scaling mode or another way for me to scale the way I am looking for? The image show a single control point scaled but I'd want to scale the others to fill the C shape on X without changing the other 2.
I haven't played with using a Taper object but given how I'm trying to fit a very specific shape, scaling the points would seem to be the best way to have precise scale.

In order to keep a consistent profile to the letter (the I-beam pattern), as well as have a fatter width to the left side of the letter, you won't be able to accomplish this with a curve bevel, even when using the taper object as well. This is because the radius is applied in a circular fashion around the control point.
Another way to do it is to create an outline mesh with a thin border, convert it to a curve object and position over top of a second curve object, converted from the text object to a 2d curve object. Extrude both for thickness, and extrude the border curve a little further to get the I-beam profile you need.

Thanks. I-beam was the best example I had of the geometry I'm looking for but as I'm recreating a mesh that has other meshes dependent on the rounded geometry I've settled on creating the optimal path with the scaling and then going back and extruding the shape manually along the same arcs and rotations.
I definitely appreciate the answers. Having a way to limit scaling of control points to an axis would have been beautiful as I could go back and redo the resolution for various uses, but I can take the extra time to make multiple versions with multires. Just means hours instead of minutes :)

No problem. I'd be interested in seeing your solution in action.

Recognizing that in most cases your 2nd example would have been completely sufficient, I'm marking it as the answer and adding points to both. If someone else finds a way to limit the control point scaling (perhaps a future version), adding it here would be very welcome, but I've got the answer for the current version of Blender's modelling.

(Todd ... I'll post some images for the final result to show what I was going for, probably a couple of days)

Sounds good, I'm always interested in typographic techniques in Blender.

When you scale a control point you're scaling its radius around the curve, which is inherently circular. The only way to get a flat profile is to use a second bevel object with a thin rectangular shape. Once you apply that bevel object, scaling the cp radius only affects width in the way you want.
In my example, I found a better result with a low curve resolution (4-5), and then applying a subdiv modifier with level 3.

Thanks :) Unfortunately it looks like even that method is still changing the other thicknesses more than will work for what I'm building. It definitely mitigates the thickness a large degree but even a fraction of the thickness changing is too much for the model I'm doing. I've actually got it built as a mesh where I just did a bunch of manual extrusions and vertex rotations of the spline, but am hoping to create it in a way I can do some extreme high resolution renders and not have vertex corners appear. I may just have to bite the bullet and redo it with a lot more extrusions.

Well, what about tracing the outline of the letter with the curve in 2d mode, and then extruding it? It would have a totally flat profile then.

Not building totally flat, see the top image for the profile. The cross-section of the letter is similar to an I-beam (the C becomes a stylized vice clamp when done). I'm using the I-beam shape to bevel the curve.

I don't think you're going to be able to get the result you want from a curve bevel. What about combining to extruded 2d curves, one with the border edge extruded further than the second which create the inset interior surface?

Here's a solution that I think works pretty well:
1: Create a thin, rectangular cuboid and add an array modifier.

2: Add a bezier curve in the shape of your "C", and then add it as a curve modifier to the cuboid.

3: Set the radius on each control point to whatever you like (alt-s in edit mode).

4: Add a large, flat cuboid at the thickness you want your letter to be. Then add a boolean modifier on the original object and set it to intersect with the large cuboid you just added.

Once you get the hang of it it's not too bad. And the nice thing is that it's non-destructive.


text:
Issue with creating high precision Ngon faces
( screencast of the issue in action )
Trying to get a better understanding of face creation. I've got some very high detailed faces I'm trying to make that will later be used with a subdivision (multires) for animating a displacement map.
I'm nearly zoomed in 100% ... a few steps out ... and trying to create some Ngons. Most of the time it works perfectly but occasionally I will get a face that seems to ignore one of the vertices. When this happens the edges are created using the errant vertex but the face seems to skip it.
The faces are all co-planar (0 distance on the Y axis). I even selected everything and re-scaled to 0 on Y to be sure but it didn't change anything.
I've made a video showing what I'm doing. Basically trying to make sure I don't have any faces that are below a certain size near my seam. To do so I'm selecting nearby vertices and moving them to the seam edge vertices with auto-merge on. Then I'm deleting sub-optimal faces and re-creating them with the newly positioned vertices.
Take a look at the short screencast linked above to see the face being created with the strange edge. Perhaps this is just a wireframe preview bug? But I haven't seen it happen elsewhere in the model.
The precision I'm going for is sort of silly but it's one of those labor-of-love projects. I've found ways to make the ngon the way I want it to work, the video shows one workaround, but I've had most of my workaround methods fail and it becomes awfully intensive (I'm optimizing a couple thousand faces this way).
NOTE: I'm using Gooseberry with wireframe colors on a different mesh that is adjacent to the one being used. Not mentioning this because I think it is the issue (this occurs when switching to the standard distribution). Just letting folks who might be confused by seeing nearby edges in an unusual color.

It's a kind of warning that you are creating a concave quad face.
Ther's an article that explains they should be avoided.
Remember that render engine base their calculations on triangled meshes. Concave quad faces, as non planar quad faces, are not automatically splitted in Blender.
You can see how it works by adding a plane and move the vertex with fixed z till is placed inside the triangle made by the other 3 vertices

Thanks :)
I'm planning to do a "poke" once I have the rest lined up. Am I safe in this case? If it is a warning then once I poke to make the non-concave faces will the overlap area go away for the final geo?

Also for follow-up, is the concave warning fairly reliable? I managed to re-make the various ngons where this appeared, and visually they were identical except the overlap warning.

Poke 1 quads creates 4 triangular faces by adding a vertex. Triangles can't be ambigiuous, the are fully descripted with the position of their vertex. So YES, it will work.

Notice that this happens only with quad faces, Ngons are allowed to be concave. At the end of the video you somewhat manage to get rid of the overlapping... I'm not able to tell you why was that possible. It's interesting!

I'm leaning towards thinking the rules on creating a quad vs. ngon with 4 edges might be coming in to play. I've repeated that process a number of times and it seems almost random when fixing one of those faces whether or not I'll get the overlap again on the first attempt to fix. I wonder if Blender has the ability to create a 4-sided ngon.
Either way, since the final result will be triangulated it won't be a problem for this case. Thanks for the replies :) Keeping it tagged as answered and leaving the demo video on Youtube for anyone else who stumbles over this.

(I had a number of overlap warnings, no surprise, the mesh I'm fixing used Boolean to create it and that inherently isn't precise at these mesh resolutions)

source: Stack Exchange

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

sort: votes


text:
How can I make the deformation to a canvas mesh in dynamic paint permanent?
With dynamic paint on a canvas, in Vertex format, I used the "Waves" surface type option in the "Dynamic Paint Advanced" option . The canvas becomes deformed as expected when I press play in the timeline. Now I want to make the deformation in a certain frame permanent so when I enter edit mode, the deformation is still there. Is it possible to make it permanent?
(I found that if I export the canvas to fbx on a certain frame and re-import it, the deformation is there, but I'm wondering if there's a faster way to do it.)

Dynamic paint deforms the mesh through the modifier system. To leave a mesh permanently deformed based on any modifiers operation you apply the modifier.

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


text:
Accelerating looped rotation -animation
I have spinning wheel with 2 keyframes (from 0 to 120 degree). Its rotation is constant (linear interpolation) and it is looped using f-modifier so it look like endless animation. Now, I want this wheel to accelerate speed smoothly from lets say 0 to maximum speed and stay on this for the rest of animation. How can i achieve that?
I could rotate wheel many times and edit its curve in Graph Editor but it's sound stupid and also can't be used for linear movement.

Driver solution
Looking at the equations for Uniform Acceleration in the wiki, and assuming we start with zero velocity and displacement. The frame number is our time part, convered using fps to seconds, which will make it far easier to visualise.
frame = scene.frame_current
fps = 24
v = 1.0
a = 3.0
t = frame / fps

s = min(v, a * t / 2) * t

Calculated velocity will accelerate at a until it reaches velocity v. The displacement s is the calculated velocity times how many seconds t.
Setting up a driver expression
A simple case where fps is hard-coded as 24 ( 24 squared is 576), our maximum velocity is 1.0 blender units per second, and our acceleration is 3.0 blender units per second squared.
min(1.0 , (0.5 * 3.0 * frame / 24 )) * frame / 24

Upon re-reading your q, noticed I'd used location as an example, whereas you were asking about rotation.  The same concept works for rotation as every revolution will travel 2*Pi*r where r is the radius.  Change the equations accordingly for revolutions per second.
The scripted expression  can be pasted directly into a property (appending a # to start tells blender it's a driver) which on which should turn purple. [Editors find me a link]
This can be applied to x, y, z locations and having a terminal velocity of (vx, vy, vz) and acceleration of (ax, ay, az), and use the values in the relevant driver.
To further the approach a custom property for v and a could be added to the driven object, and variables used to put that value into the expression.
Note the fps from the render settings could also be used a var in a driver to make it changing render fps proof.


text:
How does Blender convert driver output to rotational channels?
I have always assumed that the output of a driver will always be interpret radians as the units, when adding it to a rotational channel. However, this does not seem to be the case with my current project.
I have added a driver to the rotation channel of a bone, and it seems that the output of the driver is not matching the rotation channel. Moreover, it seems to be inconsistent, in the sense that it works for only certain output values.

For instance, in the picture above, I have the driver output 1.047 (approximately pi/3), which gives me 60 degrees, as I intend it to. However, when I have the driver output 0.524 (approximately pi/6), it gives me 56.347 degrees; I expect it to be 30 degrees. The picture below shows this phenomenon.

Specifically, my question is: Am I correct in assuming that drivers output into radians (in which case this a bug), or do I have the wrong idea of what is going on here?
Additional Notes: I have that pi/2 corresponds to 90, pi corresponds to 180, and even 0 corresponds to 0. However, pi/4 does not correspond to 45, nor does pi/6 to 30.

Yes it is definitely in radians. But what you see in the driver and in the UI might differ because of updating issues. It is very common Blender doesn't update stuff right. Try to force scene update and see if that fixes it. If you experience this there might be some dependency issues.

Darn! I wish it wouldn't have been that! Thank you very much.


text:
Using Python to Copy Rotation of Pose Bones
Description Of What I Am Doing
I am building a rig that uses both IK and FK controls. I want this rig to have a script which will set the rotations of my FK control bones to match the pose of the IK bones (similar to rigify).
My method is to do the following:

Name the IK and FK bones similarly
Use bpy to collect the FK bones I desire and find their corresponding IK counterparts
Set the pose matrices of the FK bones to their corresponding IK bones

Here is the code I use:
# ... code will define variables for armature and id for IK-chain

# move all FK bones to the current IK orientation
for bone in armature.bones:
    if "MCH-finger-fk." + IK_id in bone.name:
        ik_name = bone.name[:11] + "ik" + bone.name[13:]
        ik_bone = armature.bones[ik_name]
        bone.matrix = ik_bone.matrix

Results...
This almost works! The first bone in the FK sequence matches the corresponding IK bone perfectly. The remaining bones do not, but if I run it again, the next bone in the sequence will match! That is, the second time I run the script, the second bone in the FK chain will match its corresponding IK bone.
The pictures below will hopefully explain what I mean.
Before Script Execution

Script Executed Once

Script Executed Twice
Alas, I cannot have more than two links, due to my low reputation. Imagine moving the first separated bone to where it looks like it should go (the remaining bones move relative) in the previous image.
Observation
I assume this bug in my script has something to do with the fact that only the second time I execute the script, the bone data takes the parent matrix into account (since the pose is now in place).
My Question
Is there a nicer way to achieve what I am trying? In essence, I want to copy the world rotations of each bone. I tried looking for the source code of the COPY_ROTATION constraint, but I was unsuccessful.

Armatures can get confusing as there are two sets of bones, it looks like you are altering the edit bones locations, such as bpy.data.armatures['rig'].bones['upper_arm.L']. You find the pose bones at bpy.data.objects['rig'].pose.bones['upper_arm.L'].

Sorry about the lack of previous code. The armature variable is indeed bpy.data.objects['rig'].pose, but the bug unfortunately persists.

See this section of the api documentation. Setting PoseBone.matrix probably does the calculations required for PoseBone.matrix_basis but does not update the value of the underlying DNA world matrix property, which is wierd. Here is a script which uses the scene.update method:
import bpy

class BoneMatrixCopier:
    def __init__(self, obj, scene):
        self.obj = obj
        self.scene = scene
        self.pose_bones = obj.pose.bones

    def update(self):
        self.obj.update_tag({'OBJECT'})
        self.scene.update()

    def get_ik_bone_name(self, name):
        return name.replace("Bone", "BoneIK")

    def copy_matrix(self, bone):
        self.update()
        bone.matrix = self.pose_bones[
            self.get_ik_bone_name(bone.name)
            ].matrix

    def copy_matrices(self, root_bone_name):
        root_bone = self.pose_bones[root_bone_name]

        self.copy_matrix(root_bone)
        for bone in root_bone.children_recursive:
            self.copy_matrix(bone)

bmc = BoneMatrixCopier(bpy.data.objects['Armature'], bpy.context.scene)
bmc.copy_matrices('Bone')

UPDATE:
For later versions of blender, at least 2.9, possibly 2.8:
. self.obj.update_tag() is not needed.
. The use of scene should be replaced by view_layer

Thank you very much! This is exactly what I was looking for.

The Problem
It appears that the matrix of each bone is set in relation to the parent, which at the time of execution, is not matching its corresponding IK bone. This is why the script works after executing multiple times.
Solution
Before changing the matrix of each bone, I may update the armature's bone matrices, so that this relative to previous parent position issue will no longer happen. I can do this by calling bpy.ops.pose.visual_transform_apply():
for bone in armature.bones:
    if "MCH-finger-fk." + IK_id in bone.name:
        ik_name = bone.name[:11] + "ik" + bone.name[13:]
        ik_bone = armature.bones[ik_name]
        bpy.ops.pose.visual_transform_apply()
        bone.matrix = ik_bone.matrix

Since visual_transform_apply  is an operator it will update the scene. You can do this directly via Scene.update.

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


text:
What can the Z size/offset in Blender Render's Mapping panel be used for?
After unwrapping an object and assigning a texture in Blender Render, there's a Mapping panel in the Properties panel -> Texture. Part of the Mapping panel has Offset and Size options with z values included. This doesn't seem useful, since UV mapping is based on only x and y values. What can the z-values be used for?

I tried changing the z values with a sort of modified plane. I thought since the plane had some dimension in the z-axis, something would happen, but nothing did.


text:
How can I select the faces that haven't been UV mapped yet in a model?
I've manually UV mapped some of the faces in a model (ex. with "Project from View"). But now, I want to just do a "Smart UV Project" on the rest of the faces. Is there a shortcut to select the faces that haven't been UV mapped yet? It'd be cool if there was a faster way besides manually selecting and deselecting faces.

Selection in the UV origin
Each UV map always contains the UV island relative to each face: if they hasn't been unwrapped yet the way I imagine, you'll find them collapsed in a point in the origin of the UV space (0;0).

In the example above only the upper part of the head has been unwrapped. The black dot in the center of the 2D cursor are the island of all the other faces.

You just have to take advantage of any of the selection tool (e.g. Box-Selection) while keeping UV and edit mode mesh selection in sync.


text:
How can I get the id name of a submenu?
I'm looking at the ui_menu.py template script in Blender, and line 19 shows this line:
layout.operator_menu_enum("object.select_by_type",
                              property="type",
                              text="Select All by Type...",
                              )

I thought I could find the id name "object.select_by_type" by hovering over Select -> Select All by Type... in the 3D viewport, but when I did, I couldn't see any grayish popup saying something like "Python: object.select_by_type()". How can find the id name of submenus like this one?

After a lot of experimenting, I've seen that a submenu can be made from one of two functions in a Menu subclass: 1. self.layout.operator_menu_enum() or 2. self.layout.menu().
1. self.layout.operator_menu_enum()

If it's from operator_menu_enum(), you can hover your mouse over each option and the description will have the same function. For example, in Select -> Select All by Type..., each option you hover over has the description Python: bpy.ops.object.select_by_type(type='[some option]'). That's a good hint to say that the "Select All by Type..." menu was made from self.layout.operator_menu_enum().

(As a side note, I also see that the parameter name shown in the description is what you put in the property parameter when you're calling operator_menu_enum(). So since the parameter name in select_by_type() was "type", I'd call something in a custom script like self.layout.operator_menu_enum(operator = "object.select_by_type", property = "type", text="select_menu test"). And if I was making my own operator subclass for operator_menu_enum, apparently the variable name for the EnumProperty() you define is the string you put in the property parameter of operator_menu_enum(). I guessed that from this question.)
2. self.layout.menu()

If the menu is made from self.layout.menu(), you can hover over each option and you'll see different function names in the description. An example is View -> Align View. To find the id name string that you can use in self.layout.menu(), you can do a search in bpy.types. For example, here's the code and output I got from the Python Console when I was searching up bpy.types:
>>> for i in dir(bpy.types):
...     if "align" in i: print(i)
...
ARMATURE_OT_align
IMAGE_MT_uvs_weldalign
OBJECT_OT_align
UV_OT_align
VIEW3D_MT_view_align
VIEW3D_MT_view_align_selected

I checked for "align" in the if statement because I thought it was the most logical thing, seeing that the submenu name was "Align View". And also by best guess, I saw that "VIEW3D_MT_view_align" was the id name for this submenu (I double checked in a custom script with something like self.layout.menu(menu = "VIEW3D_MT_view_align", text = "align test")). Anyways, that's the best I can come up with. I couldn't find anything in google this time.


text:
How do I make vertices equidistant from a given center?
I'm trying to model a pen holder that came with my graphic tablet. After editing and extruding a UV sphere, I end up with a flat bottom that's not perfectly circular (because of some proportional editing I did before extruding). I've highlighted where the errors are in red. How can I make all the vertices on this flat bottom equidistant from a given center (and therefore aligned in a circle)? Here's the Dropbox link to the file.

I've tried to scale all the vertices to 0 while in Bottom Ortho view, but I can't scale them back up to get the equidistant points I want. The only other alternative I can think of is to extrude a part of the mesh while it's still circular.

Select the ring of vertices
Shift+Alt+S. Then hit 1.
Or Mesh > Transform > To Sphere


text:
What is a Transmission Color pass?
I was trying to look up what a Transmission Color pass was in the Blender docs, and I only got this:

Same as above, but for transmission BSDFs.

This was pretty vague, and I didn't understand what transmission was, so I tried a test scene. With the default scene in Cycles Render, I added a plane scaled by 5 at (0,0,-1). I moved the default point light at (-0.7, -5, 6). I changed the default cube's material to a Glass BSDF (I guessed transmission had to do with an object that's translucent), and I selected the "Color" Option in Properties -> Render Layers -> Passes -> Transmission to use the Transmission Color pass in the Compositing Tab. I rendered the scene, hooked up the "Transmission Color" output to the Compositing node, and got this.

I still didn't understand what was going on, so I tried to google "transmission color pass", and I found a site that said this:

Transmission takes place when light passes through an object without being essentially changed

I also got this from 1:02 in this YouTube video about what happens to light in transmission:

It can be granted safe passage through the medium itself. Sometimes it'll be refracted...

So from all of this, I'm guessing a Transmission Color pass is a pass where white parts show areas that allow light to pass through freely and black parts show areas where no light passes through. I'm not entirely sure on this, so I was wondering if someone has a different answer as to what a Transmission Color pass is. Also, does this pass only output a black/white image, no gray/color?

Answer is in your first two lines. Transmission pass is nothing else than colors of transmissions rays. Imagine diffuse color pass. It's color only. No other influence like shadows and glossy. Transmission pass is exactly the same, but color of transmission rays. Make your cube red (in glass shader) and you get red color in transmission pass.
PS: Does not make sense write the same few times in documentation
PS2: maybe you try find something that not exist :-)

Thanks. Changing the cube color helped clear things up. I didn't understand what transmission rays were, and I originally thought diffuse + indirect = color for some reason and not all separate, so I got confused (and sorta skipped the "same as above" part too haha).


text:
How can I reload a UI operator instead of creating a copy of it when I run a script?
I set up an operator script where I move the active object 5 units in the x axis every time I click on the operator. However, every time I click "Run Script", a new operator is made to be clicked on instead of updating the first one. What code can I write to only have one operator copy that I can update over time?

Here's my code:
import bpy
from bpy.types import Operator
from bpy.props import FloatVectorProperty, FloatProperty

class TestClass(Operator):
    '''Test Class'''
    bl_description = "test description"
    bl_idname = "object.test"
    bl_label = "Test Label"
    bl_options = {"REGISTER", "UNDO"}

    def execute(self,context):
        context.active_object.location.x += 5
        return {"FINISHED"}

    @classmethod
    def poll(cls, context):
        ob = context.active_object
        return ob is not None and ob.mode == 'OBJECT'

def add_it(self, context):
    self.layout.operator(
    operator = TestClass.bl_idname,
    text = TestClass.__doc__,
    icon = "QUESTION")

def register():
    bpy.utils.register_module(__name__)
    bpy.types.INFO_MT_add.append(add_it)

def unregister():
    bpy.utils.unregister_module(__name__)

if __name__ == "__main__":
    register()

bpy.types.INFO_MT_add.remove(add_it) in the unregister()? Nope: But you can always use F8 to reload all scripts.

F8 does work. Do you know what button there is to click that's the same as F8? Also, do you know where the "remove" function is in the documentation? Even though it didn't work, I'd like to look it up, but I can't find it.

I can't find it either in the documentation (well hidden). F8 doesn't have a button.

Oh ok. I wish they had it. And alright. I've noticed I can always type Reload Scripts after pressing spacebar.

Actually, I found that remove() (and append(), just to add it on) can be found in older versions of the blender documentation, like here, in Blender 2.61.4. It's apparently a Menu() method. bpy.types.Menu.append, and then "Autocomplete" in the console can give you a description.

When you add or alter something in your adddons register() function you also need to undo that change in unregister(). For your menu item that means adding bpy.types.INFO_MT_add.remove(add_it)
The other issue you have is running the script in blender's text editor. When you do this the code after if __name__ == "__main__": will be run, if you want to test your addon like this then add an unregister() call before the register() call. You will want to put the unregister in a try block to catch unregistering before the first register.
Blender's addons are sometimes easier to test if you save the file in your addons folder and disable/enable the addon from the preferences.

Oh ok, so I just have to find a way to access unregister(), and testing it from the addons folder is one way to do it. I can also make an operator and access unregister() with execute() then. Thanks! @florianfelix looks like you were actually right haha.

You can add the unregister() call to your script, before the call to register() so you can run your addon script inside blender, here is an example

It doesn't work for me. It keeps adding on another operator instance. I also tried it "manually". I put unregister() only in the if statement first, Run Script, and all the instances disappear. When I put register() only and Run Script, all the instances appear again plus one more.


text:
How to use AN struct from a script node? (Animation Nodes)
I have a Dictionary that is created by a script running in a subprogram node. I want to output the dict from the node, but it seems Animation Nodes doesn't support regular python dictionaries. Apparently it uses its own ANstruct and various struct nodes instead? So I am trying to output my dict as an anstruct. I set the script node to output a struct type with the same name as the dict, but it is empty.
What do I do to get my dict to be a struct? Or is there any other method to handle this problem?

Looks like you can use ANStruct() in place of a normal dictionary and add to it with the usual commands. So instead of dict = {}, do dict = ANStruct().
But there is a big caveat that doesn't seem to be documented anywhere. When working with a regular dict, you'd add to it with: dict['key'] = value. But ANStruct actually has a 2 part key, with the first part of the key being the Animation Nodes Type (ie, Text, Integer, Text List, etc). So you actually need dict[('Type', 'key')] = value
If you don't have the two part key, you'll get errors when trying to use the outputted Struct with the various Struct nodes, or when trying to Print it.

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


text:
How exactly do Bake Margins work and can they be duplicated in post process?
When you Bake an image with Margins, it fills some area outside the edge of the UV island. For example, here is a section of a Normal map with a margin of 10 on the left, and 0 on the right. If you don't have Margins, you end up with visible seams when using the texture.

What process exactly is used to get this data outside the UV island? Is it like a post process smudge? I thought it was something like the Inpaint node in the compositor, but it does not give the same result. Is it possible to rebuild in the Compositor, or do in an external program?

I think it just stretches out the color on the edge of you UV seam. So if you have 10px margin, it would just drag the color for 10 pixels.


text:
What happens to UV Tangents when using Custom Normals?
Tangent Normal mapping is done with the mesh Normals and UV Tangents. For it to work, these are supposed to be consistent with those used when baking, and orthogonal to each other. When you set Custom Normals on a mesh (such as with the Normal Edit modifier, data transfer modifier, etc) the Normal changes. If the Tangent did not also change, then you could not properly use Normal Maps.
If you view the output of the Tangent node set to UV Map, you can see that it changes when enabling a Custom Normal:

(Note also that this GIF seems to be showing a bug. When the modifier is disabled, the tangents don't always go back to what they were. There's some other states happening. But this only happens in the viewport, and not on render. And not if the modifier is applied.)
My question is, what exactly is happening to the Tangents when I change the Normal? What's the pipeline? Is the Custom Normal influencing the Tangent calculations on a mesh level? Or is some vector math done on the shader level?
I've done some experiments with creating special tangent normal maps that use the Custom Normal. But the changed Tangents don't seem to behave quite right. For example, if I have a Normal Map baked to Object A, and then I transfer its Normals to Object B and use the same Normal Map on it, the result is very different even when the Normals are the same (transfer can distort them, but its a bigger difference than that.) If I compute my own UV tangents in geometry nodes and transfer those and use them instead (require custom normal map node) everything behaves correctly. So the weak link is whatever is happening to the UV tangents when you use a Custom Normal.

As far as I can tell, normal and tangent aren't actually ortho even with regular normals.  The tangent is somehow smoothed out, when theoretically it should be constant or nearly constant per triangle.  In my own normal map nodes, I fix the tangent, and it works fine; but fixing the tangent breaks the anisotropic BSDF, so I think that's where the weird tangent smoothing comes into play.  Blender doesn't really do normal map bakes/reads correctly anyways, it doesn't use an orthonormal space for them.

Interesting. My impression is they are orthogonal before being interpolated. Both start off as Face data and then are switched to Point/Vertex.

That's the thing though. The true UV tangent cannot be represented as point data; it changes discontinuously over (triangulated) edges.  We could make a true, face-corner UV tangent via GN these days.  For normal maps, we can use any kind of tangent we want, provided it remains stable through deformation (but Blender's does not), and provided we use the same tangent to bake and to read.  For anisotropy, the true UV tangent often means discontinuous anisotropy.  But Blender's implementation introduces discontinuity across a UV sphere's UV seam (where the true UV tangent is not discontinuous.)

Right. In my case, I'm trying to keep things consistent for export to game engines. I believe they use Mikktspace standards. I have models that use both custom vertex normals and normal maps, and I need things to be consistent in blender and in Unreal/Unity. So this question is to understand what Blender is doing, and I'm also trying to find out if the others are doing something similar. When custom normals aren't involved, the normal mapping seems consistent at least. So if blender is doing some strange things with tangents, the engines either do the same or the difference is too small to see

The first thing I'd try for matching Unity would be that true, face-corner tangent, made with GN from position lookups from UV with miniscule offsets.  However, it might be easiest to just not use custom normals: bake them into your normal map; use split edges for split custom normals.


text:
Make a Linked Scene local with Python?
I have a scene linked from another file. It can be made Local by clicking this button:

How do I do this with python?
For Objects, you can use bpy.ops.object.make_local. There does not seem to be any equivalent for scenes that I can find in the API


text:
Recreating Point Light Power/Radius/Falloff/Attenuation
I am attempting to recreate the Eevee point light within Cycles using nodes (using Drivers to get the light info). I have the basics working, but I cannot figure out how exactly the Radius and Power are used because the radius has some sort of attenuation/falloff, and the Power is in Watts by default and needs to be converted.
I have looked at the Source Code and have found the appropriate section in lights_lib.glsl.
And they reference the pdf "Moving Frostbite to Physically Based Rendering", which is where the distance_attenuation and light_attenuation functions come from.  Page 32 Listing 4 is the relevant section (they call the functions smoothDistanceAtt and getDistanceAtt). The link in the source is dead, but this is the pdf.
I have recreated the distance_attenuation and light_attenuation in Cycles nodes, but I cannot figure out what the inv_sqr_influence input is (aka, ld.l_influence.) From what I can find googling around, there is some sort of function being done that involves the inverse square of the Radius, but I cannot figure out what. Additionally, there is something being done with the Power before multiplying it with the light's Color (which is then multiplied by the shading and attenuation.)
I believe pages 30-32 of the PDF are talking about these things, but they do not give a code example, and I do not understand how to read the formulas. I've tried to find more in Blender's source code, but I've had no luck there either. I cannot find where the Power/Strength of the light is applied.
My current node setup does mostly work, it just does not match the same behavior in Eevee. I believe it is because Power/Strength is in Watts and needs to be converted to Lumens or something. And the Radius inverse square part is supposed to have some more going on.

If anyone can tell me what the math is, or point me towards a code snippet or the relevant part of the source code, please do!

This might help you understand how light typically behaves: https://en.wikipedia.org/wiki/Inverse-square_law

@quellenform thanks. I've found a lot of info like this about how light behaves. But what I need is to know exactly what's implemented in blender itself. And what I've learned from looking at the source code is that this is all tied into the diffuse shading too. So to get a match I need to recreate both the light and the diffuse behavior. I have most of that now, but I still don't have Power and Radius behaving correctly. There seems to be some conversion on Power going on other than what is in the obvious places in the code.


text:
Displace/Perturb Normal in Tangent space with Height Map?
Bump mapping is really convenient because you take an input normal, you take a grayscale mask (height map), and you get the appearance of displacement. But it has visual quality problems due to being based off partial derivatives (dFdx, dFdy.)
Tangent mapping is high quality and can also represent displacement of the normals. But, all the tangent mapping workflows assume that you are working with a baked Tangent Normal Map texture. I want to get the same workflow convenience as using a bump map, but using tangent normal transforms instead. (I suppose this would essentially be TBN bump mapping, or something?)
I believe this is possible, but I can't quite figure out the nodes. I know it is not as simple as taking your normals and scaling them based on a mask. This does not produce surface displacements. I also know that you can't scale the normals and mix that with the base normals using the mask as a fac to get a difference, as normalization cancels out uniform scaling. (And I've course I've been through the various displacement nodes, but they don't work for this.)
As far as I can tell, what needs to happen is to convert the mesh's Object normals into tangent space, do the scale based on the mask, and then convert back. But I don't know what scale to do or how.
I have created this node group, which takes two Normals and a Tangent (from the tangent node, using a UV map) and returns the tangent normal difference (the same thing you'd get if you baked a tangent normal map):

I have also recreated the Normal Map node, but with the base normals exposed as an input socket in this answer.

Using these two groups I can get a tangent difference between two different normals and then apply it to the original normals. But I still need to get the other perturbed/custom normal in the first place!
I've also been looking at Mikkelsen2020, which talks about taking normals that have been perturbed in a variety of ways (weather tangent maps, object, or bump), converting them to Surface Gradients, combining or transforming them, and then converting back to regular Normal space. I've been able to build the stuff in code snippets as nodes, and it mostly seems to work, but I'm not entirely sure how to use it. Frankly, I can't read the mathematical formulas properly. The thing I'm looking for may well be in there, but I wouldn't be able to tell.
Anyone got any ideas? This seems like something that ought to be very straight forward and common, but I can't find any examples of it being done out there. What am I missing?

You might want to read this first. And there's this nodegroup you can use for blending normal maps.


text:
Low-level location, rotation and scale for sphere, cylinders
I am interested in constructing figures of atoms using Blender from an external XYZ file containing atomic positions and species.
I have succesfully read the XYZ and found all atoms and their connections using MatLAB and exported everything as a JSON file, which the Blender Python easily reads. However, as soon as the structures become larger the processing time increases (since I presently use bpy.ops that redraws the scene for each added atom).
I want to change my approach to use a more low-level form of python.
JSON file (here, Benzene)
{
    "camera": {
        "position": [0.0000, 0.0000, 32.4760],
        "rotation": [0.0000, 0.0000, 0.0000]
    },
    "atoms": [
        { "element": "C", "location": [ -0.7150, -1.2384, 0.0000 ] },
        { "element": "C", "location": [ 0.7150, -1.2384, 0.0000 ] },
        { "element": "C", "location": [ -1.4300, 0.0000, 0.0000 ] },
        { "element": "C", "location": [ -0.7150, 1.2384, 0.0000 ] },
        { "element": "C", "location": [ 0.7150, 1.2384, 0.0000 ] },
        { "element": "C", "location": [ 1.4300, 0.0000, 0.0000 ] },
        { "element": "H", "location": [ -1.2150, -2.1044, 0.0000 ] },
        { "element": "H", "location": [ 1.2150, -2.1044, 0.0000 ] },
        { "element": "H", "location": [ -2.4300, 0.0000, 0.0000 ] },
        { "element": "H", "location": [ -1.2150, 2.1044, 0.0000 ] },
        { "element": "H", "location": [ 1.2150, 2.1044, 0.0000 ] },
        { "element": "H", "location": [ 2.4300, 0.0000, 0.0000 ] }
    ],
    "bonds": [
        { "atoms": [ 0, 1 ], "order": 1 },
        { "atoms": [ 0, 2 ], "order": 1 },
        { "atoms": [ 0, 6 ], "order": 1 },
        { "atoms": [ 1, 5 ], "order": 1 },
        { "atoms": [ 1, 7 ], "order": 1 },
        { "atoms": [ 2, 3 ], "order": 1 },
        { "atoms": [ 2, 8 ], "order": 1 },
        { "atoms": [ 3, 4 ], "order": 1 },
        { "atoms": [ 3, 9 ], "order": 1 },
        { "atoms": [ 4, 5 ], "order": 1 },
        { "atoms": [ 4, 10 ], "order": 1 },
        { "atoms": [ 5, 11 ], "order": 1 }
    ]
}

I read in the JSON and contain all elements in molecule["atoms"]. I then loop over every atom and create a copy of a sphere
    # Draw atoms
bpy.ops.object.select_all(action='DESELECT')
bpy.ops.mesh.primitive_uv_sphere_add()
bpy.ops.object.shade_smooth()
sphere = bpy.context.object
for atom in molecule["atoms"]:
    ob = sphere.copy()
    ob.select = False
    ob.location = atom["location"]
    ob.data = sphere.data.copy()
    bpy.context.scene.objects.link(ob)
bpy.ops.object.delete()
bpy.context.scene.update()

But the sphere size (and rotation for when I get to the bonds) confuse me. After having searched for days and days, I still haven't found a simple command to scale, translate and rotate without using bpy.ops.
Am I missing something?

Take a look at http://patrick-fuller.com/molecules-from-smiles-molfiles-in-blender/

what do you plan to do with the imported geometry? just render it or some kind of kinematic simulation?

This may interest you

If the Atomic blender addons (which include an XYZ importer) don't help, I would suggest using dupliverts instead of creating multiple objects when creating a large number of objects. My earlier tests have shown that using dupliverts can be quicker than creating individual objects.
This example that works with your sample data creates a new mesh that only has vertices that are placed at the location of each atom, this is then set as the parent of a sphere and dupliverts is enabled, this places a copy of the sphere at each vertex location. Based on a previous answer I then created a curve and added a new spline for each bond. That makes only three objects to display the data.
Using your sample data, multiplied by 1000 (with a small z offset for each) it takes 3.3 secs on my corei7 machine.
import bpy, bmesh, bpy_extras

mesh = bpy.data.meshes.new("Atoms")
bm = bmesh.new()

for atom in molecule['atoms']:
    bm.verts.new(atom['location'])

bm.to_mesh(mesh)
mesh.update()
bpy_extras.object_utils.object_data_add(bpy.context, mesh)
points = bpy.context.object

bpy.ops.object.select_all(action='DESELECT')
bpy.ops.mesh.primitive_uv_sphere_add()
bpy.ops.object.shade_smooth()
sphere = bpy.context.object
sphere.scale = (0.2,0.2,0.2)

sphere.parent = points
points.dupli_type = "VERTS"

bpy.ops.curve.primitive_bezier_curve_add()
curve = bpy.context.object
curve.data.dimensions = '3D'
curve.data.fill_mode = 'FULL'
curve.data.bevel_depth = 0.05
curve.data.bevel_resolution = 4

c_splines = curve.data.splines
c_splines.remove(c_splines[0])

for bond in molecule['bonds']:
    spline = c_splines.new('BEZIER')
    spline.bezier_points[0].co = molecule['atoms'][bond['atoms'][0]]['location']
    spline.bezier_points[0].handle_left_type = 'VECTOR'
    spline.bezier_points[0].handle_right_type = 'VECTOR'

    spline.bezier_points.add(1)
    spline.bezier_points[1].co = molecule['atoms'][bond['atoms'][1]]['location']
    spline.bezier_points[1].handle_left_type = 'VECTOR'
    spline.bezier_points[1].handle_right_type = 'VECTOR'

I may be not reading this correctly is this what you're after for scaling?
for atom in atoms:
ob = sphere.copy()
ob.select = False
ob.location = atom["location"]
if (atom["element"] == "C"):
    ob.scale = [.3,.3,.3]
if (atom["element"] == "H"):
    ob.scale = [.1,.1,.1]
ob.data = sphere.data.copy()
bpy.context.scene.objects.link(ob)

As for the rotations, I think you need to start parenting the objects according to their bonds, such that when a parent rotates all the children do as well.


text:
Move UV texture in screen space?
I have a UV mapped texture. I want to be able to adjust its location with the mapping node (or other vector math.) in Screen space. If you put the UV vector through a mapping node and change the location, it will move in UV space. I want the location to change in Screen Space for whatever angle I'm currently looking at, like it would if I was using Camera or Window projection in the first place (but without the texture being constantly in Camera/Window space.)
Is this possible?

It's possible to convert world space to camera space, using math that can be done in shader nodes, given the FOV.  But it's tedious, and it doesn't give you anything different than window space (it's not the same as camera space unless the camera is orthogonal, in which case window and camera space are the same thing other than some translation.)  What is your end goal here?

I don't quite understand what the difference between view projection and what you want?

@Crantisz When you map with camera/view in the first place, then the initial placement of the texture is defined in that space. I want to define it with the UV map, and only use the camera/window as a small offset from that when moving the camera.

@Nathan I'm trying to do Partial Derivatives in screen space similar to dFdx. This does work fine in UV space, but then it doesn't handle surface curvature quite right.

I wish Blender did that, but it doesn't.  There are two tricks, but they're both hacky, irritating, and very limited.  One is to do a pre-render of UV so that you can get delta UV/delta screen pos.  The other is to parent a pair of empties to vertices with a known delta UV to measure the delta pos.

@nathan I'm interested in learning more about both of those. I'm deep into hacky stuff anyhow. Do you have any links? Thanks!

Sorry, no links, just stuff I've come up with.  They're hacks in a bad way: they are really too limited and error-prone for most uses.

@Nathan Alright, fair enough.


text:
Find vertex position on an edge loop (python)
I have a list of vertices that make up an edge loop (the edge of a rectangle with multiple subdivisions, in this case.) I also know which vertices are at the start and end of the loop.
What method can be used to find the position of a given vertex in the edge loop? I want to make an ordered list of which is 2nd from the start, 3rd from the start, etc. Is there any tools/utilities to help with this? Or an optimal way?
I assume it could be found by "walking" down the loop in some way, such as finding which edges are connected to the start vertex, and then find the next in the loop by seeing which other vertices in the list share the same edge. This seems inefficient though. Is there a better option?


text:
Matrix multiply a Vector using Loc/Rot/Scale Attributes
I am making a setup that uses Object Coordinates from an Empty as Normals. This works great until you start moving the object with a rig, at which point you realize that these "Normals" are in the wrong space, even if the Empty is constrained to move with the deformations. Any shading they produce will look like its stuck to the mesh. The solution is to get the Empty's Matrix, and multiply the Object Coordinate vector by them.
Here's a setup I made awhile back, before the Attribute node, that does that (but I don't fully understand it):

This does work, but its a mess, and requires manually creating a driver for each value in the Matrix. I am now trying to make a better version that uses Attributes to bring in the Loc/Rot/Scale of an object, and then does the operation with Vector Math. But I do not really understand the relation between Loc/Rot/Scale and the 16 values that go into a Matrix.
I have the Loc/Rot/Scale as custom properties on my mesh object:

And I have the attribute nodes bringing them in, and the Object Vector:

But now what?
Is Loc/Rot/Scale the wrong things to be using? I believe it contains the same information as the Matrix Values, but I don't really understand how they relate to each other. For example, if you rotate the object, several of the values are changing, including ones that I know are Scale.

I can bring the full Matrix in through custom props + attributes instead I suppose, but I'd like a cleaner solution if possible. (Its also easier to setup Loc/Rot/Scale as there are addons to quickly create those props.)


text:
What does this dotted box mean in the viewport?
A while ago, I realized there was a dotted box at the origin of my chair object. I don't remember when it appeared. It moves whenever I re-position the origin, and it only appears in the layer my object is in. What does this box represent? Is there a way to turn it on and off for any object? It hasn't caused any problems for me, I'm just interested in what it is.

After reading Refracktor's answer, I looked up texture space, and I found that there was already a question asked about this.

You might have pressed Shift+T, or enabled Texture Space in the Object tab of the Properties panel.

The size and location of the Texture Space are found here, in the Object Data tab:


text:
Adding sound in Blender
can anybody tell me I tried to add sound effect of a chain falling in the floor in Blender? I tried it many time and it seems I did it in the wrong way! please help.

You should tell us something more: No sound? sound out of sync? ugly sound? which is your problem? can you give us the .blend file to be analyzed?

Welcome to the site :) It would help us help you if we knew more about what you tried and what didn't work as expected. Could you add more details about the steps you took and why the results were not what you wanted? Perhaps with a .blend to further demonstrate the issue?

Sound can be added in the video sequence editor. Go to the video sequence editor, press Shift + A, click sound, and select the sound file you want to add.
Remember to change the audio codec, found under the Encoding scroll in the Render tab, from "none" to one of the other options.


text:
Problem Duplicating Textures
I have a material that contains several procedural textures. I need to duplicate an object that has that texture applied, and then change one of the texture parameters in the duplicated object without changing the original. I need to do this with python but I can't even to it with the  UI. Because setting the Material option under 'Duplicate Data' allowed me to create a new instance of the material properties I thought selecting Textures would do the same, but apparently not.
So how do I and what does selecting 'Duplicate Data: Textures' in user preferences actually do? (I'm running 2.69)
File used to generate the screen shots below, below.
https://dl.dropboxusercontent.com/u/234662328/Limestone_1.blend

You could do this by making a single user copy of the material, but I'm not sure why the material remained unchanged for the original when tweaking some settings. Is it possible you could upload your .blend?

These are two questions. Please ask only one and create another thread for the other one.

You are comparing two different things there. The first Screenshot of the settings shows the material settings, the later one is texture settings.

Normally, Cycles Texture will not be defaultly linked by another material. The problem you met is because you put the texture in the node group, which can be shared as sort of "public datablock", while there is currently none for that in the Duplicate Data setting yet. Probably we should suggest some genius developer to improve this? lol
To solve this, just simply make a single user for the node group.
Finally back to your question: the "Material" and "Texture" checkbox there perfectly work for BI. As for Cycles, Material does work, but for the Cycles Texture, I don't think it's gonna work that way, since it needn't. As I said, Cycles texture is kind of "material-independent", unless being part of a node group, in other words, an independent datablock shared by materials.


text:
Simplest way to add/insert an image to a plane/mesh with python
Hi: I keep trying to put a jpg image on a mesh, but its being far too complex, and I was thinking there must be an easier way.
I have tried to edit the following code to do that, but I keep failing (all the objects on the blend file will change their surface to their last image, and weird things happening)
imagen_original=bpy.data.images.load(filepath="D:\ERASE\LeoGoodOne\VoidRay_SC2_Rend1.jpg")
# importa el archivo
nombre_textura = "nombre_textura_" + str(index)
# define el nombre de la textura
textura_creada = bpy.data.textures.new(nombre_textura, type = 'IMAGE')
# crea la textura
bpy.data.textures[nombre_textura].image = imagen_original
# asigna el archivo a la textura
textura_en_material = bpy.data.materials[nombre_material].texture_slots.add()
#agrega un slot para textura
textura_en_material.texture = textura_creada

So, the question is, which is the simplest way to add an image to a mesh in python, given we have the path and the mesh is selected:
filepath="D:\ERASE\LeoGoodOne\VoidRay_SC2_Rend1.jpg"
bpy.ops.mesh.primitive_plane_add(view_align=False, enter_editmode=False, location=(-5, 0, 0.3), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
bpy.context.scene.objects.active.select = True

Im wondering if I should have asked this on python stack or its fine here? =)

This is the place.

See the code of io_import_images_as_planes.py in blender-home/version/scripts/addons it contains all the methods you would need.

Thanks for the suggestion. I will study and try to answer this question through studying that, but after opening and examining the python file I realize that I will require far much more knowledge of both python and blender, so dont expect the answer any time soon. But I think this is so basic, someone should have already created a simple script to just add an image to his mesh?

Getting this done from a script is a requirement of your project? If not you can do it the normal way. Select the object, go to edit mode, unwrap using the projection you estimate the best for your mesh, go to UV Image Editor, load the image you want. (this will make the image visible in textured view but not for rendering yet). Go to Material properties, create one if none exists. Go to Textures properties. Create one of type Image or Movie, load your image. http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Mapping/UV/Applying_Image

Yes: Before asking this, I learned how to do it manually,then translated that into a python script, but it was failing because all the objects would display the same image as the last one. That is when I decided to come to stack :)


text:
eGPU + Blender + Cycles + Mac
Hi I wanted know if anyone is using an external GPU with blender on a Mac successfully. Would anyone care if so what setup they have and any indication of benefits and pitfalls.
Thanks

I recently made this build, have a look. It has some bench marks from blender:
https://egpu.io/forums/mac-setup/macbook-pro-retina-15-inch-early-2013-akitio-node-1080-ti-external-monitor/#post-14571


text:
NEW Xcode WWDC15 - Export from Blender - Supported formats - Alembic(.abc)
Following the WWDC15 Apple mentioned the supported formats and even went as far as to emphasise the specific file format Alembic (.abc) which is the most modern of the formats listed below:

What are the advantages of this over COLLADA/OBJ? Is it something that blender can/will support? is it worth it?
(Hope this is the right place to ask this question)

Alembic is industry standard file type, see: http://www.alembic.io/ It's not comparable to wavefront format.

In a recent developer meeting (2015-06-14), Ton mentions alembic as a possible addition in 2.76. Lukas Toenne has been working on adding alembic to blender for some time, you can checkout a copy of the alembic development branch and build your own copy of blender if you want to help test.
So yes you should expect alembic support in blender, later this year would be a good bet.
As alembic was developed by Sony Imageworks and LucasFilm to handle transferring data in a commercial film production, you can expect it to be well supported and tested. With two big names attached to it you will find other film studios willing to make use of it, making a common industry format that will most likely be widely used in the future.
With alembic being a recent project it has the benefit of looking back on the 10-20 years experience of using obj and collada and designing around the issues that have existed before.

According to Ton Roosendaal, head of the Blender Foundation, Alembic plays a vital part in the current Gooseberry project pipeline. here's a related reddit discussion
Basic export of Alembic seems to work since 2013.
But then it's still to check whether the Blender-flavored .abc files play nice with XCode.
Alembic was introduced to transfer animated mesh deformations and camera translations from animation and simulation suites to rendering tools.
I overheard on twitter: Work is in progress to base many of Blenders chaching on the open source alembic library.


text:
Smart UV Project Problem
So I want to texture my model using smart UV Project but when I make the smart UV project my reference image keeps popping in the background of the UV.
How do I make my reference image disappear?

It seems to be that your problem isn't with Smart UV Project, rather thatn with turning off background / reference image. About background images see this - https://blender.stackexchange.com/questions/118/how-do-i-set-a-background-image-while-i-am-editing or this - https://blender.stackexchange.com/questions/19751/using-a-background-image-to-model-in-blender

To be honest its the article in the site you given me is not helping

If you solved your question then please post your solution as an answer so others may benefit from this.


text:
Is there a way to stop Cycles Computing Transparency?
I'm trying out a method of rendering smoke in Blender Cycles through the use of Image Planes and Smoke Textures as Johnathon Lampel shows in his recent tutorial: http://www.blendernation.com/2015/07/04/faking-smoke-with-particles-in-cycles/
This is my current result:

And this is my node set-up:

As you can see, in order to prevent cycles from rendering transparent planes at the back of the particle system as black I've had to bump my Transparency Light Path Bounces up to a Max: value of 56, which in turn takes a while to render (1min 56secs on half-res 10 samples).
I feel that it should be possible for Cycles to simply disregard Transparency, so instead of computing it as a bounce, it just treats it as though it's not there, rendering the smoke image but not the alpha surrounding it. As a result this would drastically save on render times.
Does anyone know if this is possible? :)
Thanks!

That's.. exactly what it does. It still has to perform the intersection check on the ray in order to know if the ray hits anything, which (AFAIK) is the slow part.

Thanks @gandalf3 I understand that, but I'm wondering if there's a way to stop it treating something as 'transparent', and instead just treating it as though it isn't there. It's hard to describe exactly what I'm getting at. Basically, how disabling the Camera ray visibilty essentially stops an object being seen and rendered through the camera, is there something similar that prevents transparency from being rendered by the camera? If that makes any more sense? :/

From my knowledge of cycles, I don't think this is possible.
Think of it this way:  If you disable camera ray visibility it simply ignores the object when calculating ray collisions.  But a transparent shader is simply that: a shader.  And Cycles will only look at a surface's shader if a ray has already hit the surface, meaning the calculation you are trying to avoid has already been performed.  In other words, Cycles has to perform the collision algorithm to find out where the ray hits the surface to know if it is transparent.
To ignore transparent parts of objects you would first have to go through every shader in the scene looking for the pure white 100% transparent parts so that it just so you can ignore them in the ray-tracing step.  This process would be very computationally expensive and would probably far out-weigh the saved time in the ray collision calculation.
With that said, I am by no means a complete expert on cycles, so if anything I have said is incorrect please let me know.

Ah well, thanks for the reply PGmath. I guess it was wishful thinking on my part, but I was wondering if there isn't a setting directly in cycles, whether it could be achieved through some fakery with the Light Path input node, or something along those lines?

@Hexbob6  Yea, I wish there was too, it would be nice.  But again, the light path node is just a part of a shader's node tree, meaning it is only looked at once the collision has already been calculated.

ah yeah that's a good point. Oh well maybe one day, I could see it being super useful for not only this case but with nature renders as well... those pesky alpha masked leaf planes! ;) Thanks for the help and explanations anyway +1! :)


text:
Realistic sectional door animation
I'm trying to animate a sectional door, but without success.
I made a profile using a bezier spline and I want the sections to follow exactly the profile.
If I use the Follow Path Constraint, the section does follow the profile but in an unrealistic way :

Adjusting the pivot does not allow a more realistic way.
The main issue with follow path is that the orientation is made on only one point : the pivot but I want here is to have two "pivots" : one for each extremity of the section of the door.
I also try to use the Curve modifier with a whole door, but it doesn't solve all the issues :

Here the extremums of the sections follow exactly the profile, but the placement is difficult (conter intuitive, I have to move the door down to get it up ...), and most important it introduces some deformations on the door extremums, and this is not realistic. Moreover it would be more realistic to have independent sections of the door instead of of full block (because the last section have different movement)
I also tried to use some empties to follow the profile (using drivers, I was able to move only one empty and move the others on the profile with good spacing between the empties), but I wasn't able to set the door sections follow exactly the empties.
Anybody have a good suggestion ?
Ideally I would like to have :

Wheels that follow the profile (I can do that with some king of cylinders, it works well) ;
Sectional doors that are independents each others (they should be independent objects) ;
Sectional doors extremities are tied to the wheels ;
Sectional doors must be rigid (no deformation like in curve modifier) ;
Animation should be simple (a single empty that is moved on one axis can drive the full animation).

see this http://blender.stackexchange.com/a/8236/5113

Seem to be a nice solution, I'll try it today and I will say to you if it's OK.

Model a single segment e.g.:

Add an Array and Curve modifier

Now you should be able to animate open/close by translating the x-axis.

Method 2
To avoid that the Curve modifier distorts the segments, you could add another object say plane (Empties cannot have the array modifier) and parent the segment to the plane. Use face duplication on the plane to create the undistorted segements.
Note it is important to apply scale.

I already did this (see the second capture) but this doesn't help because :

It introduces deformation on the segment and I don't want that (in real life sections are rigid).
Animation must be identical for all sections and that's not desired (the last section has different animation path)

@rperrot can you show the segment mesh ( only one )

@rperrot this answer will not introduce deformatiions if you use simple mesh for the section ( a rectangle ) and reorder you modifiers ( array, curve, solidify, bevel/subdiv )

@rperrot Did you test the attached .blends? It is only controlled by the bezier curve. There is no different animation path. If it really distorts the segments check the 2nd method.

I'll check the second method, it seems that it will solve the deformation issue.


text:
Output for Print
Is there a way to output for Print. I want to save in a higher DPI than the default 72dpi say 300dpi that's a good quality for printed pieces. I tried downloading an add-on but don't know if I am installing it correctly it isn't showing up but the bar in python is green. I'm using the 2.69 version of Blender. If no such feature exists what size have any of you found best for print quality. Thank you

@cegaton, what's the difference? Could you elaborate your question a little?

Besides DPI metadata part ... This Q is not a duplicate, OP is asking also for pixel calculation (and was also accepted for the full range it covers). Provided link by @ideasman42 covers only DPI. Those are two different things (already mentioned by @user1853). Seems to me relevant to keep open. Thank you


text:
UV map contains massive distortion
This is a specific issue with this model.
I have tried to UV unwrap it, yet it is not un-wraping neatly at all.
The object is a flat map looking rectangle with a few tears in it.
Obviously, I want it to unwrap in the straight and rectangular shape it is.
I want it to unfold completely flat, not distorted, hinging at the top of the map.

Things I have tried:

Using smart unwrap. This doesn't get the desired result.
Marking the interior loop on the edge except the top as a seam.
All the other unwrap options.

If the seams are marked on the border of the faces instead of the middle of the slice, it gives a good result. But, do you need to keep the slice UV close to the faces UV ?

@lemon Hey thanks for commenting. Strange, that makes no sense. Yes, I want to. I want to unwrap the whole thing without distortion, so in this case how I did the seams was to attempt to have two halves, both with the edges unfolded and connected to the appropriate side. The main thing that I want to know in general is why there is so much distortion. I have had this kind of distortion before and had to use smart unwrap, which doesn't work right here.

what I proposed will not keep the edges connected automatically. What I wanted to say is to seam at the edges borders (not inside the edges like in your file)

It might take a LITTLE extra work, but why don't you just:

select only the front faces
orient the view so you're looking directly at it -- i.e. View > front (Numpad 1)
From the unwrap options choose "Project from view" (in ortho mode)

This will give you as "flat" an unwrap as possible for just the faces you selected. Then, you can repeat these steps for the remaining five different views (back, left, right, top, bottom). As you do each side, you'll notice that only the UVs for the selected faces will be set -- so after each round, you may have to scale/rotate/translate and put them roughly in the position of the desired final layout. (For example, since you want it to be hinged at the top, when you do the back faces, you'll have to rotate the UVs 180 degrees clockwise and position them above the front faces.)
Once you get the scale and position for each side as close to one another as possible, you can select pairs of UVs (I use "B" so that I can box-select) and "W" to weld them together.
There might be a faster/better way to do it, but that's all I got.
Hope this helps.

Thanks, I may have to resort to this. I really want to learn about UV unwrapping something like this completely. In other words, I want to have it connected on by the top vertices and then laid out flat, including the edges. What you suggest would probably work, but like you say I really want to know if there is a better way.

@CAA14, alternative as the model seems to be composed of two flat faces : rotate 180° the back face along a border then unwrap (project from view)

@CAA14 gotcha; well, if you figure out a good way, do update this thread. I also find UV unwrapping to be one of the most painful and tedious aspects of modeling and would love to learn how to do it better.

@yoshi Will do. If I get no other better answers I will mark yours, since it technically does work. Thanks again.


text:
Imported Image strip has really low FPS
I am working on some stuff for videos I want to make, and am coming close to my goal.
However, after I rendered an intro I made, when I try to scrub or play the image strip in the sequence editor, it runs at about 1 FPS(It was rendered at 24).

The resolution is 1920*1080.
Windows 8.1
12 GB of RAM with 3000 mb allocated in the system memory cash option.
I have clicked refresh sequencer.
I opened the strip in both the blend file I created it in, and a fresh one - same result.
The images are png files.

Any ideas? If you need more info let me know.
-CAA

@cegaton Thanks for your reply. Yes, I let it play all the way through twice. And yes, that resolution is my default, so it should output to 1920 * 1080.

You should use proxy when working with video editor.


text:
Blender scene animation exported to Three.js without bones or skinning?
I have a mountain range scene very similar to this:

The mesh is a simple plane extruded to form a low poly mountain range, the animation uses 3 shape keys, a base and 2 for random vertices displacement. This is then keyframed 7 times over 250 frames to make the surface look like it's continually subtly shifting.
My intent is to use the Three.js output to embed the 3D animation into a web browser. However, it seems the only examples I can find use "skinning" and "bones".
Is it possible to do without bones or is there an alternative that isn't embedding as a video?

Blender has an addon to export to MDD - can three.js read that?

I can export straight to three.js. I've also tried uploading my .blend file straight onto clara.io but the materials and animations don't seem to load with it and there is no animation.
I have also noticed once loaded into webGL the model is smoothed and shiny when its supposed to look more like an origami mountain range

But can three.js read an mdd file - it is designed for animated mesh data.

Not sure if this is what you need, but it's a plugin for blender to export json for threejs.
https://github.com/mrdoob/three.js/tree/master/utils/exporters/blender
It has the instructions on how to install it.
To animate my stuff I use shapekeys.
Try this tutorial :
https://www.youtube.com/watch?v=JKB4aPUkCJw
Hope that was helpful

Will you please add the important steps for the tutorial here. Link only answers are highly discouraged, if the link changes then the answer becomes useless.

I have already tried this, unfortunately the moment i add a bone and parent it to the mesh three.js refuses to export saying that the bones arent valid

Recently the threejs Blender JSON exporter has been removed. I would suggest using the glTF Blender exporter (https://github.com/KhronosGroup/glTF-Blender-IO) instead, which supports shape keys and can be imported to three.js as well.

authors: Ярослав Остапенко


text:
Python script has no effect when running as background
I'm trying to render some still images of a scene but switch the image texture using a script with the Blender command line. I made a script to set the image of an image texture node in the scene. When I run it within Blender with Run Script or run it with --python-text when launching Blender from the terminal the image is set correctly, but it has no effect when I run it along as GUI-less background with -b.
I'm still finding my way around the API so this is the extent of the script:
import bpy
import os

def set_texture_image(img):
    bpy.data.objects["Cube"].select = true
    mat_tree = bpy.data.objects["Cube"].material_slots[0].material.node_tree
    mat_tree.nodes["Image Texture.001"].image = img

new_image = bpy.data.images.load('//../../Pictures/cubes.png')
set_texture_image(new_image)

you can't render  while in the background ( no gui )

I was missing something obvious: I need to render from within the script after I make the changes I need. This exchange helped. Otherwise it renders the image with the command line arguments before the script is run. If I launched Blender with the script or ran the script normally I could run a render later and it worked.
Adding bpy.ops.render.render(write_still=True) worked. All the render settings are set within the scene with the UI.


text:
Rigging objects to Second Life Armature Issue

In the first picture, I used the Second Life Avatar with skeleton and rigged a pair of test "feet" to the avatar. I was able to also transfer weights from the avatar to the "feet". When in pose mode, everything moves like it should.

In the second picture, I again have the Second Life Avatar with skeleton and am trying to rig the foot we wish to use. I am able to parent it to the skeleton by selecting the object (foot) and the armature, press Ctrl P and choose Armature Deform with Empty groups. When I then click the object and the legs of the Avatar, I go into Weight Paint Mode and try to transfer weights like I did with my test "feet" and I get an error stating the source mesh does not have any vertex groups. I'm at a loss as to how to give it vertex groups while not messing with the preset weights and skeleton as these must remain the same.
How do I give my foot vertex groups so that I may transfer weights from the Avatar to the foot?

If I do one foot it works fine. Once I have applied weight paints, it contorts the "feet" to move together instead of separately. Anyone know anything about weight painting and empty vertex groups?    I have a deadline of tonight. If anyone has any advice on how to manipulate one foot at a time I'd really appreciate it.

I have somehow fixed my issue.
I re-opened Blender and started completely over.
Staying in scene one, I uploaded the Second Life Avatar. Then I opened the foot file I wanted to attach and rig. I realigned the foot to match exactly vertex for vertex again.
Once perfectly aligned, I pressed shift + D to duplicate it in case I somehow mangled it. I moved this to a new scene.
In the new scene, I placed a box inside my foot so that I could apply a mirror modifier to create the opposite foot. I then went into edit mode and chose faces and deleted the cube faces inside the foot so that it won't be seen in Second Life. I took a copy of the mirrored foot into scene one and aligned it to the SL Avatar.
I then chose both feet, rigged them to the armature by pressing Control + P and chose Deform with empty vertex groups.
Lastly, I chose the legs of the avatar (which included the original feet) and then chose the feet, changed to weight paint mode and chose transfer weights.
I checked the rig by going into pose mode and rotated the feet to make sure it was all working correctly. It was!


text:
Weight painting an object

In the picture above I have two feet. The blue one is the one I have selected and gone into weight paint mode. I'm trying to change some vertices to red in weight paint mode but don't really understand how to do this. When I use the brush on the foot, nothing happens. It simply remains blue. It also doesn't show me vertices. It appears solid. If I enable wire frame mode, it shows all the vertices but doesn't allow for selecting certain vertices.
How can I paint specific vertices along the seam of my foot red?

In your screenshot the weight and radius of your brush are set to 0, and you are using the subtract brush.
If you set them to higher values and pick a brush like mix, then it should work:

Also make sure you are using the correct brush.

Thank you. It works exactly as expected with the right brush. I had to put the radius to 9 and zoom in or it grabbed too many vertices. Thank you both! <3

@SteveHunt Good point, added


text:
Animate material with a sound
I've already learned how to animate physic transformations with sound curves (scale, position...baking sound to F-Curve) but I wondered how to do the same thing with material (set a keyframe for the intensity of emission shader and then animate with the frequency of a wave sound) can I manage this with nodes (like object info? If the scale of my object is 200% then the intensity of my shader will be 100%) For instance: if the frequency of the wave sound is 100Hz the intensity of the emssion is 1...or, if the frequency is 1000Hz then the colour should be red or like so?

You must use drivers: a driver lets you control any datablock with any other parameter of the software.

Could you explain why and how? This is not helpful to many users as is.

Drivers are too complex to explain in  few words. I think this is a great tutorial about them: https://www.youtube.com/watch?v=jMoBFzXFAUM

Excellent, that should help people out.

Also this internal link can be very helpful:http://blender.stackexchange.com/questions/28254/is-it-possible-to-combine-shape-key-values-from-different-objects


text:
Why does my mesh have different colours

guys why is my blender model in both white and grey? I'm a noob, and I tried to find problems with the textures and materials, but seemingly the problem isn't there. Does anyone know why this is?

select_all in edit mode and hit Ctrl+N , to recalculate normals

Many new users are asking that question, maybe flipped normals should be more obvious in 3D view, better color indication or Backface Culling enabled by default?


text:
Location keyframes shift (move) by script
I'd like write a script.
There is an object with several keyframes. (example in 1,50,100,120 frames)
I need an index and a shifting factor (let it index=2 and shift=30 frame)
The script need to stretch (or move) the keyframe after the index with shift factor.
So when the script finished then the keyframe positions will be (in this case) 1,80,130,150)
I dig the blender API and I wrote some scripts already but I don't know what can I do.
Please help me.

Welcome Gabor :) If the link above doesn't solve your issue, please edit your question, add your code or feel free to comment here to get a specific answer. To access the keyframes, see this answer: http://blender.stackexchange.com/questions/27889/how-to-find-number-of-animated-frames-using-blender-python-bpy/27946#27946. Anyway, enjoy blender.se!

Yes it is specific question because no misunderstanding. But I worked out a solution.


text:
Able to transport the rendered opengl frame to byte array with python script?
I'd like to render a frame with OPENGL and I want to save to a byte array variable without file save/load.
What can I do?

what kind of array?

I think he wants a file that looks something like the following.   "byte renderedImage[] = {red_p1, green_p1, blue_p1, red_p2, green_p2, blue_p2, red_p3, green_p3, blue_p3, etc...};"  where 'p(n)' is a series of pixels.


text:
Parenting or ChildOf
I'm confused a little bit. I think the CTRL+P and ChildOf constraint quite same thing. But ....
So please anybody explain what is the main difference or behaviuors between the two approach. Sometimes I recognised differences but I can't define exactly why.

I would say it's the same except with Child Of constraint you can put keyframes on Influence or visibility so you can start or stop the parentage whenever you want

The reason to have a ChildOf constraint is for cases where you need to change parenting during animation. Like when a character needs to grab an item, or throw it- at the moment this happens, you can animate the constraint influence and be able to animate the object properly.
You should use normal parenting for everything else, because this method is far simpler, and simply more correct. The hierarchy is visible in Outliner, mostly exporters will work with it e.t.c.

.. also, Child Of allows you to select which transforms are inherited, and which not.


text:
Extract the rotation (or heading) from local matrix (Blender Python)
If I use physics then the objects rotation not changed but I want to detect the object rotation based an another empty axes (or the world mtrix).
I tried extract rotation attribs from local matrix but I stucked.
Are there a built in function for extract the actual rotation values of the objects?

Quaternion.rotation_difference(...)
Can represent the matrix world of both your objects as a quaternion. Its rotation_difference(...) method returns a quaternion describing the rotation required to go from one alignment to the other.
Test script, select objects, then axis last so it will be active object. Script below prints the XYZ Euler rotation required by axis  to match object.
import bpy
from math import degrees

context = bpy.context
ob = context.object
others = context.selected_objects
others.remove(ob)
axis = ob.matrix_world.to_quaternion()
for o in others:
    q = o.matrix_world.to_quaternion()
    rotdif = axis.rotation_difference(q)
    print(o.name, tuple(degrees(a) for a in rotdif.to_euler()))

Result of running on default file with "Camera" as axis object.
Cube (-54.05801712949699, -40.65919063845337, -25.28499489226661)
Lamp (-10.627706900421787, 53.1995955395152, 34.18299651274404)


text:
Shortcut for "disable object in the viewport" (DOV) Blender 2.8
I'd like to use the Collections like layers early versions of Blender. It is working well. But.
I use procedural boolean objects and need to hide the boolean parts. I created a part in a collection. But when I switch to another collection and back then all hidden elements are visible again.
I use the disable object in the viewport (DOV) and it's great.
BUT
There is a shortcut for hide (H, ALT H) and I can work fast, but I can't figure out: HOW I SWITCH DOV WITH SHORTCUT for fast developing.
Need a shortcut for DOV.
Please help...
Gabor

I know your question was asked many months ago, but in case you never found an answer, you can assign a shortcut for 'Disable In Viewports' by rightclicking the 'Disable In Viewports' icon in the outliner and clicking the 'Assign Shortcut' submenu
1 enable DIV icon in outliner

2 rightclick DIV to assign shortcut

Hmm. Have you tried holding shift and using num buttons (shift+1, shift+2 etc.) this way you can add and hide visibility of collections? Hope it helps!


text:
Cycles rendering double question: render quality and render time
oh, smart ones,
I have a scene with 12,405 vertices and 9,766 faces which is a kitchen I'm designing for our house. I'm using Blender 2.76 on OS X 10.11.2 on an iMac Retina.
First, rendering quality:
My samples are set to 18 square samples for 324 AA passes. I am using the Progressive Refine with 64x64 tiles. Rendering quality is basically like a 120000 ISO on a digital camera - very, very grainy. My "camera" sensor is set to 35mm DSLR.
I have no Blender Phong lights in my scene, everything is set for Emission material, with 7 object light sources, trying to replicate the existing, real-world kitchen. The material's Emission light strength is 11 for Surface and 7 for Volume. I have attached one such render output.
I have read most other questions that have to do with "grainy cycles, help!" or "fireflies, help!", but none of the fixes suggested there actually visibly improved the quality (of course samples helps, but when I bumped sampling to some large number I ended up with unrealistic times). Why don't we see any graininess in e.g. Sintel?
Second, rendering time:
I have played with CPU rendering (8 threads since I have 8 cores), and also GPU rendering (this is my ATI video card). Overall, there is not much speed difference between my CPU and my GPU and both have extremely long times to render. For the 300+ samples above, I end up with about 40 minutes render time.
So, I said, it's definitely glass, reflections and what other complex objects I have in my scene. Therefore, I hid those from the render (no glass / windows, just plain cabinet boxes). Rendering time decreased only slightly.
How can I improve both issues? And finally, how can I "pack" the .blend so it contains the materials as well - if I want to, say, share it here for debugging?
Thanks,
Virgil

Increasing tile size from 64x64 to 256x256 almost halved the rendering (20 minutes vs 38 minutes).

You need to be using GPU rendering mode for this tile size to work.

Use small tile size (like 32 or 16) for your cpu and high tile size (256+) for gpu. This will optimize your render times.

Read this: https://sinmantyx.wordpress.com/2015/12/02/denoising-cycles-renders-in-blender-theory/ and this: https://sinmantyx.wordpress.com/2015/12/02/denoising-cycles-renders-in-blender-practice/. Also you can optimize your materials with light path nodes and lighting with portals. If this doesn't help enough get a fast gpu (gtx 980 and above) [or a faster renderer - you want a bi-directional one] or render it on a web renderfarm (SheepIt).

Thanks for the links! I am reading those with heightened interest. I've applied some of the compositor nodes described to my scene and it's visibly improving. The window reflection on the right is the only one that has to suffer (looks like I've applied a Gaussian noise filter - instead of the crisp reflection I get "bare").

For interior scenes, I find that using portals can work well. Set up an area lamp in a window facing into the room. Set it to portal, and set up another opposite of it on the other side of the scene.
I also turn off caustics in my render settings, set light bounces no higher than 6-8 in most cases unless the first render just doesn't look right, and set my tile size to 16 x 16 to 18 x 18. Granted, I am using CPU, so this is more efficient for me I have found. For fireflies, I also set indirect clamp to a minimum of 1.01

For your last question on packing all the resources in the .blend file.
This is the way to go:

Go to File Menu.
Look for external Data in the List
On the pop up select "Pack All into .blend"

In regards to the grainy output of your image. My assumption from your written description would be to make sure you have enough light sources in the scene. In the real world there is no limitation to how many times a light can bounce hence it would not be wise to give the same amount of light and expect a totally similar result.
Most real world interior photography would also require the lighting crew to add additional light source to a scene to enhance the image.

should I add more meshes as light sources or regular Lamps (properly) configured for Cycles?

From what I understand is that area light sources does create more noise as you will be shooting samples from a surface as comparted to shooting light source from a single point. The rays are more compact from a singular point and creates less chances for noise to propagate. So minimise the use of area light is what I will recommend. Only use them when it's really necessary. The real reason for area light at all, is when you would require soft shadows.


text:
Cannot increase Samples past 1
In my quest to improve rendering times with Cycles I managed to break my file (I think).
Now, when I enter (or slide the cursor) an e.g. 12 value in the Samples box, I get the following message:
bpy.context.scene.cycles.samples = 1
Can't edit driven number value, see graph editor for the driver setup.
Choosing a preset from Sampling Presets doesn't reset the sample value.
I've even tried to open the Python console and set it from there, but it still doesn't change the UI, nor the actual render.
Consequently nothing (visible) renders with a sample of 1.
Any pointers on how to revert my rendering samples much appreciated.

This is such a fundamental feature the issue is likely quite deep, I'd recommend deleting the file(s) and re-downloading the .zip and running it.

Is it perhaps the input field filled with a different colour than the others?

Whether the Samples slider is pink? Seems that you added driver to the samples amount. Hover mouse over that samples value and press Alt+D (delete driver).This can be done also from Graph Editor (like proposed by Blender) but it's a little bit more complex.

Remove Drivers
You may have somehow added a driver to that value (e.g typing #frame in the field).

Drivers can use properties, numbers, transformations, and scripts, to control the values of properties.

By assinging a driver to the Samples quantity, you are basically telling Blender to pick the value from somwhere else (e.g. scripted expressions,...).The manual inputs will be overrided till the driver is present.

To delete a driver, right click on the field and choose the option from the pop-up menù.

Hi, Carlo: Yes, that was it, my field was pink and it had a "10" driver associated with it. I went to the Graph Editor and looked for something out of order, but I didn't see anything. Thanks for the help!


text:
Is there a way to hide the mesh outlines/vertices highlights when weight painting with a mask?
I'm weighting a dense mesh and using a mask to limit the blend tool to a certain area (a workaround for not being able to limit the blur to to visible mesh).  But when painting with a mask the active face outlines obscure the temperature gradients.  Is there any way to hide the outlines?  Alternatively, is there a way to limit the blur tool to visible vertices yet?


text:
Rigify Mesh twisting weird at elbow of arm
I'm using Rigify to make my character poses and animations.
But I have this issue.
For some reason when ever I pull my forearm over my upper arm.
It begins twisting from the point where my characters elbow should be. Why is it doing this?
It's totally fine until I pull it over my upper arm. Kind of annoying.
Here's a picture of how it looks messed up.

But I also noticed that when ever I move my Elbow IK it tends to rotate my mesh a bit.
So I'm getting the idea that it has something to do with rotating but I don't know how to come about it.
Here's how it looks with me moving the Elbow IK + A closer screen shot.
I also noticed that only my arm's bone connected to the Elbow point is moving. Hmm. Any help would be appreciated.

When you move the arm, you have to also move the elbow IK bone. The elbow IK works to compensate for the twisting that happens from the IK movements you make. This takes some getting used to. I had to work for some time on my elbow IKs before I felt I had a decent understanding of them and I still am not 100% on it.

Wow dude you answered quickly. Thanks a lot that was cool.
But I don't exactly know how to do this. I went into edit mode and I made the elbow forearm parent to my Elbow while keeping off set but that didn't do much of anything.

It took me some time to get used to the elbow IKs. Sometimes you have to move them in counter-intuitive ways, and sometimes in odd places that don't make sense. In the animation, you'll see them moving all over the place. I think of cases where the the elbowIK is way down on the negative z axis, or inside the character's ribcage. There may be other ways to handle this, and maybe others will have suggestions, but I know from my own experience that I never expected those elbow IKs to function as weirdly as they do. Give yourself room to do some crazy things with them and good luck :)


text:
Why does my mesh rotate face down when i delete my bone?
Ok so, I got this bone that I wanted to get rid of so I can start over with fresh new ones.
The bones were once weighted with my legs mesh but then I deleted them.
So when ever I delete the bones my entire leg mesh just turns face down and move a little out of place.
Why is it doing this? it's kind of annoying.
Here's what I mean.
That's how it looks totally normal.

This is how it looks all wonky and crap..

I'd appreciate it if some gave me a hand. Idk if this is like some sort of bug, or what?

Are you sure the bone you are deleting is not the parent to any other bone, because if that is the case their parent would become NULL and the tranformation they were inheriting will become garbage (or maybe just 0 in Blender).
So make sure you undo parenting prior to deletion.

Mhm, my upper leg mesh is parented to my upper leg bone. Should I remove that 1st then delete my bone?

alright ncm. Did as you instructed and it turned out fine. Hopefully it doesn't mess up. I have a knack for coming across issues lol.
I think the reason why I thought something was wrong because, I didn't remove the full parent, I just removed the bone. But now I removed the full parent such as my armature and it's alright.

No worries, good luck with the project :)

Thank you. I have big dreams. I hope to come far with Blender. 3D modeling is awesome.


text:
Remove from CollectionProperty
I am using the the CollectionProperty class to store a list of properties, so something like this:
class MyPropertyGroup(bpy.types.PropertyGroup):
    name = bpy.props.StringProperty(name="Property Name", default="Something")
    value = bpy.props.IntProperty(name="Property Name", default=22)

bpy.utils.register_class(MyPropertyGroup)
bpy.types.World.my_collection_prop = bpy.props.CollectionProperty(type=MyPropertyGroup)

Then in an Operator I am calling the add() method to create additional properties:
class MyOperator(bpy.types.Operator):
    # some irrelevant code here...

    def execute(self, context):
        my_prop = context.world.my_collection_prop.add()
        my_prop.name = "test"
        my_prop.value = 123

Now my problem is doing the opposite of add().
How do I go about removing an instance from a CollectionProperty?

As I was about to click the button to post this question, I realized maybe the CollectionProperty class extends/has the same methods as a dictionary or list. Anyway, with a little trial and error I found that it does (sort of).
To remove a single element:
context.world.my_collection_prop.remove(2)

To clear the whole collection:
context.world.my_collection_prop.clear()

I really don't understand how details like this get left out of the Blender API documentation.

And how to find the index of the element?

@mifth to remove one element you have to have it's index. This is usually possible when you are using for example id obtained from UIList from gui - when user click on an item, you'll got it's id. Other than that you have to search thru the whole collection for specified elements, or just operate on numbers less than the total len of the collection.

Related to this I just opened this: https://blender.stackexchange.com/questions/114190/missing-a-proper-documentation-for-collectionproperty
I also find it really annoying that the methods are not in the documentation.
Are just missing them and they are burried in some place?

2.91 - it seems it doesn't anymore.

Use the CollectionProperty.find(name) to find the index of the item to remove. Then remove the item with remove(index) method. For example:
def remove_item(collection, item):
     collection.remove(collection.find(item.name))

Then use like this:
remove_from_collection(context.world.my_collection, my_item)