text:
How to get Properties Editor tabs context for the active object?
I'm trying to find the available Properties Editor tabs of the active object. bpy.context.space_data.context (when accessed inside the Properties Editor) indicates which tab is being displayed and can be used to set the active tab. To do this with code you should know ahead of time which tabs (panels, menus, etc.) are available for the active object (i.e. armature vs a mesh type). For instance if you set bpy.context.space_data.context = "cheese" (while in the Properties Editor) with a mesh object active you get this error message:
TypeError: bpy_struct: item.attr = val: enum "cheese" not found in
('TOOL', 'RENDER', 'OUTPUT', 'VIEW_LAYER', 'SCENE', 'WORLD', 'OBJECT', 'MODIFIER',
'PARTICLES', 'PHYSICS', 'CONSTRAINT', 'DATA', 'MATERIAL', 'TEXTURE')

Are these values stored in the object context somewhere? Is there some other way I can access a list of available Property Editor tabs context for the active object, or will I have to map these out manually? space_properties.py doesn't seem to be much help here.

Dynamic enum property.
This is a dynamic enum property, ie it changes dependant on context.
We can get all possible members, from the properties rna data  enum_items
>>> for i, a in enumerate(C.screen.areas):
...     i, a.type
...
(0, 'PROPERTIES')
(1, 'CONSOLE')
(2, 'OUTLINER')
(3, 'TEXT_EDITOR')

>>> s = C.screen.areas[0].spaces.active
>>> s.bl_rna.properties['context'].enum_items.keys()
['TOOL', 'SCENE', 'RENDER', 'OUTPUT', 'VIEW_LAYER', 'WORLD', 'OBJECT', 'CONSTRAINT', 'MODIFIER', 'DATA', 'BONE', 'BONE_CONSTRAINT', 'MATERIAL', 'TEXTURE', 'PARTICLES', 'PHYSICS', 'SHADERFX']

or similarly from the type
bpy.types.SpaceProperties.bl_rna.properties['context']

whereas the error message, as shown in question, shows those members available for that context.
A dynamic enum property has a method that populates its items depending on context. I am unaware of how to tap into the method and get only context members.
Pinning an object to the panel also changes context tabs displayed.
Henceforth apping them out manually (with some assistance) is AFAIK going to have to do.
This is one of the rare cases where I would recommend using try / except clause.  We could for instance write a script that creates sets for each data type.  We know the union (above) and can find a common set and those unique to each type.  For instance can grep the context members out of the exception message.  Pretty ugly example below, mesh object selected in edit mode, improve using re expression perhaps.
>>> try:
...     s.context = "Foo"
... except TypeError as e:
...     m = str(e.args)
...     m[m.find("(", 1) + 1:-4].replace("\\'", "").replace(" ", "").split(",")
...
['TOOL', 'RENDER', 'OUTPUT', 'VIEW_LAYER', 'SCENE', 'WORLD', 'OBJECT', 'MODIFIER', 'PARTICLES', 'PHYSICS', 'CONSTRAINT', 'DATA', 'MATERIAL', 'TEXTURE']

Worth mentioning that DATA will display mesh data for a mesh object, armature data for an armature object,  curve data for a curve etc


text:
Snap individual vertices onto plane
I'm trying to snap a selection of vertices (along their individual x-axis) onto the face of a plane. I'd rather not move each vertex one by one.

I've tried a number of things from the snap menu but I usually get this result:

This is the desired result:

Shrinkwrap isn't really an option as I only want to snap a selection of vertices.
Any ideas?
Cheers.
-----UPDATE-----
This a response to Robin Betts' solution:
Why we need an option to extend vertices along their normals. Imagine I was trying to do the same thing with a cone and I used "Project individual elements" using the face's normal:

The cone's base would shoot straight out:

However, if each vertex was allowed to continue along its normal, instead of relying on the face it would look like this:

I'm sure "Project individual elements" is useful in some scenarios but it would be nice to see a "Project Along Normals" option.

Shrinkwrap is an option for selections; you just need to assign them a vertex group to limit the shrinkwrap.

Blender's Snap system includes a 'Project Individual Elements' option, when the target is set to 'Face':

So, if the loop-to-be-snapped is not aligned to one of the standard orthographic views, the steps might be:

Set the Snap as shown above
F Fill the loop, creating a face to aid alignment if necessary, and select.
With the view orthographic (Numpad 5 to toggle), hit ShiftCtrlNumpad 7 to align it to look through the back of the face.
Tap G, and left-click to accept.

You can then delete the face. If your loop is conveniently aligned to one of the standard views, you won't need the face, and  can align for projection without steps 2 and 3.

I was hoping I wouldn't have to go with this solution but I guess so. Having to align the camera seems odd, considering the camera's forward view is a vector equal to the normal of the selected vertices. Now imagine I was trying to do the same thing with a cone, but I wanted each vertex to continue along its connected edge's normal instead of shooting directly forward from the camera. I would end up with a longer cone but the base diameter would remain the same. Maybe in the future Blender will include an option to move each vertex along its normal. Thanks for the solution though ;)

I shouldn't have said "Camera" - what I meant was the view aligned with the face's normal. See my question update for more info.

Hi @gatzkerob ! If I'm not mistaken, the direction you want is that of the connected long edge, not the normal? Like a GG + C or Alt-GG .. a slide with the clamp turned off?

yes the direction of each connected edge. I've tried GG and Alt+GG with all vertices selected, but they all stay vertical when they hit the plane instead of each vertex lying on its own position on the plane.

@gatzkerob   So it's a 'Slide-Srinkwrap'. But you can see why it hasn't been written as a modifier, because it's hard to give the user a way of defining which edges are to be used to define the direction of projection. The tinyCad add-on can do it one edge at a time.. but that's not up to much..

Well, I don't know of any method to snap them directly but you can try with shear and custom orientations.
Here is how :

I have here a cylinder and a slanted plane. Select the Plane, go to edit mode and select the face you want to snap the vertices on (in my case I only have one face :D ), then on the header of the viewport, select Normal for Transform orientation :

As you can see, you have the z axis pointing along the normal of the plane. Create a custom Transform orientation from this with the little + near the Transform orientations list (Make sure you have Normal as selected Transform orientation before this):

You have now a custom transform orientation named Face that follows the direction of the plane, you can rename it if you want. For now, select Global to go back to the default transform orientation.
Now go back to Object Mode and select the cylinder, go to edit mode and select the vertex you want to snap, go to Front View orthographic and set the shading mode to Wireframe :

Now, you will "shear" the vertices to roughly get the orientation of the plane, it doesn't need to be perfect, just as close as you can :

You can do this with CTRL + SHIFT + ALT + S or by going to Mesh > Transform > Shear :

As a side note, when you shear some geometry, you can chose what direction you shear it by pressing X or Y after pressing the shortcut. For my case, it's the default X.
With that done, we can select the custom orientation we created in the Transform Orientations option :

And just scale the selected vertices on the z axis to 0 by going S then Z then 0 then Enter. This will align the vertices perfectly to the plane. All that is left to do is move them to the plane and we can now snap them with the snap to face option in the header :

The easiest way (and the most accurate way) to do that is to select Global orientation, move them on the X axis with snap to face on and they should snap perfectly to the face while staying in line with the cylinder's direction.

source: Stack Exchange

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

sort: votes


text:
Image on plane as particle hairs - Shadow problem
I'm trying to create grass by using images on a plane and then using those in a hair particle system. However in some areas I'm seeing the shadow from the plane instead of the grass itself.
Grass Object Template

Template Material Settings

Rendered Hair Particles

Another Sample: You can see that some of the shadows are correct while others are using the plane's shadow

I did manage to remove a lot of the problem by increasing Render Properties -> Light Paths -> Transparency but it seems overkill for something that just shouldn't be there to begin with.

Is this Cycles or EEVEE?

@ZargulTheWizard: the material snapshot show "blend mode" - so i would assume it is EEVEE

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


text:
Floor tiles material - match size for multiple rooms in house
I'm making a house from a floor plan.
Each room has its own plane to be unwrapped and assigned the same tiles material.
Whenever I unwrap a floor plane and assign its material, the material scale is different for each room and I have to eyeball the scale to make the tile seams align.
Is there a more efficient way of unwrapping all planes so the tile seams align properly, or do I just have to give in and make all floor planes into one object?
Cheers.
EDIT: Added picture
In the picture below you can see the floors were unwrapped but each floor scaled differently. On floor has small tiles and one has large tiles. I'd like to unwrap each floor so they have exactly the same scale.

Possible duplicate of Is there a way to uniformly add texture to a complex mesh without using UV mapping?

Related https://blender.stackexchange.com/questions/96047/procedural-texture-scaling and https://blender.stackexchange.com/questions/56610/how-to-tile-textures-in-cycles

@DuarteFarrajotaRamos #1 Not a duplicate, not even close, #2 nor is it related. I have multiple objects using the same material which scale themselves after being unwrapped, causing the floor tile seams not to line up.

Not sure the image shows much of anything about whether or how it was unwrapped.

For a floor material, there's no need to use UVs.
Use the position vector on the geometery node to get an even (world space) mapping for the floor. You can then just use box mapping and adjust the scale in the material. It will be applied at the same global scale regardless of individual object rotations or scale.
It will also be 'stuck' to global position so moving the floor will result in the texture sliding across the surface. If that isn't desired you can apply scale and use the object vector.

Yes, this! I combined your solution with Mapping node (for scaling) and plugged result into my texture.


text:
Lighting objects passing through a portal in Cycles
I've created a portal based on this method. Here's what it looks like:

Light passing through the portal is not handled accurately; instead I've faked it by baking the light from the outside onto the outer side of the portal, and then applying the baked texture onto the inner side.
Now, the problem is that, as you can see, the two parts of the cylinder sticking through the portal do not match up, since they are lighted differently.
Is there any way I can get the light on the cylinder to work correctly?

Figured it out myself. It can be done by stacking three renders: At the bottom the interior of the portal, on the next level the exterior without the cylinder but with the shadow of the outer part of the cylinder, and finally on top the partially covered cylinder. The node setup looks like this:

And here's the result:


text:
Cycles + Glass + Light, Preview different than render
Anyone knows why the preview (left bottom) looks different than the render (bottom right)?
What i tried to achieve is something like that
i dont know what is going on?!

There are one or more objects, which are visible in the viewport, but hidden in the render.
Tick the camera symbol for all objects, which are supposed to be rendered.

If you want to clear all render restriction, go to the 3D Viewport, and press W in Object mode and choose Clear All Restrict Render.

ah thats what i noticed exat the moment when i posted this.. thanks so much!


text:
Renders coming out completely white
I've been trying to learn some basic blender stuff and I'm trying to render a small animation out to After Effects for compositing.
However, when I try and render the animation, the image comes out completely white

This is what it looks like if I just render the one frame

and this is what it looks like in the viewport

If its fine with just a single frame render, why isn't it working for the animation?
Here's the .blend file: https://drive.google.com/open?id=1AzEwQUvbfivx6lFPLStplxBoxI34YmFB

can you share the .blend file?

the thing is I can see it rendering out the correct thing for the animation but the file in the folder on my computer is completely white.
How can I share the .blend file?

Here's the .blend file: https://drive.google.com/open?id=1AzEwQUvbfivx6lFPLStplxBoxI34YmFB

I found the solution. I needed to uncheck Compositing under the post-processing tab. This gave me the result I was looking for.
That's solved the headache I've spent the last four days trying to solve...

Or, you could turn compositing back on, and go into the compositor and make sure everything is connected that should be.


text:
How to do multiple holes through a cylinder from top to bottom?
I'm a beginner so maybe this is really simple, but I'm trying to make multiple holes through a cylinder from top to bottom. As a beginner, I tried boolean, but that of course breaks the mesh into pieces.
I'm sure there's a way how to do it. Thank you very much for answering.

This is a tricky thing to do, especially as a beginner. If it doesnt have to be done with geometry I would use a material with transparency controlled by a texture with holes. If it needs to be a geometry I would use boxes instead of cylinders with cut out front/back walls, then I would connect them using edit mode and F hotkey, when done I would use subdivision surface to smooth it out. It is not trival, I will answer it more fully when out of work, unless someone else answers by then :)

I would use this photo as a background and create as many circles (like 12 vertices circles) and join the holes between them with F, you will have triangles but it's ok, then select all peripheral vertices, extrude them and W > Looptools > Circle: https://zupimages.net/up/18/28/o54d.jpg

What did you mean by "Breaks the mesh into pieces"? I just created a Cylinder and an array of Cylinders and then used the Boolean Modifier to create the Difference. I can then apply the modifier and get rid of all the extra objects.

rob: Well, can you then use subsurf? I tried this approach even with starting with high poly meshes, trying avoid subsurf, but still wasn't good and the mesh was not clear at all. As this is like 20% of the product I'm trying to model, it needs to be pretty detailed. Can you please show how does your mesh look?

Alright as promised, I am attaching images that should help to visualize what I am describing. It probably is not the only way of doing it, but it gives you fairly nice control, no triangles and subdivides nicely.
First I would create a plane, inset it using I and remove the insides with X.

Secondly I would arrange the shape of holes using the square-holes. I did less than you need, but I am lazy and I think it describes technique well.
Third thing would connecting all the holes using F, using extrusion, and removing doubles every now and then you should be able to get to get the fairly round shaped thingie with holes arranged as you want.
Next, I have extruded border out and smoothed it out pressing Space followed by 1 (this "spheres it out" as much as possible).
At this point I made sure to count how many vertices there are on the border of the object. For me it was 28.

Then I have added a cylinder with the same amount of verts (28) and removed it's cap and then connected it with the hole-thingie, Using F.
Then I have selected the edge and beveled it a bit using ctrl+b.
Finally added subidivision surface modifier and smooth shading.. and you're done :)
I think this information helps you out, if not, let me know, I will try to describe it more clearly :)

Lot of work, but looks really promising. I will try probably after the weekend and I'll definitely mark your answer as correct. Thank You!

Yar it's always a lot of tedious work required when you want your stuff look good in 3d :)
You could try @Robin Belts answer as well, it does require more steps but is also a very promising way of achieving your goal :)

This is a modeling approach to reproducing your reference closely. It's even more work than @internetofmine's, I'm afraid I haven't included all the shortcuts yet..
If you do decide to try it, and get stuck, comment and I'll edit the answer.
Because this is essentially a Sub-D approach, you'll see the illustrations flip between subdivision level 2 (Ctrl 2) and 0 (Ctrl 0), which you do all the time if you work that way.

First, center your reference image. Create a circle. Having Imported the reference as a plane, uniformly scale and move it about until the central hole lines up with the circle. CtrlAltCset the plane's origin to the 3D cursor
Create another (six-sided) mesh circle with radius 1, Fill, Inset, Delete central face.
In edit mode, duplicate the mesh elements twice, snap them together as shown, and remove doubles  (Ctrl V > Remove Doubles).

Assign a subsurface modifier level 2, and scaling the reference about the 3D cursor to center the holes, but scaling the holes in the faces with the pivot set to Individual Origins to resize the holes, find the right base-shape for the mesh elements, but still with an outer cell radius of 1.
Now we can switch off the subsurface modifier, and delete a few faces, to leave us with a 2-cell element, suitable for making an array.

Assign 2 Array Modifiers, the first is set to a relative offset in X of 2/3 (you can enter the fraction straight into the X field). The second is set to a constant offset in Y of 3. Up the counts to cover the reference holes.
Alt-Select the outer edges of the original cell rim.
(After making a duplicate for safety,) apply the array modifiers. The edges should still be selected.
Dissolve them, and the resulting topology should be as shown. Select the loop corresponding to the central hole, ShiftS > Cursor to selected, and then CtrlAltCset the geometry's origin to the 3D cursor. Now recenter the cursor, and set the geometry's Transform>Location to 0,0,0, and we're all squared up.

Now (switching your subsurface modifier on and off to help you see, if you need to)  in the top 1/3 pf your geometry, select the loops around the smaller holes in the reference, and adjust their size, using Scale with pivot set to Individual Origins. You will need to move the holes a bit, too.
Make 2 cuts with (K)the knife tool. One vertically, point-to point from the central hole, and the other in the 11 o'clock direction constrained to the center of the edges it passes, by holding Ctrl
Ensuring no other edges are selected after the operation, rip the cuts. V
Hover over the geometry outside the wedge, select linked (L) , and delete it, leaving the wedge.
Assign a Mirror modifier (in X) and an Array Modifier with an Object Offset to the wedge. I've brought our measuring-circle back to life to use as the object for the array offset.
Set the array Count to 6, and rotate its offset object in Z by 60 degrees.
Make sure Merge is checked in both modifiers, including First & Last in the array, and up the merge distance, backing off if you see any change in topology.

Delete any geometry which is not part of the rims of the holes in the reference image.
Select any edges from your cut seams that were not part of the geometry before you made the cuts...

Apply the Mirror and Array Modifiers. The edges you selected in step 17 should still be selected: dissolve them.
Alt Select the  perimeter edge-loop, and make it into a circle. I used the built-in add-on 'Loop Tools'>Circle.

The rest is extrusions.
Snappy, this ain't. But it has some techniques I've found useful elsewhere.

Interesting method, but I as a beginner didn't make it work by this method :) I got stuck in the array section... I will play with it little bit more when I finish this model. Thank You!


text:
Problem to close the eyes with Rigify
I use Rigify to rig one of my head, but when I close the eyes, there are some faces who don't follow so it makes a hole.
I think the problem comes from the weight painting, however, I don't really understand how it works.
Here is a screenshot to show you the problem :
And here is the link to the .blend if anyone wants to try something: https://mega.nz/file/kGBEnQgZ#2CSlEXGt2Vr67HapsBl3P8dWFIYWwS2ATdN7u6uTGaM
Thank in advance!
Have a good day!

There is a gap because the vertices are affected by the top lid bone and the lower eyebrow bone. You need to fix the weights manually. In Edit mode you can check the weights with the Vertex Groups Weights (VGW) overlay. Enable it and select a vertex. Then you can see the weights and in the side panel, you can see the numbers of the weights. Clicking on a VG name switches to the group and you can see the weights. Here is a similar question & example: https://blender.stackexchange.com/q/211089/107598 and here is the VGW overlay: https://blender.stackexchange.com/q/156882/107598

By the way, there is something wrong with the generated rig. The top left controller bone is called just Bone for some reason and has the wrong shape. If you want to start over with a fresh meta rig to fix this issue you can use this script to copy the bone layout from your edited meta rig: https://blender.stackexchange.com/a/194425/107598. Consider adding a head and a neck bone so you can move the head. It also helps with the calculation of the auto weights and the top of the head doesn't move when you make a blink animation.


text:
distorted normal map
I'm struggling with this for quite some time so posting here.
I sculpted a portrait (left) and with Instant Meshes I retopologized it (right).
When I try to bake normals the map image is distorted and the normals are not right. I tried to flip normals and the objects must be at the same place...
Don't know...

Blend file: portrait6.blend (googledrive)

Hi and welcome. I had a look at your blend file and added an image to your question. If you enable the Face Orientation overlay, you see that there are some flipped normals (twisted mesh at the shoulders) and holes (behind the ears of the remeshed head). This causes glitches on the baked image. Another thing is that the remeshed head has more vertices than the sculpted one. This made me wonder why you want to bake the normal map at all? The purpose of a normal map is to add the details of a high-poly mesh to a low-poly mesh. But your remeshed head is not low-poly.

Agree with Blunder. What's your goal here?

I wanted to rig the face .. I had no idea the remeshed head had more vertices.. well thanx anyway..

Instant-Meshes is a good tool to get a quad structured mesh. But the created mesh isn't ideal for face rigging. If you want to rig the face with facial expressions it's better to retopologize it manually, or use a base mesh and transform it into the sculpted version. Then you have a clean low-poly mesh and can bake the normal map to transfer the details.


text:
run script for multiple selected objects
I have this script which I want to run on all selected objects so that I don't need to select each object and run the script again and again. The script separates the selected object by vertex groups. What do I need to change?
import bpy

scene = bpy.context.scene

for ob in scene.objects:

    def main():
        origin_name = bpy.context.active_object.name
        keys = bpy.context.object.vertex_groups.keys()
        real_keys = []
        for gr in keys:
            bpy.ops.object.mode_set(mode="EDIT")
            # Set the vertex group as active
            bpy.ops.object.vertex_group_set_active(group=gr)

            # Deselect all verts and select only current VG
            bpy.ops.mesh.select_all(action='DESELECT')
            bpy.ops.object.vertex_group_select()
            # bpy.ops.mesh.select_all(action='INVERT')
            try:
                bpy.ops.mesh.separate(type="SELECTED")
                real_keys.append(gr)
            except:
                pass
        for i in range(1, len(real_keys) + 1):
            bpy.data.objects['{}.{:03d}'.format(origin_name, i)].name = '{}.{}'.format(
                origin_name, real_keys[i - 1])

    if __name__ == '__main__':
        main()

#Switch back to object mode
bpy.ops.object.mode_set(mode='OBJECT')
```

You have placed the main function into a loop. That's strange and doesn't work. It just freezes Blender. Also, the last "switch back to object mode" should be in the main()/loop because there you switch to Edit mode at the beginning. If you fix this and remove the outer loop (for ob in scene.objects), the script will run fine for the active object.

To make the script run for all selected objects you have to do "the stuff" in a loop. I would rename main() to seperate_mesh_by_vertex_groups() and call this function in a new main function, in a loop for the selected objects. The challenge is that the “bpy.ops.xxxxx” operators require the object they are working with to be in context. You therefore need to work with overwritten contexts. I'll have a closer look at this later.


text:
How can you create particle hair / hair curves that resemble stylized hair strands?
Sorry for this kind of question but I really am struggling a lot.
What would you say would be the best way to make this hair as particle hair?
The main problem comes from the fact that most of the hair strands have a considerable width but really small depth so I have no clue how to properly work with it.

I'm trying for it to be this type of hair, but on the shape of the hair below.

In the two images above I try to show what I mean when I say they have some width but really low depth.

Do you have to use the hair particles or could you use the (new) hair curves? (requires at least Blender 3.3 IIRC). Hair curves can be converted into hair particles (for example for the use of Hair Dynamics) but this would still require Blender 3.3. Just asking because if you already have a stylized hair cut you can convert the strands to hair guides with Geometry Nodes. Wait, are the strands merged at the head?

I apologise but I don't quite understand what merged at the head means, it is very likely they are, I don't know if you mean if they converge at the center and are merged altogether, in that case, yes, sorry again. About wether do I have to use the hair particles or could you use the (new) hair curves, I guess that any way that gets a result would be fine, I just want to make it look like somewhat real hair but on that shape, and want to know what the best way to approach it would be since this has driven me crazy for a while (because of my lack of experience). Sorry for trash english.

You can use a mesh (like stylized hair curves or hair cards) to style the hair curves. In Blender you can convert the (old) Hair Particle System to the (new) Hair Curves, and vice versa.
In this example we use the new Hair Curves so we can use Geometry Nodes to create the hair guides.
For older Blender versions, you can use the Hair Net add-on to use a similar workflow. Have a look here Is there a way to make a hair particle look like a mesh I've already made?
First, you need a mesh that defines the hair style. Ideally, the strands should be separated and have straight UV islands. You can use a Bezier curve (1) to guide the hair strand and a deformed Circle curve (2) as a profile as well as another Bezier curve for the taper (3). Lower the resolution (4) a bit.

If you convert this curve to a mesh (menu Object > Convert > Mesh) you get a mesh that has a grid-like UV map. This allows you to delete the "horizontal" mesh loops and only keep the edges that are to serve as hair guides.

This Geometry Nodes modifier deletes the edge loops with help of the UV map. If you have hair cards or a mesh in which the UV islands are aligned vertically (from top to bottom), you must swap the X and Y values for the Equal and Substract math nodes.

To apply the Geometry Nodes modifier and convert the curve/mesh into a Curves object choose menu item Object > Convert > Curves.
Now you have a hair Curves object that you can attach to a surface object. Here is a checklist to make sure it works properly:

the Curves object is a child of the surface object (Suzanne)
the settings in the Curves properties tab for the Surface and UV Map are correct
it has a Surface Deform Geometry Nodes modifier
the surface object (Suzanne) has the Add Rest Position checkbox enabled. It's below the shape keys.
select the Curves object, switch to Sculpt mode and run the menu item Curves > Snap to Nearest Surfaces to re-attach the curves.
change Curves > Shape to Strip and increase Additional Subdivision in the render settings

Now you can groom hair in Sculpt mode, e.g. add more hairs with the Interpolation settings.

Or use modifiers from the Asset Browser, for example Duplicate Hair Curves to thicken the hair and Clump Hair Curves to create some strands.


text:
Animating multiple objects moving along a path with the right orientations (using bpy and Python)
I am a bit of a Blender novice and started getting into Blender using the Blender Python API (bpy). I am trying to animate multiple objects on a set of paths defined by mathematical equations (the paths resemble Mobius strips).
As a first experiment I am trying to move just a cone along a simple circle with its apex pointed in the direction away from the center of the circle (would be along the normal to the curve):

The animation of the location works great but I am not able to figure out how to define the rotation for the cone so it doesn't do weird flips as it rotates. I have tried defining Euler as well as Quaternion rotations without any luck.
Say I define the following keyframes (with rotations defined with respect to the Z-axis)

0 degree
90 degrees
180 degrees
270 degrees
0 degrees

I would also like the rotation to repeat without any glitches in between. Clearly the transition from 270 to 0 is causing the object to move in the wrong direction but even if I use 360 instead of 0, I am not sure how the transition from one loop of the animation to the next can be made to go smoothly.
I realize that there are possibly solutions to this using the graph editor, geometry nodes, modifiers and what not, but I was looking for the best way to handle this using bpy.
Thanks!
Deep
Note: the following script limits the number of cones to 1 by the 3 lines if j == 0 and k == 10: in the script. Just remove them to see all cones.
import numpy as np
import mathutils
import math
from mathutils import Vector
import bpy
import sys

bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=True)

matr = bpy.data.materials.new("Red")
matr.diffuse_color = (1,0,0,1)
matg = bpy.data.materials.new("Green")
matg.diffuse_color = (0,1,0,1)
matb = bpy.data.materials.new("Blue")
matb.diffuse_color = (0,0,1,1)

columns = 20
rows = 22

frame_cnt = 500

key_frame_cnt = rows - 2

frame_step = frame_cnt / key_frame_cnt

bpy.context.scene.frame_end = frame_cnt

theta = np.radians(np.linspace(0,360,columns+1)[:-1])
phi = np.radians(np.linspace(0,180,rows)[1:-1])

theta = theta[:,None]

r = 2

x = r * np.sin(phi) * np.cos(theta)
y = r * np.sin(phi) * np.sin(theta)
z = r * np.cos(phi)
z = np.tile(z,(columns,1))

frame_num = 0

for j in range(theta.size):
    for k in range(phi.size):
        if j == 0 and k == 10:
            bpy.ops.mesh.primitive_cone_add(vertices=4)
            cone = bpy.context.active_object
            if j % 3 == 0:
                cone.active_material = matr
            elif j % 3 == 1:
                cone.active_material = matg
            elif j % 3 == 2:
                cone.active_material = matb
            cone.scale = (0.075, 0.075, 0.03)
            cone.name = 'cone_{}_{}'.format(j,k)

for i in range(phi.size):
    for j in range(theta.size):
        for k in range(phi.size):
            if j == 0 and k == 10:
                if j + i > columns - 1:
                    m = j + i - columns + 1
                else:
                    m = j + i
                cone = bpy.data.objects['cone_{}_{}'.format(j,k)]
                cone.location = (x[m][k],y[m][k],z[m][k])

                rot_x = 0
                rot_y = phi[k]
                rot_z = theta[m]
                cone.rotation_euler = (rot_x,rot_y,rot_z)
                cone.keyframe_insert(data_path="location", frame=frame_num)
                cone.keyframe_insert(data_path="rotation_euler", frame=frame_num)
    frame_num += frame_step

i = columns

# Last key frame
for j in range(theta.size):
    for k in range(phi.size):
        if j == 0 and k == 10:
            cone = bpy.data.objects['cone_{}_{}'.format(j,k)]
            m = 0
            cone.location = (x[0][k],y[0][k],z[0][k])

            rot_x = 0
            rot_y = phi[k]
            rot_z = theta[0]
            cone.rotation_euler = (rot_x,rot_y,rot_z)

            cone.keyframe_insert(data_path="location", frame=frame_num)
            cone.keyframe_insert(data_path="rotation_euler", frame=frame_num)

a small demo script or a demo blend file would be helpful.

I have attached my code. Here the code can create cones that form a grid on the surface of a spherical shape. But for the purposes of this animation I am only enabling the creation of one cone which rotates in a circle. When I actually run the script in Blender the cone does a weird flip towards the end of one loop around the circle. I will appreciate any help I can get!

Thanks for the update! The core problem is that the key frames are not correctly calculated. If you want to do a full 360° rotation with e.g. 5 key frames you need to have 0°, 90°, 180°, 270°, 360°. But in your case the last one is 0° again. It wraps: 0°, 90° ,180° , 270°, 0°. This makes Blender to spin it backwards from 270° to 0°. Also note that you have to add the starting rotation and if it rotates more than one full rotation you need to add multiple times of 360° (or radians = 2*pi in the script)., e.g. 200°, 290°, 380°, 470°, 560°. But you have 200°, 290°, 20° (wrapped!), 110°, 200°.

Thank you so much for the response. This is exactly what I suspected. But I am still not clear what I can do to have it keep rotating seamlessly in an infinite loop. If the last key frame is at 360 and it goes back to the start for the next loop is there a way I can avoid the backwards spin ?

There are 3 little problems here:

the rotation is mixed up when the cones have completed a full rotation.

a location keyframe is skipped and the first column of green cones
covers the column of the red cones when the animation starts. Then the column of blue cones moves to where the column of red ones should be, and so on...

the last key frame collapses the sphere and moves all the columns of cones to the same place.

The main problem is the key frames. If you want to make a "rotation on its own axis" animation with, say, 4 keyframes, then you actually need another keyframe to complete the cycle, i.e. a total of 5 keyframes. You have this in your example, but you have not continuously increased the rotation values. They are reset when the rotation exceeds one full complete turn. This causes the rotation glitch.
You can see this clearly in the Graph Editor if you select a column of cones (viewport menu Select > Select Pattern...) and filter for Rotation in the Graph Editor to see only the rotation values. Use View > Frame Selected (Numpad .) to display them properly:

Blender interpolates the transformation values between the key frames. At frame 225, the selected cone has a rotation of 242°. At the next key frame, frame 250, it is 18°. The cone is therefore rotated backwards between these frames.
Correct Example:

key frame 1: start angle -> 30°
key frame 2: turn it by 90° -> 120°
key frame 3: turn it by 90° -> 210°
key frame 4: turn it by 90° -> 300°
key frame 5: turn it by 90° -> 390° = 360° + 30°

How to Fix the Script
For key frame 5 in the example, your script only calculates the angle of 30° when an overflow occurs. The full rotation (360°) is ignored. This is done by the index m and the lookup table theta[m]:
                if j + i > columns - 1:
                    m = j + i - columns + 1
                else:
                    m = j + i

                # (... left out a few more lines ...)

                rot_z = theta[m]

By the way, the + 1 makes the new index start at 1 after an overflow, but indices in Python start at 0. This leads to an error in the position (point 2 above).
You can simply replace the if with a modulo (%) calculation. And then add an integer division // to calculate the number of full rotations (n times 360°). For the rotation value rot_z add the value of 2 * pi (radian) = 360° for each full rotation to get the correct rotation value:
            m, num_of_full_rotations = (j + i) % columns, (j + i) // columns

            # (... left out a few more lines ...)

            rot_z = theta[m] + 2 * math.pi * num_of_full_rotations

To fix the last key frame problem (point 3 above), just add  + 1 for one more loop iteration and delete the last code block. So: for i in range(phi.size + 1):. That's it.
In the Graph Editor the rotation values form an ascending line. The calculated sin() and cos() values for the location are also displayed.
Final note: keep in mind that Blender interpolates the transformations between key frames. So objects move in a straight line from location A to B if interpolation is Linear. That is, a "circle" with only 4+1 key frames is actually a square. You can change the interpolation to Bezier & change the handle types, etc to smooth it but the movement might be still not perfect. The more key frames you have the smoother the calculated animation will be. It might be the best to calculate the tranformation values for every frame, similar to a "baked animation". This way no interpolation is used at all.
Here is the complete script with a UV Sphere for comparision. frame_step is rounded so we don't have key frames at frames like 214.111.
import numpy as np
import mathutils
import math
from mathutils import Vector
import bpy
import sys

bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=True)

matr = bpy.data.materials.new("Red")
matr.diffuse_color = (1,0,0,1)
matg = bpy.data.materials.new("Green")
matg.diffuse_color = (0,1,0,1)
matb = bpy.data.materials.new("Blue")
matb.diffuse_color = (0,0,1,1)

columns = 22
rows = 20

frame_cnt = 500

key_frame_cnt = rows - 2

frame_step = round(frame_cnt / key_frame_cnt)

bpy.context.scene.frame_end = frame_cnt

theta = np.radians(np.linspace(0,360,columns+1)[:-1])
phi = np.radians(np.linspace(0,180,rows)[1:-1])

theta = theta[:,None]

r = 2

x = r * np.sin(phi) * np.cos(theta)
y = r * np.sin(phi) * np.sin(theta)
z = r * np.cos(phi)
z = np.tile(z,(columns,1))

frame_num = 1

for j in range(theta.size):
    for k in range(phi.size):
        bpy.ops.mesh.primitive_cone_add(vertices=4)
        cone = bpy.context.active_object
        if j % 3 == 0:
            cone.active_material = matr
        elif j % 3 == 1:
            cone.active_material = matg
        elif j % 3 == 2:
            cone.active_material = matb
        cone.scale = (0.075, 0.075, 0.03)
        cone.name = 'cone_{}_{}'.format(j,k)

for i in range(phi.size+1):
    for j in range(theta.size):
        for k in range(phi.size):

            # calculate the index for the rotation, and check if it overflows/wraps, that is, rotation > 360°
            # return the index for the remaining rotation and the number of full rotations,
            # e.g. 4 (index for 90°)  and 3 for full rotations = 30°+3*360°=1110° in total for the key frame)
            m, num_of_full_rotations = (j + i) % columns, (j + i) // columns

            cone = bpy.data.objects['cone_{}_{}'.format(j,k)]
            cone.location = (x[m][k],y[m][k],z[m][k])

            rot_x = 0
            rot_y = phi[k]
            # here m can be wrapped, happens when the rotation > 360°, so we need to add 360° = 2*pi for each full rotation done yet.
            rot_z = theta[m] + 2 * math.pi * num_of_full_rotations

            cone.rotation_euler = (rot_x,rot_y,rot_z)
            cone.keyframe_insert(data_path="location", frame=frame_num)
            cone.keyframe_insert(data_path="rotation_euler", frame=frame_num)
    frame_num += frame_step

# add sphere for comparision
bpy.ops.mesh.primitive_uv_sphere_add(segments=columns, ring_count=rows-1, radius=r, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))

I appreciate all the work you put into answering my question. Thanks again!


text:
Problem with weird rotations of objects moving along Mobius strip paths (animated using Blender Python API)
This is a follow up question to my previous one regarding objects moving in a circle (which was a simple test case I had put together). I really appreciate the answer and detailed explanation provided by Blunder. I do understand the issue now, but I am still no closer to getting my more complex animation (involving Mobius strip paths) to work correctly.

Here the object is rotating along all 3 axes and I am getting the Euler angles from a "normal" direction vector (joining the location of the object pnt to the center circle of the Mobius strip cnt). The angles sometimes change abruptly by 180 or 360 degrees which I assume is due to the looping and the nature of the Mobius strip itself. I am just not sure how these angles can be manipulated to avoid the weird unintended rotations that are happening as the objects move along the Mobius strip paths. I tried using quaternions as well but manipulating them is less intuitive than working with Eulers.
While my intent is to animate objects moving along 9 paths defined by mathematical equations, the code I have attached simplifies this by defining just 3 paths. I would greatly appreciate any insights I can get into addressing the weird rotations in this situation. I have been struggling with this for several weeks now. Thanks!
import numpy as np
import mathutils
from mathutils import Vector
import bpy
import sys

bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=True)

matr = bpy.data.materials.new("Red")
matr.diffuse_color = (1,0,0,1)
matg = bpy.data.materials.new("Green")
matg.diffuse_color = (0,1,0,1)
matb = bpy.data.materials.new("Blue")
matb.diffuse_color = (0,0,1,1)

columns = 42
rows = 42

theta = np.radians(np.linspace(0,360,columns+1)[:-1])
phi = np.radians(np.array([0,120,240]))
#phi = np.radians(np.array([0,30,90,120,150,210,240,270,330]))
#phi = np.radians(np.array([0,11,30,60,90,109,120,131,150,180,210,229,240,251,270,300,330,349]))
gamma = np.radians(np.linspace(0,360,rows+1)[:-1])

phi = phi[:,None]
gamma2 = gamma[:,None]
gamma = gamma[:,None,None]

n = 3
a = 1
t = 2

# Cross section is an equilateral triangle with circumradius r
r = np.cos(np.pi/n) / np.cos(np.mod(phi,2*np.pi/n) - np.pi/n)

# 1D array
x1 = (4/3) * r * np.cos(phi)
y1 = (4/3) * r * np.sin(phi)

# 2D array
x2 = (a + (x1 / 2) * np.cos(t * theta / 2) - (y1 / 2) * np.sin(t * theta / 2)) * np.cos(theta)
y2 = (a + (x1 / 2) * np.cos(t * theta / 2) - (y1 / 2) * np.sin(t * theta / 2)) * np.sin(theta)
z2 = (x1 / 2) * np.sin(t * theta / 2) + (y1 / 2) * np.cos(t * theta / 2)

# 3D array
x = x2 * np.cos(gamma) - y2 * np.sin(gamma)
y = x2 * np.sin(gamma) + y2 * np.cos(gamma)
z = np.tile(z2,(rows,1,1))

cx2 = a * np.cos(theta)
cy2 = a * np.sin(theta)
cz2 = np.tile(0,columns)

cx = cx2 * np.cos(gamma2) - cy2 * np.sin(gamma2)
cy = cx2 * np.sin(gamma2) + cy2 * np.cos(gamma2)
cz = np.tile(cz2,(rows,1))

# Loop over j for different paths
# Loop over k for different points on each path
# Create cones
for j in range(phi.size):
    for k in range(theta.size):
        bpy.ops.mesh.primitive_cone_add(vertices=4)
        cone = bpy.context.active_object
        if j % 3 == 0:
            cone.active_material = matr
        elif j % 3 == 1:
            cone.active_material = matg
        elif j % 3 == 2:
            cone.active_material = matb
        cone.name = 'cone_{}_{}'.format(j,k)
        cone.scale = (0.075, 0.075, 0.03)

frame_cnt = 336

key_frame_cnt = rows

frame_step = frame_cnt / key_frame_cnt

bpy.context.scene.frame_end = frame_cnt

frame_num = 0

for i in range(gamma.size):
    for j in range(phi.size):
        for k in range(theta.size):
            if k - i < 0:
                m = k - i + columns
            else:
                m = k - i

            cone = bpy.data.objects['cone_{}_{}'.format(j,k)]
            cone.location = (x[i][j][m],y[i][j][m],z[i][j][m])

            cnt = Vector((cx[i][m],cy[i][m],cz[i][m]))
            pnt = Vector((x[i][j][m],y[i][j][m],z[i][j][m]))

            rot = pnt - cnt
            rot.normalize()

            rot_quat = rot.to_track_quat('Z','Y')
            rot_euler = rot_quat.to_euler()

            rot_x = rot_euler[0]
            rot_y = rot_euler[1]
            rot_z = rot_euler[2]

            # Manipulate rot_x, rot_y and rot_z to resolve flips but how?

            cone.rotation_euler = (rot_x,rot_y,rot_z)

            cone.keyframe_insert(data_path="location", frame=frame_num)
            cone.keyframe_insert(data_path="rotation_euler", frame=frame_num)
    frame_num += frame_step

# Last key frame
for j in range(phi.size):
    for k in range(theta.size):
        cone = bpy.data.objects['cone_{}_{}'.format(j,k)]
        cone.location = (x[0][j][k],y[0][j][k],z[0][j][k])

        cnt = Vector((cx[0][k],cy[0][k],cz[0][k]))
        pnt = Vector((x[0][j][k],y[0][j][k],z[0][j][k]))

        rot = pnt - cnt

        rot.normalize()

        rot_quat = rot.to_track_quat('Z','Y')
        rot_euler = rot_quat.to_euler()

        rot_x = rot_euler[0]
        rot_y = rot_euler[1]
        rot_z = rot_euler[2]

        cone.rotation_euler = (rot_x,rot_y,rot_z)

        cone.keyframe_insert(data_path="location", frame=frame_num)
        cone.keyframe_insert(data_path="rotation_euler", frame=frame_num)

It looks like there are two problems that cause these "random" rotations: 1) the groups of cones that have strange interpolated rotations are caused by gimbal locks. You can prevent this if you use Quaternion instead of Euler. 2) At some point, the individual cones rotate 180° one after the other. This seems to be similar to https://blender.stackexchange.com/a/218657/107598 - you make the cones tracking a target postion with the to_track_quat function. The calculation works in the range of -180° to 180°. It's ok for poses but for interpolated animations the rotation direction is messed up ...

... because the direction of rotation is ignored and you can achieve a rotary position on one axis by making several turns in different directions. 270° is the same as -90° (=270°-360°) or 630° (=270°+360°). For example, your rotation animation uses the poses 0°, 90°, 180°, 270°, 360° (rotating clockwise), but to_track_quat() calculates -90° (counterclockwise) instead of 270° (clockwise).  The resulting key frames are then: 0°, 90°, 180°, -90, 0° instead of 0°, 90°, 180°, 270°, 360°. The individual poses/key frames are the same but the interpolated movement is not.

To fix this you will have to consider the rotation of the previous frame (=direction of rotation) and correct the calculated rotation if it is in the range of -180° to 0° instead of 180° to 360°. I.e. at -90° add the correction value of 360° (-90+360=270). The same for the other direction. -Or- do without interpolation and calculate a pose/key frame for each frame.

Thank you Blunder for once again coming to my rescue! To avoid gimbal locks I am assuming I should define the key frames using rotation_quaternion instead of rotation_euler. I had tried that and had the same weird behavior. I am assuming that is because of the second issue. But if I am using quaternions I can't manipulate individual angles. I am assuming what I need to do instead is negate the quaternion under certain conditions ? Can you please confirm ? Thanks again !

The first problem is the XY axes of the cones rotate 90 degrees when Z crosses the global vertical axis. This is a real thing that happens at the keyframes, not an interpolation artifact, so it won't be changed whether you use eulers, quaternions, or whatever.

This happens because you used to_track_quat. Conceptually you cannot ever make a rotation by just knowing where the up (Z) axis is, because the XY plane is still free to rotate around that up axis. You also need a "forward" direction.
To put it another way, you need a consistent moving frame on the curve. You have your consistent normal vector, now you need a consistent tangent vector. (The bitangent is then fixed as their cross product, up to sign.)

I don't know how to compute the tangent for your curve, so I'll just approximate it with the vector pointing to the next cone on the path.
Once we have the local XYZ axes, ie the rotation matrix, we can easily compute the rotation that will give those axes.
for i in range(gamma.size):
    for j in range(phi.size):
        for k in range(theta.size):
            if k - i < 0:
                m = k - i + columns
            else:
                m = k - i

            next_k = 0 if k == theta.size - 1 else k+1
            next_m = next_k - i + columns if next_k - i < 0 else next_k - i

            cone = bpy.data.objects['cone_{}_{}'.format(j,k)]
            cone.location = (x[i][j][m],y[i][j][m],z[i][j][m])

            cnt = Vector((cx[i][m],cy[i][m],cz[i][m]))
            pnt = Vector((x[i][j][m],y[i][j][m],z[i][j][m]))
            next_pnt = Vector((x[i][j][next_m],y[i][j][next_m],z[i][j][next_m]))

            up = pnt - cnt
            up.normalize()

            forward = next_pnt - pnt
            forward.normalize()

            # Compute rotation matrix from local axes
            rot = mathutils.Matrix.Identity(3)
            rot[0] = forward.cross(up)
            rot[1] = forward
            rot[2] = up
            rot.transpose()  # set columns, not rows

            rot_euler = rot.to_euler()

            cone.rotation_euler = rot_euler

            cone.keyframe_insert(data_path="location", frame=frame_num)
            cone.keyframe_insert(data_path="rotation_euler", frame=frame_num)
    frame_num += frame_step

It is still not fixed. The second problem should be familiar though, it was what you asked about in your last question. Sometimes the cone will make unnecessary full rotations, or go backwards instead of forwards.

To fix this, you can use e2.make_compatible(e1) to make each euler, e2, consistent with the euler from the previous frame, e1. "Compatible" means it takes the shortest path to get to e2.
I'll store the euler from the previous frame in a dict indexed by (j,k) so we can access it on the next iteration.
prevs = {}  # NEW

for i in range(gamma.size):
    for j in range(phi.size):
        for k in range(theta.size):
            if k - i < 0:
                m = k - i + columns
            else:
                m = k - i

            next_k = 0 if k == theta.size - 1 else k+1
            next_m = next_k - i + columns if next_k - i < 0 else next_k - i

            cone = bpy.data.objects['cone_{}_{}'.format(j,k)]
            cone.location = (x[i][j][m],y[i][j][m],z[i][j][m])

            cnt = Vector((cx[i][m],cy[i][m],cz[i][m]))
            pnt = Vector((x[i][j][m],y[i][j][m],z[i][j][m]))
            next_pnt = Vector((x[i][j][next_m],y[i][j][next_m],z[i][j][next_m]))

            up = pnt - cnt
            up.normalize()

            forward = next_pnt - pnt
            forward.normalize()

            # Compute rotation matrix from local axes
            rot = mathutils.Matrix.Identity(3)
            rot[0] = forward.cross(up)
            rot[1] = forward
            rot[2] = up
            rot.transpose()  # set columns, not rows

            rot_euler = rot.to_euler()

            if i > 0:                                    # NEW
                rot_euler.make_compatible(prevs[(j,k)])  # NEW
            prevs[(j,k)] = rot_euler.copy()              # NEW

            cone.rotation_euler = rot_euler

            cone.keyframe_insert(data_path="location", frame=frame_num)
            cone.keyframe_insert(data_path="rotation_euler", frame=frame_num)
    frame_num += frame_step

Is it fixed now? No! You will notice the cones still "wobble" sometimes, not going backwards, but "twisting" on the way to their target instead of moving "straight".

This is characteristic gimbal lock. The solution is to use quaternions instead of Euler angles. That's easy.
prevs = {}

for i in range(gamma.size):
    for j in range(phi.size):
        for k in range(theta.size):
            if k - i < 0:
                m = k - i + columns
            else:
                m = k - i

            next_k = 0 if k == theta.size - 1 else k+1
            next_m = next_k - i + columns if next_k - i < 0 else next_k - i

            cone = bpy.data.objects['cone_{}_{}'.format(j,k)]
            cone.rotation_mode = 'QUATERNION'  # NEW, you actually only need to do this once of course
            cone.location = (x[i][j][m],y[i][j][m],z[i][j][m])

            cnt = Vector((cx[i][m],cy[i][m],cz[i][m]))
            pnt = Vector((x[i][j][m],y[i][j][m],z[i][j][m]))
            next_pnt = Vector((x[i][j][next_m],y[i][j][next_m],z[i][j][next_m]))

            up = pnt - cnt
            up.normalize()

            forward = next_pnt - pnt
            forward.normalize()

            # Compute rotation matrix from local axes
            rot = mathutils.Matrix.Identity(3)
            rot[0] = forward.cross(up)
            rot[1] = forward
            rot[2] = up
            rot.transpose()  # set columns, not rows

            rot_quat = rot.to_quaternion()              # NEW

            if i > 0:
                rot_quat.make_compatible(prevs[(j,k)])  # NEW
            prevs[(j,k)] = rot_quat.copy()              # NEW

            cone.rotation_quaternion = rot_quat         # NEW

            cone.keyframe_insert(data_path="location", frame=frame_num)
            cone.keyframe_insert(data_path="rotation_quaternion", frame=frame_num)  # NEW
    frame_num += frame_step

Is it fixed now?! Yes, I think so.
Note that I didn't do the last frame though.


text:
How to detect if a mesh has split UV island instead of single island, using Python?
So, Lets understand the problem or the issue I am trying to resolve. Lets say I have two mesh in the viewport as in the image.
First mesh is a square with 2 loop cuts or 3 faces. And second is square with 4 faces. So I unwrap, and get UV of 1st as a perfect square and second one with 2 islands which is 1 face and other is 3 faced island. But lets say I somehow misplaced one face from 1st mesh UV island and it got shifted like in the image.: Is there a way I can detect that my mesh has that UV face splitted or have 2 island instead of one? But second UV mesh is correct so it doesn't get selected with the script because it has seams to mark it having split faces. As it can be bit troublesome if the no. of UV islands get high and gets time consuming. The result I am kind of wanting to get is like this , so it selects the UV islands which shouldn't have been splitted.Thank you.

I think you need to unwrap the model using the marked seams or calculate the number on your own. Then you need to compare this number(X) with the actual number of UV islands (Y) (https://blender.stackexchange.com/questions/48827/how-to-get-lists-of-uv-island-from-python-script). If X equals Y then everything is fine. If you want to select the split UV island then you additionally need to compare the results. Could be time consuming...

Another way is to select a single face in the UV editor, do ops.uv.select_linked(), then check if all faces are selected or not. But controlling the UV editor from Python is a huge pain in the ass...

You can use a loop's link_loop_radial_next to get the equivalent loop on the neighboring face. Assuming manifold geometry - each edge builds exactly 2 faces - or at least assuming no edge builds more than 2 faces, if there's another face, and so another radial loop - it goes in the opposite direction, and so matching this loop's start with other loop's end, and this loop's end with other loop's start will reveal if the UVs were moved:
import bpy, bmesh
from bpy import context as C

tolerance = 0

bpy.ops.mesh.select_all(action='DESELECT')
me = C.object.data
bm = bmesh.from_edit_mesh(me)  # assuming Edit Mode
uvl = bm.loops.layers.uv['UVMap']
for face in bm.faces:
    for loop in face.loops:
        neighbour_loop = loop.link_loop_radial_next
        if loop is neighbour_loop or loop.edge.seam:
            # edge.is_boundary = True, there's no neighboring face
            continue
        loop1_start_uv = loop[uvl].uv
        loop1_end_uv = loop.link_loop_next[uvl].uv
        loop2_start_uv = neighbour_loop[uvl].uv
        loop2_end_uv = neighbour_loop.link_loop_next[uvl].uv
        vert1_uv_distance = (loop1_start_uv - loop2_end_uv).length
        vert2_uv_distance = (loop1_end_uv - loop2_start_uv).length
        if  vert1_uv_distance > tolerance or vert2_uv_distance > tolerance:
            # edge is between connected faces, but is too far away in UV
            loop.edge.select = True

The result of running the script on Susanne:

Edit: added the or loop.edge.seam check and a seam on X=0 (keep in mind that's not the seam originally used to unwrap Susanne):

Yeah thats really the best approach and it is exactly what I needed. so my models always have seams but sometimes some island get split during packing or something, so figuring out island which are by mistakenly split, instead of only split from the seams. Your code gives clear selection of the faulty Island. Thank you. Really appreciate the approach and things I got to learn. I shouldn't ask but can you recommend a good course for python scripting youtube one's aren't that good if you wanna go into good coding for blender functions and opertaors.

@NamanDeep https://blender.stackexchange.com/users/15543/batfinger?tab=answers
https://www.youtube.com/playlist?list=PLa1F2ddGya_8acrgoQr1fTeIuQtkSd6BW
https://www.youtube.com/watch?v=XqX5wh4YeRw
https://studio.blender.org/training/scripting-for-artists/
https://github.com/njanakiev/blender-scripting
https://docs.blender.org/api/current/
https://docs.blender.org/manual/en/latest/advanced/scripting/addon_tutorial.html
https://docs.blender.org/api/current/info_quickstart.html
https://docs.blender.org/api/current/info_overview.html

Hello there! I have faced a bit of issue with the code you wrote above In the line " bm = bmesh.from_edit_mesh(me)  # assuming Edit Mode
uvl = bm.loops.layers.uv['UVMap'] "   I want to change the selecting UV method to be active uv, rather than uv named as UVMap. I couldn't find a way since it was made in ops method, if you could suggest some edit, would be helpful

@NamanDeep either uvl = bm.loops.layers.uv[me.uv_layers.active.name] or uvl = bm.loops.layers.uv[me.uv_layers.active_index] should work

Thank you! You are the best, Appreciate the help. Sorry to bother ya haha, But it solved the problem. Again thank you!


text:
Can you help me model this shell shape?
I am trying to recreate this shape as closely as possible (the "shell", not the ring)
I can make a sphere and flatten it to the proper dimensions, but the radius is never the same near the "points" of the almond shape.
Thanks for your help!

You could begin with a circle that you scale on Z and extrude inwards:

Then switch to side view and give it the right curvy profile:

I see, so once i am on the profile, should I use scale to fit the shape? Also, if I want to 3D print the item, how can I keep the resolution high? I can see that you only have a few loop to move. Thanks

once in side view, select the central circle and move it to the left. You can enable the Proportional Editing option if you want to move the other circles as well. If you want a high resolution, give your object a Subdivision Surface modifier and apply it, but before that, give your object thickness with a Solidify modifier that you apply and also create edge loops along the edges in order to sharp them.

Super! Thanks a lot, I'll try this tonight.ß


text:
I see my object glossy in viewport shading but when rendered solid grey color
I am making a table in Blender. When it's not rendered it's glossy because I put a Glossy shader on it. But when rendered it's just a color.
I have tried everything. I have literally done everything I could find but nothing worked. I have tried texture coordinates. Nothing worked all of the research. The background I have done. Didn't help.
I have tried making a new shader and see if it works but it didn't. When I changed the material color it was just a color with no glossiness.

hello please share your file: https://blend-exchange.com/

Which render engine do you use? Cycles or Eevee? Have you set up an HDRI as background?

Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking.

By default, the Material Shading mode has a preview world texture that sows up in your reflection because it's a Shading Mode designed for quick material preview.
When you switch to Rendered Shading Mode, you see your scene as it is, which by default has a pure grey world material with no texture. Hence, nothing to see in an object's reflection, besides a pure grey which may make it seem reflection-less.
Add an environment texture, a sky texture, or just other objects around, and you will see your reflections work just fine ; when there are visible things to reflect.


text:
too much brightness in some sides of an icosahedron
This is the first time I ask something in this site. Thanks for reading me.
What I want is to reduce the brightness of the surface of an icosahedron -some sides. Because what I want to do later is write in each side of this object and I suppose that if exist so much light in a written side therefore it wouldn't be readable.
It is possible that all the faces can have the same intensity or energy of light? And in this case, not with the brightness signalized with red in the image, but with the same level of light signalized with blue. This is the link of sketchfab: https://skfb.ly/6ArvI. And this is a screenshot of the object in Sketchfab.

Another problem it is that when I render the object what I see in Blender its not how I see it in Sketchfab, so I need to upload in that site a exported file to know how will show finally.

File to download: https://drive.google.com/file/d/1FdoxP63h0TlEnBUdfUCQlkOumzFQbuaV/view?usp=sharing
Sorry if I'm imprecise in this question. Thanks.

While links and files may be helpful questions should stand on their own, your Sketchfab link doesn't work and to answer your question one must now download a file to understand what you want. Please describe the issue and add images to your post so it is answerable.

Thanks for the reply @DuarteFarrajotaRamos. I edited the post -fixed the sketchfab link- and added images. I hope that it will helpful for the readers.

"what I see in Blender its not how I see it in Sketchfab" Obviously Blender couldn't possibly predict what some random site will render your model like. Not sure how Sketchfab works these days, haven't used it in quite a while, but sounds like you need to adjust your lighting in the website model viewer, not inside Blender


text:
Animate Property gets activated whenever I move an object
I think I must have changed a setting by accident.

Whenever I select an object and do any operation on it (move, rotate, scale, etc), suddenly the boxes in the Transform tab become yellow and the Animate property settings (The diamonds next to the yellow boxes on the right hand side of the photo) become activated.
I don't know what these are and what these do (I don't think they do anything atm), but I know this is not the default behavior.
How can I change this back to default behavior? (i.e. no yellow boxes, no diamonds)

Disable the Auto-keying above the timline.


text:
Weird artifacts in shadow when rendering transparent objects
I'm rendering a transparent cup with water + transparent plate.
However, the right bottom part of the shadow seem quite off. It has artifacts in the shadow.
https://i.sstatic.net/sTf0T.jpg
This is the problematic part

Before using the Denoising Data option in View Layer Properties, however it looks kinda ok. It looks like  this.
https://i.sstatic.net/m7tXd.jpg
So maybe it's a problem of denoising? However, this is part of the tutorial of Blender Guru's Donut Tutorial and he's using the denoising option and it looks just fine.
Here is the blender file just to be sure.

My sampling rate in the renderer is 128 and I'm using Blender 2.8. All the transparent materials are made by Principled BSDF, Transmission 1.0, and Roughness 0.0.

What Blender version are you using? In older versions you had to check "Use transparent shadows" per material to avoid artefacts.

@FrederikSteinmetz It's unfortunately 2.8 : (

Denoisers use an algorithm to predict and remove noise (the fireflies). However, when your image gets too noisy, the algorithm will be unable to predict what is supposed to be where (remember it's looking at the pixels and running some sort of math to try and guess what you don't want in the scene, and how to use the surrounding pixels to fix it).
In this case, you're going to need to increase your sample count.

Thank you. I'll try disabling the denoising option and try the sample count to 256 this time.

Well, you don't need to get rid of the denoiser altogether, but I would definitely increase the sample count. If you want a noise-free image without denoisers when dealing with transparent objects, oftentimes your sample count can easily go up into the thousands.

Is that so?? I will keep that in mind. Quick question though, I realized I see a Denoising Data option under View Layer Properties-Passes-Data, and a Denoising option under View Layer Properties-Denoising. Which one should I use?

Try using the Denoise node in the Compositor. Here's a quick tutorial on how to do that: https://www.youtube.com/watch?v=Pw-OxOHHu5I
PS: If you can't see any nodes in the compositor, check Use Nodes at the top

PS: the video is a bit dated, you don't need an experimental build.


text:
Setting a bone in a particular angle
I'm trying setting some bones in a particular way. One of my friends told me to set the bone on -180 0 0 PYR on Blender. However, to do that, I need to have the bones on a particular angle (0 0 0 I would say), but the armature comes with the bones already like this
What I want to achieve is making the bones have this particular angle

The issue here is I can't really ask him how to do it since he uses 3DSMax.
So, my question is, since that's already the neutral position, is there a way to rotate that bone in that angle? (-180 0 0 PYR)
Thank you in advance, I hope you can help me with this!

Key R, then the axis (X, Y, or Z), then the angle.

Thanks for the answer. I've added what I've tried to achieve

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


text:
Why are the array modifier and curve affecting my object?
I want to use an array modifier to place my object along a curve. I have tried to do it by using using both an array modifier and curve modifier (see picture 1) as well as only an array modifier and using the Object Offset and selecting the curve (pic 2). I get different results with both.
Origin and 3D Cursor are at World Origin.
Why are the array modifier and curve deforming my object?

The end result should be something like this:

I want to get a result like the fourth picture. Yes it is deforming the planes on the outer sides of the curve, but it is not changing or affecting the geometry of the planes. It is just 'wrapping' the planes around the curve. That is what I want.

The file:

https://blender.stackexchange.com/questions/238562/modifier-array-and-curve?rq=1

Could you please draw what are you trying to achieve at the end? The Curve modifier will deform the object, and Array with Object Offset may also deform the object if it has been scaled

I added another picture for end result. So the first picture is getting pretty close, but it is still deforming the upper parts.

@JohnEason I don't really understand what they are doing

The Curve modifier will always deform, but you can just array a plane, activate its Instancing > Faces and parent your wooden batten to the plane

If you want to know why the Curve Modifier is deforming your object, that is very easy to explain: in the modifiers tab, you can find it under Deform which is a first hint, and in the Blender Documentation on this modifier, the first sentence is: "The Curve modifier provides a simple but efficient method of deforming a mesh along a curve object."

Maybe I should not have used the word deform. I mean I should be able to just place a plane along a curve without it affecting the geometry right? Like in the second picture it is making the planes much smaller. I want something like the fourth picture - just placing planes along the shape of the curve

Apply the rotation and scale of your curve and in Edit mode select all and right click >Set Curve Radius > 1?

Or please share your file: https://blend-exchange.com/

The Array modifier together with the Curve Modifier works now. But when I only use the Array Modifier with Object Offset, nothing happens now. I will upload the file

Why do you want to use Array modifier with Object Offset? If you say that it works now why don't you keep it as it is?

Mainly for learning purposes. Trying to be able to work with both ways. Because in this case I am working with a curve, but if I for example work with an Empty then you would use the Object Offset. So trying to understand it.

The Object Offset won't let you make the shape you show (chair) so I'm not sure why you want to use it, unless you're trying to do another shape, in that case, please show the shape

Ah okay, clear! I know enough for now, thank you all!

You've probably scaled your curve, which deforms the instances of your object, to fix that apply the rotation and scale of your curve and in Edit mode select all and right click > Set Curve Radius > 1 and Enter.
As for the Array in Object Offset mode, it will modify the array according to the location, rotation and scale of the selected object, it won't allow you to create such a shape.


text:
How can I make a half circle spiral slide?
I want to make a shape like the picture below.
I used an Archemedian curve spiral to make a shape for the slide, because I want the upper part of the spiral to have a smaller radius than the lower part.
But now I am stuck on what to do next. I tried putting an extruded half circle on the curve, but that doesn't do anything.
So, what to do next after creating my archemedian curve spiral? (2nd picture)

EDIT:
I have now been able to make the shape that I want. I used an archmedian curve and converted it to a mesh. Would you know how I could cut the shape in half? I wanted to delete faces, but the faces sort of rotate as you can see in the third picture. So 'just' deleting faces is not an option.

EDIT: File

https://blender.stackexchange.com/questions/159890/how-to-taper-a-coil

An Archimedean Spiral primitive with the settings as below will do it:

... followed up with Solidify and Bevel modifiers. This can be converted to a mesh when you're happy.
I guess it's almost as easy to sweep a Curve Primitive > Arc along a Curve Primitive > Spiral in Geometry Nodes, for the base-object, in which case you're non-destructive all the way.

Switch the curve to Twist Method > Z-Up:

It should work:

You can still play with the Tilt value of the control points if necessary (in the N panel or shortcut CtrlT):

File:

Ah, the z-up twist method makes a huge difference! But how do you see both the mesh and curve? If I convert my curve to Mesh, the curve is gone.

Also, after I have extruded along normals, the bevel modifier is not working.

I have used a mesh that has an Array and Curve modifier, but doing it with a curve works as well, as for your bevel problem, please share your file

Can you show me how you did that? Here is the file for the bevel? I added the file

It's not clear where you want to bevel, if you want to bevel the edge, put the Bevel modifier Angle at 90°, also put the Subdivision Surface below the Bevel modifier, also maybe you want to put a Solidify modifier at the top of your modifiers stack in order to give a bit of thickness?

Also I've edited my answer and linked the file

Another alternative would be to use the XYZ Math Surface from menu Add > Mesh > Math Function > XYZ Math Surface:

This option uses the following Parametric Equations, but only copy/paste the right side of the equal sign for each equation into the $X,Y,Z$ $equation$ fields:
$$x(u,v) = (b*(a+u*f)+a*\cos(v))*\cos(-u)$$
$$y(u,v) = (b*(a+u*f)+a*\cos(v))*\sin(-u)$$
$$z(u,v) = -a*(\sin(v) + u*c)$$
where a is the radius of the arc/tube, b is the tapering radius of the whole spiral setup, f is the tapering amount, and c is the height. Set $V max$ to the value of $\pi$ by typing in pi in that field to get half tube result. Add Solidify Modifier and then Subdivision Modifier to get this:

It does work for me to a certain degree. The only thing is - the beginning and end of the slide are also connected? Also, doing this type of math has been too long for me haha. Not really understanding what I am doing also doesn't help probably.

yeah bit tricky  i just added this solution to add more variety and some may find it useful

There must be an already existing answer to this somewhere… Here's one way to do it:

⭾ Tab Edit the Default Cube.
With everything selected SY0↩ Enter, to flatten it.
MB remove doubles.
2 for edge selection mode, select the top edge, XE delete it.
⭾ Tab Object Mode.
✲ Ctrl4 Subdivision Surface.
Add Screw Modifier.
⬆ ShiftA, EP Add an Empty.
Select the mesh object again, set the empty as the axis object of the screw modifier, increase the screw value.
GX Move the object on the $x$ axis.
SZ Scale the object on the $z$ axis
Add a Solidify modifier, Bevel modifier, another Subdivision modifier:

Whoops, it's not archimedean, you could create a Bezier manually and bevel it with an arc profile, but Geometry Nodes help with this part as well:

Ah I see what you are doing, could you explain a bit what the Empty does for the Screw modifier?

I want to use an archmedian curve as I mentioned, because I want to have a smaller radius of the second rotation. I added another picture. That is the shape that I want, but I need like half a circle.

@DPlayground the empty marks the vertical line, around which the screw revolves. In my answer the empty is at world origin, so the screw revolves around the world origin. You don't really need the empty, you could instead move the geometry in edit mode, away from the origin… Unfortunately I missed the "archemedian" part, so I'll post geonodes solution

Could you show what you mean with creating a bezier and bevel it with an arc profile?

Also, I don't have the Set Curve Normal Node. I am working in Blender 3.1.0 - maybe because its an older version?

@DPlayground the node is available since Blender 3.4 https://blender.stackexchange.com/a/273542/60486 look into the Robin Betts' answer.


text:
How can I place objects along curve without deform?
I want to place the same objects along a curve, however when I do this is also deforms every object.
How can I place objects along curve without deform?
I also don’t understand why the objects are not ON the curve, but basically 'jump' to a different location - see the second picture. I set the origin to geometry.
Here is the blend file:

did u apply rotation and scale? if yes, pls provide blend file, thx

I added the file!

problem 1 you can solve by selecting your object and press alt - g -> both (curve + object) should have the same origin

https://blender.stackexchange.com/questions/65567/problems-with-curve-modifier/65571#65571

@Chris I am not sure if I understand what you mean? How can they both have the same origin? Both of them have their origin at the centre of their geometry.

the origin has to be the same value, else it will look weird. You can also check the answer Duarte linked to it.

And if you don't want the instances to be deformed, use another method (array a plane, enable its Instancing > Faces option, parent the object that is supposed to be instanced to this plane)


text:
Two Objects - One Material Scale
I've seen multiple (similar) versions of this question all over the internet, with no solid answer.
I have two objects - both are different sizes.
I unwrap and apply the same material to each.
The material's scaling is different on both objects - nothing out of the ordinary..

I squint my eyes and poke my tongue out the corner of my mouth while I try to match the scale of the first object's material to the second object's perfectly.

But why go through all the trouble?
Why can't I just apply the material to any object I want and adjust the material's scale universally to all objects with the same material using the "Mapping" Node?

Sure I could use "Object" in the "Texture Coordinate" node and adjust scale in the "Mapping" node.

But then my material just gets smeared down the object's vertical edges.

Any experts have a solution?
Cheers.

Same principle as here even if for brick texture: https://blender.stackexchange.com/questions/112843/how-can-i-make-my-procedural-brick-texture-map-correctly-to-both-a-cube-and-cyli/113922#113922

In the Image Texture node, choose Box instead of Flat?

@moonboots Funny, I just tried that right after posting my question and it worked. As long as "Object" is being used in the "Texture Coordinate" node. I'm curious how well that'll work in other situations.

I think it has its limits, UV map is the best for precise texturing   ;)

@moonboots It's fine for bricks - nice square patterns to match up. I've had some "fun" in the past trying to match scale of concrete and wood. Moving an entire wall across the scene to material-scale-match the other one, yay.

In the Image Texture node, choose Box instead of Flat.

This works as long as "Object" is being used in the "Texture Coordinate" node. But now there's a new problem - You can't change the orientation of the material, it's fixed. Rotating the UV's in "UV Editor" does nothing.

Why can't I just apply the material to any object I want and adjust
the material's scale universally to all objects with the same material
using the "Mapping" Node?

Because the UV maps of the objects can be anything. They can differ in size even on different parts of one object.
Unwrap UVs at the same time
In order to have uniform scale of UVs you can select multiple objects, go into edit mode(2.80 now supports editing multiple objects at once - that's new), select all and unwrap them all at once. If the scale of the objects is applied for all of them, you will get UV islands that will match in scale for all objects as much as it's possible.

That's actually what I've been doing. Only problem is, when you add another object and want to apply the same material, you either have to scale that object's UV's to match the others, or unwrap all objects at the same time and scale them all again. I mean you could "pin" UV vertices of previous objects, but you'd still have to scale the new object's UV's to match.


text:
Blender Python: How do you automate creation of duplicate objects along many curves?
I'm trying to automate creation of many objects along many paths (curves). I've tried using parenting, Dupliframes and Modifiers but in both cases I'm blocked by my lack of experience with scripts, especially how to work with groups of objects.
What is required in a script to go through all the objects in one group and create duplicates along the corresponding paths in another group? Example?

So you have N number of objects and M number of curves, how exactly do you want to distribute the objects along the curves? This is the first step towards the solution whether it involves python or modifiers.

To be specific, I have the same number of objects and curves - one master object (a sphere) to duplicate along each curve. I can do what I want simply enough - one at a time - with dupliframes or using the array and curve modifiers. Spacing along the curves is simple and uniform. I can't figure out the syntax for the For statement to work with two corresponding groups (lists). (Or to apply the two modifiers if I use that method.)


text:
UV Unwrapped Blender texture image is either rotated or stretched, cannot get it to be straight and not stretched
I am completely new to Blender. I am making a photo frame in Blender 2.65, and I used a plane to be the 'photo' in the frame, and added a texture to it using a real photo. When I did this directly using materials, it was fine and even rendered (I saw some tutorials say that until you UV unwrap it, the material will not show). After I UV Unwrapped it, some problems occurred. I am using Cycles render.

If I select the object and go to edit mode, then press U, and either use the default unwrap or select 'reset', the UV Map is the same size as the image itself. However, the plane I used is not the same proportion as the image (I did this on purpose, printed photos are usually cropped because camera sensors aspect ratio is different to paper aspect ratio). This means that the projected texture is stretched, as in this screenshot.

If I don't want the stretch, using the above method, I can select "unwrap" (first option). The images have the correct proportion but are rotated, as in this screenshot:

If I then manually rotate my plane in object mode so the, I have to resize it, because the frame is supposed to be in landscape orientation. After I resize the plane, the projected image/texture is stretched once again.
I've tried all the unwrap options including the project from view bounds, nothing works.
I used the photo of the spheres as it is easier to see the stretched result. The photo is square but my goal is to get the frame to work like in the real world when paper and camera sensors have different aspect ratios: either the photo has to be cropped to fill the frame, or there are borders around the photo if you don't want cropping at all. So ultimately, I'd like to be able to use any image as a texture for the plane, and have the plane render the image in the plane's aspect ratio, not the image's aspect ratio.
You can see the file here.
I'd also appreciate it if someone can add 'stretched' and 'rotated' textures as a tag for me.

Try using the Project from view (Bounds) Unwrap option, when viewing the image perpendicular

Hi, I've tried all the unwrap options including the project from view bounds, nothing works. I'll add that to my main question.

To make a square image fill a rectangular frame you either need to stretch it or crop it. Enable the import image as planes addon which will create a mesh plane that is sized to match an image.

Hi Sambler, I am aware that a square photo needs to be cropped, this is not my question, and I have already clarified that in my question. I simply want the model to act like a frame in the real world would, please see the second last paragraph of my question.

You still don't have a plane there (from the problem of your last question). At the top you can see, there are 8 vertices and 5 faces.
delete the vertices that are only connected to the side walls of your cube. then normal unwrapping works just fine.

I think you downloaded the old file, I didn't update the link after I changed the file. I have updated it now, the plane should have only 1 face.

I downloaded the right file (checked and downloaded again, it's the same file). you had a cube instead of a plane and only deleted one face. 6 - 1 = 5. and that's what you see in the top menu bar. 8 Verts, 12 edges and 5 faces. delete the side faces or just unwrap the main face you want to texture.


text:
Render image is zoomed in and doesn't match the camera view
When I start rendering my images you see that the render is zoomed in, I don't know why this happened cause I never touched the camera or something?

Hello maybe you've keyframed the camera, or rendered a border with Alt B? If this is not the problem please share your file: https://blend-exchange.com/

 @moonboots

You have an image called 0000.jpg in the Video Sequencer (it's hard to see it because it can be hidden behind a bar if it's too vertically thin, zoom to see it), as long as it will be there it will be rendered, so remove it or disable the Pipeline > Sequencer option in the Output panel > Post Processing:

THANK YOU MY BRODDA!!


text:
Why is the generate rig button greyed out?
I have appended a Rigify metarig from the Armature category from an older blend file via the File > Append... main menu. In the older project, the metarig's (Re-)Generate Rig button is not grayed out and works. But for the appended metarig, the button is greyed out and you can't (re-)create the animation rig.
What is the reason for this? How to append it correctly?

Do not append metarigs from the Armature category. Instead, append them from the Object category.


text:
How to remove an island from a UV map?
I unwrapped my head in one UV map and the unwrapped head still appears in the map when I create a new UV map. How do I remove the head island from my new map? Is sliding it out of the image the only solution?
Here is an illustration of what I am requesting if it makes any sense.

Sliding it out would not fix the problem. The image repeats. If you want to "remove" it, you could scale it down to 0 and put it in the corner or wherever you want. alternatively, you could assign it to a different material slot and not worry about the uv map, or separate it into a different object and have it as a different uv map entirely. Those are the only ways I see of fixing this.

hi and thnks for the response I actually updated the post to make it more clear what im asking for.

Select the UV map that you want to use from the list of UV's

hi and thnks for the response I actually updated the post to make it more clear what im asking for.

To add a new UV map just clique the plus under Object Data Properties/UV Map.
To remove completely (deleting) a UV map just go to the minus icon. If you would like to switch between them just unchek the one ot the other.

hi and thnks for the response I actually updated the post to make it more clear what im asking for.

Deselect the head in the viewport and it should disappear from the UV map.

If I understand your question correctly, I believe I've had this problem in the past. What fixed it for me was what someone else already suggested. Go to the object data properties on the right side and delete the UV Map that was added by default when you did the Unwrap command. Now do another unwrap and it will not lay over the top of your old unwrap. Hope that helps.


text:
UV unwrapping isn't working
so I'm getting into unwrapping and I am confused at the results I'm getting. I have my UV editor viewport and my 3D viewport. I create a new UV texture map, "head" so I can single out my head from the body and unwrap it. I create the seam around the neck and unwrap it. And the UV editor does... nothing. It just creates this tiny vertex in the bottom left corner, but the confusing part is that when I click on it, it highlights a random edge on my characters back. You can see the seam I marked in this image and the edge it highlights.
Any guidance would be greatly appreciated.

Smart UV Projection does work though.

Hello :). Just to narrow down the issue, does Smart UV Project work?

Hello, smart UV projections does work.

Okay. Backup your object and apply all transforms Object > Apply > All Transforms. Then try your unwrapping again. If it still won't work, you can upload your file :).

Tried that, didn't work... sharing the file now. https://drive.google.com/file/d/1Fz7ffk2uR5CTqGtm407ChKUq8Ej29QXo/view?usp=sharing or

Weird. It works just fine for me :). Are you sure you selected all faces before unwrapping?

Could you link an image of the result you get or list your steps? Are you doing anything different from me? Unwrapping the seam at the neck unwraps the head and body on different islands in the UV editor?

Sure, in a minute :).

No I didn't select all the faces before unwrapping because I'm an idiot and didn't realize I had to do that first. It does what I need it to now, thank you.

No problem :). You were smart enough to ask others for help. Good luck, the model looks real good.


text:
How to set origin point in center?
Can't believe I'm asking this question right now, but how do I set my origin point to the center of my plane? I'm trying to apply a mirror modifier but the center of origin is throwing everything off track. I have the shrink-wrap modifier on if that makes a difference.

I figured it out. Set my 3D cursor to center, set origin point to 3D cursor, apply the shrink wrap, set the target to the character, then applied the mirror modifier.


text:
Why is my weight painting screen so dim?
I'm trying to weight pain on one of my meshes but for some reason the colors are very dim and its hard to see the weights. I have another window open painting another mesh and the colors are bright and clear like they're supposed to be. Whats wrong here?
Here's what I'm looking at. The one on the left is obviously the one thats too dim, the one on the right is how its supposed to be looking.

Hello please share your file

Unfortunately I'm not able to due to client demands but could you imagine any reasons this might cause it without it?

there was a similar question several weeks ago but I don't remember, maybe just keep a part of the mesh if you don't want to share the whole thing


text:
Match certain parts of a mesh to the body?

I'm trying to make Knight tassets, as show in the second pic. So I need the cream colored part of my mesh to stay to the color coded bone, the green colored part to the green bone and so forth so that the entire thing doesn't look so stiff when it moves. Been fiddling with it for like an hour and still can't figure it out. I took like a 2 week break from Blender and I think I sorta braindumped everything,
Any help? I've made vertex groups for each part of the mesh but can't figure out what to do next.


text:
Is there a way to view edges in weight paint mode?
It would make the process a bit easier I am aware of face-select mode but I don't like the way that works. I would like to be able to weight paint across all faces as I normally would without either weight or vertex selection but with my edges more visible. I am aware of wireframe mode but... obviously that does not give you the visual cues you need for weight painting.

Have you tried enabling the wireframe overlay?

I forgot that option but that was exactly what I needed. Thanks.

You can enable the Wireframe Option (under Geometry) in the Viewport Overlays while in weight paint mode.

The accepted answer works, but the Wireframe option remains visible both in weight paint and object mode. This means it adds a wireframe overlay for every visible object in your scene. The Show Wire option performs the same function as Wireframe, but it is only visible on objects in weight paint mode.
While in weight paint mode, you'll find Weight Paint options immediately below the Geometry section of the Viewport Overlays menu. Show Wire is at the bottom of this section.

Show Wire does have the stange property that any face currently selected in edit mode will not show wires in weight paint mode. I haven't found a use for this, but it's worth being aware of.


text:
It's possible to create a 360 Video in blender?
like this one http://www.airpano.com/360Degree-Video.php?3D=Video-Bromo you can turn around...If I draw a scene how can I render a video like that? and wich format is it?

Yes, this is quite possible. Somewhat related: http://blender.stackexchange.com/q/13853/599

Please edit your question to make it clearer what you are trying to make the 3D video of. Are you looking to render a 3D video of a scene in blender, or stitch together footage into a 3D video?

There is a great App VRAIS which uses Blender and they provide a tutorial of how to render stereoscopic panoramas for this App:

Render dimension: 2048x1024 for starters, and for final rendering 4096x2048 (just type in 200% in the render percentage).
In the Render Layers Panel, enable "Views"
Set your camera to Panoramic. Choose "Equirectangular" from the dropdown menu
Enable "spherical stereo" (Only available in Dalai's version)
set the pivot point to „Center“

Or you could watch some not so static 360° Videos on YouTube. Pedro Gaspar made a tutorial of how to create them in Blender. Blenderrendersky already created some videos in the BGE with this method.

I would LOVE to have this revisited. It's early 2019 and VRAIS and Pedro Gaspar's KolorEyes are defunct or shuttered end of 2018. Blender 2.8 is out (BETA), AR and VR are working hard to rise!!! And when I was about to post this question, StackExchange suggested this post. Any news?

As of Blender 2.9 (writing in Jan 2021), you'll still need to use Cycles in order to get a 360 equirectangular render effect.
First, some details:

This is exactly like any other scene, and renders to a rectangular video in a standard format. In other words, you can watch it on a regular ol' movie screen (or Quicktime with a bowl of microwave popcorn, if you're still reading this during the times of COVID-19).
You will need to add some additional metadata to the render that currently cannot be done in Blender. Google has a tool called spatialmedia which inserts this metadata so that 360º video players understand how to render it (rather than just rendering the distorted view).

Rendering the video
Create your scene just as you usually do. Set your renderer to Cycles, and select your camera.

Here are the settings you want. Note that you want to switch to Equirectangular, which is not the default.

This step is important! Change the render aspect ratio to a 2:1 ratio: In other words, the width of your render should be twice the height. If you don't have your powers-of-two memorized like an insane person, then this is a good reminder that Blender fields accept math expressions as well.

Run a test-render. You should get something that distorts your image like this:

Your viewer, looking straight ahead, will see the CENTER of this image. If they turn 180º and face behind themselves, they'll see what's in the leftmost pixels of this image (identified with the right-most; remember you're in a sphere!). If they look straight up, they'll see (extremely low-res!) views of the topmost rows of pixels, and if they look down, the bottommost.
Render the animation. Whether you render directly to mp4 or through frames→video compositor→mp4, the next step expects a single video file.
Injecting Metadata
Download the Spatial Media Metadata Injector for your OS. I hate that this is a separate step, sorry.
Press Open and select your video.

Select the first checkbox, this is a 360 video.
Press Inject, and save the video (with metadata) as a new file.

You can now upload this file to your favorite 360-video service, like YouTube, and it will automatically detect that this is a pano-360 video. Neat!
Fun fact: You can also use an equirectangular render like this as an Environment map in Blender itself. Render your scene inside itself! w0w0w0w!

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


text:
active GPU rendering in Blender
I have ubuntu studio, I want to active GPU rendeing in Blender,
I have a AMD Radeon R7 240 and it works fine when I play games so I don't think it's a drivers problem,it's  even on the list of the supported cards in blender... but still in the user preferences, in the compute device I can only select CPU and in the rendering option instead of the GPU option I have "Experimental" with danger sign ...
Why?

it could depend on the drivers, afaik. I guess newer proprietary ones are your bet chance.

maybe .. but then why it works with games? isn't it strange?

which blender version and amd drivers are you running on US? Anyway you could open a bugtracker issue... amd support is young.

the last version...I have read some cases of drivers incompatible with the last kernel updates for AMD ...I hope that's not my problem


text:
How can I render to a texture?
thank you for reading this, and hopefully thank you for answering, I am using blender 2.7 and it is great but I am having trouble using the render to texture script (provided in this video [ https://m.youtube.com/watch?v=HgXAv9csJu0 ]) (Please note I am not asking for anyone to do the tutorial and provide feed back, I am asking for anyone that has a render to texture script or knows of a tutorial that will work on blender 2.7 and is willing to share the script or tutorial, to please share any helpful material. This youtube video serve to prove the script of which did not work in 2.7
I have followed this video to the letter in a new blend, and still the script did not work.
I need a render to texture script that works, and I can't use alternates for my mini map because I need to use the RTT for other features, thank you

I'm voting to close this question as off-topic because it is about a specific tutorial and script not packaged with Blender.

Please, you can't expect volunteer people like us to go through a tutorial trying to reproduce your issue. Please only come to us with specific questions.

I understand the mistake, its not able a tutorial, the tutorial show the script that did not work, thus not allow the script to be repeated, I am actually only asking for a way to render to texture, something that has been an issue for me for 3 month and has multiple uses. I also do not expect people to go out of there way to try the tutorial, I am just try to appeal to person who has a script on hand. Sorry if this question has made you uncomfortable in any but that was not my intesion

I suggest you rephrase your question. As it is now it is more suitable to ask the author of the tutorial. Working code is included in the API documentation of VideoTexture (it is not the best code, but it works)

I will try that, I am sorry for the cofussion I will also look throw the API