text:
How can I prevent my text object from flickering?
I have a short animation involving two text objects and blender internal. They have a shadeless black material and simply pop on screen in front of another shadeless material, this one white. The objects are not close enough together for any intersections.
The final render shows the text flickering in and out of existence. I also noticed that other curve objects like the rope of my price-tag, display a strange fragmentation where they come close to intersecting (but don't). I am really mystified by this one.
If someone could try to reproduce my issue the blend file is attached and I'd appreciate any comments trying to narrow down the issue. Thanks!
-Jesse

Blend:

The problem seems to be because of your camera's clipping options.

You have these starting from 1mm and continuing to 10km, while limits closer to the actual visible range of your scene would be more sensible.
I'm cutting some corners about the actual math involved, but basically the way these settings work, is that the range you have set is divided into different distance steps to the camera, within possible computing precision, when determining what things are in front or behind other things. There is limited precision in this rendering code for this distance information, so bigger range for the camera clipping means bigger steps in comparing distances, so objects with only a small distance between them might end up in the same distance step and go in the wrong order.
Having smaller clipping range makes also these steps smaller, so the rendering code is able to differentiate between smaller distances as well. Note that there's a lot more of this precision near the "near" plane than near the "far" plane, so increasing the "Start" value might have even more impact than reducing the "End" value, even if the amount you change it is far less.
A range from 1m to 300m or so would be ok for your scene.

Thanks for the thorough explanation! That's great and solved my issue. I had the clipping set so large from a previous file and didn't realize it could affect the distance step as you described. Lesson learned! Cheers.

The start clipping distance of the camera is too small. Increase it to 1m in the Lens panel of the Camera object data header and everything'll be running fine.

Thanks a lot for your answer and for taking the time to make the gif. As with the other guys, I didn't realize that clipping values could have this effect. Thanks again.

The scale of the scene is quite large, >100 metres along the X-axis. With 200 metres, the distance to the camera is also quite large. The near clipping distance, however, is set to 1mm, and the far clipping distance is set at 10km. With such a huge difference between the clipping distances, you're going to see the result of floating point imprecision of the computer. It's gone when you set the clipping to 100m and 300m, which still comfortably encloses your scene. That way you get the precision where it matters.

Thanks for your answer! I had no idea that clipping was sensitive in this way. Good to know.


text:
Can I cut a hole in a mesh using only a subsurf modifier?
In the Blender reference manual page "Subdivision Surface Modifier", in the "Combination" section, there's a file called WoodBlock.blend that apparently shows that you can use the subsurf modifier only to make a hole in a mesh. Can it be done with only a subsurf modifier? I tried to do it myself using my own mesh and with mean creases, but it's not turning out as I expected.

The edges of the hole I made aren't round like the ends of the mesh are (and like they are in Woodblock.blend).
I see that there's a similar question to this one, but I don't know if that person used a boolean modifier to make the hole itself or used a subsurf modifier.

They have been creased. I believe it is Shift-E to crease/uncrease an edge in editmode

What you see in the manual example is currently (2.75) still achievable (and probably will be for long time..).
If your test has not the same result, maybe you should check the mesh. Notice in the image below how the presence of an additional vertex near the cursor led to a non-rounded edge (as like a loopcut would do) while in the other side the edge is rounded.

You may want to remove doubles, look for hidden vertices/edge/faces, check topology in general...

source: Stack Exchange

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

sort: votes


text:
Can I make a UI button that makes buttons in a Panel?
Is it possible to make a button that creates more buttons when you click on it? I was thinking that maybe it'd be a good idea to make extra buttons that store extra info. or functions that you can easily access. I did some searching and found this, but it seems hard to use, and it doesn't seem like you can delete or replace items in a CollectionProperty (actually you can edit items, as @Jerryno said). I've seen how the Surface Panel in the Cycles Materials Tab creates more buttons when I add nodes to it, so I'm wondering if I could do that for myself.

Of course you can delete or replace items from Collection property. Here are functions available to it:
add(
as_bytes(
clear(
data
find(
foreach_get(
foreach_set(
get(
id_data
items(
keys(
move(
path_from_id(
remove(
rna_type(
update(
values(

So lets say we have this: bpy.context.scene.collection Collection property with some items:
bpy.context.scene.collection.remove(5)    # will remove 6th element
bpy.context.scene.collection.move(2,3)    # will swap 3rd and 4th

# replace 5th element with a new one - just assign it new values:
bpy.context.scene.collection[4].name = "New name"
bpy.context.scene.collection[4].value = 42

So the script should work like this:

your Add button will add entries to the collection property
the UI will draw a button for each item of the collection property
every generated button will call the same operator, but will pass it a unique identifier
the operator does different things based on the identifier property

An example:
import bpy

class SceneItems(bpy.types.PropertyGroup):
    value = bpy.props.IntProperty()

class AddButtonOperator(bpy.types.Operator):
    bl_idname = "scene.add_button_operator"
    bl_label = "Add Button"

    def execute(self, context):
        id = len(context.scene.collection)
        new = context.scene.collection.add()
        new.name = str(id)
        new.value = id
        return {'FINISHED'}

class ButtonOperator(bpy.types.Operator):
    bl_idname = "scene.button_operator"
    bl_label = "Button"

    id = bpy.props.IntProperty()

    def execute(self, context):
        print("Pressed button ", self.id)
        return {'FINISHED'}

class FancyPanel(bpy.types.Panel):
    bl_label = "Fancy Panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'

    def draw(self, context):
        self.layout.operator("scene.add_button_operator")
        for item in context.scene.collection:
               self.layout.operator("scene.button_operator", text="Button #"+item.name).id = item.value

bpy.utils.register_class(SceneItems)
bpy.utils.register_class(AddButtonOperator)
bpy.utils.register_class(ButtonOperator)
bpy.utils.register_class(FancyPanel)

bpy.types.Scene.collection = bpy.props.CollectionProperty(type=SceneItems)

Edit @Lars comment: How can I have multiple input fields for each new entry, i.e. having an Integer input field next to each button that will deliver the Value to the buttons operator once the button is pressed?
You display the values of the Collection property items in the UI, and the user can change them. They get passed to the operator:
def draw(self, context):
    self.layout.operator("scene.add_button_operator")
    for item in context.scene.collection:
       row = self.layout.row(align=True)
       row.prop(item, "value")
       row.operator("scene.button_operator", text="Button #"+item.name).id = item.value

You're right. I didn't see that haha. So that must also mean draw() is like a smart function then, it's called multiple times when the addon is enabled, and it'll be called if the collection updates. How did you find those list of functions for the collection? I tried calling print(dir(bpy.types.Scene.collection)) at the end of the script and print(dir(context.scene.collection)) in an execute(), but I could only get functions with underscores, and the best I could get was add(), clear(), move(), and remove(). Also, the documentation link you showed me only shows collection.add().

@DragonautX The script console will list you all the available options when you hit ctrl-spacebar. So if you end something with dot (.), you get all the functions. It is very handy.

I tried in the console test = bpy.props.CollectionProperty() and did the dot thing with test. I could only get count() and index() out of that. Even after seeing that was a tuple, I tried the dot thing on the elements, and the best I could get was from the empty dictionary in the last element. I still can't match what you have. What did you put in the console to get that?

@DragonautX https://i.sstatic.net/w2ao7.png, you don't have to register the property like I did, if it exist from running the script

That makes it a lot clearer. Thanks! Basically, I can best test it by writing it in the console exactly like in the script haha. So the context in execute() is the same as bpy.context, if I can get the same functions you got from the image you showed me. And hey, that's cool, so I found from this I just need to rename the script right to import the script. Alright, again, thanks! This helped me a lot!

How can I have multiple input fields for each new entry, i.e. having an Integer input field next to each button that will deliver the Value to the buttons operator once the button is pressed?

I made an update  of the script given by Jaroslav Jerryno Novotny to work in 2.93, and then 4.4.alpha
import bpy

class SceneItems(bpy.types.PropertyGroup):
    value : bpy.props.IntProperty()

class AddButtonOperator(bpy.types.Operator):
    bl_idname = "scene.add_button_operator"
    bl_label = "Add Button"

    def execute(self, context):
        id = len(context.scene.newbutton)
        new = context.scene.newbutton.add()
        new.name = str(id)
        new.value = id
        return {'FINISHED'}

class ButtonOperator(bpy.types.Operator):
    bl_idname = "scene.button_operator"
    bl_label = "Button"

    id : bpy.props.IntProperty()

    def execute(self, context):
        print("Pressed button ", self.id)
        return {'FINISHED'}

class VIEW3D_PT_FancyPanel(bpy.types.Panel):
    bl_label = "Fancy Panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'

    def draw(self, context):
        self.layout.operator("scene.add_button_operator")
        for item in context.scene.newbutton:
           row = self.layout.row(align=True)
           row.prop(item, "value")
           row.operator("scene.button_operator", text="Button #"+item.name).id = item.value

classes = (
    SceneItems,
    AddButtonOperator,
    ButtonOperator,
    VIEW3D_PT_FancyPanel,
)

def register():
    for cls in classes:
        bpy.utils.register_class(cls)

    bpy.types.Scene.newbutton = bpy.props.CollectionProperty(type = SceneItems)

def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)

if __name__ == "__main__":
    register()

all_licenses: 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/


text:
Is it possible to save certain parts of a screenshot
I'd like to reduce the time necessary to create screenshots. I want to skip reopening and cutting and saving. Instead I'd like to use a python script to determine the size of the part of the screen and crop the screenshot accordingly.
So, there's three (four) questions in one:

Is it possible to take a screenshot with python?
Can I edit the screenshot with python?
Can I determine the size of an element in the user interface to crop accordingly?
Is there already a solution out there?

I never new there was a screenshot functionality built into blender.. Learn some thing new every day :)
Anyway, I'm on linux with KDE so I always just used Ksnapshot which has an option to box select the region for capture. There might a program with similar functionality for windows.

I learned most of blender through working on problems of others. It has lots of gems hidden in plain sight.
You can use "Alt+f3" for Screencasting. create a movie out of it in VSE and Add Audio and text as you see fit.
I also like to use Spacebar Menu a lot.

This answer is given with assumption that you would like to save different windows screen shot only.
Here are the steps to take screenshots of specific windows in Blender e.g 3dView, UV Windows, Properties.

Hover your mouse over required window.
Press Ctrl + F3.
Before saving screen shot, Uncheck Full Screen box to save only specific windows shot. It is available in Save Screenshot Properties Box.

Thank you, that's part of what I need. Although I'd sometimes like to dissect further

To use the screenshot feature see the bpy.ops.screen.screenshot operator. To crop to the active window/editor use the full option:
import bpy
bpy.ops.screen.screenshot(filepath="//output.png", full=False)

Now that one's cool. if I learn how to assign a shortcut to a script, the save screen won't bother me, since it's just dumping shots out.

@Haunt_House No python required to set this up, you can set the operator parameters in the shortcut. See the wiki for more info.

Do I do anything wrong? I click the folder icon in the shortcut and I select a path and the textbutton stays blank.

@Haunt_House You seem to have found a bug. I typed the path directly and it works fine.


text:
Is it possible to put an if statement into the scripted expression of a driver?
If the y location of a certain object is greater than 0, I want to add a fixed amount to another object's driven channel. How do I achieve that?

A Python expression you can use is:
valueIfTrue if isConditionTrue else valueIfFalse

This is known as a ternary conditional operator see:
https://stackoverflow.com/questions/394809/ternary-conditional-operator-in-python


text:
How to render a pixelated, occluded wireframe with freestyle?
I'd like to combine these features:

The pixelated look of a wire material with anti-aliasing disabled.
Proper occlusion of hidden lines.

A wireframe material produces the first feature, freestyle produces the second. Can a line set be created that produces neither double pixels nor gaps? Line thickness alone does not seem to be the answer.
There is the trick with two materials and z-offset, but I have trouble getting a really clean solution at the outline of the object. So a freestyle solution would be best.

The main problem is that freestyle (to the right) produces double pixels:

How about rendering the wire, then using an image editor to remove antialiasing?

@CharlesL Why not just disable antialiasing in Render settings > anti-aliasing?

I added a second picture to clarify my problem.

You can use the Blender OpenGL viewport rendering for this.

Go to edit mode, activate edge-select and Z-Clipping:

Go to User Preferences, System, then disable all lights and make the final one black (color and specular, in my screenshot, only the specular ones are set to black).

Go to the Theme settings, 3D View and set selected edges to white and selected faces to black.

Select everything and press the "OpenGL render active viewport" (3D view header, the left one in the screenshot).

To remove other lines such as lamps you can enable Only render in 3D view > Properties panel (N) > Display > Only render and press CtrlSpace to toggle the 3D manipulator.
If the background is a problem, you can put a face there or also make it black in the theme settings.
AA has to be disabled, otherwise you will get smooth lines.
Result:

Crazy, but close enough. Although I'd suggest turning wireframe on in the object's drawing options, so several objects are possible. Enabling all edges helps as well. Great Trick

That's possible, but keep in mind that turning Wire on in the object's drawing options will hide edges on flat surfaces, so you don't really get a full wire.

That's what 'draw all edges' in the object's display panel is for.

Ah, forgot that existed. Very good.

Alternatively your could just set the Horizon Color to white, use a white shadeless material, change viewport shading to Texture and invert the image in the compositor.

Just to note that the new Hidden wire draw option would be perfect for this if you want to use the openGL render.

You can get this with a wireframe material using this method (see this):

Disable anti-aliasing in render settings

Create a material wire material, enable transparency and increase the Z offset:

Create another material for your object and make it pure black:

Assign the second (black) material to all the faces (Tab> edit mode A> select all > Assign.

Set the world color to black:

Render:

Note that sometimes with low resolution renders you may have to increase the Z offset even more to prevent gaps in the edges.

your render exactly outlines my problem. you have a lot of double pixels there. Adjusting line thickness isn't the answer. I do know the freestyle basics. Sorry if I haven't made myself clear enough, although I mentioned double pixels.

@Haunt_House Oops, sorry. I don't know how I missed that :P

I have to apologize. Hm, the editing is sometimes scary. Although the question is now more technically correct, there was a reason I used the phrase 'perfect wireframe'. Not very precise, I admit. But that's what the body is for.


text:
Hide object part under a plane base on normal and point (dynamic bisect) with python
I'd like to hide a part of an object based on a plane, like a bisect with clear inner/outer but i want to keep the possibility to make this change dynamic in real time (it is done with python through an handler).
Some precisions:
Performances is my main problem. I dont really need a neat cut and a closing face, hiding a part of the vertices could be a good enough solution.
The different solutions I explored:
A first obious solution would be to use a boolean modifier but my object is too complex(between 50.000 en 200.000 vertex), the boolean operation could take several seconds and I need to be able to update it several times per second.
The bisect is maybe be fast enough but I need something that can be configured in real time, like when the bisect is in the "creation phase".
A last solution would give a less good result but maybe better performance is to add part of the vertex to a vertex group and use the mask modifier:
I need a script to add each vertex to a vertex group based on my plain informations.
def hidePart(ob,normal,point):
    if(bpy.context.scene.hide_cutted):
        indexList = []
        for v in ob.data.vertices:
            vcow = ob.matrix_world * v.co
            distance = normal.dot(point-v.co)
            if distance >0:
                indexList.append(v.index)
        for elem in ob.vertex_groups:
            if elem.name == "cutted":
                ob.vertex_groups.remove(elem)
        vg = ob.vertex_groups.new(name="cutted")
        vg.add(indexList, 1.0, 'ADD')
        bpy.context.scene.objects.active =ob
        bpy.ops.object.mode_set(mode='OBJECT')

Unfortunately, even if it is faster than boolean modifier, it is still quite slow (between 0.5 and 1 seconde) and the update is jerky. I also need to make the object active and go to object mode to update the mask modifier.
A solution to only restrict the view like the alt+b shortcut but with a different one for each object would be a great solutions but i think it is impossible.
Any suggestion?
A new possibility:
I discorvered the Vertex Weight Proximity Modifier. Combined with the Mask modifier we have something close from what i need exept that by default we remove a slice of that object around the plane, and not the upper part.

A solution is simply to put another plane parented to the first one, lets say 400 blender unit higher than the first one and give to the maximum a value near to 800 in the Weight Proximity Modifier.

The result is very smooth when moving the plane with up to 100k vertices. But the computation of the distance between a face and a vertex is way more complex than the distance between an infinite plane and vertice. So basically this solution is more complex than the one I wrote in python and stay more efficient. An implementation of a modifier like that based on a normal and a point would be perfect to allow even more vertices.
At this points I have something working and almost maching my needs, but I'll wait a little to post this solution as an answer: maybe someone has a solution giving a cleaner result based on bisect, or an even smoother solution based on mask.

This is speculation, I don't know this for sure, but I imagine the reason alt+b clipping is so fast is because its part of the shader program running on the gpu.  If there is a solution that is as fast as Blender's clipping its probably going to involve GLSL and the bpy opengl wrapper. https://docs.blender.org/api/blender_python_api_2_60_4/bgl.html

Thanks for this comment.. Doesn't look a easy way to do what i want since i didn't found a "hidePartOfObject" in the page but i'll try to figure out if there is something interresting there.:D

Check out the section on glClipPlane.  I think that's exactly what you need.  Here's a good explanation on clip planes: http://mrkaktus.org/opengl-clip-planes-explained/

Thanks. It was a great idea but i don't figure out how to use this right now in my case and i don't really have the time to learn a lot about that without being sure that i'll found something interressting. glClipPlane look interrestiong for instance, but all the geometry are concernet, not only the geometry of one object. Thats the problem with a really "low level" solution.


text:
Separate distinct internal closed volume (automated)
I have an object containing multiple interior faces defining closed volumes.
I'm looking for a way to identify each of those volume and separate them in different objects.
The object is in "one piece" all the faces intersection are edges. This result could be reproduce by taking an object and applying multiples bisects with "fill" option enabled, exept that some faces are missing giving concave geometries.
Here is an example blend file: Example

The green and red parts are two examples of the pieces contained in the main cube (in transparent grey). I want to get all of them, like a puzzle of piece that fit together to form the initial shape.
So obviously the internal faces will be duplicates during the process since each internal face makes the separation between two volumes. I'm trying to figure out how to do that using blender built in functionalities or a python script with a decent complexity.
Here is an 2D view to simplify the undestranding of the problem:

(The red line represent an internal faces that needs to be duplicated)
We can see from that side that 7 shapes are forming the square, and I want an automated way to identify those different shapes. It is easy in 2D but more complex in 3D.
A partial solution would be to use raycasts to find the faces of a box, but it's more difficult when taking the concaves geometries into account.
Any idea would be welcome.

You could try adding the Solidify modifier, boosting Thickness a bit, and then hitting Apply. Then, go to edit mode, select a vertex, and do Select Linked All to select a particular volume. Finally, choose Separate (P key by default) to move the selected volume into its own object.
Your topology will have to be well organized to start I think (i.e. faces don't intersect each other) otherwise the 'solidified' topology will be weird too.

The object is in "one piece" all the intersecting faces have a common edges. This result could be reproduce by taking an object and applying multiples random bisects with "fill". With your solution the result of the solidify will also be in one piece.

The Separate command will move the selected volume into its own object (just edited my answer).

All the faces are linked, crossing faces share the same vertex, they are not lose part. If i do a select linked all, i will select everything (or in your exemple all the faces created by the solidify) I'll add a blend file to give an example soon.

Thanks, looks like solidify doesn't really work with internal faces. Only other way I can think of would be to use boolean modifiers and intersecting shapes (e.g. much larger cubes arranged to slice across the original). Difference would give you one half of a split, Intersection the other.


text:
Object Types Only Return as "LIGHT"...?
It's just another one of those moments in coding where my brain is so deep in the code that there must be something obvious that I'm missing or just never even learned (I'm fairly new to coding in Blender).
I am trying to write a code that sorts all existing objects in the scene into lists based on each object's type. The issue seems to be that, no matter what I do, every object is added to only one of the lists because they're all returned as having a "LIGHT" type. Obviously, that is not true, as the scene consists of three separate types of objects (image shown below).

It seems like it should be such a simple and straightforward script but I just can't seem to get it to work.
Can someone please tell me what I'm doing wrong? Thanks!
My Code:
import bpy

camera_list = []
light_list = []
object_list = []

for object in bpy.context.scene.objects:

    if bpy.context.object.type == "CAMERA":
        camera_list.append(object)
    if bpy.context.object.type == "LIGHT":
        light_list.append(object)
    else:
        object_list.append(object)

by the way, since your are new here: if an answer helps you, commenting is nice but better is checking the checkmark left to the answer. So other users know that the answer helps and the one who answers will get some reputation.

Hey fyi in python there are some keywords and built-in types you should try to not redefine like object (that's why it's highlighted in orange in the script) but rather do : for obj in bpy.context.scene.objects: for instance

your are comparing with bpy.context.object instead of object. So it does not take the loop object into account.
so the correct code is:
import bpy

camera_list = []
light_list = []
object_list = []

for object in bpy.context.scene.objects:

    if object.type == "CAMERA":
        camera_list.append(object)
    if object.type == "LIGHT":
        light_list.append(object)
    else:
        object_list.append(object)

print("obj", object_list)
print("cam", camera_list)
print("light", light_list)

Thank you so much! I feel like I always have more questions than answers so I'm glad there are people like you to help me find my way.

glad i could help. We all started with nearly no knowledge sometime ;)

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


text:
Blender animation not importing into Unreal Engine correctly
I am currently trying to import animations into Unreal Engine that I've made for my character using Blender, but no matter what I do the animation doesn't seem to maintain the same sense of motion as it did when it was in Blender. Rather than the body moving down to the feet, the feet are moving up to the body. I've even used FBX Review to make sure that it's the same after exporting, and everything checks out until it's imported into UE.
I've provided some video of it below so you'll be able to understand it a bit better.
Is anyone able to tell me what I'm doing wrong and how I can fix it?
Thank you!
Blender Animation in Blender: https://youtu.be/-3a1haU_N7Y
Blender Animation in UE: https://youtu.be/eNo0z2ni360

Make sure your armature has a root bone that is the topmost parent of the entire bone hierarchy, and located in the world center with no rotation nor scale.
Most game engines use the root bone as reference for all animations. If you don't have one set correctly, it will either give you lots of errors when importing or mistakenly consider another bone as the root, which looks to be your case.

That worked, thank you so much!


text:
Cloth Physics Similar to Sheet Metal
I am looking for an explanation of to create a cloth physics that acts like sheet metal. I am a Maya user trying to wrap my head around the Blender workflow. I have been struggling with simulating this type of substance; I cannot seem to get the object stiff enough. Can someone help me with creating a sheet metal cloth simulation?
Thanks!

More info could help others to understand what you are looking for: 1) reference video of a real sheet metal, if you are using it, 2) your maya setup for that... 3) a maya animation you did before, showing the effect you wish to replicate...

authors: Сергей Бахирев


text:
Thicken Walls of Building without Distortion
I've been designing a building in Blender 2.77a. Tried making the external walls out of scaled and altered cubes, but I had a lot of overlapping faces issues. I then went back and redid it with just planes; now the source of my question is how can I take the shape of the walls, which are made of various sizes of planes and scale it or alter it so that the planes can be made thicker without losing the shape of the structure? Extruding then scaling on one or multiple axis results in glitches in the mesh where the overlapping from alternate positioned planes mix up.
As a bit of information to assist possibly, I have tried doing this same building with Archimesh which works fine for single story simplistic buildings but crashes if making multistory, and cannot do interiors easily. When I made the walls with the solid cubes that were shaped there was so much overlap the Boolean tool actually glitched leaving hangover after vertices were deleted. I have never found a real way to scale or alter even slightly complex shapes without them messing up.

Have you tried Alt + S? It scales along the normals, and assuming all your normals are pointing the right direction (A to select all then Ctrl + N if they're not), it should work!

i have tested and its one of the things i tried originally still results in it scaling oddly.

@Flameofshadow Try keying A to select everything, then W > Remove doubles. Then try my method. If that works, please consider accepting my answer. If it doesn't, consider uploading your .blend file to Blend Exchange.

In addition to using a Solidify modifier, you could scale along normals.
Key A once or twice until everything is selected. Key Ctrl + N to Recalculate normals. Set the Pivot point to 3D Cursor (.). Key E, Alt + S, Shift + Z, drag your mouse around, and hit Enter when you're happy. This will extrude, scale along normals, and only scale on the X-Axis and Y-Axis.
Note that you may have to hit Enter between extruding before scaling.
Edit:
Before doing the above steps, Tab back to Object Mode, key Ctrl + A to open the Apply menu, and select Scale. Tab back to Edit Mode.
Here is your .blend back. To go on from where I left off, just key Alt + S, Shift + Z and knock yourself out :)

scaling along normals freaks it out, i've had normals facing out and facing in and neither works correctly for scaling as it freaks out for some reason due to the faces being parallel to different axis, i do have a version of the same thing already done in cubes so its the right thickness but there is so much overlap even boolean cant get rid of a lot of it when deleted so if there is a way to fix that maybe its simpler.

@Flamesofshadow Once you remove doubles, Ctrl + N will recalculate normals. Worst case, you can manually flip normals.

normals/doubles arent really the issue because with the overlap on the other version its just two pieces that are over lapping in a + shape usually, i spend time lining it up correctly but the pieces have to be connected for when i do texturing, but obviously when i have two rectangles who are facing different directions vertesis dont line up well.   for the current one with the planes i dont get why i cant get the solidify+shrink/fatten or even just regular extrude scaling to work it just simply is not having those y parallels.

@Flamesofshadow Can you upload your .blend file to the link specified above and paste the link into your question or comment it?

@Flamesofshadow See my edit. If my answer helps, please consider accepting it.

Solidify & Shrink/Fatten
A way to give thickness to planar object is the Solidify modifier you can find in the modifier tab of the object. As you want to keep the profile even, you should enable the Even Thickness checkbox:

This will keep the wall straight and clean till your current topology allows.
Once the modifier has been apply, the correct way to increase the wall's thickness only on the seleced faces is to use the Shrink/Fatten tool you can find in the Transform tab of the Tooshelf or call it with Alt+S shortcut.

Press Alt (or S) while ruiing the command to enable Even Thickness option to keep walls straight during the transformation.

Been looking for that feature for years! +1.

i tested the solidify and then shrink/fatten and it only partly works, the solidify doesnt work for any of the planes running parallel to the y axis and it also causes the right wall at the bottom of the right curve in the image (the one running along x axis leading into the curve) actually stretches across the screen when i move the mouse when doing that.

That's because your object is non uniformly scaled (modifiers effects are affected by that; see for example: Symetrical bevel or http://blender.stackexchange.com/a/34719/15140 ). If it suitable for your project, you should Apply the scale (shortcut: Ctrl+A in Object mode)


text:
Problem when baking normal map
I'm new into textures and I'm trying to bake high res normal map for low res model. And I always get same result, this distortion on the places where seams are. Any help?

I'm trying to use cage method, so my low res is bigger than high res, if I leave the same size result is the same. I feel like it is very stupid and tiny mistake, please help!

check this

Have you tried to increase the Bias value?

dint help unfortunately

Do you mind uploading your file to http://blend-exchange.giantcowfilms.com/ ?


text:
Black lines/shadow in Cycles f12 render but not in viewport render?
Please see the image below.

I get black lines when I render using F12 but not in viewport.
Is there a way to get the rendered image to be exactly the same as in the view port?
Thank you

Please post your images with BSE's image tool...

subsurf modifier with a different value in render and preview ? (just a guess...)

I can't see your picture right now but one of these should work:

Disable compositing:

Disable freestyle:

Make sure all objects have the same value for viewport and render (eye and camera icons)


text:
Turn Character Into a Sketch
I have a model of a man. I wanted to render it in some way so that it can turn into this "This" is a pencil and paper animation, with each frame drawn, photographed, and archived.
I have seen someone else do this in Blender.
Any thoughts?

Consider using Freestyle to render the strokes.

The Compositing Method
First, you could go for a cartoon render of your model. This effect uses advanced Compositing with the goal of creating a comic style look. You can read about it here. It can create results like this...

...but you'll have to deal with stuff like this.

OpenGL
There is a way to render in Blender that uses grease-pencil. You can look into it here.


text:
copy some vertices UV location and transfer it to another UV Map
So i got my hands on these models rip from a video game created from the unreal engine but when converting the files it created 4 UV Maps for the same object each  map was made for a different texture and now trying to assign the different Material to the object is creating but i don't want to remap one uv map if it's already in a different one
here are the different uv maps with the texture it post to be on
https://i.sstatic.net/ZYM2U.jpg here are the pics

ok now this is the face in each uv map all of the vertex that are not being used are put at x:0 y:0

you may separate the mesh by material. Then keep only the good UV map and material for each part. Rename the UV map 'UV map' for all. Then merge them again


text:
How do I reference a variable from an operator that's outside of a class?
Alright, this might be one of the more complicated questions I've asked on here. However, due to my lack of experience coding in Blender, it might be a more simple solution than I realize.
Summary:
I'm coding an addon that allows the user to select one camera from the scene, up to three light objects from the scene, and up to three mesh objects from the scene. At first, there is no option to add another light object or mesh object, but once an option has been selected the operator button pops up.

I want the operator button that pops up to increase the count of the associated pointer so that it will create another pointer for that category. I begin to run into issues when I try to reference the variable "num_lights" or "num_layers" from either operator in the "ADDON_PT_main_panel" class, though. I feel like it should be easy to do that but I can't get it to work nor can I find any helpful information on Google.
Question 1:
How can I reference the variables from "ADDON_OT_add_layer" and "ADDON_OT_add_light" in the "ADDON_PT_main_panel" class?
Question 1a:
Am I using the correct script to update the "ADDON_PT_main_panel" class once either of the operators has been executed?
I know this is kind of a loaded question but if anyone could help me figure this out I would really appreciate it!
My Code:
class ADDON_OT_add_light(bpy.types.Operator):

# Operator that increases "num_lights" by one every time
# that it's clicked as long as "num_lights" is less than 3,
# then reloads the script to update the variable within ADDON_PT_main_panel.

    bl_label = ''
    bl_idname = "add_light.operator"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'addon'

    num_lights = 1

    # Increases count for number of light sources by 1 when clicked until it hits the limit.
    # of 3 light sources.
    def execute(self, context):
        if num_lights < 3:
            num_lights += 1
        return num_lights
        bpy.ops.script.reload() #<-- I believe this the code to update/reload a script...?

class ADDON_OT_add_layer(bpy.types.Operator):

# Operator that increases "num_layers" by one every time
# that it's clicked as long as "num_layers" is less than 3,
# then reloads the script to update the variable within ADDON_PT_main_panel.

    bl_label = ''
    bl_idname = "add_layer.operator"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'addon'

    num_layers = 1

    # Increases count for number of base layers by 1 when clicked until it hits the limit.
    # of 3 base layers.
    def execute(self, context):
        if num_layers < 3:
            num_layers += 1
        return num_layers
        bpy.ops.script.reload() #<-- I believe this the code to update/reload a script...?

class ADDON_PT_main_panel(bpy.types.Panel):
    bl_label = "addon"
    bl_idname = "addon_PT_main_panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "addon"

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        mytool = scene.my_tool

        base_layers = #<-- Insert reference to "num_layers" from ADDON_OT_add_layer here.
        light_sources = #<-- Insert reference to "num_lights" from ADDON_OT_add_light here.

        layout.label(text= "Camera:")
        layout.prop(mytool, "camera_pointer")

        layout.label(text= "Light Source(s):")
        layout.prop(mytool, "lights_pointers")

        # Determines whether or not an option has been selected for "lights_pointers".
        light_pointer_status = str(bpy.context.scene.my_tool.lights_pointers)

        # If number of light sources is updated to 2, then add another "lights_pointers".
        if light_sources > 1:
            layout.prop(mytool, "lights_pointers")

        # If number of light sources is updated to 3, then add another "lights_pointers".
        if light_sources > 2:
            layout.prop(mytool, "lights_pointers")

        # Only allows a new light source to be added if a first option has been chosen.
        if light_pointer_status != 'None':
            layout.operator("add_light.operator", text= "New Light", icon= "PLUS")

        layout.label(text= "Base Layer Object(s):")
        layout.prop(mytool, "objects_pointers")

        # Determines whether or not an option has been selected for "layers_pointers".
        object_pointer_status = str(bpy.context.scene.my_tool.objects_pointers)

        # If number of base layers is updated to 2, then add another "objects_pointers".
        if base_layers > 1:
            layout.prop(mytool, "objects_pointers")

        # If number of base layers is updated to 3, then add another "objects_pointers".
        if base_layers > 2:
            layout.prop(mytool, "objects_pointers")

        # Only allows a new base layer to be added if a first option has been chosen.
        if object_pointer_status != 'None':
            layout.operator("add_layer.operator", text= "New Layer", icon= "PLUS")

classes = [ADDON_pointers, ADDON_OT_add_light, ADDON_OT_add_layer, ADDON_PT_main_panel]

def register():
    for cls in classes:
        bpy.utils.register_class(cls)
        bpy.types.Scene.my_tool = bpy.props.PointerProperty(type= ADDON_pointers)

def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
        del bpy.types.Scene.my_tool

if __name__ == "__main__":
    register()

You shouldn't use global variables or reloading scripts.
First, you need to put all your state somewhere Blender can keep track of it. So you should handle the number of items just like the other properties, with an IntProperty. Here's an example with three object properties.

class ADDON_pointers(bpy.types.PropertyGroup):
    num_objects: bpy.props.IntProperty(
        name= "Number of Objects",
        description= "",
        min=0,
        max=3,
    )

    object0 : bpy.props.PointerProperty(
        name= "Object",
        description= "",
        type= bpy.types.Object,
    )

    object1 : bpy.props.PointerProperty(
        name= "Object",
        description= "",
        type= bpy.types.Object,
    )

    object2 : bpy.props.PointerProperty(
        name= "Object",
        description= "",
        type= bpy.types.Object,
    )

Let's add an operator to increase num_objects:

class ADDON_OT_add_object(bpy.types.Operator):
    bl_label = ''
    bl_idname = "my_tool.add_object"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'addon'

    # poll returns True if the operator can be called now
    @classmethod
    def poll(cls, context):
        scene = context.scene
        if not scene: return False
        mytool = scene.my_tool

        # If already 3 objects, can't add any more
        if mytool.num_objects >= 3:
            return False

        # If the current slots are not all filled, can't add any more
        objs = [mytool.object0, mytool.object1, mytool.object2]
        objs = objs[:mytool.num_objects]
        if not all(objs):
            return False

        return True

    def execute(self, context):
        context.scene.my_tool.num_objects += 1
        return {'FINISHED'}

Now the panel
class ADDON_PT_main_panel(bpy.types.Panel):
    bl_label = "addon"
    bl_idname = "ADDON_PT_main_panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "addon"

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        mytool = scene.my_tool

        for i in range(mytool.num_objects):
            layout.prop(mytool, "object%d" % i)

        # Skip drawing the button if it can't be clicked
        if bpy.ops.my_tool.add_object.poll():
            layout.operator("my_tool.add_object", text= "New Object", icon= "PLUS")

Thank you so much! It worked, and I even created a second operator that removes a pointer using the same code, except I converted it to subtract 1 rather than add. You've definitely made my night a lot easier!

Here's another answer: get rid of the variable for the number of objects and the button for adding a new slot. Instead just show all the slots up the last filled one, plus one more (up to a max of 3).
Simpler code, simpler UI.

class ADDON_PT_main_panel(bpy.types.Panel):
    bl_label = "addon"
    bl_idname = "ADDON_PT_main_panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "addon"

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        mytool = scene.my_tool

        if mytool.object2: num_objects = 3
        elif mytool.object1: num_objects = 3
        elif mytool.object0: num_objects = 2
        else: num_objects = 1

        for i in range(num_objects):
            layout.prop(mytool, "object%d" % i)


text:
How to use an existing list for the "items" parameter of an enumerator?
I am relatively new to coding in Blender so I am still familiarizing myself with the keywords and concepts used in bpy.
I am currently trying to create enumerators that use existing lists as their items rather than manually typing out a list of options for their "items" parameters. It seems like it should be as simple as inserting the name of the list in the portion in place of the manually added options, however, that appears to not be the case and I can't figure out what the correct phrasing would be to do so.
Can anybody help me out?
My Code:
import bpy

object_list = []
camera_list = []
light_list = []

for obj in bpy.context.scene.objects:

    if obj.type == "CAMERA":
        camera_list.append(obj)
    if obj.type == "LIGHT":
        light_list.append(obj)
    if obj.type == "MESH":
        object_list.append(obj)

class Enums(bpy.types.PropertyGroup):

    camera_enum : bpy.props.EnumProperty(
        name= "",
        description= "None",
        items= [("None", "None", ""),  # <-- Option to select none of the items
                () #<-- Insert "camera_list" here
        ]

    )

    lights_enum : bpy.props.EnumProperty(
        name= "",
        description= "None",
        items= [("None", "None", ""),  # <-- Option to select none of the items
                () #<-- Insert "light_list" here
        ]

    )

    objects_enum : bpy.props.EnumProperty(
        name= "",
        description= "None",
        items= [("None", "None", ""),  # <-- Option to select none of the items
                () #<-- Insert "object_list" here
        ]

    )
```

You can just append to the list, but since the items list is set only once, the list will be static and not respond to new or deleted objects. You can get a dynamic list by giving a callback as items but there's a known bug with that (there's a warning about it in the docs).
Instead I think you should use a PointerProperty. You can use the poll argument to filter the list to only certain objects. For example
def poll_is_camera(self, obj):
    return obj.type == 'CAMERA'

class Enums(bpy.types.PropertyGroup):

    camera_enum : bpy.props.PointerProperty(
        name= "",
        description= "None",
        type= bpy.types.Object,
        poll= poll_is_camera,
    )

    # etc

This will give you a dropdown of all camera objects for free.

Thank you so much! I've spent pretty much the whole day racking my brain about how to work this out so you've provided me with some much-needed mental relief.


text:
How do I get the object name of an object selected in a pointer?
I am currently trying to use my code to add objects that are selected by a pointer to one of the two global dictionaries. It used to add the associated object name alone to its corresponding dictionary, however, now it seems to have switched to returning the "unrepresented" form of the string (ex. <bpy_struct, Object("Camera") at 0x0000023695E1EB08>).
As far as I'm aware I didn't change anything that would have caused this to suddenly switch, but now I can't seem to get it back to only adding the object's name. I currently have variables "camera_pointer_status" and "light_pointer_status" representing the object names of each item selected in the form of a string.
Can anybody help me out?
My Code:
import bpy

# Global dictinaries for appending objects selected in corresponding pointers.

global active_camera
active_camera = {}

global light_source_list
light_source_list = {}

# Object Sorting:

def poll_is_camera(self, obj):
    return obj.type == 'CAMERA'
def poll_is_light(self, obj):
    return obj.type == 'LIGHT'

class ADDON_pointers(bpy.types.PropertyGroup):

    # Camera Pointer:

    camera_pointer : bpy.props.PointerProperty(
        name= "",
        description= "None",
        type= bpy.types.Object,
        poll= poll_is_camera,
    )

    # Light Source Pointer:

    light_pointer : bpy.props.PointerProperty(
        name= "",
        description= "None",
        type= bpy.types.Object,
        poll= poll_is_light,
    )

# Main UI Panel:

class ADDON_PT_main_panel(bpy.types.Panel):
    bl_label = "ADDON"
    bl_idname = "ADDON_PT_main_panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "ADDON"

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        mytool = scene.my_tool

        # Camera Pointer UI:

        layout.label(text= "Camera:")
        layout.prop(mytool, "camera_pointer")

        # Get string name of object selected in the corresponding pointer.

        camera_pointer_status = str(bpy.context.scene.my_tool.camera_pointer)

        camera_count = 0

        # If an object is selected, then increase number of cameras by 1 and append
        # object name to its corresponding global dictionary.

        if camera_pointer_status != 'None':
            camera_count += 1
            active_camera.update({camera_pointer_status: camera_count})

        # If camera_pointer is cleared, then decrease number of cameras by 1 and
        # reset the corresponding global dictionary.

        if camera_pointer_status == 'None':
            camera_count -= 1
            active_camera.clear()

        # Print list of cameras.

        print('Active Camera List: ' + str(active_camera))

        # Light Source Pointer UI:

        light_source_count = 0

        layout.label(text= "Light Source(s):")
        layout.prop(mytool, "light_pointer")

        # Get string name of object selected in the corresponding pointer.

        light_pointer_status = str(bpy.context.scene.my_tool.light_pointer)

        # If an object is selected, then increase number of light sources by 1 and
        # append object name to its corresponding global dictionary.

        if light_pointer_status != 'None':
            light_source_count += 1
            light_source_list.update({light_pointer_status: light_source_count})

        # If light_pointer is cleared, then decrease number of light sources by 1 and
        # reset the corresponding global dictionary.

        if light_pointer_status == 'None':
            light_source_count -= 1
            light_source_list.clear()

        # Print list of light sources.

        print('Light Source List: ' + str(light_source_list))

classes = [ADDON_pointers,
           ADDON_PT_main_panel]

def register():
    for cls in classes:
        bpy.utils.register_class(cls)
        bpy.types.Scene.my_tool = bpy.props.PointerProperty(type= ADDON_pointers)

def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
        del bpy.types.Scene.my_tool

if __name__ == "__main__":
    register()
```

The camera name is scene.my_tool.camera_pointer.name If the pointer  is set, ie not None   Btw use draw method to layout data only.  Consider using an update method to fire when the pointer is set.

@batFINGER When I include ".name" at the end of either one it returns an error that states there is no attribute called 'name' that is associated with the object. And thanks for the tip!

I'm not sure what made the name pop up before and now it doesn't, but the text it gives you ('<bpy_struct...'>) is a string representation of the whole object, not just the name. The definition to return that string is defined in bpy.types.Object class. As the comment said, camera_pointer.name is what you want. If the pointer currently has no object, ie is None, then it will return an error when you try to access its name property.
A few things I saw in your code to keep in mind, which is probably why that alone didn't work for you:

Blender wants you to use its property library for storing variables. global variables cannot be referenced in panels as far as I know.
The panel is not the ideal place to check when the variable is updated and use it (what if it's updated outside the panel, or perhaps in your script?). From the property documentation, you can use the update parameter when declaring your prop to set a function for each update (such as, adding to your list).
You add and delete your my_tool var multiple times during (un)register. You only need to do it once, so unindent the line to be out of the loop :)

My solution mainly involves adding a new PropertyGroup Name_List that just holds a string for your object name. Then I made two collection properties within your ADDON_pointers (added Name_List to the list of classes to register, before the ADDON_pointers), and then added update functions for whenever the pointers change (I just did the add functionality - I'll let you figure out the removal, use Blender docs and stack exchange for examples). For visual reference, I had the panel loop through the camera and light lists and print the name of each one.

import bpy

def poll_is_camera(self, obj):
    return obj.type == 'CAMERA'
def poll_is_light(self, obj):
    return obj.type == 'LIGHT'

class Name_List(bpy.types.PropertyGroup):
    name: bpy.props.StringProperty()

class ADDON_pointers(bpy.types.PropertyGroup):

    def update_camera(self, context):
        if self.camera_pointer is None:
            return
        o = self.camera_coll.add()
        o.name = self.camera_pointer.name

    def update_light(self, context):
        if self.camera_pointer is None:
            return
        o = self.light_coll.add()
        o.name = self.light_pointer.name

    # Camera Pointer:

    camera_pointer : bpy.props.PointerProperty(
        type=bpy.types.Object,
        poll=poll_is_camera,
        update=update_camera
    )

    camera_coll : bpy.props.CollectionProperty(type=Name_List)

    # Light Source Pointer:

    light_pointer : bpy.props.PointerProperty(
        type= bpy.types.Object,
        poll=poll_is_light,
        update=update_light
    )

    light_coll : bpy.props.CollectionProperty(type=Name_List)

# Main UI Panel:

class ADDON_PT_main_panel(bpy.types.Panel):
    bl_label = "ADDON"
    bl_idname = "ADDON_PT_main_panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "ADDON"

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        mytool = scene.my_tool

        # Camera Pointer UI:
        layout.prop(mytool, "camera_pointer", text='Selected Camera:')
        layout.prop(mytool, 'camera_coll')
        for c in mytool.camera_coll:
            layout.label(text=c.name)

        layout.prop(mytool, "light_pointer", text='Selected light:')

        layout.prop(mytool, 'light_coll')
        for l in mytool.light_coll:
            layout.label(text=l.name)

classes = [Name_List, ADDON_pointers,
           ADDON_PT_main_panel]

def register():
    for cls in classes:
        bpy.utils.register_class(cls)
    bpy.types.Scene.my_tool = bpy.props.PointerProperty(type= ADDON_pointers)

def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
        del bpy.types.Scene.my_tool

if __name__ == "__main__":
    register()


text:
How do I reset pointer properties?
I am trying to write some code that adds a light object to a global dictionary when it's selected in one of the three pointers available. However, an issue arises when attempting to remove one of the pointers or just clearing all of them.
I've attempted to write the code so that whenever a pointer is removed using the "remove_light" operator I've created, the selected pointer and all of the ones added after it will be cleared as well as removed from the global dictionary. The number of light sources will also be decreased by however many pointers are removed. I can't get this code to work, though, and even with the "full reset" code that I've written, once the pointers are added back they still contain the object that was selected for them (showing that they have not been set equal to 'None' as I had intended) and the count of light sources returns back to what it was before the "full reset" instead of starting over from zero.
Can anybody help me work this out?
Goals:

Write code that behaves similarly to the "full reset" code that I've written, but only affects a specific pointer as well as all of the pointers added after it.
Fix "full reset" code so that the pointers don't still contain selected objects once added back and the count of light sources starts back at zero.

My Code:
import bpy

# Global dictionary to add the light source(s) to:

global light_source_list
light_source_list = {}

# Object Sorting:

def poll_is_light(self, obj):
    return obj.type == 'LIGHT'

# Properties:

class ADDON_properties(bpy.types.PropertyGroup):

    #Integer Property representing max amount of light sources you can select:

    num_lights: bpy.props.IntProperty(
        name= "Number of Light Sources",
        description= "",
        min=0,
        max=3,
    )

    # Light Source Pointers:

    light_pointer1 : bpy.props.PointerProperty(
        name= "",
        description= "None",
        type= bpy.types.Object,
        poll= poll_is_light,
    )

    light_pointer2 : bpy.props.PointerProperty(
        name= "",
        description= "None",
        type= bpy.types.Object,
        poll= poll_is_light,
    )

    light_pointer3 : bpy.props.PointerProperty(
        name= "",
        description= "None",
        type= bpy.types.Object,
        poll= poll_is_light,
    )

# Operator for adding a new light source pointer:

class ADDON_OT_add_light(bpy.types.Operator):

    bl_label = ''
    bl_idname = "add_light.operator"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'RNGenius'

    @classmethod
    def poll(cls, context):
        scene = context.scene
        if not scene: return False
        mytool = scene.my_tool

        if mytool.num_lights >= 3:
            return False

        return True

    def execute(self, context):
        context.scene.my_tool.num_lights += 1
        return {'FINISHED'}

# Operator for removing the most recent light source pointer:

class ADDON_OT_remove_light(bpy.types.Operator):

    bl_label = ''
    bl_idname = "remove_light.operator"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'RNGenius'

    @classmethod
    def poll(cls, context):
        scene = context.scene
        if not scene: return False
        mytool = scene.my_tool

        if mytool.num_lights < 2:
            return False

        return True

    def execute(self, context):
        context.scene.my_tool.num_lights -= 1
        return {'FINISHED'}

# Main UI Panel:

class ADDON_PT_main_panel(bpy.types.Panel):
    bl_label = "ADDON"
    bl_idname = "ADDON_PT_main_panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "ADDON"

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        mytool = scene.my_tool

# Light Source(s) Pointers UI:

        light_sources = context.scene.my_tool.num_lights

        layout.label(text= "Light Source(s):")
        layout.prop(mytool, "light_pointer1")

        # Determines whether or not a light object has been selected for the pointer:

        light_pointer1_status = bpy.context.scene.my_tool.light_pointer1
        light_pointer2_status = bpy.context.scene.my_tool.light_pointer2
        light_pointer3_status = bpy.context.scene.my_tool.light_pointer3

        # If a light object has been selected for the first pointer, then add another pointer:

        if light_sources > 1 and light_pointer1_status != None:
            layout.prop(mytool, "light_pointer2")

        # If a light object has been selected for the second pointer, then add another pointer:

        if light_sources > 2 and light_pointer1_status != None:
            layout.prop(mytool, "light_pointer3")

        # If a light object has been selected for the first pointer, then show "add_light" operator:

        if light_pointer1_status != None:
            layout.operator("add_light.operator", text= "New Light", icon= "PLUS")

        # If there is more than one light source, then show "remove_light" operator:

        if light_sources > 1 and light_pointer1_status != None:
            layout.operator("remove_light.operator", text= "Remove Light", icon= "TRASH")

        light_source_count = 0

        # If an item is selected for a pointer, increase the amount of light sources by one
        # and then add it to the global dictionary:

        if light_pointer1_status != None:
            light_source_count += 1
            light_source_list.update({light_pointer1_status.name: light_source_count})
        if light_pointer2_status != None:
            light_source_count += 1
            light_source_list.update({light_pointer2_status.name: light_source_count})
        if light_pointer3_status != None:
            light_source_count += 1
            light_source_list.update({light_pointer3_status.name: light_source_count})

        # If the first pointer is cleared then reset the amount of light sources to zero,
        # clear the global dictionary, and clear all of the other pointers:

        if light_pointer1_status == None and light_source_count > 0: # <-- "full reset" code.
            light_source_count = 0
            light_source_list.clear()
            light_pointer2_status = None
            light_pointer3_status = None

        # ***INSERT CODE FOR DECREASING LIGHT SOURCES HERE*** <-- Need to be able to reset all pointers
        #                                                         above whatever pointer is cleared
        #                                                         without resetting the ones below it.

classes = [ADDON_properties,
           ADDON_PT_main_panel,
           ADDON_OT_add_light,
           ADDON_OT_remove_light]

def register():
    for cls in classes:
        bpy.utils.register_class(cls)
        bpy.types.Scene.my_tool = bpy.props.PointerProperty(type= ADDON_properties)

def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
        del bpy.types.Scene.my_tool

if __name__ == "__main__":
    register()
```

Don't use global state variables in Blender addons. You also shouldn't be doing anything in draw() other than drawing layout. If you want a list of all the lights that are picked, write a function that reads from bpy.context.scene.my_tool and returns it instead of using a global variable. And if you want to run code when a property is changed, use the update= arg to PointerProperty, not draw().

To add to the comment, you should use a CollectionProperty to store object pointers. you can simply do col.clear() to remove references.


text:
Mesh won't cooperate with armature
I am trying to animate a model that I've made that consists of multiple meshes that have been joined together. However, whenever I try to pose the model, rather than the entirety of the joined mesh moving with the armature it makes all of the loose parts move independently (as seen in the picture below).
I really don't want to have to redo the model in order to make all of it a single mesh, and I also don't want to have to go through and connect each of the loose parts by their vertices just for it to be one whole mesh.
Is there a way around this or am I going to have to do one of the options above?
Thanks for the help!

maybe try to parent with automatic weight before joining the different parts. If it stills doesn't work well, you need to give it some corections in weight paint mode, or with the Assign button under the vertex groups list in the Object Data panel

Joining the mesh will not help. To me it's most likely just that your mesh weights isn't setup correctly. Also, make sure you have some edge loops on those cylinders where you need them to bend around the knees bones.


text:
Lighting/Shading Issues Not Caused By Normals
I'm in the process of making some low poly characters, and normally it's pretty straightforward but there are some weird things happening with the lighting/shading on this one character (shown below) and I can't figure out why.
My first guess was that it was an issue with the normals, but all of them are facing the correct way. My second guess was that there could be some duplicate vertices somewhere, but that also was not the case.
Is anyone able to tell me why this is happening? I would really appreciate the help. Also please let me know if there's any more information that would be helpful for me to provide.
Thanks!

Normals:

Did you used shade smooth?

@Emir Yes everything is smooth shaded.

@Emir Yes, thank you so much!

this has nothing to do with normals, it has to do with split normals, which are the normals used for the shading, Blender tries to smooth between the faces, have you enabled the Auto-Smooth option in order to only smooth under a certain angle?


text:
How to create trigger for character to switch scenes in BGE?
Blender v2.71
So working on a game in BGE, I can switch from main menu scene to game scene but how do I get the character to get near an object and that object switches to a new scene?
I tried using the near sensor and adding property: player > and controller > scene actuator/ mode: set scene/ scene: scene
But every time my character (property player: float) gets near the object nothing happens

use the "near" brick

The "property" actuator on it's own only senses the value of a property. This is useful if you want to make sure something is at a certain value (i.e. Money = $250--> AND--> buy laptop) but it really has no direct sense of the physical world. The sensors that do are called the physics sensors.

Near: senses when a object is within a certain range.
Collision: senses if an object is being touched.
Radar: works like "Near" but not Omni-directional.
Ray: sends an invisible "beam", sense if something touches or obstructs the beam.

As you can probably see, the sensor you want to use is "Near", since it will sense if your player is near a certain object in the game.
Put the sensor on the object that you want to sense the player and set its property value to "player". play with the distance values till you get a result you like, make sure "reset" stay a tad higher than the "distance".

That's exactly what I did and nothing happened...also didn't use property  actuator, I meant the "add game property" : player: float

turn on physics visualization to see if everything is working right, also, upload a .blend file, it could help us immensely in finding out your problem. use a service like blend-exchange.

Can't upload the actual blend file for confidential reasons but the logic is setup the same.

Also I know the distance and reset are probably messed up here, I was playing around with it.
pw: blender man

okay, very good... see the answer @Chebhou put on this question.


text:
music/sound fx controller for options menu in BGE
So I've been trying to find a way to control volume of the background music inside a BGE game I'm working on. But there's always some kind of hiccup.
I used the 3dsound and camera which kind of gets the job done for the options menu scene.
Then created a "game" scene which overlays the option menu scene so sound plays on that scene too.
But here's where the problem lies, the options menu ALWAYS has to be active on the game scene in order to play the sound.
Was wondering if there was a better way to do this either with python or logic bricks or if I'm not seeing something


text:
Rig deformation problem
My rig is not bending the meshes legs correctly and stretches the leg and arm weirdly

Please upload your .blend file to be able to help you

uploaded the .blend file

I added a subsurf after the armature modifier, turned on the "preserve volume" option, turned on the "edit mode visibility" buttons and tweaked the weight values: in the central joint edge loop 0.5/0.5, then 0.75/0.25, then 0.95/0.05.
In the arms there is not enough geometry to get smooth bends, you'll have to add some edge loops.

i don't understand what you mean on the weight values part could you simplify it a bit for me

The armature modifier establishes a relationship between a bone of the rig and a vertex group of the mesh which have the same exact name. If a vertex belongs to a vertex group only, it will move rigidly with the bone movement; if it belongs to two (or more) vertex group, it will move in a proportional way, according to his weight. To have smooth joints it's common to select the central edge loop and assign to all vertex a weight of 0.5 (50% of action) to both vertex groups related to the two bones of the joints, so that their movements will be influenced by the movement of both bones.

In the picture you can see that an edge loop close to the central one is selected. In the "N" propeties panel you can read that the selected vertex has a weight of 0.250 related to the "Leg_bottom.L" bone, and a weight of 0.750 related to the "Leg:Top.L" bone. This means that this vertex will be influenced by movements of both bones: 25% from "Leg_bottom.L bone", 75% from "Leg_Top.L" bone movements.


text:
My Bone will not stay on position

My Bottem leg bone keeps doing this and i have alredy tried using edit mode how do i put it back in its proper position?

Can you upload your file? http://blend-exchange.giantcowfilms.com/

I have uploaded the file

I'm sorry to say that my friend, but your rig is totally messed up. This joint behaves like that because Lower_right_leg (which is wrong naming convention by the way, it should go like f.ex. Lower_leg.R) should be child of Upper_Right leg and IK constraint needs a target, not only pole target to work properly. I strongly recommend you to watch some rigging tutorials before start, and try to use RIgify addon to make your task easier)

sadly i have already tried the riggify addon but it was not working well and i figured it would be harder for to animate if i used it thanks for the help though.

This is because the bone needs to be connected to it's parent as shown below, this will solve your problem:


text:
Automatic weight not working on valve rig
I am trying to use rig my mesh with a rig made for valve games however the automatic weights is not working for my mesh.
 i have been following the tutorial shown below that tells me that i am suppose to separate parts blender would have a hard time finding a solution for.
 however this does not seem to be working for me is there anyway to fix this and keep it from happening again
Video:https://www.youtube.com/watch?v=yMARsirE99I&t=7s

Select your mesh then enter into edit mode and select all vertices then choose remove doubles as shown below, this will solve the issue.


text:
Ik rotation Deformation Problem
I am trying to use inverse kinematics but for the bone would not bend in the right direction so i tried rolling it but the it deformed the foot and leg of the mesh how do i fix this?

Please upload your .blend file to be able to help you

how do i do that?

Use this link http://blend-exchange.giantcowfilms.com/

I have uploaded the file

I've provided an answer to your problem with steps and an updated blend file. You can accept the answer and upvote the answer if it solved your problem :)

There are couple of problems in your file.
First the IK bones needs to have the deform property disabled as shown below:

Second, you need to adjust the pose position to be your rest pose to avoid bad bone roll values. To do this, switch to pose mode select the whole armature bones by pressing A then hit the space bar and write Apply Pose as Rest Pose as shown below:

Last thing is parenting your mesh to your armature. To do this, go to object mode, select your mesh first, then select your armature with right-click, then hit ctrl+P and choose With Automatic Weight and that's it, the mesh will be nicely deformed and parented to the armature as shown below:

The updated .blend file can be found here:


text:
Blurring/Feathering a Procedural Pointiness Mask
I'm trying to create a procedural mask to affect the sharp edges of my model using the Pointiness output from the Geometry node, leading to the eventual idea of using it to create customisable weathering effects, such as this.
This is the base setup that I've got so far.

How is it possible to blur/feather the black edges of the mask so that they would essentially expand across the object until the whole object is rendered black?

I've had a look at both of the go-to texture blur methods suggested for cycles found here and here however these seem to rely on there being a vector input/output for the texture, which is not the case in my example.
The Procedural Cracks tutorial by CGMasters came closest to what I was trying to achieve with the 'Worn Edges' section of the video, but I didn't have any success trying to convert it to my situation.
Any ideas would be massively appreciated! :)
EDIT: Not sure if it was clear enough from the description but I'm trying to steer clear of baking/UV-Unwrapping/the Works on this one... Purely procedural :)
UPDATE: I've made a couple of updates to the shader which has given me slightly better results, although it's still not quite there and the mask blur/expansion issue is still not successful.
This is what it now looks like:

The issue is now coming from the grey values of the mask 'leaking' out across the whole mesh and not stemming from the black values... if that makes sense? :P

In researching weathering effects in blender, I stumbled across this GIF, which is exactly what I want to achieve?
UPDATE 2: Still no luck achieving the desired effect in the gif, however I feel I'm slightly closer from adding another colour ramp node after the previous ones.

Does anyone have any more ideas?
UPDATE 3: Found a working solution, added an answer below if people are interested :)

Where can I find the model used in this question? The nearest I could find was this one http://blenderdiplom.com/en/downloads/584-download-cycles-material-test-scene.html but it's less angular and more rounded.

Where can I get the model you use for testing?

You know it wont be consistent effect because it's completely dependent on vertex density, what works for some part won't work for others. Its not possible to make universally good effects with pointiness, you need to fine tune the ramps case by case anyway. This goes for the node kit mentioned above, I assume it's using pointiness since there is no per pixel curvature in Blender.

@whotheme thanks for the heads up. Spend a while away from the project but picked it up again recently. Ended coming up with a solution that seems to work, although I actually bought Stencil Kit to ensure that my solution wasn't the same- and it isn't :) Going to work on a tutorial below.

@RichSedman, the model was actually one I created myself, based on the one in the gif. If you're interested in downloading it for your own material tests I can upload a .blend. I believe they're called 'Shader Totems'.

Creating Procedural Weathering Effects in Blender

Okay so I ended up developing a solution to this question a couple of months back, but I see it's gained a lot of interest recently so I thought I'd post a tutorial on how I went about solving it.
The weathering effects basically involve creating a Worn Edge and Cavity Dirt mask, which can then be used to blend between 2 or more shaders within one material.
This is along the lines of what we'll be creating.

(NOTE: This effect works best for objects with a high poly-count, so throw your object through a sub-surf modifier.)

The Edge Wear Mask Node

1. So to begin, we'll create a simple material a mix between a Diffuse and Glossy shader. In my final image I used Blender Guru's PBR Dialectric and PBR Metallic node groups to give the material a little bit of added realism, so I'd recommend checking those out :)

2. Now we've set up the base material we can move it off to the side and concentrate on building the Worn Edges Mask node group. We'll do this by first adding in a Geometry node, and connecting the Pointiness attribute to the input of a Color Ramp node. I set the black stopper to a position of 0.47, and the white stopper to a position of 0.514.

3. Next we can add in a Math node and set its mode to Subtract. Plug the output of the Color Ramp into the top input of the Math node and set the bottom value to be 1. Then, add in a MixRGB node, change its blending mode to Add and the Fac to 1, and plug the output of the Math node into the top Color input. Finally, we can add in a Noise Texture node and plug the Fac output into the second Color input of the MixRGB node. (Don't worry, it's less complicated from here!).

4. I'll go into more detail on the Noise Texture later on, but it is basically controlling the shape of our edge weathering, which bits are chipped, etc. Anyway, now we can add in another Math node and set its mode to Greater Than. This is where it gets fun- plug the Color output of the MixRGB node into the top input of the Greater Than node and begin adjusting the bottom value. You should see the white areas 'shrinking' towards the edges, the closer you drag the slider to 1 (I found a value of 0.35 to look good here).
And that's the basis of our edge weathering mask! All black areas of the mask will later show the Diffuse material, and the white will be Glossy.

5. Let's plug our mask into the Fac input of the Mix Shader to see how it looks... not too bad! Has a chipped paint feel to it.

6. One last thing we can do before packing it all into a node group is add a Bump node and connect the output of the Greater Than node into the Height input. Optional if you want to use this effect, sometimes it can give an odd outline around the border between the 2 shaders, but often it can add some depth, making the materials seem layered.

7. Now we can select the Geometry,Color Ramp,Subtract,Add,Greater Than and Bump nodes, and hit Ctrl+G to create a node group out of them.

8. Then we'll connect the noodles to the appropriate group input and output slots and rename them accordingly (see the screenshot).

9. Finally we can rename our Node Group to Worn Edges... and that's it! We've successfully created the edge wear mask node! :)

The Cavity Dirt Mask Node

1. Now, setting up the Cavity Dirt is ridiculously simple now that we've completed the previous steps. First, add another Diffuse and Mix node to the material, like so...

2. Duplicate the Noise Texture and Worn Edges nodes. Adjust the parameters of the Noise Texture node to how you'd like the cavity grime to look. Now, click the '2' next to the Worn Edges name on the node group to make the duplicate a single user copy, and rename it to 'Cavity Dirt'.

3. Finally, hit Tab to go into the Cavity Dirt node. Find the Color Ramp node and hit the flip ramp button to invert the ramp from 'black -> white', to 'white -> black'.

4. And it's as simple as that! Tab out of the node group and tweak the settings, and you'll be able to see a mask that only affects the cavities of the object.

5. How it looks when combined with the second Diffuse shader.

Using Image Textures

Although the Noise Texture node used as the shape mask doesn't look toooo bad * cough *, I've found that using image textures can give much more appealing results if you use generated box mapping.
These tend to work best if they're greyscale, and I've found dirt masks/grunge maps tend to look good. The ones I used in my original image came from Max Textures. I've found they provide some nice, high quality, seamless ones for free.

Limitations

Although this technique works very well for most applications, there are a couple of limitations to the method...

As mentioned by other answers and at the start, the fact that this setup uses the Geometry node's Pointiness attribute means that it will not work at all, or at least not well for low-poly models, as there simply aren't enough vertices.
Some texture maps work better than others, currently I haven't been able to distinguish exactly what causes one to work well and another not so much. My best guess is it's the contrast.
Sometimes the values to bump up edge wear, for example, can be very tight. That is, there can be a drastic jump in how the mask covers the object with a value change as little as 0.1. Again my best guess is that this is due to contrast when using image textures.

Other than that enjoy! Hope it helps people out, and don't forget to upvote if you liked it! :)

Nice answer regarding adding dirt and wear and worth an upvote... but... it doesn't seem to address the problem posed in the question - how to blur/feather the Pointiness - as mentioned in your Limitations at the end. I was never really happy with Pointiness and its lack of configurability and am trying different solutions to get a similar but configurable effect - one tht works with flat surfaces as well as more rounded meshes - but it's not quite there yet.

Definitely deserved the bounty!

@RichSedman Thanks for the input, and you're right, but I think it was probably my fault for being slightly ambiguous with what I meant when I posted the original question. Initially I was hoping that I would be able to find a way to expand the mask away from the edges, and have it become more blurred the further away it spread, and that this would help me make the input texture 'bleed' away from the edges... if that makes sense... cont.

@RichSedman cont... In then end the 'bleeding' effect was still possible with the solution I developed, although you're right, technically it doesn't solve the feathering part of the question. I think that whilst the pointiness node is solely dependent on mesh geometry, there's no foreseeable way to use it for low-poly objects, and thus the best option for them would be to bake cavity maps, etc and use them in place of the pointiness color ramp. Let me know if you come up with any better solutions though, I'd be interested to see what you find.

And @10Replies thanks a tonne! Glad you found it helpful :)

You can pass the Pointiness value through Color Ramp, move the color stops towards the center until you get desired initial state, then pass it trough Add or Subtract math node and animate the bottom value to offset the color until it covers all the object.

Thanks for the reply Denis, though it's still not quite there unfortunately- I'll add in the updated material to my original post.

I played around with some settings and this what I got after having deleted a lot of math:

It doesn't look really good now, but it works. The idea is to manipulate the pointiness until it covers the areas you need and then mix it up with some noise. Tweak the value of the subtract node to control how much Pointiness you want to have (Use a ColorRamp for good results). The first multiply is to add contrast (Just found out that both nodes can be replaced by a Bright/Contrast and it will give you the same).
Then, mix it up with some noise to give it texture. You probably won't stick to multiply for combining and add more noise textures, but this is just a proof of concept.
EDIT
I changed my node setup a bit, the results are better and easier to control now. It also takes care of edges pointing inwards. You probably want to change the noise texture by a rust map or so.
The bottom value input is the main multiplier. It will adjust brightness and sharpness of the edges. The other two are controllerss for the bright/contrast node to furtherly adjust the value. For testing, mute the multiply node to disable the noise texture until you get proper results.

Solution for Eevee (works only with shade set to smooth!):
since pointiness doesn't work in eevee we wil just have to fake it .

you can then use the shader in Hexbob6's answer to make the shader:

hmmm, not quit there yet, lets add a subdivision mod and a planar decimate mod:

Result:

Heck yeah!


text:
How to draw out of XZ plane in Blender?
I have started a new project in Blender and selected 2D animation mode.
Next I drew few shapes and then rotated scene a bit and found, that all my drawings were actually in 3D but constrained into $XZ$ plane with camera, looking at the plane.

What if I want to draw in other planes, say $XY$ or arbitrary plane, say another one parallel to $XZ$? Is it possible?

on the header menu, you've selected FrontXZ, you can switch to View or to another axis, is it what you're looking for?

You have 2 options available in the viewport to control the placement of new strokes.
Hint : Hover your cursor over a setting to see more information about it.

Stroke Placement
You can choose to place the drawing plane on the World Origin at $(0, 0, 0)$, on the 3D cursor, a 3D mesh surface or another stroke.
Drawing Plane

You can Choose a plane orthogonal to the view, on the global XY, global YZ, or global XY plane or on the local XY plane of the 3D cursor.
By default the 3D cursor is not visible in the 3D viewport in 2D Animation. Enable it in the overlays :

To move or rotate the 3D cursor, you have to open the "N" panel with N, and go to View > 3D Cursor Panel. You can also change the tool in the left hand side and move it with the mouse in Object mode.


text:
Unable to inset N-gon face
I am trying to inset N-gon face but failing.
Create cube. Delete top and bottom faces.

Add separation with Ctrl + R so that it is not in the middle of a face:

Fill top hole with F. It will be a 5-gon. Select it and start inset

Make it smaller than the distance between center and additional separation. Dithering begin.
Is n-gon prohibited situation? How to fix out of it?

It's hard to tell exactly what the problem is without being able to directly examine the mesh, but I would guess double vertices are the culprits. Try pressing M to merge by distance with everything selected or just delete the top face and remake it.

This top face looks like an ngon.  Hiserod's suggestion should work

@HISEROD no, merging didn't do anything and didn't help

There's nothing wrong with your mesh or Blender. It's just how the inset function (or the math behind it) works. Blender creates parallel edges that are going to overlap when the inset starts overlapping the parallel edge of the additional loop. A possible fix: Inset the face to the point where the vertices start to overlap, merge them into one vertex, then inset the resulting face further, if needed.

metaphor_set's suggestion would work well or you could use extrude and scale.

Instead of filling the face and insetting, you can extrude the edge with E and scale it down by pressing S afterward.


text:
How to disable disappearing of Stencil Brush while navigating viewport in Texture Paint Mode?
I've got 3D scanned model, it has complicated geometry.
I UV Unwrapped it, now it's time for painting.
I've shot several photos of the real object, and I started to paint the 3D object using photos of the real object.
That's maybe one of not so common situations: the 3D model has the same geometry as real one, so it looks like it would be easy to paint it with stencil brush, but I'm having very hard time with this, most of because of every time I'm rotating, panning, zooming the viewport - the stencil image disappeares, it makes almost imposible to perfectly match viewport with these photos.
Can I disable the disappearing of the Stencil while navigating the viewport?
Also, is there a way to zoom the viewport without changing perspective? (such as "Size" parameter in Camera options? I know I can assing camera to viewport, but that's not what I am asking for)

Instead of using only the Stencil Brush, you can use the old method of multiple UV layered images projected from different views and then use the Clone tool in the 3d viewport to paint from the source layers in the final texture layer. After you get the bulk of your paint finished, you can then use the Stencil Brush to fix areas that need cleanup.


text:
Where is Enable 3d manipulator option in user preferences?
I didn't find the Enable 3D Manipulator option in User Preferences > 3D View > 3D View Global in Blender.
Thoughts?

Check User Preferences > Interface tab > Manipulation: option and dropdown.

Note that you can also disable/enable it in the footer of the 3D Viewport.
On:

Off:

Lastly, as metaphor_set points out, you can key Space to open the Search menu and search for Enable 3D Manipulator.

The button for enabling the manipulator is at the bottom of the 3D view. But the bottom panel might be hidden. Then you have to press the plus sign to show that panel:

Note: The manipulator only shows the axes for which the Transform Lock is disabled in object mode. Also, the manipulator is not shown if nothing is selected.

Not all options are in the menu. Hit Space to open the command search and type "manipulator".

Thank you but even I click enable 3d manipulator does not show any options does not show enable 3d manipulator window please help and thanks

Perhaps you want to add a screenshot and highlight what you mean exactly by "does not show enable 3d manipulator window"? It's really hard to under stand...

Shortuct for enabling 3d manipulator is Ctrl+Space.

neither ctrl-space nor searching for "enable 3d" do anything for me in blender 2.8

Right top corner in 3d view, this will turn on arrows (manipulators)

While correct it should be mentioned that this is the case for 2.8, the rest of answers are for 2.79 and prior


text:
Why am I getting rounded faces when combining Edge Split and Subsurf?
What's going on here? I'm trying to apply a normal edge split with a subdivision to make it look high poly with good edges. But when I applied it on this model it did this.

The Edge Split modifier makes two duplicates of each edge that is greater than the Split Angle: value, one for each face that touches the edge. This makes it so that when you add a subsurf modifier, set to Catmull-Clark, it treats most faces as their own plane, since the faces are not actually connected anymore. Like, have you ever tried adding subsurf to a plane and seen it turn into more of an octagon? It's like that.
What I can recommend as a solution for you is to add just a subsurf modifier and then use a lot of loop cuts (shortcut Ctrl + R) in Edit Mode to tighten the edges. If you use loop cuts, you will still get nice clean edges, just like you would with the Edge Split modifier. Read more about loop cuts in the manual.

How can I change it to be smooth with nice edges without the seperation?

@user3718756 As I said, loop cuts. See the link that I added to my answer.


text:
I'm trying to make my plane (ground) explode up into the air
I'm trying to make my plane (ground) explode up into the air. However i only want a small section of it to explode (as if an object is shoot out of the ground). I'm new to blender so i not to familiar to the interface and I'm using version 2.77

So like the result of this https://youtu.be/2R7N8UqT04U ?

A little more condensed, like this? http://imgur.com/a/p2VAC

metaphor_set yes like that.. is there a tutorial?

I can make one, it might take a day until I have time...

Introduction
The discribed method is only one of several methods to create an animation of a ground explosion and it's the fastest method that I know.
It will cover only the basics of preparing the plane, creating the debris and setting up the physics to get this result.

I won't go over the task of texturing here, since BlenderSE is not the best medium to create long tutorials. A good method to texture the debris is described in one of the Timster's videos which you can find here: Project Assets: Low Poly Rubble
Blend file:

Prerequisites
In order to get nice debris, we are going to use the Cell Fracture addon. Hit Ctrl+Alt+U to show the User Preferences, to to the Addon Panel and type "cell" into the search field. On the right side, activate "Object: Cell Fracture", (if you plan to use the addon regularly, you also might hit "Save User Settings"). Close User Preferences.

Preparation of the Base Meshes
Add a plane, resize it to a reasonable size and subdivide it (If you already have a plane or a terrain of some sort, you can use that as well, as long as it has not too many faces). Move your vertices around in the area where the explosion should take place, until you have a nice uneven jagged area. To get a nice shape you might enable proportional editing mode for the rough shape and disable it again for the finer details.

Select the faces for the hole, then press Numpad 1 to go to front view, then press E and Z extrude the vertices down on the z-axis.

Enable Face Select, turn off "Limit selection to visible" and select all the faces below the ground plane. Hit Shift+D to duplicate them, then hit P and select "Selection" to create a new object out of the duplicated mesh. Tab into Object Mode, hit M and 2 to move the new object to Layer 2.

You should now have two objects like these below, each on its own layer.

Rename the object on Layer 1 into "ground" and the object on Layer 2 into "debris".

Go to Layer 2 and tab into Edit Mode. In front view (Numpad 1), enable "select vertices", "Snap during transform", set "Type of Element to snap to" to vertex and also enable "Automatically merge Vertices". Select all vertices of the ground plane. Hit G and Z to move them up on the z-axis until it snaps and fuses with the original mesh.

Still in Edit mode, hit A until everything is selected, then hit Ctrl+N to make the normals of your mesh face outwards. Select the vertices of the ground plane again and move them on the z-axis until the height of your mesh is about 3/4 of its original size. Then scale the ground plane down to 0.9 (Hit S then 0.9).

Hit Ctrl+R to add two loopcuts (Mouse Wheel up), then tab into object mode.

Add a Subdivision Surface modifier, set its type to "Simple" and the Numbers to 3 and click "Apply". Then go to the Tool Panel (T), go to "Tools" panel and click the Cell Fracture Button (it should have been added by the Cell Fracture addon, see Prerequisites). In the now opened Settings Window, set "Source Limit" to 250, select "Random" and click OK.

You should then see something similar to to this in the 3D viewport.

You now still have your original debris mesh in Layer 2 and the newly generated fragments in Layer 3. Switch to Layer 3, then go to the Outliner and select the mesh that should be called "debris_cell". This is now your active mesh. Move your mouse pointer to the 3D view and hit A to select all objects.

Physics
Go to the Tool Panel, then to "Physics" and click on "Add Active" (note how the outline of your selected objects turn from yellow to green in the 3D Viewport). Then go to the Properties Window, switch to the Physics Panel, go to "Rigid Body Collision", enable "Collision Margin" and change it to 0.15 (this influences the force). Go back to Tool Panel - Physics and click "Copy from Active" to apply the changes to all the selected objects. Reminder: You'll have to do this every time, when you change something in the Physics Panel!

Play Animation
Go to Layer 1, select your ground mesh, then go to the Tool Panel - Physics and click on "Add Passive". The ground mesh now should also have a green outline. Go back to Layer 3, hit A until everything is selected, then M and 1 so move everything to Layer 1. Hit A until nothing is selected go to the timeline area and hit the "Play Animation" button.

Enjoy!

Well formatted and great annotations on the images. :) Do I understand it correctly that you simply used the force caused by the debris being close to each other (collision margin and penetration penalty) for the dinamics?

@Róbert László Páli Thanks. Yes, the force caused by the collision margin should be enough for a simple scenario.

I have a procedure that produces a result like the following. If you wanted it to explode differently, I would recommend using Force Fields.

Shift + A > Mesh > Plane.
Key S and drag to scale up the plane.
Tab into Edit Mode.
Key W to open the Specials menu and select Subdivide.
Key T to toggle open/close the Toolshelf.
Change the Number of Cuts to 10.

Key Shift + R to repeat the previous operation.
Deselect everything that you want to explode.
Go to the Properties panel > Object Data tab and add a new Vertex Group. Name it Explode. Make sure that the Weight: value is set to 1.
Click Assign.

Tab out of Edit Mode.
Key Space and type Quick Explode. Key Enter.
Go to the Properties panel > Object Modifiers tab > Explode modifier and select the Explode vertex group.
Click Refresh.

Go to the Properties panel > Scene tab > Gravity dropdown and change the Z: value to 10.

Go to the Properties panel > Particle Systems tab > Emission dropdown and change the End: value to 50.

Here is the .blend file:

@mlm If my answer helped, please consider marking it as accepted by selecting the check mark in its upper, left-hand corner. It would help me greatly and make me very happy!