Create 3 curves/pipes that intersect holes in multiple objects and are equal distance from each other I want to create 3 metallic rods (solid pipes) which start from the solid block on left, pass through the holes on the other two stands and a few more off-camera, and end in a similar solid block. The blocks will have a transparent acrylic/plastic material. Two rods will be towards bottom of holes, and one on top. They have to be in that arrangement because some balls have to pass through them.

I can't figure out how to create such 3 curves that always stay equal distance from each other, which touching the boundaries of those circles at the same time. My best guess is a single bezier curve, which is then converted to a single object/circle, and then it is modified to have 3 pipes on its edge, but have no idea how to go about it.

Please mention steps instead of only techniques and workflow names if possible, as I am a complete beginner in modeling.

Thank you

Final

Bevel for Curve (wires)

In this step you will create Bevel object for main curve.

  Changed to method Duarte Farrajota Ramos mentioned in comments.

Shift+A > Curve > Circle.
In Edit Mode select all and duplicate your Circle than scale it down.
Turn on Snapping and move duplicated Circle up.
Switch Pivot Center to 3D Cursor.
Duplicate smaller Circle and rotate it by 120 degrees.
Repeat step 5. for another Circle.
Remove bigger Circle.

Main Curve

Here you will make Bezier Curve which you can manipulate as you want and it will keep your wire in place.

Shift+A > Curve > Bezier.
Go to Data tab.
Select Bevel Object.
Crank up Preview Resolution.
Most probably you will need to scale down your Bevel Object.

Placing Main Curve in holes

I've used a bit tedious way. Most important thing here is to have the same number of vertices in Bezier Curve (Main) as number of hole objects.

Select inner loop of hole object and place 3D Cursor in it - Shift+S.

Select vertex from Main Curve and move it to 3D Cursor - also Shift+S.

Repeat for every hole selecting another vertices from Main Curve.
Select all vertices in Main Curve and V > Vector than V > Automatic to have unified handles.
Tweak handles to be round.


UV Mapping a sculpted object shows glitches I am going through some fundamentals in UV mapping and I am taking my first steps in UV mapping a sculpted object. The way I created the object (representing a candle) was:

taking a cylinder

apply a mirror modifier

apply 3 subdivision modifiers to obtain more dense and detailed geometry to have more details for the sculpting part

and then started sculpting.
Problem is that now I just added the plain checkers UV and I see these weird stuff happening for the first time. The candle in the Scene Collection is:

The weird stuff happening is:

Any idea of what is going wrong?
The way it should be from the tutorial I am following:
`
EDIT:
after cutting the object in half with a Seam and re-unwrapping the glitches are still there (see image below) plus you can see the weird behavior I recorded in this video:
https://youtu.be/bpuPxHHol1U

Don't apply the subdivision modifier. This makes the geometry unnecessarily dense. Re-meshing may have solved your problem but this will not hold up.
Also smart UV unwrap isn't the best way to unwrap because of lack of control. Instead make creases and then unwrap using U>Unwrap>Unwrap. Also learn about edge-flow. This is very important when modelling.


Blender texture paint problem I'm starting with sculpting. So after I sculpted I tried to texture paint my model. But there is weird thing:

I'm doing this for a first time and I'm very inexperienced. Thanks for answers.

Try looking at your normals in edit mode. Go into edit mode with the object selected, and show the normals (overlays drop-down, shows you the wee blue lines from the centre of each face).
I'm guessing all the faces that won't take your paint stroke are facing the wrong way- inside the mesh.


is it possible to make light not follow object geometry? I made a character that has abnormal eyes shape, and set a principled BSDF material for the lights to reflect a round white dot over it. But in some corners the light gets distorted due to the abnormal faces of the mesh. Is it possible to make the light not follow the geometry of the eye, and just display a round dot in every part of it?
Here is the file:
https://www.mediafire.com/file/ojmqwbeqhpsikvh/zzzzzz.blend/file

You can achieve an effect like this by manipulating the normal.
Here's Suzanne showing the difference with the default surface Normal and the manipulated Normal based on the vector from the origin to the surface point :

By using a Normal calculated based on the origin, the reflection will always be as if it is formed on the surface of a sphere - thereby ignoring the geometry. Obviously the reflection is still on the surface of the mesh, but it is as if it is pointing in the direction a sphere's surface would be pointing if it were a sphere of that size at that point.
Without the manipulated Normal you can see the distorted reflection due to the surface geometry and with the manipulated Normal it becomes a symetrical circular reflection.


why i cant rotate to close the lid I have made the box and the lid. I want to close the box with the lid. I have selected the edge and with the 3d cursor as pivot point im rotating. with the x axis i rotate i hit x twice also but its not working. Why its moving from the position. Any suggestion or help plz.

You need to change the Transform Orientation. In some case, changing to local orientation will work, but in your case, you need to create a new referential :

Create specific Transform Orientation

On edit mode, select an edge that has the correct direction for the pivot of the box. (for example the edge on the bottom of the lid )

Press n to open the right menu in the 3D view. Find the "Transform Orientations" menu and press on the little +. This will create a new orientation that you will use for your rotation.

Go back on object mode and change the transform orientation (on the bottom of the 3d view) to your newly created orientation wich should be named "Edge" or "Edge.00x".

You can now use the 3d manipulator to rotate the top of your box along the newly referential created.


How do I animate a smooth transition between all colours in the RGB spectrum? I want to shade a lightbar. It should have a smooth RGB Transition like in this video at the beginning:

https://www.youtube.com/watch?v=bBNohDeo8XI

With a color ramp it would take to long to add like one million colors and with the RGB Circle you have white as a color with in, what I don't need.

Here is a example of a lamp but it also should moving like smoke or something like that, just a smooth transition don't know how to describe that

I believe that's the setup you wanted. By adjusting/animating value node you can achieve effect close enough to what I've seen in the video (or you can just use 'Hue Saturation Value' node input itself). You can adjust look of the gradient by changing texture scale (in the Mapping node), texture interpolation (in texture node itself) and by adjusting colors in the color ramp (for better look I recommend you to use HSV mode (with any sub-option) in the color ramp).

Have a good day!


Hair Paricle System not rendering properly on plane My scene involves a plane that has several modifiers:

Subdivide, set to six.
Array, set to -1 Y axis
Array, set to +1 X axis
Displace with a basic cloud texture

I tried following Andrew Price's tutorial on realistic grass, by adding the default hair particle system to the plane and setting the render to a group of grass, but the grass only appears in a small space in the render. What am I doing wrong?

Make sure the use modifier stack checkbox is checked in the Emission section of Particle settings.


Python select specific edge loop based on diameter and height As seen on the screenshot below, How can i select 1 edge loop based on its diameter (radius) and height?
For example
I only want to select 1 of the 2 edge loops that has different diameter but are on same height

I tried

`my_verts = [v for v in verts if (10 / 1000)  <= v.co.z <= (30 / 1000) and (-80 / 1000)  <= v.co.y <= (80 / 1000) and (-80 / 1000)  <= v.co.x <= (80 / 1000) ] `

But that does not really wors well

On creation

Started as a comment and became an answer

  Could you add some context on how the mesh came to be, are you
  creating from scratch with a script.

If using bmesh operators often the new geometry is returned, for example making question model from  a circle primitive using the extrude and inset operators.

Example using bmesh to add a cylinder bmesh.ops.create_cone(...) find the top face, then inset in and up.

import bpy
import bmesh
from mathutils import Matrix
me = bpy.data.meshes.new("Wedding Cake")

segments = 16 #oops got cut

bm = bmesh.new()
bmesh.ops.create_cone(bm,
        diameter1=2,
        diameter2=2,
        cap_ends=True,
        depth=0.5,
        segments=segments)

top_face = [f for f in bm.faces
        if len(f.verts) == segments
        and f.normal.angle((0, 0, 1)) < 1e-5]

ret = bmesh.ops.inset_region(bm,
    faces=top_face,
    thickness=0.5,
    #depth=0.1,
    use_relative_offset=True,
    )

ret = bmesh.ops.inset_individual(bm,
    faces=top_face,
    thickness=0,
    depth=1,
    use_relative_offset=True,
    )

bm.to_mesh(me)

To continue the "hard sell on bmesh over bpy.ops" what if we want to make something like this

is a matter of extending above to inset the faces returned from the inset operator

for f in ret["faces"]:
    ret = bmesh.ops.inset_individual(bm,
        faces=[f],
        thickness=0.4,
        depth=0.4,
        use_relative_offset=True,
        )

or instead with

bmesh.ops.extrude_individual(bm,
        faces=ret["faces"])

Another example, adding circles and bridging edge loops (ribs)  As could be done with prior, some data is used and looped.

import bpy
import bmesh
from mathutils import Matrix
me = bpy.data.meshes.new("Wedding Cake")

segments = 16
steps = ((0, 1),
        (0.3, 1),
        (0.3, 0.7),
        (0.5, 0.7),
        (0.50001, 0.4), # gltches on same
        )

bm = bmesh.new()
def create_circle(h, radius):
    ret = bmesh.ops.create_circle(bm,
            radius=radius,
            segments=segments,
            matrix=Matrix.Translation((0, 0, h)))
    return list(set(e for v in ret["verts"] for e in v.link_edges))

ribs = [create_circle(h, radius) for h, radius in steps]
for i in range(1, len(ribs)):
    bmesh.ops.bridge_loops(bm,
            use_pairs=True,
            edges=ribs[i-1] + ribs[i],
            )

bm.to_mesh(me)

Nothings happening

  what version can this script running on? i try 2.81 but does not
  produce anything

Note script only creates a mesh, the data part of an object, we only see a mesh if it is assigned to an object.  To assign in UI (image above) go to properties data and change the linked mesh..

Or via python, create a new object using the mesh and link it to the context collection.  Append following to scripts above

ob = bpy.data.objects.new("Wedding Cake", me)
context.collection.objects.link(ob)

or if using in a create mesh operator (self)

object_data_add(context, me, operator=self)

Selecting the verts

For finding from height and radius, and assuming the origin (0, 0, 0) lies on symmetry axis (0, 0, 1) ie the z axis , would look at the distance of verts from (0, 0, h)  (v.co - Vector((0, 0, h))).length

A vector length test searches within a sphere of influence. Could narrow down further by looking at z component, I go old-school here and look for within a tolerance, abs(v.co.z - h) < TOL where TOL = 1e-5

For really large meshes instead of sorting based on distance, could use mathutils.kdtree to find closest.

Utilize the ngon

For this particular example the inner loop is the verts of the ngon.

Here is an example that finds the ngon whos face is closest to (0, 0, h) and selects its vertices.

Test script, Assumes mesh in edit mode, no selection.  If run on default cylinder selects verts of top face.

import bpy
import bmesh

from mathutils import Vector

context = bpy.context

ob = context.object
me = ob.data
bm = bmesh.from_edit_mesh(me)

h = 1
radius = 1
eps = 1e-05

ngons = [f for f in bm.faces if len(f.verts) > 4]
# sort by distance from (0, 0, h)
ngons.sort(key=lambda f : (f.calc_center_median() - Vector((0, 0, h))).length)
if ngons:
    for v in ngons.pop(0).verts:
        v.select = True

bmesh.update_edit_mesh(me)

The edgeloop of the ngon would be ngon.edges or l.edge for l in ngon.loops

can grow the selection to next loop, will be the edges in  e for f in edge.link_faces for e in f.edges if not any(v.select for v in e.verts).


How to colorize particles by rules I am having pipes where I have liquid go through it.
I want to simulate/show the water and show some blue to red color animation. Blue for cold, red for heat/warmth.
For best control, it would be great to define some kind of color change areas on the path of the water simulation and when a water particle goes through this area, I want to change the color for this particle. The color needs to be kept, until the next color-change area is there and changes the color again.
So I could control and simulate a heat-transfer simulation.
Any ideas how to do this the best way?
Thank you guys!
EDIT:
Here is a screenshot of the animation. You can see the position by Particial works in general. But I want to colorize the blue particles inside the 3 red circles to the color red and they should in their color. I somehow lost my fluid simulation data, so I can't share the .blend file. Sorry.

You can just use a Particle Info node and use it's Position output to control the color of the particles


How to use an alpha map in Blender Render? Whenever I download Nintendo models I come across this texture with the black. I can't transparent it, but how do I use this for stuff in Blender Render mode? If it's possible can you tell me what I do with these kind of textures?

How to use an alpha map in the Blender Internal Render Engine

In the Material context:

Enable "Transparency" and turn the Alpha slider down to 0. This means at its most transparent it will have zero visibility.

In the Texture context:

Set the Influence to be Alpha instead of Color. You'll probably want this slider to be at 1, since this controls the total transparency of the texture. If you lower it, even the opaque parts will become somewhat transparent.


Dark areas appear after extruding Novice in Blender, sorry:)

Why do I have this view of chimney on the house?

I've extruded the hollow region. On the video tutorial that I followed, everything is ok with chimney view

What may be the problem?

That looks to me like the normals are inside-out.  The first thing I'd try is to select the face then ALT-N.  But then I'm a beginner, so after that, I'd be lost.


How to texture a marble I have modeled some marbles, shown here in the picture.

But I need to texture it to look like these:

I have no clue on how to texture these, so any help on this would be greatly appreciated.

Final result:

  This one is too "heavy" answer to explain it step by step so I'll make
  an overview of the node setup and if you'll have some questions just
  ask in comments and I'll expand it.

Overview:

Overall it's really simple setup. Think of it as spheres squashed and distorted inside marble (because they exactly are). Spheres are Spherical Gradient, squash is Mapping Node and distortion are nodes named Sine Wave.

  Don't forget to set in Render > Light Paths > Volume - to more than 0! In this example it is set to 4.

From Node Setup:

They control how much distorted inside elements are. It is separated for X and Y wave. You can make pretty straight lines with those values or with more waviness.

Those one controls overall width of inside elements.
With Scale in Mapping node you can control how our starting sphere (Gradient > Spherical) will be squashed on X, Y and Z axes.
This is color for our elements.
And lastly (or maybe it should be first) this is starting sphere that is pretty much just manipulated by Sine Waves and Mapping Node.

Blend file:


Properties Editor: How to change short to int for "Pass index" button in Relations? I am numbering objects in my scene with the help of "Pass Index" button.

.

Apparently this button is short and it can not be set to  more than 32767 objects in the scene. I would like to change blender source code to be able to set more objects. I found file in which this property is declared: "DNA_object_types.h" (struct Object -> line 252: short index; /* custom index, for renderpasses */.)

But once I change it to int, program will not compile and will give me a lot of errors. What is the proper way to change short to int for this button? How actually rna_object_gen.c is generated? I read through rna and dna articles, but I still didn’t get an idea how to change this short to int. What are the other places in the code which I need to change?

Instructions:

1) Read useful info on following websites:
RNA, Property, DataApi.

2) On this websites blender guys give description how they are creating their gui. Description is not very easy to understand, but following sentences gave me an idea, what is wrong, when I try to convert button from short to int.

  More later about saving and loading, what we have to be careful about in the DNA files is alignment. For compatibility between different compilers and platforms, all members must be aligned correctly. The general rule is that if the size of some member variable is n, it must be defined starting at a location in the struct that is a multiple of n. For example ints must be defined at locations that are a multiple of 4. Structs must be created at locations that are a multiple of 8. If for some reason this does not work out, padding variables can be added in between (usually named pad, pad1, ..). Alignment errors in DNA structs will be printed during compilation.

This is exactly the error, which I was getting, when building the program with my changes.

  Align 4 error (32 bit) in struct: Object col[4] (add 2 padding bytes)

Then I have noticed that all over the code in the "DNA_object_types.h" developers were adding padding variables (void pad, char pad1, char pad2[3]...) for the aligning of the memory.

3) So when you create additional property or variable in DNA, you should align it properly. More on alignment you can find in the file "dna_genfile.c".

  IMPORTANT:

  do not use #defines in structs for array lengths, this cannot be read by the dna functions
  do not use uint, but unsigned int instead, ushort and ulong are allowed
  only use a long in Blender if you want this to be the size of a pointer. so it is 32 bits or 64 bits, dependent at the cpu architecture
  chars are always unsigned
  alignment of variables has to be done in such a way, that any system does not create 'padding' (gaps) in structures. So make sure that:

  short: 2 aligned
  int: 4 aligned
  float: 4 aligned
  double: 8 aligned
  long: 8 aligned
  struct: 8 aligned
  the sdna functions have several error prints builtin, always check blender running from a console.

After I have added padding variable, "Pass index" was finally converted from short to int.


Identifying and correctly mapping various texture maps onto a model (Blender Cycles Render) I am just starting to get my feet wet in the world of Blender, and I am having trouble accurately deciphering and applying the types of files within my first model.

I have searched the web and a couple videos and websites have helped immensely, but not enough were I can accurately map my available files to the model correctly.

The map files given to me are not defined clearly enough for when and where to apply them onto my model (if at all).

While I understand that every file will not be used simultaneously, a good amount of them should be. However, I can be completely wrong and actually have to ignore even more files than I think.

Of the map files listed within the image, I believe the following files should be combined for the model:

Diffuse (known as 'color' in the image)
Normal (more than one normal map such as normal, detail, and smooth is causing further confusion)
Thickness (perhaps this translates to height?)
Specular (known as 'spec' in the image)
SSS Strength (subsurface scattering?)

How can I combine each of these maps to produce a great result with great details as well as correctly map eyebrows and eyelashes? Even then, I am still unsure of what many of the files are, and whether I should ignore them or not. Files such as 'trans' eyebrows/lashes, the normal maps for specific parts of the head (left cheek, right cheek, nose etc.), the black mask files with white blurs, 'shadow mask', 'shift mask', and the entirety of the 'wrinkles' folder.

Here is what I currently have. As seen by the node editor, it utilizes the diffuse, normal, and specular maps. I am hoping that other maps can be combined to further detail the model.

Though I am also having issues with the hair and clothing textures, I believe the issues are different enough to be their own questions.

Finally, here are links that were useful to me during my search in mapping this model:

Download link of the model if you want to toy around with it (import it as .obj or .smd. Obj is preferred, as smd causes more problems)
Identifying Different Texture Maps
SFM to Blender Part 1 import/texturing
Hooking Up Various Map Types in Blender
Another Instance of Various Map Types in Blender
Original author model page

You actually can use most of these maps at once! For the purposes of answering your main inquiry, I make the following assumptions, based on what information you've provided: You already have your model UV unwrapped and your desired maps match the appropriate sections. That is, that you have everything you need for your final image, you just don't know what they do or where to plug them in.

The good news is you've already got the basic idea down pat! You just need a little adjustment. With the sole exceptions of your base color and your subsurface color, the image texture setting that says 'color' should be changed to 'noncolor data'. Clicking on the image texture node in question where it says 'color' should give you a dropdown to select this option. Depending on what version of Blender you're using, you might not see much of a difference, but it does help Blender to understand what you want it to do much better.
The second thing you need to do is add one more node to your setup. Blender doesn't know exactly where you want the image textures to go, so it's making an educated guess. Sometimes this works out alright, but most times, it's not really what you're looking for. Happily, telling it what you want it to do in this case is very simple. You need to add a Texture Coordinate node. You'll find this in the Input menu. Plug the UV slot into the vector slot of your Image Texture node.

On to explaining your maps! While I'm not 100% certain of all the file formats Blender can use, the general rule of thumb is if it lets you see it in the file selection menu, you can use it. However, if you're getting strange results, you might want to consider making .png or .jpg versions of your map and using those.
As most of your slots and maps are labeled, you won't have too much trouble sticking them where they should go, with a few exceptions. Your thickness map should actually go in your transmission slot. This isn't the same as SSS (subsurface scattering), but it's similar in concept; it's telling Blender what parts are the thinnest, and should therefore let more light pass through in those areas. By itself, it's going to make your model see-through, which isn't what you want, but by mixing it with subsurface strength, it will remain solid and only let your subsurface color through instead of whatever's behind Elena. While you can use the thickness map in the subsurface strength slot as well (definitely do this if you're going for a more stylized look), try just playing with the slider, first, since your main magic is happening on the transmission slot.
Your specular map is an inverted roughness map. You plug it into the roughness slider, but you're going to have to invert it, first. If you look under the Color section in the add menu, you'll find the invert node. No fiddling required, just hook your map to this node, then from this node to your roughness slot.
Bonus: You can add an invert node to any of your black-and-white maps to adjust the strength; all the way to zero will make it the original strength, and sliding it towards one will decrease the effect of the map.

You only need to know one more thing to use all those extra normal maps. Masking. You've already noticed the black-and-white masks labeled as such. These go with the normal maps of a similar name. For example, 'forehead_mask' will be working with 'forehead_normal'. In a nutshell, masks serve as more complicated instructions for mixing. You plug this into the mix factor of a mixShader or mixRGB, and it tells Blender what parts to put different maps, based on how much white is in the image. Using the forehead as an example once more, the parts that are pure black will be completely the first (top slot) map, and all the parts that are pure white will be completely the second map. If I were only working with color or strength maps, I'd use the mixRGB node, and life would be easier. However, since you're mixing normal maps, which are very special snowflakes if you want accurate results, you're going to have to use the mixShader.
It's actually not complicated at all, it's just going to make your node tree a little crowded. I'd brush up on grouping nodes for your sanity, but since that's not necessary for function, I won't go into it here (feel free to message me if you want to do this and it's giving you trouble).
You will need to make a new principled node setup for every single normal map. You can reuse all the other maps if they don't come with their own. The files seem to be pretty well-organized, so they should have the same name if they do.
Once you have all your nodes set up, it's time to mix them. Please remember that order is extremely vital for overlapping parts. I don't know what your wrinkles look like, but if none of them touch each other, you don't have to worry as much. But if they do overlap, you're going to need to work your way from the lowest part to the highest part. In this case, the lowest part of the setup is the first node tree you made for the skin. To elucidate, you want each higher layer to be on the bottom slot of the mixShader; this is the one controlled by the white parts of the maps.
To mix, add a mixShader to your node tree. Plug your first principled node set up with the next-highest one. For example's sake, let's say you're adding the left cheek to the base layer. Add your left_cheek_mask map like you would any other map you've done so far, and plug it into the mix slot. Next you're going to add another mixShader and combine this result with the next one higher, in exactly the same way. Repeat this process until you've added everything you care to, then plug the final result into your material output. (The surface slot, in this case.)

From the looks of your maps, your hair, eyebrows/eyelashes, eyeballs, and inner mouth, are all separate objects. This means all you have to do is make sure you click on those pieces and add your materials to them in exactly the same way as you have the skin.

I'm afraid I don't know for certain what the hair shift map is for, without seeing any other attendant hair maps, but if I had to guess, I'd say it plugs into the tangent slot. I think the purpose is to give each hair some slight variety.

The trans maps are alpha maps. (Likely short for 'transparent', given the shape of the eyebrow and eyelash objects.) Invert them like you did with your specular map, and plug them into the transmission slot.

I hope this information helped! Good luck, happy Blending, and feel free to contact me for any reason!


How can I remove a linked library with Python? Load and add linked object

I'm working on an add-on. The purpose is to link and un-link groups from another blend file. Thanks to stack exchange and the Blender documentation this works pretty well.

This means I can load a library and import a group from it.

with bpy.data.libraries.load(path, link=True) as (sourceData, targetData):
    targetData.groups = sourceData.groups

Then I search the library and extract the group to create an instance of the group:

instance = bpy.data.objects.new(name, None)
instance.dupli_type = 'GROUP'
instance.dupli_group = group
context.scene.objects.link(instance)

The result is a dupli-group object that links in the other blend file. (the link is persistent and will survive a reload .. that is what I want).

Unlink/Remove/Delete

My idea is to do the opposite. If the user does not want this link anymore, I would like to get rid of

the instance
the group
the linked library

This works pretty nicely too for this instance:

context.scene.objects.unlink(instance)
bpy.data.objects.remove(instance)

and the group:

group.user_clear()
bpy.data.groups.remove(group)

I saw (in the outliner/Blendfile)there is still a user to the library. I guess it is the group object. So I removed that too:

for object in  library.users_id:
    for object in  library.users_id:
        object.user_clear()
        bpy.data.objects.remove(object)

Now the outline shows me the library without any user ... but

How can I unload/remove/delete the library without reloading the blend file?

It seems there is no API call to do that. bpy.data.libraries.remove() does not exist. There is a load but no unload.

Saving/Loading the file removes the library. But this is far away from any comfort.

  Reloading the blend file destroys the current context. E.g. undo would not be possible anymore. It also involves unnecessary file operations, that leads to another cycle in the backup files. Beside of that it simply feels incorrect to use such a workaround (Imagine you need to restart your PC each time you delete a file)

I found this one: Q: Proper way to remove unused linked Group data-blocks but this does not answer my question as I want to get rid of the library not just the group.

Do I miss something?

Thank you
Monster

Quite an old thread, but it seems there is finally a solution available.
Newer versions of Blender provide the batch_remove method in the bpy.types.BlendData type.
So you can call:
bpy.data.batch_remove(ids=(my_library,))

my_library is a bpy.types.Library object in this case and no string/name.
Keep in mind that to this date, the documentation states, that this method is considered experimental, but as long as you don't deal with blend file critical data blocks like scenes, it seems you should be fine.


I've made a rope of extruded icospheres in BGE - how to prevent stretching? Per the answer by David (Nice work!) to the question "how-to-make-a-rope-in-the-bge," I've made a rope of extruded icospheres. Every physics trick I know (Which obviously aren't many) still leaves the rope stretching, as in the screenshot. What am I missing? Blender 2.79 is used.

You might try to increase physics substeps. Picture:

The documentation says:

  Number of simulation substep per physic timestep, higher value give better physics precision

This may potentially solve your issue.


How to texture paint across all objects that share the same material/image? This is a greybox project, so we shouldn't take in account detail or sustainability. Just something that will "work".

I have several objects that share one UV map and one material. I used Smart UV project for all of them so that it would pack them in the same space. I made a new image and applied it to the material.
I can texture paint each object just fine. However, I need to paint across all of them at the same time, in the 3D viewport (not the image editor). As it is, I need to select each object, then go to Texture paint and I can see my previous strokes, but I need to see them all at the same time (I'm making relationship lines etc). How to do this?
Also, my texture doesn't appear at all in material mode, although I have connected the texture to the diffuse channel.

If they already share all the same UV space, then temporarily you could then join them together until the paint stage is done.


handle vertex property changes with msgbus.subscribe_rna I want to trigger a function when any mesh vertex is selected. After alot of research, using msgbus.subscribe_rna seems to be the way to go, unfortunately even though i can use it to trigger a function when say, objects are selected, when i try the same for changes in vertex propterties it has no effect.

import bpy

handle = object()

#subscribe_to = bpy.types.MeshVertex, "select" # Doesn't do anything
subscribe_to = bpy.context.object.data.vertices[0].path_resolve("select", False) #Doesn't do anything
#subscribe_to = bpy.types.LayerObjects, "active" # Triggers when an object is made active
#subscribe_to = bpy.types.Object, "location" # Triggers when an objects location is changed in N panel

def notify_test(*args):
    print("Notify changed!", args)

bpy.msgbus.subscribe_rna(
    key=subscribe_to,
    owner=handle,
    args=(),
    notify=notify_test,
)

bpy.msgbus.publish_rna(key=subscribe_to)

An alternative using bmesh and a draw callback

As mentioned in comments, here is an alternative using a draw callback on the 3d view.

Simply prints the active element.

import bpy
import blf
import bmesh

bmeshes = {}
#from gi.repository import Gdk
class DrawingClass:
    def __init__(self, context, prop):
        self.prop = prop
        self.handle = bpy.types.SpaceView3D.draw_handler_add(
                   self.draw_text_callback,(context,),
                   'WINDOW', 'POST_PIXEL')

    def draw_text_callback(self, context):
        font_id = 0  # XXX, need to find out how best to get this.
        # draw some text
        blf.position(font_id, 15, 50, 20)
        blf.size(font_id, 20, 72)

        ob = context.object
        meshes = set(o.data for o in context.selected_objects if o.mode == 'EDIT')
        if context.mode == 'EDIT_MESH':
            for m in meshes:
                bmeshes.setdefault(m.name, bmesh.from_edit_mesh(m))
        else:
            bmeshes.clear()
            return
        me = ob.data
        blf.draw(font_id, f"{bmeshes[me.name].select_history.active}")

    def remove_handle(self):
         bpy.types.SpaceView3D.draw_handler_remove(self.handle, 'WINDOW')

if __name__ == "__main__":
    # test call
    dc = DrawingClass(bpy.context, "Auto Layer Running......")
    dns = bpy.app.driver_namespace
    dns["dc"] = dc


Dope sheet keyframes: select every nth frame I've got the following dope sheet keyframes setup. I want to automate the process to select every 2nd keyframe of an object. It's sort of an edge loop selection on keyframes, but slightly different.

Select evenly indexed keyframe points and handles.

The keyframes in the fcurve are in order when iterated. Select every second (odd one) by making a False, True, False, True,... list the same length as keyframe points to select the points and handles accordingly.

Test script, (every second) selects the keyframes of the context objects animation. The one shown when action editor is chosen from dope sheet.

import bpy
context = bpy.context
ob = context.object
ad = ob.animation_data
action = ad.action if ad else None
if action:
    for fc in action.fcurves:
        #fc.select = True # select fcurve too?
        sel = list(bool(i % 2) for i in range(len(fc.keyframe_points)))
        # select point and handles
        fc.keyframe_points.foreach_set("select_control_point", sel)
        fc.keyframe_points.foreach_set("select_left_handle", sel)
        fc.keyframe_points.foreach_set("select_right_handle", sel)
        #del(sel)  # clean up?

Notes:

Replace action = ad.action ... line above with action = bpy.data.actions.get("SomeActionName") if you know the action you want to modify by name.
For every nth, in this case every 3rd, where for example sake there are 15 keyframes (py console code)

>>> nth = 3
>>> sel = list(not (i + 1) % nth for i in range(15))
>>> sel
[False, False, True, False, False, True, False, False, True, False, False, True, False, False, True]

% is the modulus operator, for integers its the remainder, eg 5 % 3 == 2  Indexes start from 0.


How to make a cellophane plastic shader/material? I can't find how to replicate the look of this specific material, cellophane.

I want to create a candy wrapper for a lollipop that I'm making for my 3D modeling class. I've tried 3 different material setups. I can't seem to find what I'm missing. Here is the closest result from a material that I found from a youtube tutorial.

I'm trying to make something like this:

Improve lighting
The main difference between your results and the reference images is lighting. Lights and the environment have a significant impact on how the material looks. You can design the perfect material, but it won't look right if it is in complete darkness.
The easiest way to get a realistic environment is to set up an HDRI, but you can also simply add a few different lights to the scene.
Add wrinkles
Note that the geometry in the reference images is quite complex. The wrinkles emphasize the intricate reflections that happen within the wrappers. To get a similar look, you would have to add wrinkles to your geometry as well.
Blender has a great tool for this – the sculpt tool. In particular, the cloth brush makes it easy to simulate wrinkles as you manipulate the geometry.
Add diffuse and absorption components
Overall, the material itself looks good. Perhaps its missing a little bit of diffuse shading. As you can see in the first reference image, areas where the wrapper is thicker due to multiple layers, the material appears whiter, even though it does not directly reflect any light.
You could mix in a bit of diffuse shading to emulate this effect. Furthermore, the diffuse shader should be especially pronounced in areas where the material is viewed at an angle, because in such areas, the light ray will have to travel further through the plastic. (You can achieve this with a Fresnel input).
In addition, most transparent materials absorb some ammount of light. Make sure that the transparent shader has a very light light gray color (instead of white). This will slightly darken the rays of light passing through the material.
Example
Inspired by the first reference image, I quickly sketched out some basic geometry, then messed a bit with sculpting to get some wrinkles. I used a different shader setup (a single principled shader), but you should be able to apply the techniques described above to your setup as well.


Extrusion gone wrong? I'm practicing following the classic donut exercise by BlenderGuru and tried to add some drops to my donut, but as soon as I did it this happens:
I'm doing it in Edit mode, but the extrusion is showed in object mode? Is that right or I did something wrong?
As you can see, I'm a newbie in modeling ;))

I've found it, it was really simple. I simply could have used the "Hidden wire" option.


Where can I change the color of the vertical tab labels in Blender? Where can I change the color of the vertical tab labels of the N-panel in Blender? (red marked square)

These vertical Tabs are adjusted per editor.
For 3D Viewport, it's in Properties > Themes > 3D Viewport > Theme Space


How can I Extrude Objects According to Their Colors? I am Now making a model for an electrical component (Arduino) , I have an svg image for it , I inserted the image to Blender and I now want to extrude it to be 3D, but I do not want to extrude every object Manualy  .. I want to extrude object by colors.

This is the image :

Note :-

I do not want to use a material which give a 3D Shape
I Want this Via Anything Python,Blender....

This How It looks After importing :

[Its not Seen Clearly visible  because many objects are in the same position]

There may be a good answer within Blender.  But if you just need to get the job done, you could open your SVG file in Inkscape.  Inkscape has the ability to select objects by the same colors, e.g. select one object with the desired color and choose "Edit --> Select Same --> Fill Color".  In this way you could create several SVG files, each containing only objects of the same color.  You can then import each SVG file separately and give each one a group, so that you can select and edit the group easily.

I did this with a circuit board SVG (a two-dimensional one) I found online with the following results:

The curves can indeed be extruded without converting to meshes, simply modify the "Extrude" value under "Modification" in the "Geometry" section of the curve data tab.  If you want to set all the extrude values at once, join the curves first.  This is a good reason for keeping them as curves for as long as possible, btw.


How do I fix these strange glass lighting artifacts? I am a beginner.
How should I go about fixing this peculiar lighting inside my glass cube in this instance. I just used a normal glass cube and applied cycles to render glass materials to it.

Use a solidify modifier. When I was a beginner I used to make the mistake of thinking that glass would only be applied to the mesh and not the entire volume.


Shortcut for operator context panel (redo panel) in 2.8? Is there a shortcut or a plugin that helps expands this context menu automatically? This extra mouse maneuver and click is quite exhausting in a bigger project when compared to before 2.8. Thanks.

Yes! Just press F9 or go to Edit > Adjust Last Operation, which displays the Redo Panel a.k.a. Operator Panel as a simple pop-up window after using any operator:

Quoting from the Manual:

  After an operation is complete you can tweak the parameters of the operation afterwards. In editors that support it, there is a “head-up display” panel in the bottom left based on the last performed operation; dependent on mode and context. Alternatively, you can create a pop-up with F9 which does the same thing.


How to append/link Screens from other blendfiles? Is there a way to append/link a screen (see below) from a different blend file?

If not possible from the UI maybe this can be done via python?

I would like to create a custom screen and then deliver this via an addon. Once the addon is loaded it should append its screen to the opened blendfile if possible.

Clarification by @Pistache

A Blender "Screen" is a specific type of data-block (see Blender's documentation), however it is not available when using bpy.data.libraries.load (data_in has no attribute screen/screens), or even using the append operator (it does not show up in the list of appendable objects in the GUI).

A screen layout created in one .blend file cannot be linked/appended (manually or with python) into another, because Blender does not support this.

With python you can create new screen layout (bpy.ops.screens.new()) and change it's areas how ever you like.

You can access data inside external .blend files and read them with Blender-file.

This can be turned into addon for ease of use.


White frames appear after rendering na animation I have got a problem with rendering an animation (eevee). In my viewport everything works fine and the animation looks cool, but when I render it (I have tried to render as png and also as ffmpeg video) everything turns into just white frames. It is totally weird, because during rendering correct frames are appearing, but each frame turns white at the finish of rendering.
Do you know what's the reason? :)

That's how rendered frame looks

And that's my viewport

Okay, I fixed it. The reason is quite silly - my render layers node wasn't connected to composite... :)
So the solution is to check nodes in a compositor and connect everything what is important.


Apply force to a specific point I would like to apply force to a specific point on the mesh. Could someone let me know how I can do that using Python scripting? The "applyForce" function applies the force to the center of the object. I need to apply the force to an arbitrary point.

You are looking for applyImpulse.

applyImpulse(point, impulse, local=False)
Applies an impulse to the game object.
This will apply the specified impulse to the game object at the specified point. If point != position, applyImpulse will also change the object’s angular momentum. Otherwise, only linear momentum will change.


Move edges to specified Angle I have googled a lot in the past hour and am not really finding a good answer (I was initially trying to do this Straighten Vertices Along a Line but I have planes at different lenghts and do not want them to be pulled and ruining my design)
As you can see the Planes at the bottom, 162 degrees is my goal and I am individually moving vertices and measuring the angle with M, Measure tool, this is getting tedious as I have MANY more to do.
Is there an easy-button to select all Bottom right Edges and set it to measure at Angle 162 degrees ?

If you need it to be totally exact you will need at least one addon (I suggest TinyCad, as it is one of the included addons) and it is a multiple step process.
First you need to construct an edge that has the appropriate angle.  This isn't too difficult - Starting from a right angled plane, select one corner vertex and place the 3d cursor at that vertex (most easily by using shift-S cursor to selected).

Change the transform pivot point to 3d cursor.  Extrude the other corner vertex (the top right one, in your examples) and cancel the modal move that happens after extrusion so that it returns to its original position.  Then rotate it and type the angle you want to rotate by - it will rotate around the cursor, creating the correct angle.  Remember that there's a 90 degree angle at the corresponding corner already, so you probably want to enter (162-90 = 72) as the numerical rotation.

Connect the extruded vertex and the unmoved vert at the cursor (hotkey 'F') - you will now have an edge that forms the proper angle.

The angle is now correct (here is an image showing that - but it is unnecessary to do this in practice, it's just to prove the angle is exact)

The edge is of course the wrong length and does not extend to the original top edge.  Select the new edge, and the original horizontal edge.

Perform an edge intersection calculation (context menu, then 'T', then 'V' if you're using TinyCad) and you should now have appropriate edges for the face you want.

Now select the vertices one at a time and use vertex slide (G, then G again by default) to slide the vertices onto each other to remove the additional unnecessary edge.  If you have auto-merge vertices turned on they will merge, or if not, you should merge by distance now to remove the excess verts and unify the face.

And you're done!  But you have a lot of these to do, and this took ages - so I recommend you take a duplicate of this finished one, make it bigger, and slice the appropriate angle out of a plane using a boolean difference.  You may have to thicken these template objects as the boolean engine does not like intersecting zero width objects.

This means you can now use the plane as a boolean cutter on each of your other objects in turn to far more quickly produce the correct angled cut, which is amusingly how I think it's typically done in woodworking as well - measure one, then use it as a template.


Mesh seams practical advice I imported a model from another program and it didn't include any seams or a UV layout. When I unwrapped it, there were a lot of left over polys and I want to try and clean it up and have fewer islands to deal with. (e.g., I want larger islands with fewer small pieces that are unconnected and logically should be connected). The reason I want to do this is to make editing the texture in photoshop easier and more intuitive.

To start with, I'm looking at jewelry on the character model as shown below. It's kind of a complex shape and I'm struggling to figure out where to put the seams. I started with the loop cut tool and created a seam for every loop edge the tool could find. However, I'm not sure what to do next. Edges tend to go inside other shapes where you can't see them, and the ALT select is not a reliable method for getting the seam all the way around the mesh part.

There isn't one good method for unwrapping an object, it needs some experience, here are the steps I would do:
Make sure it doesn't have a UV map, Seams usually do not get shared by different programs, so sometimes they do have a UV Layout, just no seems. Make sure that's not the case.
Don't create additional Vertices (Knife tool)
Worth a shot: in Edit Mode hit U and choose smart UV project. It will probably create a lot of small islands though, which might not be what you want.
In edit mode select everything and hit ALT J. That gets rid of as many triangles as Blender  can do. If you're lucky, now you can use ALT click on edges to select loops and turn them into seams.
Try to hide the seams (less visible places on your object), because that's were texture artefacts can occur. It's not super important when you're drawing yourself, but it's a good practice none the less.
Create as big islands as possible without distortion/overlapping.


How to texture Dragon/Reptile for later import into UE4? Is there any resource where I could learn how to make a Dragon/Reptile texture? I can't find anything, anywhere at all.

I desperatly need to learn from someone how to make some reptile/dragon textures for my models so I can import into UE4.

How can I create reptile texture to import it into UE4 ?

Well I won't give you an easy why to do it but I can tell you some basics that you can do.
You are wanting to make a texture that resembles the skin of a reptile. First look up reptiles and look at there skin.
Then you can either try to hand paint this in gimp or you can use an image that has authorized the use of the image to be used by anyone. You can grab a piece of the image and then you can look up how to make a seamless texture which will let you repeat it as much as you want to create the effect of reptilian skin.

If you are having trouble finding tutorials on this you can look up either how to paint a texture and apply it to reptilian skin or you can look up how to manipulate an image and use it to make into a texture.

This might also help you: https://www.youtube.com/watch?v=TLj2bDa2qno


How to distort a generated node (not image) without using compositing? How to distort this shape to make it move like a tadpole without using compositing?
I know that for image textures we can use wave texture to distort it and get a ripple effect.
But what about this generated shape? Any help is appreciated!
Here is the blender file:
droplet

Apologies.. I felt I had to make a tadpole with a longer tail to illustrate.
You can distort a procedural texture in exactly the same way as you would distort an image texture: by distorting the whole space containing it.

The straight object space, XY > RG, and the procedural texture made in it
This is a straight tadpole: it was constructed as a set of functions and masks of ordinary Object space, because I thought it was easier to have 0 in the middle, but it could have been UV, or Generated space, shifted a bit, depending on how you want the space to behave.
To put, say, a wobble into the tail, you can manipulate the coordinates that the tadpole-making part of the tree uses, before you start making the tadpole, just as you might manipulate your given UV coordinates, before giving them to an Image texture to tell it where in the image to find a color.

The part of the tree which distorts the space, and f(X) as greyscale, which will be added to Y
To put a wobble into the Y of the procedural texture depending on X, you come up with some function of X that you can add to the Y coordinate, before handing the Y on to tadpole-making. Supposing it was just Y => Y + sin(X), that would put a sine-distortion in Y along the entire length of X, and you might have to mask off the head, to stop it being distorted, along with the tail.
This chunk of tree is just a more controlled version of that - it so happens it doesn't need a mask, because raising a negative number to a fractional power results in 0. The power also crunches the wave horizontally as the X goes positive. (Note our original Object X is multiplied by a negative before giving it to the power function, so positive X is then on the left)

The distorted space, and the resulting distorted tadpole
TL;DR
This is what happens to the Object space when the grey f(X) bands are added to its Y .. and the resulting distortion of the tadpole,when built using the X and Y's of the new space.
As you can see from the green value-field in the tree, you can keyframe the phase of the sine-function to animate the tail and move the head up and down, all in one.


modifier_apply not working when objects created in a specific order Is something wrong with my code?
I intended to do programmatic CSG modelling,
like in POV or OpenSCAD.
But when I change the order of lines:

cyl1=make_cylinder()
c2=make_cube()

The modifier application fails. The same happens with c1 and s1.
Why do the order of object creation is affecting the results?

import bpy
from bpy import data as D
from bpy import context as C
from mathutils import *
from math import *

S=C.scene

def make_cube():
    bpy.ops.mesh.primitive_cube_add(location=(0,0,0))
    return S.objects.active

def make_material(obj,rgb=(1.0,1.0,1.0)):
    mat=bpy.data.materials.new("mat")
    obj.data.materials.append(mat)
    mat.diffuse_color=Color(rgb)
    return mat

def make_sphere():
    bpy.ops.mesh.primitive_uv_sphere_add(location=(0,0,0), size=1.2)
    return S.objects.active

def make_cylinder():
    bpy.ops.mesh.primitive_cylinder_add(location=(0,0,0), radius=0.7, depth=2.5)
    return S.objects.active

def oper(obj1,obj2,kind='INTERSECT'):
    bpy.ops.object.select_all(action='DESELECT')
    obj1.select=True
    m=obj1.modifiers.new('Bool','BOOLEAN')
    m.operation= kind
    m.object= obj2
    bpy.ops.object.modifier_apply(modifier=m.name)
    bpy.ops.object.select_all(action='DESELECT')
    obj2.select=True
    bpy.ops.object.delete()
    # D.objects.remove(obj2)
    return obj1

def inter(obj1,obj2):
    return oper(obj1,obj2,'INTERSECT')

def union(obj1,obj2):
    return oper(obj1,obj2, 'UNION')

def diff(ob1,obj2):
    return oper(ob1,obj2,'DIFFERENCE')

def scale(obj,sx,sy,sz):
    bpy.ops.object.select_all(action='DESELECT')
    obj.select=True
    bpy.ops.transform.resize(value=(sx,sy,sz))

def move(obj,sx,sy,sz):
    bpy.ops.object.select_all(action='DESELECT')
    obj.select=True
    bpy.ops.transform.translate(value=(sx,sy,sz))

def main():
    c1=make_cube()
    s1=make_sphere()
    scale(s1,1.3,1.3,1.3)
    i1=inter(s1,c1)
    move(i1,3,3,0)
    make_material(i1,(1,1,0))
    cyl1=make_cylinder()
    c2=make_cube()
    d1=diff(c2,cyl1)
    make_material(d1,(0.5,0.5,1.0))

main()

In oper() when you call bpy.ops.object.modifier_apply() it works on the active object, which is the last object you created - the cylinder.

After you select obj1 in oper() also make obj1 the active object and you will get the result you want.

obj1.select=True
S.objects.active = obj1


Make an object the new gravity point say, I want to make a both sided flat world - plane with things on both sides, having gravity pull them towards it.
Or a spherical world having its own gravitational pull.
Are any of these possible?

Yes, add a force field of type Force. Put it to the center in order to create a spherical world having its own gravitational pull. Use shape "Plane" to have a both sided flat world. As the manual says:

Shape The field is either a Point, with omni-directional influence, or a Plane, constant in the XY-plane, changes only in Z direction.
Strength The strength of the field effect. This can be positive or negative to change the direction that the force operates in. A force field’s strength is scaled with the force object’s scale, allowing you to scale up and down scene, keeping the same effects.


Can’t render fluid simulations….? Me again. There are lots of tutorials on fluid simulations but none on how to render them, LOL! I’m obviously missing something. When I try to render all I see is the domain cube! If I turn off the domain cube from rendering I can see what’s within but no fluid simulation. What’s up? Using Eevee.

Rusty

two major things to control:

did you bake the meshes? (you need to bake data to simulate the fluid and then bake mesh to create the water shapes)
did you create a new material for the "liquid domain"? (default one generated by quick effect is not good for eevee) check for "water shader nodes in eevee" tutorials


Select every other face loop How can I select every other edge loop. In this example its not too bad to do it manually but it other cases it might be. How can I easily select alternating face loops?

Every nth face loop:

Switch to edge select mode (CtrlTab> Edge)

Select an edge loop (AltRMB) going in the direction you want the edge ring selection to go.

Checker deselect (3D view > Header > checker deselect) the edge ring (you can use the F6 menu to set the number of edges to skip before deselecting one)

Select another edge loop (AltShiftRMB) in the direction you want the edge loops the go.

Press Edge ring in 3D view > Header > Edge Ring.

Note that when using checker deselect numbers > 2, you might get extra edge loops. Switch to face select mode afterwards to get rid of them.

Every nth edge loop:
The original text of the question asked about edge loops, yet the image was of face loops. Here's a technique to select every other edge loop.
Note if you are using a version of blender newer than this commit (2.71), then you can skip to step 4.

In vertex select mode (CtrlTab), select two edge loops one edge loop apart (AltShiftRMB), that are perpendicular to the direction you want. Then select a single vertex in between them (ShiftRMB). (This is required because Checker deselect only affects selected geometry connected to the active element. i.e you need one connected selection).

Use checker deselect (3D view > Header > checker deselect), then press F6 to edit the N in nth if you want. If you see that the wrong set of edges (the ones you want to remain deselected) are being kept by the selection, change the Offset value.

Still in Vertex Mode, select the edge loop (AltShiftRMB) in between the original two edge loops.

Switch to edge select mode (CtrlTab). You should see parts of the loops you want selected, plus one crossing loop you don't want.  If the wrong parts are selected, back up to step 2.

(Versions prior to 2.71: skip this step.)
(2.71+): Select an edge ring with CtrlAltRMB, then run checker deselect. (Thanks to ideasman42 for making checker deselect work with edges).
(2.79): Select the edge ring (perpendicular to the loops you want), but leave it selected.

Press Edge Loop in 3D view > Header > Select.
(2.79): Also deselect the unwanted perpendicular edge ring.


Is there a way to locate where options are in the interface? I'm new in this and I'm working on the gingerbread man tutorial. My problem is that sometimes I don't find some buttons and I would like to know if there is a tool for finding them.

If it's a keyboard shortcut you are looking for, you can try searching for the tool in CtrlAltU> User preferences > Input:

As for external resources, you can try the wiki, but beware that some parts are incomplete/out of date.

Another external resource which works well is google, usually searching for something like "blender <function name>" will get you results.

However, if all else fails you can always ask here ;)


What are the advantages and disadvantages of different ways of obtaining Blender? Blender can be downloaded as an installer file, a zipped directory, or from Steam, among other places. What are the advantages and disadvantages of the various methods of obtaining Blender?

Windows Installers

These are useful if you want to have a version of Blender installed system-wide, accessible easily to all users. These will probably install start menu or other shortcuts and be neither installable nor removable by non-administrator users. Blender appears to be available in .msi packages. Although I don't know much about how that type of package is used, 50 seconds of reading the Wikipedia .msi article makes me think that it is sort of like Windows' own native package manager but without repositories. Blender is also available as a self-installing executable, which to an end user should be functionally equivalent to the .msi packages.

Portable pre-compiled archives (Linux and Windows)

These are very useful if you want to use multiple versions of Blender without installing any or all of them. These archives are portable and can be moved between computers on the likes of removable storage without interfering with possible existing versions of Blender. Administrative access to the system should not be required to use these.

OS X

OS X handles applications quite a bit differently from other systems. Many applications, including Blender, are directories suffixed with .app containing a directory tree with the program's executables along with any additional libraries or resources that are not shared with other applications. Usually these bundles are kept in /Applications, but they can be renamed, moved, and used anywhere much like the archives mentioned above.

Package Managers (Unix-like systems)

Many Linux distributions have pre-compiled binary packages of Blender that are distributed through repositories and installed with the distribution's package management system. They have the advantage of being automatically upgradable, although the usefulness of that depends on how quickly a particular distribution updates their Blender package and/or how up-to-date of a version of Blender you require. Like with Windows, this is a good way to make one version of Blender available to all users of a system. Gentoo Linux and the BSDs have similar systems with automatic upgrading and such, but the main difference is that they compile applications "on demand" when they're installed rather than using precompiled packages. Configured properly, this has the obscure benefit of compiling Blender with optimizations specific to your CPU, which might improve performance a bit.

Steam

Steam? I literally had to go to their website to have any idea what it was, so take this with some salt. As far as I can tell, it's a cross-platform software distribution system with a focus on games. I assume that Steam shares the advantage of automatic updating with package managers. If you use Steam for other software, I can see that it would perhaps be convenient to use Blender from it as well, but since there are so many other ways to install Blender, I can't imagine using Steam just for that purpose.


Bone driver on X location not working I created a bone and added copy location, and limit location constraint with world space, because when I selected local space, the bone didn't even move, this works fine and the limitations too, but the driver don't. I set a average value driver for when this bone moves on x location to apply a corrective shape key, I tried local space and world space in the driver, but when the bone moves forward on X nothing changes. I've been trying to work this out during one day, and I got a lot of different wrong results, sometimes the value is 1000 in rest pose, and when I move the bone forward it goes to 0, I tried a lot of combinations using the generator modifier and didn't got any success. I want the shape key value to get to 1000 when i move the leg forward, and literally go to 0 when i move it backwards

Display the bone axis.

Driver limited from 0 to 2 moving in Z local direction of bone.
Locally for bones the Y axis goes down the axis of the bone. If you enable the display in armature display properties can turn this on.
The copy location constraint is a bit arbitrary between pose (wrt armature origin) and global.
For the limit location constraint going to use local. The zero of a local transform is its rest position.  Ok can set the minimum to 0.  Looking at bone axis then +Z is forward, have limited it to 2.  An arbitrary choice for this answer and to test against, change to suit.

To change the result to go from 0 to 4 with a generator

which is the equivalent of having a scripted expression for the driver of
0 + 2 * var

which if you remember basic algebra is a linear equation.  As mentioned by @Nathan in other answer, this was and issue because it was set to be result zero, no matter what the value of var was.
1000 seems to me to be an outrageously big result, but for this example would use 500 instead of 2.
See driver results.
Find it handy to use the script from  this answer when fiddling with drivers
https://blender.stackexchange.com/a/199299/15543
can test the value of a number of variables by looking at output in console, rather than via the driver editor UI.


FileNotFoundError: [Errno 2] No such file or directory - Blender Python API Hello Blender Community,
With my groupmate, we are working on a traffic simulation on Blender as our graduation project. Initially, the simulation engine runs and outputs a .txt file, sim_log.txt, containing the details to be processed by the script on Blender. Then, we run the script and get a visualization of the traffic flow.
Sometimes, I could not really figure out why, the Blender script throws the following exception when trying to read the output file which is in the same directory with the .blender file:
Info: Deleted 0 object(s)
Traceback (most recent call last):
  File "C:\BlenderTest\CS402\SimulationAnimator.blend\Text", line 24, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'sim_log.txt'
Error: Python script failed, check the message in the system console

The script up to the line that the error occurs is as follows:
import bpy
import os
import numpy
import random

#Test values
time = "day"

# Clean console, view and orphan data
os.system("cls")
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
bpy.types.BlendData.orphans_purge()

# Set world background
if time == "day":
    bpy.data.worlds['World'].node_tree.nodes['Environment Texture'].image = bpy.data.images.load("//hdris\day.hdr", check_existing=True)
else:
    bpy.data.worlds['World'].node_tree.nodes['Environment Texture'].image = bpy.data.images.load("//hdris\\night.hdr", check_existing=True)

cameraCar = "" # Name of the car that camera will follow

# File read section
f = open("sim_log.txt", "r")

I mostly encounter this problem after another program accesses this file, but sometimes it occurs randomly. I could not find a way to tell Python API/Blender that the file actually is there, so I have been copying the file and updating the filename in the script. I thought the community could spot the problem, so I would not need to work with sim_logv19.txt anymore :)
If you would like to take a look at the project repository, here is the link:
https://github.com/sefasenlik/TrafficSim

I think based on the Error that open is trying to load the file from the Blender project as a directory, but the project is a file and doesn't have this subdirectory "Text". You could probably fix this by using an absolute path and store the "sim_log.txt" in the same directory of the blender project. To get the absolute path you could use os.path.join(os.path.dirname(bpy.data.filepath), "sim_log.txt")


What is an efficient way to remove loose vertices? I have a mesh that has some vertices between edges that do not need to be there. How can I easily remove these vertices without selecting them manually? I tired using limited dissolve but that get rid of anything that coplanar not just the floating vertices.

In some instances, depending on topology, the following can work:

Select one of the vertices that you want to remove.

Choose Select> Similar> Amount of Connecting Edges from the 3D view header.

Deselect any vertices that have been selected but that you don't want to delete (in this case, the corners) and choose Mesh> Delete> Dissolve Vertices to delete the unwanted vertices.


Rotating watch hands, not working.... Trying to rotate watch hands using an Empty, but no matter what I try, the hand rotates on a weird axis alignment.

What am I doing wrong?

I've tried Parent, Parent Keep Transform, Inverse Parent.
I've tried applying Rotation to the object before parenting and still same issue.
Apply rotation to the empty before parent, just does this weird axis flipping thing.

Thanks,
alldaron

You can use a bone instead of the empty to control the hand, just rotate it in object mode to match the hand axis rotation , when you parent the hand to the bone, choose bone in the set parent to menu, then when animating the bone, make sure to do it in pose mode


Change Sculpt Tools Layout Simple question.  I have done it before but don't remember how how to change the Sculpt Tool layout between one and two columns.

Drag the edge of the column of tool icons to the right.


Applying Location Moves Object Origin to World Origin I'm having an issue with blender 2.76 where every time that I apply location, it moves the origin of the object to the world origin. I looked around for some answers and the only one I found suggested that I accidentally applied a key-frame, however I checked and no key-frames were to be found. Any ideas on what could be causing this?

This behavior is exactly what "apply location" is supposed to do.  Maybe you need a new question that explains the behavior you want and asks what workflow will accomplish it.


Complete black in material preview shading tab I've just ran into this problem and looked on youtube to find a solution to no avail. I have no idea what I did to make this happen. I'm using blender 2.9 . I don't have any idea what's going on. I'm currently in material preview but in rendered it works fine.

It seems, that the material has no shader input. Blender used the default "no shader" and this is simply black.


Bone not rotating around local axis So i have bone which i rolled and now i want to rotate it in pose mode around it's local axis but it is not rotating it around local axis.

I have looked at this and this but it is not working.
Why is this happening?

Here is image of setting it up:

Solution to this problem was to set these settings

And then when you press R(rotate) and then X > it will set rotation to global X axis but then X again and it will set to local one.


Export material from Cycles for Cycles? I saw this question and learned it's very tricky to export material from Cycles for other applications' use. So let me clarify: I only work with Blender.

Previously while I was working with BI, I can export a plane as a .obj file specifying the geometry and an accompanying .mtl specifying the material, such as specular and diffuse colors, etc. If I import this .obj file back to BI, I get every setting back.

Now I switch to Cycles. I create a glossy material for my cube and export it as usual. Now if I re-import this .obj file back to Cycles, my material settings are all gone.

Before exporting

After re-importing

What is the proper way of exporting a Cycles material?

P.S.: It would be wonderful if the answer could be given from the Python API perspective. :-)

Save your materials into a normal blend file.

A blend file is a database and you can use only selected parts (data-blocks) from it. This is done using linking and appending. See this: What is the differance between Linking and Appending an external blend?

This is also possible in python: How to Link/Append a data-block using the Python API?


Removing Parent (Bone relative) but keeping animation I made a reload animation for a game that I am making. So far the animation looks great. To make the gun stay in the hand, I made the gun a relative parent to the wrist bone.

Now that the animation is finished, I want to remove the parent from the gun, but keep the animation. I tried Using
-Animation
 -bake action
  -clear parent

but that did not keep that wrist animation.

I did not find a solution to my problem, but I did find a great alternative. Looking at another question I learned that constraints would be much better for parenting in an animation.

Link to other question here: Animate the parenting of an object

Hope this helps anyone else with a similar problem


How to keyframe speed of particles? I'm trying to make particles decelerate until they stop, but can't get it to work properly.
I've tried Keyframing the particle's velocity "Normal" option, but that only affects new particles that are generated, not already existing ones.
I've also thought about just making each particle into an actual object of which the location can be keyframed, but don't think that'd be a good idea considering the amount of particles.
Maybe there is a good way of doing this with nodes, but I believe you can only see and use information of a particle, not change it (correct me if I'm wrong).
I can't find a setting that affects all particles at once.
Is there a convenient way of doing this or do I have to resort to just rendering the particles moving very slowly for like 2000 frames and then quadratically slow down the video? (If I just slow down the video with like 100 frames, it wouldn't be smooth at the end)
Thanks in advance!

You can animate the timestep. A value of 0 stops the animation, higher values increase it. In this way you can change the speed at any keyframe of any particle system.
The speed can be animated for every particles system setting. So you can combine particle systems with different velocity or speeds.
You'll find the timestep in the particles properties at Physics->Integration->Timestep


Adding a new material to a grease pencil I have added a grease pencil and need to add a new material slot in python. I have used this script for active objects, however I am missing something with the grease pencil.

activeObject = bpy.context.active_object
mat = bpy.data.materials.new(name="MaterialName")
activeObject.data.materials.append(mat)

bpy.context.object.active_material.diffuse_color = (0.121583, 0.144091, 0.8, 0.729885)

The script below enables you to add a new material slot for your active grease pencil.

import bpy

ob = bpy.context.active_object  # Must be a GPencil object
mat = bpy.data.materials.new(name="Mymaterial")
bpy.data.materials.create_gpencil_data(mat)
ob.data.materials.append(mat)


2.8 - Addons Window is blank! I tried uninstalling and loading factory settings. Whenever I open my Preferences -> Addons window, I get a blank screen. Help I cant use addons on this machine anymore. It happened after installing a supposedly 2.8 compatible addon.

There are two options that you could try.

The Factory Startup

The first would be to start Blender from command line with the --factory-startup which should prevent the broken add-on to be activated on startup.

Open the Windows Explorer Win+E
Navigate to the installation directory of Blender 2.8. You should see the blender.exe in the folder.
Type cmd in the path field and press enter. The command line prompt should open.
Type .\blender.exe --factory-startup on the command line and press enter

Blender should now start with the factory settings and you should be able to open the add-ons section of the preferences. Find the broken add-on in the list, open the detail section and click on the Remove button.

Manually Removing an Add-on

You should only use this approach if the first one didn't work, either because the add-ons are still not listed or there is no remove button for the add-on. If the former occurred, please report this on Blender's bug tracker (Help > Report a Bug). The latter will happen if you manually copied the add-on files to the add-ons directory instead of installing it through the UI.

If you know what files have been installed with the add-on you can remove them manually. Do not remove any files if you're not 100% certain that they are part of the problematic add-on. The add-on should be installed in one of the following subfolders in Blender's installation directory:

\2.80\scripts\addons
\2.80\scripts\addons_contrib

You can simply delete the broken add-on files and it should be working again.


Parenting messes up transforms - where is the offset stored? When I parent an object to another object with keep_transforms=True The object stays in place as expected, however I noticed that the location attribute of the child did not change.

If I zero out the location, my child object goes to the center of the world. I would expect that if I parent something with keep transforms, an inverse transform is applied to my location (location would not stay the same), I would also expect if I zero my child location attributes that the resulting position would be the same as the parents location.

There must be an extra transform offset kept somewhere which is trying to preserve the original location coordinates, basically storing the inverse that I feel should be applied to my child location as an offset attribute when I do the parenting. Where can I find info on this invisible attribute/offset?

This behavior is simply bizarre to me.

Steps to reproduce:

In the default scene Add->Empty->Plain Axes
set Empty location to (-2.0, 10.0, 2.0)
Translate the default cube 5 in the X direction
Select Cube then the Empty
Object->Parent->Object->Keep Transforms
Select Cube, notice Location X is still set to 5
Zero out location of Cube, notice Cube goes to world center.
Rotate or move Empty and the cube is no longer at the center, but has 0,0,0 for location.

Where is the extra transform stored and why is it stored at all?? If the parenting took place at world space 0,0,0 for both objects, it works as expected, but that is not convenient and seems ridiculous as a workaround.

Using Blender 2.68

The difference between the parent and child is stored on the child when the parent is set.

It's a matrix that can only be accessed through Python: bpy.types.Object.matrix_parent_inverse


How to add more geometry via animation? I'm making a 3D tube, and I need to make it 'move' to form something, starting from 0 to the form, that is actually a ring.

If you remember, its something like the old windows 3D tube screen saver:

It's very easy to animate the growth of the pipes if they were simple curves with a bevel shape. You would then animate the Bevel Factor End value to have the shape grow. This would not give you the ball joints you show in the image. You would have to treat them separately.

Another option would be to create the pipes as mesh objects and then use the Mask Modifier in combination with a Dynamic Paint object to reveal the mesh over time. This would give you more flexibility on the shape of the pipe you want to use.

To do this you would:

Create a pipe mesh object.
Create a mesh object to paint with (like a sphere) and position it at the beginning of the pipe.
Animate the brush object on a path that travels from the beginning of the pipe to the end.
In Physics tab, add Dynamic paint to the pipe object, set it as a Canvas and add new canvas. Set the Surface Type to Weight. You'll see a name appear in red in the Dynamic Paint output Vertex group box. Click the plus sign beside it to activate it as a vertex group for the object.
Add Dynamic paint to the brush object. Choose Brush as the type, add brush.
Play the animation, you should see the weight colour of the pipe change as the brush object travels across it.
You can then add a Mask Modifier to the pipe object and choose the vertex group you created in the DynPaint panel.
You will probably need to add SubDiv mod to the pipe to create more vertices to play with so the reveal transition is smoother.


Conforming New Edge Loops On a Curved Mesh to the Curve Let's say I have a curved mesh and I add a loop cut:

The new loop cut does not touch the curve as the others do.

My question is, is there a tool/addon for achieving the following result in a more precise manner than just translating the loop cut by eye:

This is a simple example, but I'm hoping to apply it to more complicated meshes.

Thanks.

Select the curve object. Key Alt + C to open the Convert to menu and choose Mesh from Curve/Meta/Surf/Text or key 2. Key T to toggle open/close the Toolshelf. Check Keep Original in the Convert to dropdown. This adds a new mesh object, rather than converting the curve. This is useful because if you decide to change the curve later, you still can, without having to convert back to a curve, edit, and return to a mesh.

Select the object that you were loop cutting. Tab into Edit Mode. Key Ctrl + R to add a loopcut, position it where you like,  LMB to confirm, and immediately  RMB.
Key Ctrl + [comma] to change to Pivot point > Median point. Choose Transform Orientation > Normal. Enable Snapping and change the settings to Edge > Closest. Your 3D Viewport's bottom bar should now have these settings:

Drag on the green arrow until the loop cut snaps.


Why can't I have two animations in one objects when using property play mode? I have an object with two animations. I have two properties. Each property controls an animation (prop1 controls anim1, prop2 controls anim2). In the logic, I have Always (Frequency) > And Action twice: one for each animation. I've tried using 1 animation with the property, and it worked. I tried the second alone and it also worked. When I have both, it doesn't work. I've changed the layers for each animation and it still didn't work. I've changed the priorities of each one. I've played with everything I could in hopes that they can work together. I then moved on to seek a different approach. Using playAction() responds horribly slow. I've tried changing each animation's sensor from Always into Property, so that a given animation will play only when property (string property) play is set to the animations name. I've continued to a numerous amount of approaches, but nothing worked. The animations simply don't work with each other. Why is this happening and how can I have the animations both be able to play blazingly fast (plays at the exact tick)?

The attached BLEND file shows how this is accomplished.
The trick is to use three different actions added each to their own "NLA" tracks.

It's set up to use the GE, so use keys A, S, & D to control animation #1, #2, & #3 (#3 = #1 & #2 together).

The Blend File:


How to pause camera along animated path I have a camera parented to an animated curve (CTRL+P). I want to slow and stop the camera's speed at various points along the curve. The curve has a generator modifier (which is why I cannot keyframe the Evaluation Time in the Object Data tab)  and I'm using the Restrict Frame Range parameters to delay the start of the path animation to frame 60. When I set the Out parameter for the frame at which I want the camera to pause movement, it jumps back to the beginning of the curve. Is there a way to pause movement along a curve while still using Restrict Frame Range parameters to delay the start of the path animation or must I "hard keyframe" each camera location? Please say there's an easier way!

Parenting the camera to a path gives you very little control on the camera motion. Use a follow path constraint instead, and animate the offset value.


Enumerating vertices with their indices This code...

def objects_starting( s ):
    return[ obj for obj in bpy.data.objects if obj.name.startswith( s ) ]

def export_all( folder ):
    if not os.path.exists( folder ):
        os.makedirs( folder )

    # G E O M E T R Y (2 files)
    for obj in objects_starting( 'geom' ):
        print( obj.name )
        verts_file = create_file( folder, obj.name + "_verts" )
        faces_file = create_file( folder, obj.name + "_faces" )

        export_geom( verts_file, faces_file, obj )

        verts_file.close( )
        faces_file.close( )

def export_geom( verts_file, faces_file, obj ):

    mesh = obj.data

    verts_file.write( "[points]\n" )
    verts_file.write( "%i\n" % len( mesh.vertices ) )

    for v in mesh.vertices:
        v_world = obj.matrix_world * v.co
        verts_file.write( "%i " % (v+1) )   <-- FAILS HERE
        verts_file.write( "%.16e %.16e %.16e\n" % v_world[:] )

fails with:

  TypeError: %i format: a number is required, not MeshVertex

I'm scratching my head because I had something similar working yesterday:

def write(filepath):

    meshes = [ob.data for ob in bpy.context.selected_objects if ob.type == 'MESH']
    total_verts = sum(len(me.vertices) for me in meshes)
    total_faces = sum(len(me.polygons) for me in meshes)

    # verts file
    file = open(filepath + ".vert", 'w', encoding="utf8" )

    file.write("[nodes]\n")
    file.write("%i\n" % total_verts)

    for me in meshes:
        for v in me.vertices:
            file.write("%i " % v)
            file.write("%.16e %.16e %.16e\n" % v.co[:])
    file.close()

What is going on?  It must be that my new technique for getting a list of meshes doesn't return the right data type, or something.  But I can't see it.

What you try is:

verts_file.write("%i " % (v + 1))

But v refers to a MeshVertex instance. What you need is the .index property of the vertex:

verts_file.write("%i " % (v.index + 1))

Or count yourself:

for me in meshes:
    for i, v in enumerate(me.vertices):
        print("%i " % i)
        print("%.16e %.16e %.16e\n" % v.co[:])


How to show only a portion of an object based on its relation to another object? ------UPDATE-------
This is my current progress. I get the effect of masking half of the object but I suppose I more want to only render the faces that within view, not do a hard clip on them like in the gif above.

if you mean, it should look like this: https://youtu.be/tpeUWpk1okM
then you can achieve this by
1.) adding a track to constraint from sphere to your object (red point)
2.) adding a box with a boolean modifier (intersect)
3.) adding a track to constraint from box to your object
4.) adding a copy location constraint to the box from object
5.) adding a limit distance constraint to sphere
a video tutorial is here: https://youtu.be/pww3BxVsko0
(please be a little bit patient, my internet upload speed is blazingly ...slow... :(
and this is why i love BLENDER - you add just some constraints, combine them and you got a perfect effect which is looking really amazing, without knowing anything about matrix, vertices, scalar product or python or mathematics ;)
UPDATE:
and here is a video where the realization of changing the subdivision surface depending on the location of another object is shown:
https://youtu.be/28SGevbNZKQ


Blender 2.8: How to see multiple view layers at once in viewport? I am having difficulty in Blender 2.8 seeing multiple view layers at the same time in my viewport. With my workflow I would more than likely want to be looking at multiple view layers at once in the viewport to see the position and more, of things in relation to everything else. How do I do this?

According to the blog here: Blender developers blog in 2017

  An exciting future option for the 2.8x roadmap is to use View Layers as compositing units, also for real-time rendering. For simplicity now, we stick to having a single ‘active View Layer’ per Blender window.

And as far as I can see you still have only one active view layer in your blender window at this time.


Alpha Mask a texture with a mask having a different UV Map I have a textured model for which I would like to apply an alpha mask - it can contain several materials with several textures. The textures were applied using a given UV projection, and the mask I created needs another UV projection/unwrapping.

Can you tell me how to tell Blender to mask the object material (make it transparent) where the mask says so (values in [0, 1]), even if it uses a different UV maps than the texture (I cannot therefore use an RGBA texture). The ideal solution would not use Nodes, or should be as cross-render compatible as possible (switching from Blender internal to Cycles should bring no additional steps to get the same alpha mask effect). I am definitely open to Python scripting (I'd like to implement this functionnality in a script).

Any hints appreciated, Thanks !

In Cycles render use a texture with a selected uv input to determine a [factor] value with a mix node. The mix node has two inputs with a transparent shader and diffuse shader.

In Blender render use the material texture with a given uv to affect [influence] alpha.  The material alpha may need to be set to zero.


3 part mechanical joint following 1 bone? I am making a 3 part mechanical joint, with the different axis of rotation being in 3 different places. This is fairly easy to make a basic rig for:

The problem is that i'd like to control this with a single bone. In this setup, each of the deform bones is using copy rotation to copy the corresponding local axis of the big control bone. It works if I'm only rotating one axis at a time, but once I already have rotation on one, it stops working correctly as the axis become desynched.

What is the proper way to make this work?
I have seen some IK setups for similar joints. I have tried that, but they don't seem to work with this join order. I have the order Z, Y, X. With an IK setup, I can't control the Y roll. If I had the order Z, X, Y, then i'd be able to by putting a copy rotation or something on the final bone. But you can't influence the rotation of a bone in the middle of an IK chain without problems.
UPDATE:
Some answers have used 1 less joint, but the 3rd is necessary. The cylinder was a stand-in for a 2 part joint. The cylinder can't be allowed to rotate on X. Here's a picture showing what the desired joint is like.

File:

Dissolve the middle bone (you just need two bones for your rig). the first bone's constraint wouldn't be changed. for the second bone set world space to world space.

if you want the hinge to be oriented as you wish do above works and add another bone called hinge and make it child of your z bone. assign a locked track constraint to it and set either tail of ctrl or last deforming tail as the target and also set y as the locked axis and -z as the following axis. the result is like below.


Why do some objects not show up in the camera view? This is a picture of the normal front view. As you can see, you can see all of the cliffs, trees etc.

BUT

I found out that when I go into 'Camera View', the cliffs and the backgrounds would disappear. This goes same for the rendered version.

As you can see in this rendered version (I am going to add lights later), the cliff and the backgrounds have become transparent. It wasn't like this before, but it became like this!

I'm new to blender, so I can't find out what's wrong. I've tried to find the answers for this problem on the internet, but alas, I couldn't.

I really need to fix this because if I don't, then some of the scenes can go completely wrong! Such as landscaoe scenes. If I start it again from the very start, then I might not be able to finish this in time. Actually, I CAN'T finish it in time.

The link for the blend file is in the comments, but I'm not sure whether it would work properly or not.

The Blender camera has clipping.  It has a start and end distance.  Basically it limits the rays from the camera that Blender has to render, and that can speed up render time (varies).

So right below the panel in the upper right of your screen (and the default view layout), click on the camera icon, and then under "lens", you can find the clipping start and end.

Go to your camera view (numpad 0 or view -> camera) and increase the "end" value until your entire scene is properly in the camera.  Also, make sure that the camera can currently see the most of the scene (maybe at it's furthest away point) when you do that so that it doesn't clip some things in certain positions.  I recommend increasing the "end" value past that point at least some just to make sure it is good.


My UV don't match the object's shape I have marked the seams on appropriate edges and have unwrapped my object yet i get this on my UV panel. I have tried using the 'Correct aspect' feature however, it comes up with:

Anyone here who knows how to fix this?

You can scale to uniform scale by pressing ctrl + A in Object mode. Select apply scale and unwrap again.