text:
Changing Order of UV Maps
For my mesh I have two UV Maps. I'm importing the Blender file into an external program which requires the UVMaps to be in a certain order. In the UV Maps list there are no up/down arrows like there is in the Vertex Groups list to change the order of elements in the list. Is there a way to assign the order of UV Maps in Blender? Or could there be a Python script to do this?

Related - http://blender.stackexchange.com/questions/5348/how-to-change-uvmap-index

Here is an add-on that does what Stefan Schindler mentioned (I can't say I didn't already know that trick, but he did mention it before I did...). I would recommend that you check it out at the GitHub page here so that you know that you have the most up-to-date version. It is also just fine to use this link if you'd prefer to copy/paste rather than download and unzip it.
Here is the original version of the code though (like I said, it is preferable to get a copy from GitHub because I won't be updating this).
# Copyright 2016 Jake Dube
#
# ### BEGIN GPL LICENSE BLOCK ###
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# ### END GPL LICENSE BLOCK ###

import bpy
from bpy.types import Operator

bl_info = {
    "name": "UV Tools",
    "author": "Jake Dube",
    "version": (1, 0),
    "blender": (2, 77, 0),
    "location": "UV maps in properties window",
    "description": "Some tools for uv maps that should already be in Blender.",
    "category": "UV"}

def make_active(name):
    uvs = bpy.context.scene.objects.active.data.uv_textures
    for uv in uvs:
        if uv.name == name:
            uvs.active = uv
            return
    print("Could not find:", name, "\n(this should never happen)")

def move_to_bottom(index):
    uvs = bpy.context.scene.objects.active.data.uv_textures
    uvs.active_index = index
    new_name = uvs.active.name

    bpy.ops.mesh.uv_texture_add()

    # delete the "old" one
    make_active(new_name)
    bpy.ops.mesh.uv_texture_remove()

    # set the name of the last one
    uvs.active_index = len(uvs) - 1
    uvs.active.name = new_name

class MoveUVMapDown(Operator):
    bl_idname = "uv_tools.move_uvmap_down"
    bl_label = "Move Down"
    bl_options = {"REGISTER", "UNDO"}

    def execute(self, context):
        uvs = context.scene.objects.active.data.uv_textures

        # get the selected UV map
        orig_ind = uvs.active_index
        orig_name = uvs.active.name

        if orig_ind == len(uvs) - 1:
            return {'FINISHED'}

        # use "trick" on the one after it
        move_to_bottom(orig_ind + 1)

        # use the "trick" on the UV map
        move_to_bottom(orig_ind)

        # use the "trick" on the rest that are after where it was
        for i in range(orig_ind, len(uvs) - 2):
            move_to_bottom(orig_ind)

        make_active(orig_name)

        return {'FINISHED'}

class MoveUVMapUp(Operator):
    bl_idname = "uv_tools.move_uvmap_up"
    bl_label = "Move Up"
    bl_options = {"REGISTER", "UNDO"}

    def execute(self, context):
        uvs = context.scene.objects.active.data.uv_textures

        if uvs.active_index == 0:
            return {'FINISHED'}

        original = uvs.active.name
        uvs.active_index -= 1
        bpy.ops.uv_tools.move_uvmap_down()
        make_active(original)

        return {'FINISHED'}

def uv_tools_addition(self, context):
    layout = self.layout
    col = layout.column(align=True)
    col.operator("uv_tools.move_uvmap_up", icon='TRIA_UP')
    col.operator("uv_tools.move_uvmap_down", icon='TRIA_DOWN')

def register():
    bpy.utils.register_class(MoveUVMapDown)
    bpy.utils.register_class(MoveUVMapUp)
    bpy.types.DATA_PT_uv_texture.append(uv_tools_addition)

def unregister():
    bpy.utils.unregister_class(MoveUVMapDown)
    bpy.utils.unregister_class(MoveUVMapUp)
    bpy.types.DATA_PT_uv_texture.remove(uv_tools_addition)

if __name__ == "__main__":
    register()

This add-on (at the time of this writing) simply adds two buttons below the uv maps list like this:

Just tried it, and it's working great :)

Thanks, this is very good. The ability to re-order the UVs is very useful for people who are importing the file into Unity. Some workflows require UVs in the following order: texture, baked lighting, realtime lighting. So the additional UVs can just be spare UVs for debugging. It's useful because the process of generating the light UVs involves a lot of trial-and-error to get right so it can be used by the lighting software, so this tools makes the process much easier.

@ŠtefanSchindler Thanks. TTTTTTa You're welcome! Please consider accepting Stefan's or my answer. I totally understand about Unity as I have done most of my Blender work for developing game assets. I don't know why I didn't do this originally as it would have been a big help rather than the messy way of doing it manually.

So I'm pretty annoyed I needed to do this. 3 years later and no one can adjust the index of the uv maps. This seems like a must have feature when doing any sort of remapping with a game engine that looks at map index. However I'm very thankful this addon still works. Thank you!

Sorry, but this only seems to move the names, it doesn't seem to move the UV data. I don't find the function that takes into account the UV mapping that on each uv_layers (The name of the api of blender 2.8+)
To be clear, this scripy does not seem to take into account that each UV layer can have different coordinates. It seems to change only the name of it. If this is confirmed, be careful as it may eliminate important UV coordinates

@NoobCat This is not written for 2.8. Like any script written for 2.7x, I don't know what consequences it will have if you just try to run it in a more recent version.

Certainly, I am aware of this. in any case, this code is "Dangerous" for both blender 27x - or blender 2.8x as it changes the names and does not iterate the coordinates contained in the slots of the UV maps, therefore each map created will have nothing to do with that previously deleted. Maximum attention to this script as it could damage the work of UV manipulations previously created

@NoobCat No, Blender automatically will copy the currently selected UV map when you make a new one. No need to do that explicitly when using bpy.ops command as I did here. I've got to ask: have you tried this? I used it for years without issues. The "algorithm" is what is shown here if you are curious: https://blender.stackexchange.com/a/67268/28015

Actually it seems to be as you say, I found this strange, but correct, I will have to withdraw this comment, I felt compelled to put a message as I feared for this code

There is a little trick to it. When you have selected one UV Map and hit the plus button it duplicates the currently selected UV Map and puts it at the end.
So here are steps needed in order to reorder the order of UV Maps :

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

OK, thanks. That's a nifty trick. I wonder why there isn't just an up/down arrow on the GUI. One question: Why do you recommend to remove the ".001" suffix? Is there a reason?

I wonder too why there isn't up/down arrow, maybe because only few users need it. If you would leave the name as "UVMap.001" it would be a new UV map and all places where it was previously referenced as "UV Map" would be marked as the UV Map is missing. If you rename it to the same name as the original then all references are kept.

@ŠtefanSchindler I think I'll write an add-on that solves this problem :-)

@pycoder nice, good luck :)

@ŠtefanSchindler Thanks, take a look.

Modified for 2.8
import bpy
from bpy.types import Operator

bl_info = {
    "name": "UV Tools",
    "author": "Jake Dube (modified by Denis Khomenko for 2.8)",
    "version": (1, 0),
    "blender": (2, 80, 75),
    "location": "UV maps in properties window",
    "description": "Some tools for uv maps that should already be in Blender.",
    "category": "UV"}

def make_active(name):
    uvs = bpy.context.active_object.data.uv_layers  #bpy.context.scene.objects.active.data.uv_textures
    for uv in uvs:
        if uv.name == name:
            uvs.active = uv
            return
    print("Could not find:", name, "\n(this should never happen)")

def move_to_bottom(index):
    uvs = bpy.context.active_object.data.uv_layers #bpy.context.scene.objects.active.data.uv_textur
    uvs.active_index = index
    new_name = uvs.active.name

    bpy.ops.mesh.uv_texture_add()

    # delete the "old" one
    make_active(new_name)
    bpy.ops.mesh.uv_texture_remove()

    # set the name of the last one
    uvs.active_index = len(uvs) - 1
    uvs.active.name = new_name

class MoveUVMapDown(Operator):
    bl_idname = "uv_tools.move_uvmap_down"
    bl_label = "Move Down"
    bl_options = {"REGISTER", "UNDO"}

    def execute(self, context):
        uvs = bpy.context.active_object.data.uv_layers #context.scene.objects.active.data.uv_textures

        # get the selected UV map
        orig_ind = uvs.active_index
        orig_name = uvs.active.name

        if orig_ind == len(uvs) - 1:
            return {'FINISHED'}

        # use "trick" on the one after it
        move_to_bottom(orig_ind + 1)

        # use the "trick" on the UV map
        move_to_bottom(orig_ind)

        # use the "trick" on the rest that are after where it was
        for i in range(orig_ind, len(uvs) - 2):
            move_to_bottom(orig_ind)

        make_active(orig_name)

        return {'FINISHED'}

class MoveUVMapUp(Operator):
    bl_idname = "uv_tools.move_uvmap_up"
    bl_label = "Move Up"
    bl_options = {"REGISTER", "UNDO"}

    def execute(self, context):
        uvs = bpy.context.active_object.data.uv_layers  #context.scene.objects.active.data.uv_textures

        if uvs.active_index == 0:
            return {'FINISHED'}

        original = uvs.active.name
        uvs.active_index -= 1
        bpy.ops.uv_tools.move_uvmap_down()
        make_active(original)

        return {'FINISHED'}

def uv_tools_addition(self, context):
    layout = self.layout
    col = layout.column(align=True)
    col.operator("uv_tools.move_uvmap_up", icon='TRIA_UP')
    col.operator("uv_tools.move_uvmap_down", icon='TRIA_DOWN')

def register():
    bpy.utils.register_class(MoveUVMapDown)
    bpy.utils.register_class(MoveUVMapUp)
    bpy.types.DATA_PT_uv_texture.append(uv_tools_addition)

def unregister():
    bpy.utils.unregister_class(MoveUVMapDown)
    bpy.utils.unregister_class(MoveUVMapUp)
    bpy.types.DATA_PT_uv_texture.remove(uv_tools_addition)

if __name__ == "__main__":
    register()

just go to the GitHub repo like I said in my answer...that's what will get updated

Another variation with options to sort UVs by name

# ### BEGIN GPL LICENSE BLOCK ###
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# ### END GPL LICENSE BLOCK ###

import bpy
from bpy.types import Operator

bl_info = {
    "name": "UV List Tools",
    "author": "Jake Dube, cdeguise, bovesan, APEC",
    "version": (1, 1),
    "blender": (2, 80, 0),
    "location": "UV maps in properties window",
    "description": "Some tools for uv maps that should already be in Blender.",
    "doc_url": "",
    "tracker_url": "",
    "category": "UV"
}

def make_active(name):
    uvs = bpy.context.view_layer.objects.active.data.uv_layers
    for uv in uvs:
        if uv.name == name:
            uvs.active = uv
            return
    print("Could not find:", name, "\n(this should never happen)")

def move_to_bottom(index):
    uvs = bpy.context.view_layer.objects.active.data.uv_layers
    uvs.active_index = index
    new_name = uvs.active.name

    bpy.ops.mesh.uv_texture_add()

    # delete the "old" one
    make_active(new_name)
    bpy.ops.mesh.uv_texture_remove()

    # set the name of the last one
    uvs.active_index = len(uvs) - 1
    uvs.active.name = new_name

class MESH_OT_uv_down(Operator):
    bl_idname = "mesh.uv_texture_down"
    bl_label = "Move Down"
    bl_options = {"REGISTER", "UNDO"}

    def execute(self, context):
        uvs = context.view_layer.objects.active.data.uv_layers

        # get the selected UV map
        orig_ind = uvs.active_index
        orig_name = uvs.active.name

        if orig_ind == len(uvs) - 1:
            return {'FINISHED'}

        # use "trick" on the one after it
        move_to_bottom(orig_ind + 1)

        # use the "trick" on the UV map
        move_to_bottom(orig_ind)

        # use the "trick" on the rest that are after where it was
        for i in range(orig_ind, len(uvs) - 2):
            move_to_bottom(orig_ind)

        make_active(orig_name)

        return {'FINISHED'}

class MESH_OT_uv_up(Operator):
    bl_idname = "mesh.uv_texture_up"
    bl_label = "Move Up"
    bl_options = {"REGISTER", "UNDO"}

    def execute(self, context):
        uvs = bpy.context.view_layer.objects.active.data.uv_layers

        if uvs.active_index == 0:
            return {'FINISHED'}

        original = uvs.active.name
        uvs.active_index -= 1
        bpy.ops.mesh.uv_texture_down()
        make_active(original)

        return {'FINISHED'}

class MESH_OT_uv_a_to_z (Operator):
    bl_idname = 'mesh.uv_texture_a_to_z'
    bl_label = 'Sort A to Z'
    bl_description = "Sorting UVs by name (A to Z)"
    bl_options = {"REGISTER", "UNDO"}

    def execute(self, context):
        uvs = context.view_layer.objects.active.data.uv_layers
        orig_name = uvs.active.name

        for j in range (len(uvs)):
            for i in range (len(uvs)-1):
                uvs.active_index = i
                temp_name = uvs.active.name
                uvs.active_index = i+1
                if uvs.active.name < temp_name:
                    bpy.ops.mesh.uv_texture_up()

        make_active(orig_name)

        return {"FINISHED"}

class MESH_OT_uv_z_to_a (Operator):
    bl_idname = 'mesh.uv_texture_z_to_a'
    bl_label = 'Sort Z to A'
    bl_description = "Sorting UVs by name (Z to A)"
    bl_options = {"REGISTER", "UNDO"}

    def execute(self, context):
        uvs = context.view_layer.objects.active.data.uv_layers
        orig_name = uvs.active.name

        for j in range (len(uvs)):
            for i in range (len(uvs)-1):
                uvs.active_index = i+1
                temp_name = uvs.active.name
                uvs.active_index = i
                if uvs.active.name < temp_name:
                    bpy.ops.mesh.uv_texture_down()

        make_active(orig_name)

        return {"FINISHED"}

def uv_tools_addition(self, context):
    layout = self.layout
    layout.label(text="Active object UV Tools:")
    row = layout.row()

    col1 = row.column(align=True)
    col1.operator("mesh.uv_texture_up", icon='TRIA_UP')
    col1.operator("mesh.uv_texture_down", icon='TRIA_DOWN')

    layout.separator()

    col2 = row.column(align=True)
    col2.operator("mesh.uv_texture_a_to_z", icon='TRIA_UP_BAR')
    col2.operator("mesh.uv_texture_z_to_a", icon='TRIA_DOWN_BAR')

def register():
    bpy.utils.register_class(MESH_OT_uv_down)
    bpy.utils.register_class(MESH_OT_uv_up)
    bpy.utils.register_class(MESH_OT_uv_a_to_z)
    bpy.utils.register_class(MESH_OT_uv_z_to_a)
    bpy.types.DATA_PT_uv_texture.append(uv_tools_addition)

def unregister():
    bpy.utils.unregister_class(MESH_OT_uv_down)
    bpy.utils.unregister_class(MESH_OT_uv_up)
    bpy.utils.unregister_class(MESH_OT_uv_a_to_z)
    bpy.utils.unregister_class(MESH_OT_uv_z_to_a)
    bpy.types.DATA_PT_uv_texture.remove(uv_tools_addition)

if __name__ == "__main__":
    register()

Thank you for this code! thank you a lot !


text:
How to restore cloth presets?
Is there anyway to restore the Blender default Cloth settings?
Or is there anyway to find what the default settings are?
I didn't realize at the time that by changing the values I was overriding the default values.
Using Blender v2.76.

Ok, thanks. That worked -- it restored the default values. For some reason I though they were overriden, apparently they are not overriden permanetly.

To restore default settings of presets choose them again from the dropdown list (this can be done not only for cloth presets, but for other presets as well). Note that any already made changes will be lost.

This won't work if you changed any preset settings and then saved your User Preferences; new settings will overwrite default ones.          Note that preferences were separated from startup file.

If attempting to restore cloth preset after its deletion most likely you will need to install Blender once more (if you haven't saved backup of .py files with settings before deleting them) because file is being deleted as you press 'minus' button.

This is new to me. Thanks.

You can find it on official mirror
github
As cegaton mentioned, put the following files under /blender/blender version/scripts/presets/cloth/ folder
cotton.py
import bpy
bpy.context.cloth.settings.quality = 5
bpy.context.cloth.settings.mass = 0.300
bpy.context.cloth.settings.tension_stiffness = 15
bpy.context.cloth.settings.compression_stiffness = 15
bpy.context.cloth.settings.shear_stiffness = 15
bpy.context.cloth.settings.bending_stiffness = 0.500
bpy.context.cloth.settings.tension_damping = 5
bpy.context.cloth.settings.compression_damping = 5
bpy.context.cloth.settings.shear_damping = 5
bpy.context.cloth.settings.air_damping = 1.000

denim.py
import bpy
bpy.context.cloth.settings.quality = 12
bpy.context.cloth.settings.mass = 1
bpy.context.cloth.settings.tension_stiffness = 40
bpy.context.cloth.settings.compression_stiffness = 40
bpy.context.cloth.settings.shear_stiffness = 40
bpy.context.cloth.settings.bending_stiffness = 10
bpy.context.cloth.settings.tension_damping = 25
bpy.context.cloth.settings.compression_damping = 25
bpy.context.cloth.settings.shear_damping = 25
bpy.context.cloth.settings.air_damping = 1

leather.py
import bpy
bpy.context.cloth.settings.quality = 15
bpy.context.cloth.settings.mass = 0.4
bpy.context.cloth.settings.tension_stiffness = 80
bpy.context.cloth.settings.compression_stiffness = 80
bpy.context.cloth.settings.shear_stiffness = 80
bpy.context.cloth.settings.bending_stiffness = 150
bpy.context.cloth.settings.tension_damping = 25
bpy.context.cloth.settings.compression_damping = 25
bpy.context.cloth.settings.shear_damping = 25
bpy.context.cloth.settings.air_damping = 1

rubber.py
import bpy
bpy.context.cloth.settings.quality = 7
bpy.context.cloth.settings.mass = 3
bpy.context.cloth.settings.tension_stiffness = 15
bpy.context.cloth.settings.compression_stiffness = 15
bpy.context.cloth.settings.shear_stiffness = 15
bpy.context.cloth.settings.bending_stiffness = 25
bpy.context.cloth.settings.tension_damping = 25
bpy.context.cloth.settings.compression_damping = 25
bpy.context.cloth.settings.shear_damping = 25
bpy.context.cloth.settings.air_damping = 1

silk.py
import bpy
bpy.context.cloth.settings.quality = 5
bpy.context.cloth.settings.mass = 0.150
bpy.context.cloth.settings.tension_stiffness = 5
bpy.context.cloth.settings.compression_stiffness = 5
bpy.context.cloth.settings.shear_stiffness = 5
bpy.context.cloth.settings.bending_stiffness = 0.05
bpy.context.cloth.settings.tension_damping = 0
bpy.context.cloth.settings.compression_damping = 0
bpy.context.cloth.settings.shear_damping = 0
bpy.context.cloth.settings.air_damping = 1

I wish I have your brains for understanding codes.

source: Stack Exchange

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

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

sort: votes


text:
Chaning bone parent after automatic weighting
I've rigged my model and have used the automatic weighting option. After rigging I've modified some bone's parent to get better deformation results. But, should I re-parent the rig after doing this? Testing it out it seems everything is fine. Or rather the question is: does the rig hierarchy order affect the automatic weighting results?

The rig hierarchy will not affect the results, you should only need to correct the weighting if you move the bone.
The mathematics behind this effectively first transforms each each vertex by each bone that it is weighted to, and then uses those weights to combine the transforms from each bone proportional to the vertex weight.

Thank you for putting my mind at ease by confirming this. As being fairly new to rigging, I just wanted to be assured I wasn't overlooking something that might come back to bite me.

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


text:
Lock/Unlock all vertex groups weights
I have many Vertex Groups created. I would like to be able to lock/unlock all vertex groups instead of having to click the "lock" icon on all vertex groups individually. Is there anyway of doing this? Or does anyone know of a plugin or add-on which exists to perform this?

You can do this as shown below:

Thank you. I was not aware of that particular button until just now. Have to wait 3 minutes to mark the answer as accepted for some reason.

@TTTTTTa no worries, I'm glad I was able to help :)


text:
Keep bone rotated in-between two other bones?
I would like to keep a bone rotated in-between Bone 1 and Bone 2, shown in the screenshot. What types of constraints do I need to add to the bone to accomplish this? What about the parenting?
I have tried numerous combinations and cannot figure out how to accomplish this.

Actually, I think I figured it out. I parented it to Bone 2. And added Copy Rotation constraint from Bone 1 in LOCAL space with 50% influence.

While the method you mentioned works, it can get messy especially if you want more influences on one bone. Here is a method which is simple and easy to read.
An advantage is, that the hierarchy and bone orientation doesn't matter since it uses World Space constraints.

Duplicate the between bone and rename it with suffixes of the other bones.

Add Copy Rotation constraints from both duplicated joints onto the between joint.
Set the influence of the second copy rotation constraint to 0.5. The between bone is now equally influenced by the other two.
Parent the between_end bone to the end bone.Parent the between_start bone to the start bone.The between bone is now influenced by the original bone. But we're still using World Space constraints but don't have to worry about the orientations.

The rig holds various poses. Parenting can be changed freely as long as nothing is parented to the between bone (cyclic dependency).

The rig will break, if the angle of the original bones is more than 180°.

I recommend using World Space constraints with duplicates, because you are free to change the orientation later on. With local space constraints the bones have to be oriented the same, which is not always given.

Ok, thank you. I tried your approach and it is working now. Do you generally recommending avoiding using constrains that operate in local or pose space? Is it best practice to try to operate in World Space?

@TTTTTTa I added a last paragraph concerning local space constraints. There are several other reasons, but if your method works, use it. If something breaks after changes later on, double check the constraints and parent relations.


text:
Don't show hidden triangles in Object Mode
In Edit Mode, I've hidden some triangles. But when I switch back to Object Mode, the entire mesh is rendered. Is there a way to not render hidden triangles when in Object Mode?

You could assign the vertices to a vertex group and then use a mask modifier to hide the vertices.
By adjusting the visibility settings of the modifier you can also use it to hide the vertices in edit mode or only hide them when rendering.


text:
Modifier application order
What order are these modifiers applied in?
I would think the Armature would be applied first, followed by Lattice. Or is it the other way around?

Modifiers are applied from top to bottom

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


text:
Pivot point problems when "adjust edit cage to modifier result" selected on amature modifier
I have an armature with the "adjust edit cage to modifier result" option selected on the modifier. The problem is the when I go into edit mode and select a face, I cannot get the pivot point to be the individual origin or median point.

Another thing regarding this: the "cursor to selected" option in the Snap window does not move the cursor to the selected face.

That's how blender works, it could/should be reported as a bug.
The mesh is deformed to match the armature during edit mode but the manipulator widget doesn't get the same deformation. If you toggle the edit cage display on/off you should see that the widget stays in the undeformed location of the selected face.
The same thing is happening with snapping the cursor.
While the widget is drawn visually in the wrong location it still functions correctly, as do the keyboard shortcuts G,S,R.


text:
Lightmap Pack: Vertices highlighted in bright red
I'm attempting to use the Blender built-in Lightmap pack when unwrapping a mesh. In the UV window, some vertices are highlight in bright red. What does this indicate? I assume this must be indicating some type of error.

Those are pinned vertices, to unpin use Alt+P when the vertices selected in UV/Image Editor.

Ok, thanks. I have pinned them by accident.


text:
View extents (scale to fit render window)
I'm trying to build an automatic renderer using Python, loading lots of OBJ files one-by-one and rendering the results.
I can load the files no problem, but because they are different sizes, I need to either:
1. Change the objects to the same size, or
2. Move the camera so the object fits
I can't seem to get either option to work!
Thus far, the best option seems perhaps to use bpy.ops.object.dimensions and then scale, but I can't seem to get the x/y/z dimensions out of object.

dimensions is a property of object so you access it with object.dimensions not as a call to an operator. As a list of 3 values you can get the largest one with max(object.dimensions), or you can look at each value with object.dimensions.x
import bpy

obj = bpy.context.active_object

maxDimension = 5.0

scaleFactor = maxDimension / max(obj.dimensions)

obj.scale = (scaleFactor,scaleFactor,scaleFactor)

This assumes you are starting with a scale of 1.0. If not then you may want to use bpy.ops.object.transform_apply(location=False, rotation=False, scale=True) before starting.

It doesn't take the camera settings and distance to camera into account. If it's supposed to fit all objects into camera view, it will take quite some more effort. Operators like bpy.ops.view3d.view_all() fit the objects into viewport, but not camera view :(

Thanks - this is essentially what I've had but when I try to use max I get the error TypeError: 'BPyOpsSubModOp' object is not iterable, and when I try to access the component x I get the error AttributeError: 'BPyOpsSubModOp' object has no attribute 'x'.

You don't access object data through operators - that is don't use bpy.ops.object in front of dimensions. Once you import and the imported model is selected bpy.context.active_object.dimensions will be the dimensions of the active object. If the object isn't selected it may be easier to access it by name - bpy.data.objects['new import'].dimensions.

Thanks! I still really don't understand the difference between ops, context, and data but your suggestion using the named object worked the trick!

I thought I'd clarify that as a question


text:
How do I save a blend in the 2.79 format in 2.8?
Files written in the 2.79 format are openable by Blender 2.8, but backwards isn't possible.
Is it possible to save a file in 2.8 in the 2.79 format so that it is openable by both versions?
I know one such workaround is simply to save in an exported format (ie. FBX or DAE) and then re-import it into the older version, but I was wondering if there was a way to keep it as the .blend file format?

You could try with "Append"

Append works fine. Tested.

This will seem crazy, but, select all of your object and CTRL+C on 2.80, open 2.79 and PASTE (ctrl+V) right on the viewport. I know right? I saw it on a blendCon

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


text:
Hair Direction in Cycles ParticleSystem
I am trying to get hair to come from one side of my plane but it is being emitted from both.

Could you post a screenshot of your particle settings or a .blend? Without more info it's hard to say what cause is.

You can upload a blend e.g. using a service like: pasteall.org/blend/ and add the link here.

Feel free to mark the answer below as accepted

The object origin of the cylinder is used as the emission point. In your .blend,  the origin of the cylinder is in its center, so each particle instance of the cylinder is exactly half on the top and half on the bottom.
To set the origin to one end:

Select the cylinder and enter edit mode (Tab)

Select one end of it and press ShiftS> Cursor to selected:

Exit edit mode (Tab) and press CtrlShiftAltC> Origin to 3D cursor:

I will never call you a conjurer of cheap tricks. Thanks!

@Anarchitect If this answered your question, feel free to mark it as accepted :)


text:
Scaling has no effect in Blender Game Engine
I scaled an object up in Object mode, but when I start the game engine it returns to a much smaller size. This occurs when the object is a Soft Body, when I set it back to Static or to Rigid Body for physics it scales properly in the engine.
I have tried clicking the "Apply Transformation" button in Rigid Body Tools under the Physic tab in the object toolbar but it doesn't have a noticeable effect. (There isn't a Soft Body tools that I can find).
Is there a way to have scaling work for a soft body or do I need to go back and create a new larger mesh?


text:
Scripting - vertex won't extrude
I'm trying to make a simple script that extrude vertex in random ways,
all works without extrude.
I do not know if it's good I wrote, but I do not know how to extrude vertex to the location of the cursor.
Any idea what is wrong with my code and how to fix it?
I run script in Edit mode with one vertex on the scene.
import bpy
import random

#generate random number
def RN():
    return int(random.random()*400)/20

for i in range(1,100):
#set 3d cursor to random location
    bpy.context.scene.cursor_location = (RN(),RN(),RN())
#extrude vertex to cursor location - doesn't work
    bpy.ops.mesh.dupli_extrude_cursor(rotate_source=True)

Invoking the bpy.ops.mesh.dupli_extrude_cursor(rotate_source=True)
 operator leads to this error message in the console window:
wm_operator_invoke: invalid operator call 'MESH_OT_dupli_extrude_cursor'

Although is is exactly what is printed in info header when manually extruding a vertex.
I can't tell why this doesn't work but try this:
import bpy
import random

#generate random number
def RN():
    return int(random.random()*400)/20

verts = []
edges = []
faces = []
for i in range(1,100):
#set 3d cursor to random location
    verts.append(( RN(),RN(),RN()))
    edges.append((i-1,i))
edges.pop() # remove last edge
print( verts )
print ( edges )
mesh = bpy.data.meshes.new("rand_mesh")
mesh.from_pydata(verts, edges, faces)
rand_obj = bpy.data.objects.new("rand_object", mesh)
scene = bpy.context.scene
scene.objects.link(rand_obj)

I really don't know for what something like this could be useful:

See also
http://wiki.blender.org/index.php/Doc:2.6/Manual/Extensions/Python/Geometry

It has no execute() method, but the default operator context is EXEC_DEFAULT. You need to use INVOKE_DEFAULT to make it call invoke().
However, it doesn't work as expected: cursor stands for the user mouse, not the 3D Cursor, and it will thus only extrude correctly if you make the following code an operator and run it in 3D View context:
import bpy

for area in bpy.context.screen.areas:
    if area.type == 'VIEW_3D':
        ctx = bpy.context.copy()
        ctx['area'] = area
        ctx['region'] = area.regions[-1]
        ctx['space_data'] = area.spaces.active
        bpy.ops.mesh.dupli_extrude_cursor(ctx, 'INVOKE_DEFAULT', rotate_source=True)
        break

If you run it from the PyConsole or Text Editor instead, it will extrude to a point outside the viewport (towards where the mouse is on screen).


text:
Assigning a parent to mesh causes mesh to change location
I have an Empty, not located at the origin. When I parent a mesh to the empty, the mesh changes location. I don't understand this functionality in Blender.
Is there an option to prevent this from happening? Right now I make sure to leave the Empty at the origin to prevent the mesh from relocating during parenting.

How do you apply the parent? It looks like the object changes coordinates from global to local coordinates of the empty

In the lower right hand corner of the screenshot there is an input for "Parent". With the cube selected, I then choose the name of the parent, in this case is "Empty". Why, is there are better approach for doing this?

That's the problem, you're just switching the coordinates, instead select the cube then the empty while holding SHIFT button, and apply parent using CTRL+P

Ok, thanks that works now. I was going about it the wrong way.( Can someone please make that an accepted answer?)

it is like that, but isn't it weird? that "parent" field lets you choose an object... and it becomes the parent, exactly as when you do ctrl+P parenting... it is not so clear...


text:
Two 3d view windows: one in edit mode, one in object mode
I want to display two 3d view windows at once. But I want one to be in Edit Mode, and the other in Object mode. However, when I change the mode of one window the other 3d view window automatically changes. How can I make it so changing the mode in one window does not affect the other window?

The closest way I can think of is to open two instances of Blender, both showing the same Blender file, but the viewport will not stay in sync for long.

Hmm. It seems like this functionality could be useful. What I want to do is to gradually move some vertices until the rendered view is smoothed as much as possible. I want to it in realtime instead of just continuously toggling between edit mode and object mode. It sounds like currently there's no way of doing this.

Yeah.. I wanted this feature too. The proposed solution (Below) is unfortunately not helping. In my case I wanted to actually see the coordinate of a vertex (in edit mode) as I modify the object origin (in object mode) in another viewport.

I will assume you want to have one area in object mode for a clean and overlay free preview, while still being able to edit your mesh as usual.
This can be achieved by disabling the overlays and gizmos in the top right of the 3d viewport.
This way edit mode is not disabled, but you don't have any wireframes or selection highlights. This should work for any other mode as well.
If you need the other area to be in object mode I'm afraid that is not possible as far as I know.


text:
Material names missing
I finished joining meshes together. Before I closed Blender, I know the material names were appearing. Then I closed Blender and re-opened it. All of the material names are blank. It also appears Blender won't let me name the materials which are blank.

Switching back and forth between Cycles Render and Blender Render yields the same results.
Using Blender 2.77a

I was able to create a repro for this issue. The details are here: http://blender.stackexchange.com/questions/66114/material-names-missing

This was a known bug in 2.77a. https://developer.blender.org/T49228
I now installed Blender 2.78a and the issue is resolved by using the new version of Blender. The material is now saved and loaded correctly.

This was a known bug in 2.77a. https://developer.blender.org/T49228
I now installed Blender 2.78a and the issue is resolved by using the new version of Blender. The material is now saved and loaded correctly.

You are confusing Materials with Material Slots

Material slots are part of the mesh data and hold information about which face gets assigned which material
Materials hold the actul surface shading data (color, roughness, reflectivity, emission, etc.)

Material slots can't really be named and only hold face data.
In your case your mesh has several material slots where you can assign materials, but only one (the one with the name) really has one material assigned, the others are empty.
You most likely lost your materials when joining meshes and used as 'master mesh' an object without materials.
To get them back either go to an earlier version of the model (if you kept any saved) or try the backup file ##.blend1 or ##.blend2 if haven't saved over it yet, otherwise it will no longer hold a version with materials.

I can't reproduce what happened here again. There were five meshes that were joined. All of them had one material assigned in the slot. After the join, all the of the material slots were carried over to the joined mesh, so there is five in total. Why the material didn't carry over along with the slots makes little sense.

Not sure if this is quite the same as that which happened to me but I recovered each material slot name (for different surfaces) by expanding the menu slot just below your red square and selecting them back again, one at a time.  Select the face(s) in EDIT MODE, and click on the "Assign" button.

I tried what you said, it didn't work. Anyways I just re-created the materials again so this is not really that big of deal. I've been trying to reproduce what happened and can't, so maybe it was just a fluke. Or it's possible I accidentally unlinked certain materials by hitting the wrong keys and not realizing it. But I did find another topic related to the fact that to do something like this you need to save the file, close blender and re-open the file. http://blender.stackexchange.com/questions/5300/how-can-i-remove-all-unused-materials-from-a-file

Thanks for that dude. 'Material' vs. 'Material Slots'. Object mode vs Edit mode. You have to be in the right one to have the 'new material' button available. Clicking the 'Add material slot' little '+' doesn't add a new material. Groan thanks.


text:
What does this line in the Dope Sheet mean?
Every now and then I see this line in the dope sheet connecting key frames. What does this signify?


text:
Reset weight paint brushes to default values?
Unknowingly I've been changing the default values of the Weight Painting brushes. I would like to restore the default values. Is there way to do this?

I don't know if there is a way to reset it directly but you can append another one from another (default) blend file.

I'm not sure what you mean by "append another one".

Save a newly opened blend file somewhere (so that it contains the brush), then in the file you want the brush to be reset go to the file menu, then 'append', then go to the saved file, and in the brush directory, and select the brush

Ok thanks for the help. I appended the default brushes and deleted the old ones. This is not the first time I have accidentally changed default values. I guess Blender assumes you know exactly what you are doing. I made the same mistake with cloth baking presets before.

How did this happen? Did you save your startup file forgetting that you had changed the values? You should always be able to do File > Load Factory Settings to get an unmodified .blend file that you can then save and append from if things like this happen in the future.

It's not that hard for it to happen. Just create a new Blender file, select a weight paint brush. Change a setting. Save the Blend file. Next time you open the Blend file and select the brush, you get the brush that you changed, not the  brush with the default settings.


text:
Automatically update UVs when changing mesh
Is there a way in Blender to automatically update the UVs when performing modifications on mesh?
I have a model which I UV unwrapped. I then enter sculpt mode and make slight modifications to the mesh. But the UVs are not altered based on any changes made after unwrapping. This is causing slight stretching of the UVs.
I don't want to have to re-unwrap the model. Is there a way in Blender for the UV map to remain in-sync with any changes to the mesh?

No, I don't think there is, at least as far as I know. This is one of the main reasons I hate UV unwrapping so much and prefer whenever possible to use procedural textures and generated texture coordinates instead. Some operators do support this like Edge Slide and Vertex Slide family of tools, but support is limited to very few operators.

So it looks like the best solution is to select the vertices in the UV editor and choose UVs->Minimize Stretch?

Either that or unwrap only when you are done with modelling, as close as possible to final shape. Otherwise unwrap from scratch


text:
Select Entire Seam
I have a mesh with a continuous seam. Is there a way to select all of the continuous edges where the seam is? I tried using the ALT+SHIFT+RMB on the edge, but Blender is unable to select all of the edges at once due to the irregular shape.

You could always use select similar (Shift + G). That would select all by trait, so would work if it's the only seam.

I tried using that approach. Blender will select all the seams on the mesh instead of just that seam "island".


text:
Deleting Grease Pencil and grease pencil usage showing up in the Timeline
In the hierarchy I have "GPencil and GP_Layer". I would like to delete this from the hierarchy. But mainly, every time I use the grease pencil, Blender puts a lime-green line in the timeline. I would like to get rid of those too, or at least hide them in the Timeline.

I found this question, somewhat related: http://blender.stackexchange.com/questions/67761/is-it-possible-to-not-create-keyframes-automatically-when-drawing-with-grease-pe?rq=1    It shows how to delete the GPencil and GP_Layer and use the "Lock" the frame. So that solution solves my problem.

Also, I originally confused these lines as being keframes, and was confused because they weren't showing up in the Dope Sheet. Then I realized they were the Grease Pencil events showing in the Timeline. I would go into the Blender settings and change the Grease Pencil color in the Timeline to something else, so it isn't confused with a keyframe.


text:
What key goes to the next item in the outliner?
I've selected an item in the outliner. What key do I press to go to the next item in the outliner? When I hit the down arrow, Blender gives me an error "No more keyframes to jump to in this direction".

I don't think there is a way to change the selection in the outliner using the keyboard's arrow keys (use mouse click instead). The error message indicates that arrow keys are used to move along keyframes (placements set inserted keyframes), and you have no keyframes set in your configuration.

That's a bit odd, considering GUI lists can be navigated using the keyboard in almost all programs. Surprised than Blender doesn't support this basic functionality.

Small issue, considering all that Blender is able to do...

Thing is the outliner is not really a true "GUI List", it is just a pre-selection of the items in the 3D View, the fact that they appear as a list is just coincidental. Up and down arrows do work elsewhere like material slots or menu entries

I'm very surprised this isn't part of 2.80 either. This is something that I would find really useful, so I can concentrate on some other area of the screen and shift the outliner items by key press.


text:
Recommended modifier order
I have a mesh with the following modifiers: Lattice, Armature, Mask, and Mirror.
What is the recommended order for these modifiers?
The modifiers will only be applied during FBX export.

The recommended modifier order is the one you'd like it to be. If you want mesh to be affected by lattice on both its sides (mirrored and original) then you put Mirror below and Lattice above. If you want edits you make with lattice to be only on one side of the mesh put the Mirror above.

I guess my main concern then is the Armature modifier. Is it usually put in the beginning or end of the modifier stack?


text:
How do i texture an object composed of multiple sub-objects?
I created this little thing the other day:

and this is its hierarchy in Blender:

The current render is using multiple materials (main white plastic, yellowish part, black parts, and shiny disc) i would like for everything (except the disc) to share the same material and texture, am aiming to use a texture that is basically a bunch of squares that makes a color palette, and UV map the model so each object is using the correct color, (except for the disk that would probably need its own material cause its too shiny, but let's ignore that for now)
Knowing that my object will be used in a game (made with Unity), what are my options to achieve that.
PS:
for some reason i find myself afraid of merging objects, i just like the organization of having them separated, this is also kinda important when making games, so i mainly want to know if its possible for a bunch of objects to share the same UV map/texture
thanks!

Why not merge a copy of the objects, leave originals intact? Unwrap your meshes before merging then texture the joined copy

@DuarteFarrajotaRamos i thought about that, but like i said, am "afraid" of merging objects, i like the flexibility of having each object on its own, and for a game, say i want to "destroy" that music box and have each part fly somewhere, it would be easier to do it with an organization like this isn't ?
PS: am totally new to this so i might be 100% wrong so if you have any advice please share it :) thanks!

It's relatively easy to preserve your existing hierarchy by using vertex groups.  Create a different vertex group for each individual object, assign all verts to that object, and now each object is individually selectable even after joining.  (And if you want to blow it up, all you have to do is add appropriately named bones and use an armature.)

@Nathan oh!! i used Vertex groups a coupe of times before but exclusively for animation purposes, i'll give this a try! thanks

@Nathan just a question (am not home so i can't try this now) but suppose you create an object, say a simple cube, you enter edit mode, and create another cube which is gonna be a part of the original object, now you select the newly created cube and add it to a vertex group, if you start editing that 2nd cube, extruding and adding tons of new vertices, will the the vertex group be updated too ?

Most operations will try to be smart about it, interpolating where appropriate, but some things, like a vertex slide IIRC, aren't as smart.  Check the operators panel.  But for solidly painted groups like we're talking about here, anything short of creating new verts out of thin air (shift a, ctrl LMB) would be fine.

@Nathan your vertex group suggestion saved my day man :) https://imgur.com/a/uKQMWr7


text:
How to Bevel the vertical edge of a rectangle?
Am trying to remodel this :

And thought the best way to start is the with the interior part of the head, and started with a cube and "bevel it", the top part went fine but the sides are giving me this weird rectangle effect :

What am i doing wrong ?
Thanks

I guess you haven't selected the angle edges from bottom to top

can you please elaborate ?

I thought you wanted to create a bevel from bottom to top. If you only want to create a bevel on a part of this angle, I guess Blender tries to find the best way to create a correct topology: If it didn't create a triangle it would create a vertice between the two top vertices and it wouldn't give a good topology, here I created a bevel, then tried to find a solution to delete the triangle, as you can see it's not good topology: https://zupimages.net/up/18/27/9x6p.jpg   but someone certainly knows better than me on this topic


text:
2.8 How to Duplicate Collection without keeping it "linked"?
I don't quite understand the new "collection" workflow, if i have a Collection with a bunch of object, and duplicate that collection, the newly created collection seems to be "linked" to the original one, anything i do to any of them effects the other.
what am i missing here ?
thanks

I guess you need to first duplicate your object in the 3D View, then press M to put them in a new Collection

Unfortunately making the collection "Single User" or "Local" doesn't help either. Really keen to find out how this is supposed to work, cause right now it's pretty useless.

@moonboots, what about nested collections? If we do as you suggest then the hierarchy will be condensed into a single collection. This is just another example of how 2.8 is not as capable as people are praising it to be.

The feature to duplicate collections (without linking) has been available since commit e7ea99af1b0d933b9323be39d8b1c6f683bfba52. Therefore this feature was included in the release of 2.80 and subsequent versions.
There are two options in the context menu of the Outliner for duplicating collections, Duplicate Collection and Duplicate Linked.

The screenshot shows the context menu of the Outliner in version 2.81
Duplicate Collection calls the bpy.ops.outliner.collection_duplicate() operator and does precisely what you intend.

Recursively duplicate the collection, all its children, objects and
  object data.

The old behavior with the linked object data is now called Duplicate Linked which calls the bpy.ops.outliner.collection_duplicate_linked().

Recursively duplicate the collection, all its children and objects,
  with linked object data.

The problem lies that duplicated collections only duplicate the top collection in the hierarchy, and also just adds the objects to the duplicated collection instead of duplicating the objects.
The painful workaround, (when I refer to subcollections I mean all the collections nested in a top collection, and the collections nested in these nested collections, and so on)
1) Duplicate the hierarchy:
Duplicate the collection and then duplicate each subcollection, then you unlink the original subcollection, do this in a recursive way. to know if everything has been duplicated you compare to the original collection, all subcollections must have a .001
2) Duplicate the objects:
With all the hierarchy duplicated, then select the objects in the top collection and duplicate the objects (go briefly to viewport), now you have to select in each duplicated subcollection(the .001 ones) the original objects and unlink them, conversely, you select in each original subcollection(without .001) the duplicated objects and unlink them.
Now compare collections, all the objects in the duplicated collection must have a .001 and the original collection not.
This hierarchy duplication feature is being worked on, so the full duplication of collections will be easier
https://developer.blender.org/T58702
"We will likely add a "Duplicate Hierarchy" for this in the future, for now all this does is duplicate the collection, not its contents." I hope when the developer says "its contents" also refers to objects inside subcollections

Has there been any implimentation for the "Duplicate Hierarchy" feature yet? This seems so simple that I am in astonishment how there is no solution yet that just works.

Save your file with a new name as copy.
From your original file, append the collection of the copy
Done :)

This worked for me, it's a brilliant work around to Blender's broken design.

Tick everything in duplicate data and that's it.
By default, Blender doesn't copy material, curves and textures I guess.
https://docs.blender.org/manual/en/2.80/editors/preferences/editing.html#prefs-editing-duplicate-data


text:
How can I see the text output of a non-Geometry node?
is it possible to see the result of this multiplication as a text ? like a class console output if you're coding.

Thanks!

For this, simply use the Viewer node (can be found in the menu under "Output ").
The output is then visible in the Spreadsheet.
However, the evaluation of a node is always context specific. Therefore you would have to plug an additional geometry into the viewer node.

Thank you! this should do for now.


text:
Cycle 2.8 Cuda error at cuCtxCreate: Illegal Address
Am trying to bake a simple object, it has one material:

And a Texture node with the right image selected:

no idea though why the Texture slot when i select the object is always empty and shows nothing:

Now if i bake that for the first time it works like it should:

Now i don't touch anything, keep the same object selected, and hit Bake again,
That baked texture is all of a sudden empty, the baking stop after 1% and i get this message:
Baking map saved to internal image. save it externally or pack it
And the worst part is that the viewport Render mode stop rendering, its all gray

And if i just press F12 to render the whole scene, i get this error:
Cuda error at cuCtxCreate: Illegal Address
Any help please ?
Thanks!
PS:
If i restart Blender 2.8 , the same thing happens again, i can render as much as i want, but if i do a texture Bake, the first time it works, and after that this problem happens all over again.

so this seems like its a known bug that has already been reported
https://developer.blender.org/T59238

I was getting the same message in Cycles Cuda error at cuCtxCreate: Illegal Address. I had a Denoise filter in Compositing. I removed it, came out of Blender, got back in and put back the Denoise Filter - error fixed. I had to close and open for the fix. If you don't have the Denoise filter on look at other nodes you set up mainly in Compositing window. I don't think it has anything to do with the texturing nodes. Anyway, it requires more digging here to find out exactly why is this happening.


text:
How to tell Geometry Node to place one object next to another dynamically?
I come from a game development background and am not quite sure if this is the right way of thinking in Blender, but let's assume that i have the following tasks:

Create a tool that will generate procedural building, based on pre-made main parts:

Floor
Middle ground
roof

and each of these parts can also be created through a different Geometry Node, what i can't find is the follow:
If i create a Floor that is 3 meters high, what node should i use so that the Middle ground* start at 3 meters (right above the floor), and then after x-Middle grounds, the Roof should also be placed on top accordingly.
This is the easiest example that i can think of to solve my problem, but i will eventually need more complex setups that will detect "corners", for example if it's a grid based node, is there a way to detect "corners" and whole edges ? so that (x=0;y=n) gives you the cells of the first column of the grid.
Can anyone please point me at the right direction.
Thanks!

you can do it with this node setup:
(and although you might not wanna hear it: there is so "magic" checkbox or settings ...it is just easy math....)

Haha i wasn't expecting a checkbox either, but was basically looking for an "object reference" to use its data, Question: what's exactly the "Line" node doing in your setup ?

The line object helps me to "define" the height of the building. Since the line has as much vertices as you define in "count" i will instance then the cubes on that vertices.

I see, i downloaded the Blend file and the manually entered "2.1" value still feel like an issue to me, is there a way to automate that ? the problem is this, if you enter edit mod to the "middle" part and reduce its height, you get this issue: https://i.imgur.com/D7a2b9O.png  unless you play around with the 2.1 value, is there a way to automate that ? especially considering that the middle parts can be made out of a Collection which contains objects with different heights, i assumed ObjectInfo would help, but it gives the scale (1,1,1) when what i need is "Dimensions", any tips ?

Found it! i replaced that "2.1" value node with the Bounding Box Max value (https://i.imgur.com/FDtnQ6E.png), it does what i want now (https://i.imgur.com/zQDs9ml.mp4) , the roof still acting a bit strange but i'll find a way to fix it, thanks a lot @Chris !

Great! Would be nice if you could tap on the checkmark left to my answer if it helped you! Thank you!

Oh i did since the first comment but it said i have to wait for x-hours or something, it's accepted as the correct answer now, thanks again mate, i really appreciate it :)

You are welcome


text:
How to create hotkeys for specific modes that override the default ones?
"G" in object mode = move, while in Sculpting mode = Grab brush,
I want to edit the shortcuts for many brushes, but i'm having an issue, for example i want to remove the "S" key from the Smooth brush and assign it to the "Scrape" brush, but its not working, "S" is always smooth, even when i right click and remove shortcuts from it and add "S" to scrape, also, is there a place to see all shortcuts for every mode so that i don't accidentally override some important ones ?
thanks!

Maybe you know it already but if you go to edit menu>preference>keymap you'll have the choice of the shortcuts for every windows and mode. Also the trick I use is to right-click and assign shortcut when I'm navigating the menu bars.
Let me know if it works for you!
Cheers
Fred


text:
How to correctly drive a normal node with lamp rotation?
I'm trying to use drivers to allow a lamp rotation to dictate the direction of my normal node. The problem seems to be that the sun can rotate from 0-360 degrees, but the driver has a limit of 0-90 degrees, so the rotations do not match up. Is there any way around this? Thanks!

This is a bit tricky, since the value range of the normal vector is (-1, 1). But you appears to control it by object rotation, which circle range is from 0° to 360°. It doesn't make any sense to add drivers between them.
You can use Mapping node to control the Normal vector output, driven by the object rotation (in degrees or radians). However, Blender internally uses Radians instead of Degrees, that's why you'll see the driver value shows in both radian and degree system.
So, you need to do some radian calculation for the driver expression. In this case, on the newly added Normal node (with the "control ball"  UNTOUCHED), you need to add/subtract a half circle for it, which equals pi.

Example file:

The file has been deleted. Could you please re-upload? Also the formula here is very small and I cannot read it.

@PierreSchiller It actually lost... I just re-made it for you.

Thank you so much. So now it's downloadable again? Also, If I rotate the empty, the normal shading on the ball will change. But what if I turn the ball away from the empty? Will it detect the change from its current position to the empty's position?

I didn't add the visual axis mesh, which was intended for better visualization only, but you can still reference the widget. The drivers just control by the rotation, regarless the distance or position. But I think you can do that with driver in a different setting.

Oh man, it broke. The file is not working on current Blender 2.79b (daily dev).


text:
Mesh Curve not exporting properly to unity
I tried to export a curve which i turned into a mesh into unity. However the curve appears in an extremely bizzare shape in unity. How do i get unity to import it properly? (P.S. im a complete amatuer)

Have you applied rotation before importing in Unity?

What do you mean by "applying" rotation? How will rotating the model change the export?

In Object mode select the object and press Ctrl-A / Rotation. If this still happens when you import the file upload it to http://blend-exchange.giantcowfilms.com/ . It is not recommended to import objects with unapplied transformations this can cause a lot of problems.

Thanks! It turns out i can see the object in unity. i just needed to turn it upside down because the object is invisible from one side. Don't know whats up with that though :/ . Can i give you a +1 or something (im new to stack exchange).

you could also extrude the mesh 'E' a bit so that it becomes 3D. You could post your own answer. When you have 50rep you will be able to upvote. (I currently don't have the time to post a decent answer)

It turns out my model was 2d so it was invisible from the upper side. I just needed to rotate the model the other way to see the model. There was nothing wrong with the shape of the model. Thanks to stacker for his help.

Actually the first reson was that you haven't applied scale before exporting the mesh thus modifiers were acting on non-scaled version of model (and as such applying on export). See https://blender.stackexchange.com/questions/7298/why-is-it-important-to-apply-transformation-to-an-objects-data


text:
Why is mirror modifier not being applied symmetrically?
I can't figure out why the mirror modifier is being applied to the face that left or right of one it should be
As far as I can tell my origin point is centered and my mesh is symmetrical.
I have not moved my origin point nor moved the mesh in object mode.

it's hard to give you a good answer to your question without seeing the settings you used in the mirror modifier panel. Best idea is to upload a copy of your ~.blend file to Blend exchange or a similar site. One thing to consider, though, is whether you applied your scale and rotation. Also, looking closely at the figures above, the 3D cursor and the object origin are do not coincide exactly; the two items have a slight offset.

related: http://blender.stackexchange.com/questions/353/how-can-i-make-the-mirror-modifier-work-right/

My guess that your mesh is symmetric, but the symmetry axis is rotated. for example you rotated your Mesh in object mode. I am pretty sure that you did something like that, because you presumably used the default 32 vertices number cylinder, and in that case 4 vertices must be aligned  to the coordinate axis by default, if you add your object to the center of your world, without tweeking the Add circe tool option... so it should look like this:

My hint:
Delete your extrude.
Apply Mirror.
Rotate your object (in object mode), to make the axis "cut half" the edges. Like this:

Apply rotation (Ctrl-a)
Recreate mirror modifier, and you good to go.
In the future for similar objects, you should rotate circles/cylibders like this if you wan them have symmetric handlers.The general formula for rotation for blender circle:
360/vertices_number/2 (if you use degrees. You can write it directly to the rotate property field)
(it will not work on your current object, because it is already rotated)

I should have thought about ctrl A.  It seems to fixed the problem well enough.  The model still is slightly off but not enough that anyone will notice.  Thanks

@Warlord213 If the answer is adequate you can accept it.


text:
Connect vertical edge to angled edge
How do I connect the vertical part of my railing to the angled part?  I was wondering if there was a way to do this without just eyeballing it.  They are both part of the same object.

You may use the knife project tool. Duplicate the top face of the vertical cube (Shift+D), place it between two cubes, then separate the face (P). In Object Mode select the newly created plane, then the angled cube and press Tab to enter the its Edit Mode. Go to the bottom view, press Spacebar and type Knife Project. Delete the plane. Join objects with Ctrl+J. Join meshes in Edit Mode using Bridge Edge Loops operation. Finally dissolve the horizontal edge with X-->Dissolve Edges.

This is a great place for me to start using the knife Project Tool. When trying to follow this example it keeps projecting to the "top" of the angled cube? If you have time I could use some advise. Thanks in advance.

When using a knife project make sure you're in a bottom view. If you're in a top view it will project on top of the angled cube. To project on both sides check the Cut Trough checkbox in the Knife Project panel of a Tool Shelf.

That was it TYVM

Mind officially blown. Why did I not know this was a thing?

Thanks for the answer.  I was thinking about Knife project but I thought there might be  a simpler way.

I don't know of blender easy tools to do that, there is a way using booleans, but if you need a simpler solution, I can't help. Also, I suppose you just need to "snap" the vertical bar top face to the upper bar, not create a connected geometry from the two separate meshes.
Here is the method I said above: in this case, starting from this

I would go to side ortho view, and duplicate the vertical bar,

then either move or extrude this copy until it crosses the upper bar, and also scale this copy over X axis (eg: try scaling just a little down over X)
Then, apply to copy mesh a boolean with intersect to the upper bar (the scale over X we made before now helps the boolean), and apply.

This creates vertices in the copy mesh that may be later used to snap the original vertical bar vertices (extended or extruded).

After extending or extruding the top vertices of the vertical bar, snapping them to the copy mesh vertices, which are exactly at the intersection you need,

you can then delete the copy mesh.

Hth

That's interesting. Will definitely help in future projects.  Wish I could also mar you as a answer.


text:
How do I sperate an object while having both objects retain the same face?
When I pres p and separate the cube I want the face withe raise pyramid to be on the bottom part of the cube and also on the top.  I want the parts of the cube to fit back together.

I hope my question is clear enough to understand as I wasn't exactly sure how to phrase it.

Select the faces you want, then duplicate them with Shift+D. Offset in the z-direction if you want them to stay lined up (Shift+D, Z, move mouse, left-click to make it stick). Once you've done that, you'll have something that looks like this:

From here you can separate the selected faces from the object, then go down to the original and delete the faces you don't want. (Another option is to duplicate the object and delete the unwanted faces in each.)


text:
How can I subdivide this surface or what do I need to do to the surface to make it able to subdivide
I am building a tunnle. I used torus meshes to build the roof and sides and then just added a face to the bottom.
problem is that I want to subdivide it and can't seem to. When I try to just hit subdivide nothing happens. Then I tried applying sub-surface mod and the mesh deformed.

What can I do to the mesh to divide it up??

Please show your mesh in [edit] mode. If you have more than one, show the one that has the most problems.

Explanation
Probably that face used for the ground is an n-gon. It isn't possible to subdivide an n-gon directly to produce predictable results, all it does is add vertices to the perimeter.

On the left is a similar structure that has edges spanning to each opposite vertex. On the right the face was generated in one go by selecting all perimeter edges and pressing F to generate one face (an n-gon)

and that's OK until you try to apply a modifier like Subsurf, because you don't have any control over the way Blender internally constructs the n-gon geometry.

Solution
Judging by the geometry I see in your image, it might be possible to select the n-gon, then press Ctrl+F to get the faces menu and select option 'Triangulate Faces', this will make initial cuts. Then Ctrl+F again and select 'Tris to Quads`. This might produce the following geometry.

Realistically.
Once you get a bit more practice with Blender you'll probably approach making a tunnel in a different way.
An efficient way to make a tube/tunnel is to create a profile shape and then use that as a bevel object for a curve.


text:
How do I add keyframes to a newly created action with no associated objects?
So I'm writing an animation import script...
since animation bone names can differ from the armature's bones in question,
I want to create the actions and edit their group names manually, and then manually assign them to the armature.
The problem I'm having is I can create an unrelated action with unrelated groups, but the channels of those groups seem to require linked pose bones...
Since it's safe to say these pose bones don't exist, how can I assign keyframes to raw data?

The key concepts are as follows

animations are composed of fcurves
each fcurve has a data_path and maybe an index
each fcurve has multiple keyframe_points
each keyframe_point has a .co (coordinate), a .handle_left, a .handle_right, and an .interpolation.

You can see an example of an animation built using core python APIs at http://web.purplefrog.com/~thoth/blender/python-cookbook/animate-random-spin.html
I include an excerpt of the most relevant code:
def rig_quaternion_channel(action, channel, period, a, b):
    """
    This is heavy-duty voodoo to figure out what keyframes to use with sinusoidal easing
    to reconstruct a curve of the form
     a*cos(theta) + b*sin(theta)
     by converting it to the form
     c*sin(theta+phi)
    """
    c = sqrt(a * a + b * b)
    phi = -atan2(a, b)
    fc = action.fcurves.new(data_path="rotation_quaternion", index=channel)
    fc.keyframe_points.add(5)
    vals = [0, 1, 0, -1, 0]
    for j in range(5):
        kp = fc.keyframe_points[j]
        frame = 1 + ( phi / (2 * pi) + j / 4.0) * 2 * period
        kp.co = ( frame, c * vals[j])
        kp.interpolation = 'SINE'
        if 0 == j % 2:
            kp.easing = 'EASE_OUT'
        else:
            kp.easing = 'EASE_IN'
    fc.modifiers.new('CYCLES')

Mostly you care about stuff like action.fcurves.new , fc.keyframe_points.add, and kp.co= (frame,value)

Thank you, this really helped, but how do I link the fcurves with the bones once I link the action with the armature?

Figured it out, data_path has an object-context relation, and index is the value index of the vector at data_path.

Your data_path would be something like data_path="pose.bones[\"%s\"].rotation_euler"%bone_name.


text:
what is the default code for the operator.modal method?
So I'm working on an export script and need to implement some extra data...
I want to add the extra data when the file browser is open and remove the data when the browser is closed on cancel or export.
The problem is I don't know how the default modal method works, I want to keep the default code, but extend it with the .append and .clear methods for my added data.
So what is the default code for the modal method?

Well I managed to make something work with the ExportHelper.invoke source...
This is coming from not knowing about the invoke method because the example doesn't provide it let alone explain where to look for more info.
what I did to access the data was simply to use the invoke method and integrate and modify the code from ExportHelper into my class rather than inherit from it.
to supply the needed data, all I did was create a dedicated PropertyGroup initialized in the scene context, and when invoke was called, clear and update the CollectionProperty items with their associated index IntProperty items in the group.
there may be a better method than this, but it works for me:

I did the dialog with this at the end of invoke before returning {'RUNNING_MODAL'}:
context.window_manager.invoke_props_dialog( this, width=900 )

Would be nice if blender's api was documented as well as they claim it to be...

If you have got something working please add some details as to what you did so that if others have the same issue as you in future, they can use your answer to help them. At the minute, you can't learn much from this answer.

give me some time to actually get internet (I've only been on a phone)  and I'll really spice up this answer ;)

Still waiting for that expanded answer.

I don't have internet yet... I'm in a debt hole and hoping to be out of it sometime around February... I will try to see if I can write something to transfer to my phone and copy over... but my phone is not very good at handling code.

so I didn't add a src (too complex), but I did transfer the writing, I actually transferred the link from my phone first... hope it helps


text:
How do I Import/Export models with more primitives than triangles?
I'm writing a game engine using pyassimp, which .blend support isn't very good on...
I'd like to know what supported model format I could export to that supports primitives such as quad-strips and polygons.
I know Collada supports all of this, but unfortunately, libraries like pycollada (used by blender) are triangles-only.
Also, I wouldn't mind writing an exporter if anyone knows of a library.
(I've been searching google for months so this is just a shot in the dark)


text:
Is it possible to get the bounds of a compound object?
I'm trying to avoid calculating this with python because that would be slow, processing the vertices of each recursive compound mesh.
So is there a way to gather the transformed bounds of a tree of compound meshes??
I'm trying to use it for post vertex transformation of the root object.

The BGE does not even provide the bounding box on a single object. You need to calculate on your own.

Well ouch... you'd think the devs would know better... Or actually, maybe not, considering they think tables stand on walls (the 3rd dimension being Height instead of Depth)... Thanks for clarifying, and as if things weren't bad enough, I've just found out all sub-objects return their verts in local relation... so much for optimization. -.-

Btw, I'm not done with this, I'm working on a class which hijacks the proxy once and adds a few needed attributes, while applying some perfomance hackery to make the proxy methods as direct as the proxy itself. Once I finish, I'll post the class as my answer. (Warning! Due to the hackery, it will look ugly, but won't slow anything down)

Using a wrapper class, it's possible to calculate the total bounds of all sub-objects in a somewhat efficient manner.
(Now there probably are better methods, but this is the best I could think of)
When the sub-objects are added to the root object, wrap their vertex proxies with this class and store them locally:
class VProxy (object):
    """Make vertex proxies a little more usable."""
    __slots__ = ['owner', 'mesh', 'proxy', 'XYZ', '__eq__', ]

    def __init__(this, owner, mesh, matid, vertid ):
        this.owner = owner # mesh object can't be accessed from the mesh proxy.
        this.mesh = mesh # mesh proxy
        this.proxy = proxy = mesh.getVertex( matid, vertid )

        # now for some hackery
        this.XYZ = proxy.XYZ # direct access to the updated Vector object.
        this.__eq__ = proxy.__eq__ # compared as the vertex proxy it holds. (speedy)

        # more magic can be added if needed.

    getXYZ = lambda this: this.owner.worldTransform * this.XYZ
    getXYZ.__doc__ = "Gets the position of this vertex in world coordinates."

And in the frame, simply retrieve that local store and calculate the bounds:
x,X, y,Y, z,Z = sum(map( minmax, zip(*(itrans*subProxy.getXYZ() for subProxy in subVerts)) ))

Beforehand:
minmax = lambda axis: [min(axis), max(axis)]

Where subVerts is of course the collection for a particular sub-object, and itrans is the inverse of the world transform matrix for our root object.
Now as for performance, since getXYZ is a lambda, it's faster than a basic function, but overall still slow...
The only speed we get comes from the optimised Vector and Matrix classes.


text:
How to put together a driver with python
I'm trying to write a script to create the beginnings of a music visualizer but I'm having a hard time creating drivers to do it. My basic game plan is this:

Calculate frequencies and step sizes
For each frequency step, create a cube.
Create an empty to go along with it.
Do some transformations on the cube.
Add a driver to the cube.
Link the cube's Z scale with the empty's scale using drivers.
Create a material that also uses drivers to hook into the empty's scale and use that to animate stuff.
Bake sound to empty's scale.
Rinse and repeat until all cubes/empties/materials are created.

The reason I want to use drivers is that my previous approach was to bake the sound to the cube's Z scale then I had another script that would read that information for each frame and then keyframe the cube's material. This led to pretty big file sizes. Larger than it needed to be, anyway. So this time around I figured I'd get around that by using drivers. I've been playing around in the console trying to figure it out and this is what I've got so far:
bpy.ops.mesh.primitive_cube_add(location=(.5, -.5, 0)) # Create a cube
currentcube = bpy.context.active_object # Make sure we can keep track of this cube while we're working on it.
currentcube.name="cube.001"
bpy.ops.object.empty_add(location=(.5, -.5, -1)) # Add our control-freak empty.
currentempty=bpy.context.active_object # Make sure we can keep track of this empty while we're working on it.
currentempty.name="empty.001"
currentcube.dimensions = (1, 1, 5) # Do some transformations.
bpy.ops.object.transform_apply(scale=True) # Apply the transformations.
fcurve = currentcube.driver_add("scale", 2) # Add a driver to the scaling on the Z axis.
fcurve.driver.type="AVERAGE" # Default is SCRIPTED for some reason.
drivervar = fcurve.driver.variables.new() # Create a new variable on the driver.

And it's at this point that I'm stuck. dir() and autocomplete got me this far but now it's failed me and I'm having a hard time working my way through the docs.
I know drivervar is a DriverVariable. From the docs it looks like I need to add a new DriverTarget into targets, but it's read-only.
But that's okay because while organizing my thoughts and the random code bits I had been trying in the console I found out that there's already a blank target by default at drivervar.targets[0] and it's not just an empty array like I had assumed. I would like to thank everyone here for the wonderful help and expertise I'm sure you would have provided if I hadn't discovered this on my own.

This is a general function I use in many of my scripts for adding drivers. You're welcome to implement it in your own script. It's pretty general and supports inverse relationships between properties (if one property goes up, the driven property goes down by the same amount), and also adding functions to the scripted expression (such as sin, cos, max, round, radians, etc).
def add_driver(
        source, target, prop, dataPath,
        index = -1, negative = False, func = ''
    ):
    ''' Add driver to source prop (at index), driven by target dataPath '''

    if index != -1:
        d = source.driver_add( prop, index ).driver
    else:
        d = source.driver_add( prop ).driver

    v = d.variables.new()
    v.name                 = prop
    v.targets[0].id        = target
    v.targets[0].data_path = dataPath

    d.expression = func + "(" + v.name + ")" if func else v.name
    d.expression = d.expression if not negative else "-1 * " + d.expression

You can then use it to link you empty and cube's Z scale this way for instance:
cube  = bpy.context.scene.objects['Cube']
empty = bpy.context.scene.objects['Empty']
add_driver( cube, empty, 'scale', 'scale.z', 2 )

I do have to say, though, that if you want to link the empty and the cube's scale, all you need to do is parent the cube to the empty, no driver is required.
cube.parent = empty

Wow, that's a pretty impressive function, thanks. tbh I hadn't even thought of just parenting it but since I can't parent a material the same way I would have needed driver witchcraft and would have run into this problem which is pretty handily solved by your driver function, so thanks again.

@Technopath, I have rejected your edit for two reasons: 1. I tested the function and it works nicely in Blender 2.78, and: 2. The changes you've made mean that you always drive one object's property by the same property of another object - but the original design was to allow driving any property by any other property.

@TLousky Does this Python function work for Shapekeys as well?

This is important for scaling Audio Animation FCurve values that's been baked to the empty to some other geometry.

Is it not possible to directly use bpy.ops.ui.copy_as_driver_button() and bpy.ops.anim.paste_driver_button()? https://blender.stackexchange.com/questions/181797/how-can-i-use-the-copy-as-driver-and-paste-driver-functionality-in-python


text:
Controlling how deep a reflection goes in Cycles
If I want a reflection on a glossy surface to fade out after only a bit, how can I do that in Cycles? I have tried using a texture to regulate where to have a glossy shader and where to have a diffuse one. This however, doesn't work as the object casting the reflection is circular so a straight border as I get when using textures doesn't work.


text:
UV map either not unwrapping or is collapsing in a merge
I downloaded this model.  And I'm trying to add its textures.  I get to the eyes and for some unknown reason the UV for it is just a tiny little dot in the very bottom corner of the image texture.  I have tried to unwrap it and nothing happens.  I tried to scale the UV and nothing happens.  It just stays stuck there.  This happened to a previous model as well.  I merged two objects together and the UV for one suddenly turned into a small dot.  Which makes no sense as to why.  Other objects I merged had no problem at all.  It was just those two objects.
Right now the problem seems to be just the eyes but I haven't gotten to any other part of the model yet to be sure.
Blend file

The eyes unwraps fine, but because it has no UV seams the generic 'Unwrap' option doesn't work. Either add seams to it to use the normal 'Unwrap' option or use a different unwrapping option like 'Sphere Projection' or 'Smart UV Project.
More information about unwrapping spheres can be found here.

I tried smart unwrap and sphere projection but i just get some weird uv shapes.  The link is beyond my understanding of blender.  Everything else came with a UV and was hoping there was a way to figure out why this one UV doesn't appear like the others.  And I have no idea how the original UV for this looked like.  I don't think I can pull off the same UV shape that matches the texture that comes with the model.


text:
Blender closes on "loading" complex geometry and entering/leaving local view
Hello Everyone
I'm having an issue with a large project, and although I found a workaround, it's not ideal and I'd like to have a better understand of what is happening.
I've checked a lot of blender crash issues but I couldn't find anything related to this specific situation (it doesn't look like a crash, since it just closes).
I'm working on a complex architecture scene with more than 20 apartments, I got the original file from ArchiCad (or another BIM software) exported as an .obj, and I had no problem importing or whatever, I've been working on it for a couple of months now.
What I'm doing is mostly optimize geometry and UVs, then import each part to UE4 for real time rendering and VR. (just to let you know I'm not rendering in blender).
Due to the complexity of what I want to achieve in UE4, I have to work "on all fronts" and tend to keep different things on different layers, let's say:
Layer:

1 - Keep the original models there (4.7M tris)
2 - the original models with intended location and rotation (4.7M tris)
3 and 4 - mix of the models I'm optimizing (maybe 2M tris)
5, 6, 7 - Junk and not so important parts that might still be useful.

I work almost all the time with layer 3 and 4 on, sometimes I go back and forth to layer 2 to get specific details.
Now, what happens? Blender crashes very often in these situations:

1 - opening the project file - it doesn't open, it closes blender
immediately.
2 - leaving the local view - blender closes immediately.
3 - other things like right clicking objects in wireframe mode
(doesn't happen very often), let's keep this one as a side note.

I haven't found a solution but here's what I managed to do to be able to work on the file:
Most of the time I can open the file if I left it in local view, I made every object in every layer invisible and then I could leave local view just fine, and make objects visible again, HOWEVER, it still crashed a couple of times doing that.
I got all the objects visible again while in layer 3 and 4, but then I switched to layer 1 again and blender closed again. Then I tested again and it didn't crash.
My knowledge of what is happening is very limited (I know how to drive a car, I know nothing about mechanics or how to build one). But I'm assuming it is something related with this "loading" and "reloading" of geometry, as if it doesn't take its time to load, it just gives up and closes.
Some final notes:

It's a high end PC with i7-5960X@3.0GHz, 64GB ram, 2xSSD, GTX1080
latest Blender version, does not happen with any other project (much less complex)
Updated Windows 10, updated drivers
It doesn't look like a corrupted blend file, I've had that before, doesn't look the same.
I can't share the file.
The file is 1.1GB

I hope I'm providing useful and accurate information, this started happening a couple of weeks ago, and it's hard to keep track of everything that happens, let me know what other information I may provide.
If possible, I'll try and test it on my home computer and see if I have different results.
Thank you for your time and patience, appreciate your help.

Managed to clean the "utility" layers, keeping only 3 and 4, ~1.5M tris across all layers now, too soon to tell but seems to help, opening, loading, local view, etc.

These are all results of biting more than you can chew, your scene is too complex for your hardware/blender. I'd say you should be setting up a blend file for the final model you want to be exporting alone and nothing more. Everything else that is used as a helper should at best be referenced from an external file as link, and at worse removed completely.

I appreciate your feedback and I'll investigate links, but I'm not convinced that it could be "hardware" by itself. A complex scene can be many things, and I've worked with scenes up to 11m tris, maybe not so many objects but another type of "very complex".
I've since deleted all utility layers, keeping only my final models, and it happened again leaving local view to model something in detail, it has 1.6m tris right now, at this point, if it's hardware, then I know nothing.

May not be specifically hardware related, but Blender's limits themselves. Having 1.6m tris in one object is not the same as having it in several thousand objects, object count has a heavy influence in scene performance. Try to see if you can isolate the crash to one specific object by eliminating one by one. If you can do report a bug to the tracker.

Now that makes sense, the scene is fragmented in many objects (not thousands though), and several objects with messy geometry, but the original file was exactly like that. It's not realistic to look for a faulty object one by one, but I'll keep an open eye and review the geometry in my project.
In the meantime, debug mode only gives me the message "error exception_access_violation", I tried clean install, and previous options (i.e. not "Load UI") and minor things, I'm not replacing DDL's manually.
Eventually I'll make a system recovery and check if anything changed.

After a full system recovery (like OS image backup), the problem persists, so I manually copied the assets from the original file to a new one (very carefully to avoid crashing), and it still crashed several times, but I managed to identify one specific object that may be causing this. I couldn't properly "have a look" at it, but it seemed like a bunch of disconnected vertices/edges, I've deleted it and it doesn't happen anymore. I'll keep updating, the premise of this post was to have a better understanding of what is happening, I hope I'm not using stack exchange the wrong way.

Could you perhaps upload a blend file with just this one object that is causing a crash alone? Maybe we can see if we can recreate the crash or it is a system specific thing.

I want to confirm that it was one object in the whole file that caused all this trouble, once I managed to locate it and delete it, the problem doesn't happen anymore.
@Duarte Farrajota Ramos, I tried to get the object to another file, but it will crash when I "paste" it on a new document and I can't append the file, I can't even go to edit mode, but I ended up deleting everything else and keep only that object.
Layer 1 has the original object, layer 2 has it in the "new" location and rotation and layer 3 has the faulty object, which was edited somehow. This geometry is "junk" and it's supposed to be deleted regardless, I don't think I'd bother to edit this geometry, since the original file had a lot of useless geometry for the purposes of real time rendering.
Thank you very much, I narrowed it down due to your input.
Cheers
-John

Blend File Download


text:
Triangulating 3D Text
Im trying to create a triangulated .obj file with 3D text.
Problem is, after creating the text I can't find a way to properly triangulate it.
Converting it to a mesh only triangualte parts of it.
Is there a simple way to do something like that?
P.S Im a complete newbie with Blender :S
Thanks

You probably need to use remesh modifier (http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.62/Remesh_Modifier see text example in the page) and then you can use mesh > faces > triangulate

Go into edit mode after you create the object from text, select all with A and use CtrlT to triangulate. Alternatively, when exporting to obj, there is an option to triangulate on export in the tool shelf.


text:
Changing CPU to GPU destroy the 3D view look of a normal map blender 2.75rc2?
I use win 7 and blender 2.75rc2 and when I change the render to GPU then the normal map looks often destroyed and it ends that I see the  the seams on the model and a bad shading  !
1.
I use hd 7970 and that full featured so any one can confirm that ?
2.
i try to bake the normal map again but some Maps work some not .
Some baked normal Maps works different for example when  I change to non color in the Image texture node .
Some time it happens that they  Maps  have  lighter color goes pink sometime more blue , after saving to png Most time light pink but sometimes I can save the deeper blue non color baked normal map and blender preview show png with this Deep blue normal map.
i change nothing  wether  Position of high or low res model or on the baking Setting..
i can't upload the file sry bad conection only picture...
is it possible to upload direct a picture in this question or only links ?
Thx
Best regard ...happy blending


text:
Saving removes 'Device' option in Cycles Render
I was creating an animation in cycles render using GPU then I saved and opened the save but now the device option is gone and if I go to user preferences in system the compute device setting only has CPU. This has also some how made all my other cycles render saves not be able to use GPU. Thanks for any help.

I don't have auto-update enabled and I haven't updated the drivers for my GPU. I am using Windows 7. Also I when I create a new blender file it has the device option but when I save it and open it again it disappears and it makes me use my CPU.


text:
Emit Hair Particle from Center of Face
How can I emit objects from the center of a face, as shown?

When I try to emit from faces, they are randomly distributed.  None of the settings seem to allow for a placement of one object per face, evenly spaced.  This is how it looks:

As you can see, the objects are indeed spawning on the faces, but there are issues: some faces have multiple objects, others have none, and all are randomly positioned on their planes.
Emitting from vertices behaves in the desired fashion:

How can I achieve this behavior with face-centered object placement?

Related - http://blender.stackexchange.com/questions/45426/center-objects-with-particle-system

The number of Hair particles has to match the face count of your object, right?

Please see my related answer here: http://blender.stackexchange.com/questions/34937/how-to-spread-things-out-evenly

To make particles emitted evenly from each face's center set up the next things:

Uncheck Random in Particle System settings (which you already did, still for completeness).
Make sure the object which will be used as particle instance has origin in the center of its geometry.
If you don't this still will work but when scaling particles' size it will grow somewhat unexpected.
Set Particles/Face to 1 in Particle System settings (by default 0, i.e. automatic selection). This will mean that you ask particle system to emit only 1 particle per emitter's face.

This will work in a similar way for Emitter type of Particle System too.
Number of particles - in order all this to work it has to be not less than total number of faces of the emitter. It may be higher though (doesn't matter how much, Particle System will automaticallsy cut what's not needed).
This behaviour is less predictable if Even Distribution in Particle System settings is left being turned on. In order to make number of particles exactly fit amount of faces uncheck this option.

Now I realize that I was simply misreading one of the parameter labels - I had "Particles / Face" set to 32 thinking it was total number of particles.
Since this question was based on a simple misunderstanding, should I delete it?

@splic I think you shouldn't delete question because we all learn things, sometimes on errors, hence it can serve as a guide for further reference. Note that this site assumes providing useful information not only for questioner but also for future readers (like wiki).

thx for not deleting, I got reminded to turn of "random" because of this post.

A simpler alternative implementation of this design utilizes duplifaces.
Ensure that the duplicated object (in this case, the cone) has its origin at its base.

Parent the duplicated object to the host object.
Enable duplication faces in the object tab of the parent object.
Scale and rotate the child object if necessary.
Make the duplicates real.
Delete the base child object.
Join the duplicates to the host if desired.


text:
How can I cast artificially darker shadows?
I want to make certain shadows more prominent (using Cycles) without further illuminating the rest of the scene.
Example: I have a simple studio with a bowl of fruit and 3-point lighting.  The light looks great so I don't want to change it but I want the bowl to cast a darker shadow on the ground (without dimming the back-light).
Alternatively, and this would be really cool, an anti-light source.  Like a spot light that throws darkness instead of light. (Am I crazy for wanting this?)
Thanks!

You have three options.

You could add a light that is only visible to the shadow path, so it won't add any light, but it will cast shadows.  If you're happy with the scene otherwise, you should duplicate one of the existing lights and move it forward or back just a touch.
Another option is to add a "negative light", where you add a light with a color of white, and a negative value for the strength.  There aren't such things in real life (except maybe black-holes) but for some lighting effects it is a neat trick to add darkness.
Lastly you could do something with render layers, and render passes to get the shadow on it's own render layer and then control how dark it is during composting.

To make a negative lamp in cycles you must set the Strength to a negative number. Setting it to black will effectively disable it.

Ah, yes. edited to fix my answer.

If you are using Cycles and just want to make all shadows in the scene darker, you can simply use the new "Clamp Indirect" option. By setting it to a very low value (eg. 0.01) you can minimize the amount of indirect light that brightens shadows, thus making them darker:

Compositing:
You could also use Compositing:
By enabling the AO and Shadow passes in Renderlayers > Passes:

You can use these in the compositor to darken parts of your image. For example:

You can achieve a wide variety of effects with the compositor and render passes (this is only a basic example). If you use renderlayers you can do even more, such as only affecting the shadows cast on the floor plane (see this question).
A nice advantage to using compositing is that you can tweak things without re-rendering.
Rendering:
Another thing you can try that hasn't already been covered by the other answers is Bounces:
Here is an example comparing 0 to 3 glossy and diffuse bounces (Render settings > Light Paths > bounces):

Note that you can also set the bounces per-shader with the lightpath node.
Disabling Caustics can also result in a slightly darker image.

You can modify the materials properties of the table so that the shadows cast on it are darker.
If you turn down the shader for 'ambient' and turn it up for 'diffuse' then you will have your higher contrast shadow. You will also be able to do this without adding contrivances to your scene (e.g. magic invisible negative lights).
info here:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Materials/Properties/Ambient_Light_Effect


text:
3D Knife Project / Boolean Cut
Say that I have two intersecting cones:

Is there an easy way to cut the contour of this intersection into the mesh of one of the cones?
While I do have a functional workflow (see answers), it is quite cumbersome for complicated geometries.  Are there any other workflows to achieve this "3D knife cut"?  I could see potential for this as a 4th mode for the Boolean modifier.

Here is one solution, though it is destructive and quite convoluted:

Duplicate the base cone
Boolean "difference" one copy with the intersecting cone
Boolean "intersect" the other copy with the intersecting cone
Join the two cone halves together
Merge vertices and delete interior faces

Here is the resulting geometry, as desired:

I wouldn't say it's convoluted - I was able to reproduce your result in less than 2 minutes by following your steps. Well done!