text:
Face Expressions from one mesh to another
I have 2 human faces in a scene, one of them imported with a heap of keyshape facial expressions,
and another mesh which only has one keyshape. open mouth.
I would like to know if there is any way to use mesh deformers or other modifiers to somehow copy the general changes of a different mesh to mimic it.
Maybe there is an advanced way with bones / drivers or something else.??
some of the facial expressions are really cool, at the worst case I would copy the ones I like one at a time manually editing mesh for keyshapes, but if there is another way I'd like to learn.
The following 3 images show the Face on the left has some expressions I would like the face on the right to copy..

I learnt how to do this
It is possible but it's a bit of a tedious job.
Basically this job is all about creating a Facial Bones armature and making the bones transform (move) with the Face with expressions.. Applying the armature as a Shape Key to save the expression to the face without the expressions.
I did it via the following steps.

You need to create an armature for the face you are wanting to add expressions to. (just place a bunch of bones in key areas such as Like I did.)
(I find adding more bones means the automatic weighting works a bit better and more accurate. being there is less space between bones.)
Click the Face then also select the armature(Face Bones) press CTRL-P Apply with auto weighing
Create some Vertex Groups of vertices on the mesh of the face that already has expressions.
These Vertices Groups should be in Key Areas where the bones on the other face will be in step 1.
Start adding Transformation in "Bone Constraint" for the bones in Step 1.
Object is Face with Expressions, Vertices Group is closest point on Face with expressions..
this part is a bit annoying, as the values are unique for each bone.  Leave X as 0 as it screws everything.
and adjust Y and Z and press the EYE On/Off butting a few times while adjusting to get it to go be in the Same Position as eye off.
when you have enough bones setup and able to move the face, Select the Face your wanting to add Shape Keys.
In the Vertex groups panel. make sure it has a base/basis shape Key. (IE: the unmodified Key)
Goto modifiers page, and in armature click "Apply as Shape Key", Rename the Shape Key in Vertex Groups Panel to the pose. test it by adjusting the Shape Key
Add another armature and choose the correct armature you created(Face Bones).

Repeat for each Face Expression...
Note: this should all be done during a Resting / reset pose.. Dont go doing this while your characters are animated already, It might screw things!?
Note: It may require you to adjust weight painting for some of the bones if the facial movements are not moving that great, Such as Teeth behind lips and eyes.


text:
Scene complexity and VRAM
I'm going to build my new workstation/rendermachine and im stuck with the question: "how much vram do i actually need?"
More gpu accelerate the rendering process, but the max vram load is given by the individual vram amount.
So im torn between 4x8GB Vram and a single 32GB vram gpu.
1) What is the mathematical context between verticies/faces and vram load?
2) Could someone show me a rendered scene or video of how much I could do with 32gb of vram.
Thanks alot

I've got a 6Gb GTX980ti card and never hit that limit rendering mostly architectural scenes. Even my 1.5Gb has enough memory for 95% of what I do. Generally large textures are the biggest memory hogs during rendering, geometry is rarely an issue. Since you never state what type of work to do it is hard to recommend anything, but I'd say 4x8Gb would give you far better performance and more that enough memory.

I bet those 4x8GB gpus are much faster than single 32GB card. Here are some options:

Get the faster setup and a renderer that can do out-of-core rendering like Octane or Redshift. This allows your GPUs to use system RAM while rendering in exchange of slightly lower render speed. This is something Cycles can't do yet. If you are spending money on hw you might as well get a software.
Get the faster setup and if you hit VRAM limits optimize your scene - you can split the rendering into multiple render layers which you would be probably doing anyway on such large projects.
Getting the 32GB card has also benefits. This comes handy when doing physics simulations accelerated by openCL and you want to fit the ocean or the whole smoke explosion into your card. Blender is not there yet regarding simulations and can't accelerate it on gpu, but if you were using Houdini or something similar you might benefit and need this much VRAM. Simulations can't be easily split like rendering can.

8GB of VRAM is quite a lot and definitely sufficient even for serious production use. Most will be taken by:

~1GB for every 8 million triangles
500MB for Cycles kernel
64MB for each 4k texture (8bit x RGBA)
200MB for each 4k HDR texture (32bit per channel)

When you are not rendering you might want to mine crypto on those gpus and maybe those 4x8GB cards will pay themselves faster than that single 32GB one. Another thing to consider maybe.

That was a quick and detailed answer with everything i could wish for.

8M triangles taking 1GB of VRAM is the theory, but if you open blender, cycles viewport, makes the default cube 8M tris, you see blender taking 6GB of Vram.. And if you take a terrain or a plane, and adaptive subd with a few viewport subd, until just 500K tris, it also takes 6GB of Vram. I don't know why, but Vram gets filled explosively with simple stuff.
If the plane is subd normally (no adaptative) until 32M polys, 4x8M bascally, it does NOT take 4GB of VRAM, it takes 16GB !
That's crazy but basically default cube to 8M tris adds 16GB of VRAM, NOT 1GB, for viewport cycles.
In EEVEE & workbench, 8M DOES equals 1GB vram though.
Also crazy, if two viewports are active, it doubles the VRAM usage, like if it stored the whole scene twice in VRAM. So with only 1 cycles viewport 8M tris takes 8GB of Vram, 16GB with twos. (I usually work with two....)
But not so much with default cube, or maybe because it doesn't flush objects that have been deleted and purged from the blend file, they stay in VRAM..
Really confusing.
And when rending, all that data will be copied again to the VRAM on top of the viewport ones, but takes way les space, 10GB of viewport VRAM only transcribe as 2GB for render, for exactly the same subdivs/tris count of 8M.
Also, denoise does take a flat 3GB fee on the vram, bam. on/off simply adds/remove 3GB instantly.
So bottom line, with 8GB you can subdivide a cube 8 times, and that's it.
Just as a visual proof:
poly count:

total VRAM:

blender only VRAM:

Vram used for rendering, probably flushed when taking all this screenshots:

The 8M poly cube:

subd 9 times:

source: Stack Exchange

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

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

sort: votes


text:
FBX Custom Attributes get removed on Load
We need to load FBX files that were generated using Maya and Max into Blender.
Using Max these models were configured with critical run time information based on the War Breaker Specification (used in the Modeling & Simulation Industry,) in the Object Properties Dialog.
These FBX files work perfectly in Max and Maya but when importing the same file into Blender, this custom attribute gets stripped out.
The custom attribute is "UDP3DSMAX"
Interestingly if the Attribute is created in Blender than it can be re-imported into Blender, Max and Maya and it does not get pruned. Unfortunately, we have more than 1000 models made in Max and Maya, and we cannot re-import them all into Blender and resave them. We would have to reconfigure thousands of attribute records.
This impacts our customers who have been very interested in using Blender but which I cannot recommend until this works.
Maybe there is a work around, but it looks like a defect to me.
Thanks

I don't suppose you could provide an example fbx?

I would ask for an example file as well. Since I'm a Blender user like most people here, I cannot produce my own Maya FBX files with custom attributes and check if there is a way to get them into Blender. And if I understood your question correctly, custom attributes created in Blender do not suffer from this problem, so many users here maybe willing to help you but not using Maya at all are not able to reproduce your issue to see what's going on and how to conquer that.

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


text:
How can (.MDL) materials be correctly imported into Blender for rendering?
Blender 4.2 does not support importing files in (.mdl) format.
Is there any way to import (.mdl) materials into Bledner for rendering?

Hello and welcome. Please don't post the same question more than once. If your previous question was put on hold, address the raised issues by editing it so it can be reopened rather than post a new one, otherwise see What should I do if no one answers my question?


text:
How to make a Continuously Transposed Conductor [CTC] model?
I want to model a product called 'continuously transposed conductor' (CTC) shown in the image, but I am quite an amateur in the program. The object is like a ladder but moves straight on a flat surface without rising. I have tried many times, but I have not been able to get a healthy and nice result. Can you help me easily model this object?

This image shows the actual state of the product

Add a plane, scale it to the correct measures of a section of a trail, delete its face (Only Faces), add three Array modifiers to get the desired mesh. Then Apply all modifiers (Ctrl A).

In edit mode, delete the appropriate groups of 4 vertices (counterclockwise the extremes top and bottom).

Alt click on an edge. Shift Alt Click on another edge, choose Bridge Edge Loop operator (Ctrl E). Repeat as needed.

When completed, add another array modifier to elongate the cable, a bevel modifier, a curve modifier targeting an appropriate curve, a subdivision surface modifier.


text:
Struggling with camera border in the viewport
I've tried changing the resolution but the problem isn't resolved even on the default resolution. The camera is stuck like this

I'm trying to revert it back to this (highlighted border)

What happens if you press 0 (zero) on the numpad?

@John Eason: Blender will then exit the Camera Perspective, which is currently already active (see info text in the upper left corner of image 1)

That just exits/enters the camera view but the boarder in the viewport remains in the same position.

You have Lock Camera To View enabled. This will move the Camera Object according to your 3D view navigation.
A very useful feature, being able to "move around" while looking through the Lens... But you might want to turn it off for a second, so you can get the Cam back to the screen center by holding Shift+Middle Mouse for panning the view.

Loading the blend file in a new session , with "load ui " unchecked , seemed to fix the problem

For sure, a hard reset can also help. :-) However, should you someday, somehow, end up in that same situation again, please remember there's is a good reason and a really simple solution for the 'border behavior' (which i tried to point out concisely in my answer). Pity you didn't give it a go...

Thanks I do appreciate your help


text:
How to import a video file with multiple tracks?
I want to import some OBS videos into Blender and they have multiple audio tracks, but Blender shows only one audio track

In Preferences you can set the number of channels to be used in Blender:

But you can't get them separated into individual strips. So, you'll need to use some other software and save each channel as separate files and import them as such.
If you set the audio strips to mono, the Pan option gets activated, and you can pan each strip into the speaker you want to hear it from.

Unfortunately, the values to pan to are super unintuitive for anything else than Stereo.
pan_stereo = {
    'LEFT': - 1.0,
    'CENTER': 0,
    'RIGHT': 1.0,
}
pan_surround4 = {
    'FRONTLEFT': - 0.5,
    'FRONTCENTER': 0.0,
    'FRONTRIGHT': 0.5,
    'SIDELEFT': -1.5,
    'SIDERIGHT': 1.5,
}
pan_surround51 = {
    'FRONTLEFT': - 0.33335,
    'FRONTCENTER': 0.0,
    'FRONTRIGHT': 0.33335,
    'SIDELEFT': -1.2225,
    'SIDERIGHT': 1.2225,
}
pan_surround71 = {
    'FRONTLEFT': - 0.33335,
    'FRONTCENTER': 0.0,
    'FRONTRIGHT': 0.33335,
    'SIDELEFT': -1.2225,
    'SIDERIGHT': 1.2225,
    'REARLEFT': -1.66667,
    'REARRIGHT': 1.66667,
}

Links to my failed attempts to improve the channel panning UI:
https://archive.blender.org/developer/D11933
https://archive.blender.org/developer/differential/0012/0012114/index.html


text:
Render not saving correctly
For both AVI files and other still image ones like JPEG, the saved file just gets saved as a 'file' file. (The image should help get my point across)
Please halp.

What I think it could have happened is that you have simply disabled the File Extensions checkbox, under the Output Section in the Render Settings. Just reenable it and from the next render, the images will have the right extension.
If you want to be able to see the images you render, insert the extension that you selected in the rendering in the file name. For example with the render settings in the photo, you would have to insert ".PNG" in the rendered image file names.

Blender needs to know where to output the file to. Create a folder in your Render Settings. I made a folder on my Desktop and named it blenderTest. It works fine.

Edit:
As a matter of workflow it is common to render an animation as an "Image Sequence" and then in Post convert it to a movie file. This way if the render either needs to be interrupted or is interrupted by accident you don't need to start the render at the beginning.


text:
Dynamic Paint Ignoring Part of Mesh
Trying to make raindrops dripping across the hood of a car. There are particles colliding and sliding along the hood. The particles are a Dynamic Paint Brush and the hood is a canvas.
This is what that looks like (the rain is moving a little fast in the GIF):

To avoid using a high poly mesh, I'm using an Image sequence instead of vertex data as output.
But, when using Image Sequence, I get this result (this is the wetmap):

The output lines up perfectly with a line on my mesh (this is the paintmap):

Here are my canvas settings:

And the brush settings:

For reference, here is what happens when I change canvas output type from Image Sequence to Vertex:

There are no vertex groups, the UVs are clean. Attempted on 2.90.1 and 2.93 alpha.


text:
Texture paint stencil painting color of image
I followed this tutorial but when I finally started painting in this image (made up of black and transparency), the color painted onto my mesh was the black of the image.
My brush color was set to white and changing it yielded no differences.

If you use a black and transparent brush texture, on the object on which you paint you’ll get black from the texture black areas, and you’ll get no color from the texture transparent areas, whatever color you pick on the palette.
If you use a black and white brush texture, on your object you’ll get black from the texture black areas, and from the texture white areas you’ll get the exact same color you picked on the palette.
So in both cases you can’t get any other color than black from the texture black areas. Actually in the video he doesn’t get any other color than black from the texture black areas, he picks red in the palette and gets red from the texture white areas.
The Texture Brush will project what's on your texture on your object, if you choose something else than white on your palette it will just mix the color you chose with the color of the texture.
The Texture Mask brush (below the Texture Brush) will act like a mask, the blacker your texture color is the less the color you picked will be painted on the object.

This trick of white brush texture answered an issue which was upsetting me with stencils. Thank you!

great then, I don't remember this one though ah ah


text:
Ffmpeg output not working
I was trying to make a screencast but as soon as I start recording, the "Capture" button that you press to stop recording goes away and the recording stops. I have output set to MP4 in H.264 but when I set it to AVI or an image sequence, it works fine.
I guess I could switch it to one of those, but that really wouldn't be the best option for me.


text:
Move baked physics simulation
I just simulated and baked a fire simulation and was wondering if I could somehow move the fire somewhere else. When I move the emission object now, the fire stays behind.
I understand if there's no way to do this, but any help would be appreciated!


text:
Texture paint color is the wrong shade
I'm trying to make a carpet for a bedroom I'm making but when I got to paint it a color very close to white, it comes out dark gray. I set it to the right color in the color wheel and everything but it doesn't seem to be painting like that. Any help?

Can't see your strength, is it on 1? Does it work when you change your blend type to Add

Changing the blend type to add did it! Thanks so much!!

So (full credit to S. Visser here) I went to where it said 'Blend' underneath the strength slider an then changed it to 'add'. Hope this helps!


text:
A rigged model to practice on
Where do I get a rigged model to learn with? Am I missing that it's already in one of the menus?  I have imported a bvh file from a mocap. I want to place the bones in a model to get a feel for what it is I am caputring.

Welcome to Blender StackExchange! Questions like this are usually considered as off-topic as requests for resources aren't directly connected with Blender. That being said, there is this post (https://blender.stackexchange.com/questions/15355/resources-for-blender) contains a lot of useful links to resources. The models link/answer will be what you are looking for. If you are just looking for a rig, the rigify addon contains a few rig presets, but they aren't connected to any models.

I'll just add that this is exactly what the Blender Cloud has been created for, big plus is you'll be helping Blender development.

Download and install MakeHuman this allows you to create and customise a human model and add a rig. The model (with rig) can then be exported in a format that can then be imported into Blender.

If you want to stay in Blender and just use an add on you can always use ManuelBastioniLAB http://www.manuelbastioni.com/manuellab.php

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


text:
Why won't my UV Editing Textures show up in Texture Paint?
I have done other Blender projects before this one but for some reason, after I go into editing and unwrap my object, the outline of the UV Wrap will not show up in Texture Paint. I'm using 3.0 of Blender and I have selected all of the values. No other outlines are showing up for the UV unwrap on my other shapes.

Are you meaning you expect the UVs to show in the 2D Image Editor on your left when in TexPaint mode? Or do you mean you want to see the wireframe while painting in the 3d view on the right?

I don’t think the outlines for the other objects are supposed to show in texture paint, even if it’s the same texture, because it’s not the same mesh object. Is this what you’re expecting?

I think maybe this will help - 'Display Texture paint UVs' must have accidentally gotten unchecked in the view menu in the 2d editor in your case.
See below


text:
Difficulty getting two Animation Node Trees to Execute concurrently
Setup:
I have two rigged characters in my scene. I am using two Animation Node trees, one for each, to control the thickness of their solidify modifier outlines based on their distance to the Active Camera.
Problem:
Only one of the trees ever executes.
I have confirmed either tree works by themselves in other scenes.
Question:
I would like to know what I am doing wrong and why when both Node Trees are present only one of them executes ? I cannot tell where the conflict lies and I get no errors or warnings.
The Viewer node values actually update as I move the Camera around all the way down the tree. It just never updates on the actual character's Modifier.

i just tried it out. Animation nodes can execute two trees without problems (proof: [1]: https://i.sstatic.net/WEE0N.gif) . So i am sure the problem is somewhere else. I hate to "theoretical" solve problems, because you cannot be sure it is the right solution so i recommend providing your blend file. But...by just looking at your trees i could be possible that one tree overwrites just the result of the other tree (because both write to the same custom property)...but without trying it out...this is just a guess.

I read in another post that Animation Node Trees can override each other, but it was a case where both trees were affecting the same object. in My example both trees process two different sets of geometry so I'm not sure how that works. I'm using Linked rigs in my scene so I'll have to setup a simplified file to submit. Will update when I have it.

Ok I got it working but it needs to be set it up this way:
You need to append and duplicate the node tree completely blank and then fill everything out for each character. I used to have one version of the node tree already filled out for each character and I thought I'd append each characters tree with them but that does not work.
I've updated my default scene to have the blank node tree (all executions OFF). I just copy/paste the nodes from the blank tree into new trees as needed and then fill them out in the scene.
Also remember to delete the extra scene that gets appended with the blank tree !


text:
Is there a way to copy a Custom Property from one Bone to another ? Either on the same rig or across rigs
I've seen this answered for objects but I see nothing when it comes to bones. I've played around and done some research, I'm wondering if it is even possible ? -Without having to write a python script.


text:
Rigify: How to regenerate a rig while preserving custom properties of control bones?
I am adding Custom properties to certain controls Rigify creates. In this case to control the Iris shader of the eye to make it grow/shrink. I don't want to create a whole other control for this if I can nest it into the Main Eye control.

However every time I regenerate the rig for cleanup/tuning purposes, these custom properties go away and I have to recreate them.
I tried deselecting "Overwrite Widget Meshes" in the advanced subsection of the Rigify section of the Metarig but it still gets rid of the custom properties when regenerating.

Does Rigify have a way to preserve those custom properties when regenerating a rig or am I going to have to use the Run Script field below and automate my custom property generation ?

WORKAROUND: This doesn't answer the question but may provide a decent workaround for some cases:
If you add the custom properties to a bone in the metarig, they will appear on a corresponding control bone once the rig is generated (not always sure which one). You'll need to play around until your custom prop lands somewhere close enough to where you need it. In my case, if it's on the metarig's eye bone, it goes to the eye_Master on the control rig.
If you are hooking up drivers, that connection should remain once you set it up as long as you don't change the name of your custom property.


text:
RIGIFY ERROR: Bone 'lid.B.L': Invalid middle control position: 2 Incorrect armature for type 'stretchy_chain'
I get this error after placing the face controls around my characters mesh and trying to generate a rig.

RIGIFY ERROR: Bone 'lid.B.L': Invalid middle control position: 2
Incorrect armature for type 'stretchy_chain'

I have not added any bones inside the face rig and made sure all my joints are snapped together, I'm not sure what other requirement I'm not following.
I am not sure why it doesn't like the bone position, I suspect it's not even really about that bones' position, rather something else is the problem but it isn't clear from this error message. I googled this error and couldn't find anyone who had run into it.
Maybe someone on here knows ?

Have you pressed the Upgrade Face Rig button? Can you add a screenshot or share a file with the meta rig?

-have not added any bones: Good!
-made sure all my joints are snapped together: Good!
But have you deleted any bones? Check if any bones of the lower lid have been deleted or unparented. (Consider uploading your metarig.)

Yes I pressed all the buttons before doing anything. I just started one version back and moved my joints again while regenerating every few manipulations to see which one would break it. Didn't break.
I suspect I moved a joint that was supposed to stay connected to its parent an unnoticeable amount but enough to cause the error. in Edit mode you can pull a child away from its parent if you don't select them both when moving.


text:
Geometry Nodes: How to rotate 90 degrees around a certain object as the axis of rotation?
I would like to achieve a function that can rotate and duplicate a specified number of objects around a certain reference axis. However, I am encountering an unsolvable problem with regards to how to implement the relative rotation of an object by a specific angle based on the rotational reference axis. Please help me out. Thank you everyone!
In the following image, the object positioned behind is the correct result that I desire.

Is this what you're after? If so, I'll make an answer out of it.

Yes, that's absolutely correct! Thank you very much indeed!

I think we can be lazy and avoid doing the maths ourselves.. what seems to be required is a bit of plumbing to adapt between the Euler representation of rotations (blue, vector type sockets) and the internal representation (magenta sockets), which I believe is Quaternion. Then we can use some Utility > Rotation nodes as follows:

You may want the group to modify its own input geometry, and/or decide whether to use 'Original' pr 'Relative' instance imports, for variations on this behaviour:


text:
blender 4.0 AttributeError: 'Context' object has no attribute 'selected_ids'
I upgraded blender to version 4.0, but I can't use the code bpy.context.selected_ids in version 4.0. The console gives an error AttributeError: 'Context' object has no attribute 'selected_ids'.
Please help me, thank you guys.
import bpy

def ADD_HT_outliner(self, context):
    print(bpy.context.selected_ids)

def register():
    bpy.types.OUTLINER_HT_header.append(ADD_HT_outliner)

it must be in the outliner context to work. If not this attribute is not defined/associated to the context.

It should work. How exactly does the error happen ? BTW you can use the passed context with print(context.selected_ids)

Thank you for your answer, but even using print(context.selected_ids), the same error will still occur

I just want to get the id of the selected object in the UI. Isn't your code supposed to report an error?

This worked for me in blender 4.0
import bpy

scr = bpy.context.screen
areas = [area for area in scr.areas if area.type == 'OUTLINER']
regions = [region for region in areas[0].regions if region.type == 'WINDOW']

with bpy.context.temp_override(area=areas[0], region=regions[0], screen=scr):
    for obj in bpy.context.selected_ids:
        print(f"Selected: {obj.name} - {type(obj)}")


text:
How to implement outline entries like those found in an outline
I have a feature that can search for related objects associated with a specified object, similar to Unreal Engine's reference viewer. However, there's an issue: the usability of the user interface is poor, and I would like to implement an outline view effect for better manipulation. After conducting a round of searches on Google, I couldn't find any relevant references or examples. So, I'm wondering if anyone knows how this can be achieved, or whether it's feasible at all.

The UI code is as follows.
import bpy

class VIEW3D_PT_test(bpy.types.Panel):
    bl_label = "Test"
    bl_category = "Test"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_options = {"DEFAULT_CLOSED"}

    def draw(self, context):
        layout = self.layout

        def draw_item(layout: bpy.types.UILayout, d, index=0):
            icons = {
                "objects": "OBJECT_DATA",
                "collections": "OUTLINER_COLLECTION",
                "scenes": "SCENE_DATA",
                "mesh": "OUTLINER_OB_MESH",
                "curve": "CURVE_DATA",
            }
            row = layout.row(align=1)
            row.separator(factor=index * 4)
            icon = icons.get(d["type"], "NONE")
            row.label(text=d["name"], icon=icon)
            for i in d["sub"]:
                draw_item(layout, i, index + 1)

        data = {
            "name": "Legend_NvZhanShi_Skeleton",
            "type": "objects",
            "sub": [
                {
                    "name": "coll 12",
                    "type": "collections",
                    "sub": [
                        {
                            "name": "Scene",
                            "type": "scenes",
                            "sub": [],
                        }
                    ],
                }
            ],
        }
        col = layout.column(align=1)
        draw_item(col, data)


text:
How to align a vector to a specific axis

In Geometry Nodes, I want to align a specified vector to a custom axis. Since I have no knowledge of matrix transformations, I really don't know where to start. Could you please help me? Thank you.

Is your question any different from https://blender.stackexchange.com/questions/290606/geometry-nodes-aligning-one-vector-to-another ? If yes, could you explain in what way ?

Thank you, I found the answer.

First, project onto the plane perpendicular to the axis, then calculate the angle between the two vectors and determine the direction through the cross product, deciding whether to reverse the angle. This ensures that after rotating the vector, it aligns with the target vector along the axis.


text:
blender 4.1 how use `bpy.ops.object.geometry_node_bake_single`
In Blender 4.1's Geometry Nodes, the Bake node has been updated. The bake button within it has a Python code:
bpy.ops.object.geometry_node_bake_single(session_uid=233, modifier_name="_Hair_Test", bake_id=1501904070)

The question is how to obtain the values of session_uid and bake_id?

I found it! XD!
bpy.context.active_object.modifiers['_Hair_Test'].bakes[3].id_data.session_uid
bpy.context.active_object.modifiers['_Hair_Test'].bakes[3].node
bpy.context.active_object.modifiers['_Hair_Test'].bakes[3].bake_id

what if your bake node is inside group, and you use that group multiple times?  modifier.bakes.node - will point to  node_group but how can we get which instance of this node group is the one with bake? Internally looks like blender finds proper node by node.id , but it is not exposed in python...

You can confirm which bake node belongs to by the name of the node.

ob = bpy.context.active_object
m = ob.modifiers[0]
for i in m.bakes:
    if i.node.name == "your_bake_node_name":
        v = (i.id_data.session_uid, m.name, i.bake_id)
        break```


text:
How do UV vectors blend with normal vectors?
I aim to implement a feature in Geometry Nodes where a Flow Map is utilized to adjust the growth direction of grooming patterns. However, I'm currently facing an issue where the grooming directions do not follow the surface normals of the object. Kindly seeking assistance with this problem. Many thanks in advance.

Keep track of the space you're operating in.  Your normal and position are in object space.  Is your input vector, provided from texture, in object space?  Probably not, because abandoning Z wouldn't make any sense in that case; you probably intend these to be tangent space vectors.  But doing math on vectors in different spaces just gets you gibberish-- you need to transform them first to be in the same space to get meaningful output.

I'm truly ashamed; my math skills are quite poor, and I honestly don't understand how to approach this at all.

If you want to do this, rather than just have somebody do it for you, you will need to know what space your flow map is in; to do that, you will need to understand coordinate spaces.  The first thing I ever read regarding coordinate spaces was at https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Coordinate_Spaces_in_Blender .  That might get you started.

Thank you very much for your response. I will study it further. Appreciate it!


text:
How to translate names or description in Geometry Node
I want to add more language translations to the parameters of the geometric node group.

However, after searching on Google, I did not find any information related to language translation, which is very rare.
I tried using the 'bpy.app.translations.register()' function in Python, but it didn't work.
I think Blender's own language translation can translate some vocabulary.

What exactly did I do wrong?

Hello, my understanding is that Blender comes with a builtin dictionary of translatable words or expressions, but you can also provide your own for the purpose of translating the interface in an extension. I don't know if it's possible to override translation in geometry node socket tooltips, though

Found The Blender Developer Handbook page on translations, it might be of use to you. Hope it helps!


text:
Problem in selecting mesh in 2.7 version of blender
So I was doing a tutorial that requires 2.79 version but the problem is when you left click the 3d cursor moves so how can we change the key to select a mesh.

File > User Preferences > Input > Select With > Left or Right

Thanks bro. You saved my day!


text:
IK Legs: Pole Rotate in Circle
I am making IK for legs. I have a target bone and a pole bone. I want the knee to always face the same direction as the foot. So whenever I rotate the target (foot rotates), and therefore should also the pole bone, but in circle.
For better understanding here is a picture of what I want to achieve:

Currently the pole just copies rotation of target, but I also want it to move, so it is in front of the foot.
Does anyone know how to do this?


text:
Calculating length between 2 points on a curve in Python
I am trying to display the length of the individual segments of a spline to the user. The spline can be BEZIER, NURBS or POLY. I am able to get the full length of these curves using calc_length method.
For POLY, i figured that it must be the vector length between the control points. But for NURBS and BEZIER, is there a way to calculate the length between each of the set of control points in Python?


text:
Translate a parented object on the world axis of another parented object using bpy
I have an object "Cube" which is parented to an empty "Object". I have another object "Cube.001" which is parented to another empty "Object.001". Both objects and cubes have local rotation and translation. I would like to write a bpy module which can translate "Cube" on the Y axis of the "Cube.001". I believe i need to work with the matrix_world of both objects, but i am not able to proceed after that


text:
How to disable a keymapping of a third-party addon
I use MACHIN3tools addon in Blender. I am trying to permanently disable a key mapping using a Python script.
I tried this and it works.
bpy.context.window_manager.keyconfigs.addon.keymaps['Object Non-modal'].keymap_items['wm.call_menu_pie'].active=False

But when i restart, the keymaping is reactivated. Is there a way to disable this permanently using a script?

This might work, but I have not tested it: [link] (https://devtalk.blender.org/t/changing-keymap-on-startup/7153)

@relaxed, that code is supposed to be run when blender starts. That solution does not suit me.

Sorry, I do not understand! Where is the difference between permanently and when blender starts?

@relaxed, i feel it is a bit overkill. In fact, i already have a bare bones addon with just register() which does these disabling functionalities. I was not satisfied with that approach and hence had posted the question. :) What i was looking for was a python snippet that does the exact same thing as Blender UI does when we disable keymapping on the Preferences.


text:
Clipping regions in python
I have a complicated model. To facilitate easy access to interiors, i wanted to create 4 buttons that can clip the model from different perspective. As a first step, i was trying to clip regions in the viewport using bpy. But this does not seem to do anything. Can someone please help?
import bpy

for a in bpy.context.screen.areas:
    if a.type == "VIEW_3D":
        for r in a.regions:
            if r.type == "WINDOW":
                regionwin = r.data

                regionwin.use_clip_planes = True
                regionwin.clip_planes=[
                (-0.2, 0.3, 0.9, 2.7),
                (-0.8, -0.4, 0.0, 3.2),
                (0.1, -0.2, -1.0, 1.4),
                (0.7, 0.6, 0.0, 3.8),
                (0.8, 0.8, 0.9, 0.6),
                (0.8, 0.8, 0.9, 0.6),
                ]
                regionwin.update()
                r.tag_redraw()
        a.tag_redraw()

I tried doing it some time ago and it was very inconsistent. I concluded that it's only possible to use this feature reliably with the operator, which makes it next to impossible to do it by code. Happy to be proven wrong though :)

Yes, i too started getting the same feeling on the reliability. I am now trying with "bpy.ops.view3d.clip_border"

@Gorgious, i got it to work using a workaround. I am still figuring out what needs to go into clip_planes. I will post the answer here, hoping that someone does not close this question before that :)

Please do, I'd be interested in seeing that workaround :)

@Gorgious, if you call clip_border and then set the clip_planes, it is more or less stable. I know, it looks a bit hacky solution. Anyways, with that i created a free addon https://github.com/rmk-repos/clipper which is in its final testing

Hello, did you ever happen to make it work ? :)


text:
Alignment of geometry nodes instances in Blender
I have created 2 empties. Using geometry nodes on another single vertex object, I created a mesh line joining these empties. When i try to instance a cone on this mesh line, i am unable to align it to the tangent.

But i am able to align it if I use a curve line instead of a mesh line.
Is it possible to do it using the mesh line instead of the curve line?

Yes, you can use the Node Edge Vertices and calculate the direction vector between the points. You can then convert this direction vector into a rotation using Align Euler to Vector. However, I would still use a curve if possible.

@quellenform can you please elaborate the Blender Geometry Nodes method of "calculate the direction vector between the points"? I saw lot of complicated trigonometry over the internet, but could not translate it into Blender Geometry Nodes

Basically, you just have to calculate the direction vector between the points with the vector math node Substract, and convert it to a rotation with the node Align Euler to Vector.
You have two possibilities:
Either you use the node Edge Vertices and calculate the vector between each point:

Or you use directly the Location of the Empties:

(Blender 3.1+)


text:
BPY Layout difference between various enum methods
I am unable to find a good reference on where to use these following methods of bpy.types.UILayout even in official bpy documentation.

operator_enum
operator_menu_enum
props_enum
prop_menu_enum
prop_enum
prop_tabs_enum

Can anyone please help in understanding where each of it can be used?

prop_*
The prop_* methods are for controlling the value of a property on a data object.
prop_enum
layout.prop_enum(light, "type", 'POINT')
layout.prop_enum(light, "type", 'SUN')

Creates one button. Pressing the button sets the property to the given value (eg. the first button does light.type = 'POINT'). The button lights up to show when the property is equal to the given value.
props_enum
layout.props_enum(light, "type")

Creates a button for each enum value. That is, it loops over all the enum values and does prop_enum for each one.
prop_tabs_enum
layout.prop_tabs_enum(light, "type")

Similar to props_enum, but creates a horizontal row of tabs for each enum value.
prop
layout.prop(light, "type")

The generic property control. For enums, creates a combo box (drop down menu).
prop_menu_enum
layout.prop_menu_enum(light, "type")

Another combo box, but not the same as prop?

operator_*
operator_* methods, on the other hand, are for calling an operator, passing the value of an enum as a parameter.
operator_enum
layout.operator_enum("object.light_add", "type")

Creates a button for each enum value. Clicking a button calls the operator with that parameter (eg. the first button calls bpy.ops.object.light_add(type='POINT')).
operator_menu_enum
layout.operator_menu_enum("object.light_add", "type")

Creates a drop down menu. Clicking an entry in the drop down menu calls the operator with that parameter.

+1 ....this should be part of the documentation!

prop_menu_enum seems like it is well suited for flag enums (enums where multiple values are valid)


text:
Translate on the local axis
I am trying to make a plane to translate on the local Z axis of an Empty object. Can someone suggest on what i should be doing in hightlighted portion of the node network in Geometry Nodes.
Thanks in advance

To move a grid along the local Z-axis of another object, apply the following node tree:

Here I rotate the desired direction vector with the Rotation of the other object and add this value to the Location.
You can change the distance by changing the direction vector.

As an alternative you can also use the following setup:

Here I first convert the object to be moved into an instance. This has the advantage that I can then use the node Translate Instances to move this object along its local axes.
(Blender 3.2+)

If I understand you right, you should multiply it by vector (0,0,1):

Actually, if my understanding is correct, your solution may be useful on translating based on the local Z axis of the geometry node object with Empty acting as just an offset controller. Sorry, i was looking for something different.


text:
How to make the stairways connected using geometry nodes
I am trying to create a stairway using an archimedian bezier curve.
This is my node network

I am trying to perfectly align/size the individual steps to avoid the gaps inbetween as shown below. Can someone please help? Thanks in advance.

Maybe it would be better to generate the steps from the spiral, than to try to warp existing steps to shape? Maybe some variation on this.
Here's a group that converts a spiral to a block-staircase:

The strategy:

Resample the spiral to the desired step-length
Convert to mesh, split edges, scale each edge to 0 in Z about its bottom vertex
Extrude edges radially to desired step-width
Extrude resulting faces upward by the height of the split edges, before they were scaled.

The step-height is determined by step-length, and spiral height. The group can cope with spirals of varying radius. A couple of extra nodes, scaling the flattened edges along their length, could give you an overlap between the blocks.

Edit:
Following commentary, here's an adaptation of the group to work with an externally generated spiral:

Thanks for your efforts.
I too had tried that approach first. But it did not match my requirements of how the stairway should be fit in the overall model. Hence i had to use the curve object outside the geometry nodes.

Hi, @RMK !  See edit, for a first shot at the group, re-jigged to modify an externally- generated spiral. It does still assume the spiral is circular in XY, and up Z.

sorry for the delay in response. Yes, that works. Can you please tell as why you mentioned it needs to be circular in XY?. This is what i tried. https://i.sstatic.net/10VAq.png

Hi @RMK  It's just that the way the curve is sampled along its own length,  if the gradient is not constant-per-edge, you can get irregular step-heights.

Irregular step heights? Wow. That is exactly how i wanted. This was missing from my answer as it extruded by a constant height. Thanks

Although this is not a perfect solution, here is an update


text:
Bpy area_options usage
Anyone knows the purpose of bpy.ops.screen.area_options(). There is not much available in Blender documentations

Hello ! Here's link to what happens in the source code. I asume it's used to store some information about the mouse cursor and the screens right before a merge / split operation ?

@Gorgious, please share the link.

hehe sorry https://github.com/blender/blender/blob/d2aebf10fae7bd6f0e854deea2c3c776bd5cde8c/source/blender/editors/screen/screen_ops.c#L3598

@Gorgious. Thats ok. :) And thanks for helping me.

Motivated by @Gorgious comment, i had a look at the code
screen_ops.c
It appears to be responsible for populating the options when we click on the border


text:
Subdivide a scaled mesh line every 2cm
I am trying to scale a mesh line and then subdivide it every 2cm.
I know this can be achieved by first converting to curve and using resample and reconverting to mesh.
But is there any other way of doing this? I attempted by trying to capture the edge positions after scaling and creating a new line, but no luck. My attempted node network is in the screenshot.
Thanks in advance

Can we ask why? The other methods that I can think of are very long-winded, and involve replacing the existing line with a constructed duplicate, anyway. You have to generate vertices, somehow.

@RobinBetts, basically, i was assuming that conversion of objects from one to another is a resource intensive operation. Hence i thought, i can get some alternatives. "Construction of duplicate" is how i had attempted in my screenshot. The place i got struct, is how to transfer the vertex positions.

Wow, that's an interesting color scheme !

This looks like one of those silly Jachym Michal's questions. Is your Mesh line always a single edge? If not, then you need to obtain the endpoints by Transfer Attribute to read the coordinates of the indices 0 and Domain Size: vertices -1. Then if you don't want to spawn another object, you can subdivide it first and remove the excess vertices. You can then lerp between the endpoints using Mix RGB node, you could also clamp and merge by distance to get rid of the excess verts...

@Gorgious .. that would be 'interesting' in the same sense as the blessing: 'May you live in interesting times'

@MarkusvonBroady sad to note that you find this question silly. But i rather ignore that portion and prefer to learn from the other portion of your comment.
Yes, as you would note in the screenshot, my mesh was created with Mesh Line with count 2 and has only a single edge

@RMK just to be sure, it wasn't derogative, silly as in funny. A tad ridiculous no doubt. I did look at your screenshot, however the question is if the screenshot only uses the Mesh line of verts=2 to showcase the problem, or if you for some reason first create a Mesh line of two verts to then later recreate a Mesh line of more verts, rather than directly create the latter...

@MarkusvonBroady ah, now i see your point and understood what i missed explaining. I am creating the Mesh Line with 2 points (locations of 2 objects) so that i can scale it before subdividing. I will have to expose the scaling as a user parameter. After the scaling, i want to subdivide by 2cm. This whole network is part of a bigger visualization project. I wanted to use this use case as an opportunity to learn how to transfer the scaled vertices of a constructed geometry and create a new geometry. That is where i got the error (red lines).

You can't connect a field  output into a constant  input, because the former represents a list (or a generator, if you know Python) of values, while the latter represents just a single value. You can use an Attribute Statistic node to convert between the two. However, in your case you simply want to scale your endpoint vectors, which will have the same effect as using the Scale Elements node:

If you want to specify an offset, you can do that, but then one of the endpoints will only define a direction - you can't eat your cake and have it too:

You could calculate how many vertices should there be for the given endpoints and a desired offset, but then you have to decide if you're willing to go beyond the endpoints to get the offset, or adjust the offset slightly...

Hey, the 2 options you provided are really good. But the real icing on my "cake" was your explanation about why my node network was failing. Because of that, i managed to fix the issue with my original node network. Thanks for that. But having said that, i would have to agree with you and @RobinBetts that it is a long-winding route compared to just use object conversion to curves. But atleast, i have learnt alternate approach that can be used in some other situation.

Here is my node network inspired from @MarkusvonBroady explanation. I agree that this may not be as elegant approach as converting to curve and resampling. But it gets the job done and works in Blender 3.3

This can be further simplied to


text:
My brush in texture paint works weird
When i paint on my model, paint brush doesnt work on some areas:

That area is slightly based on my current camera view:
That even happens if my camera is far away.
I dont have any inverted normals or double vertices and my brush has no textures applied to it.
My uv map doesnt have any overlays.
I tried both increasing and decreasing size of objects in scene, but that doesnt give any result.
That happens to every object in scene.
I searched alot about that problem in internet, but found nothing

One place you might look is the angle of the Normal Falloff, and see if changing that can help you get the paint to go farther along the projection. Otherwise, you could turn off Backface Culling and try using Face Select Masking to fill the entire selection with more certainty.


text:
Blender Geometry Nodes - Randomly Translate Faces Along Normal
How could the individual faces of a mesh be randomly translated in relation to its own normal's XYZ? Currently the faces are translated uniformly on the normal's Z axis only:

You could use the node Random Value, and scale the vector with it.

Just to be able to mark this question as solved, here is a short answer from the comments:

In order to be able to move the faces along their normals with random values, you would need to scale the normals with a randomly generated value and capture them in the domain Face with the node Capture Attribute.
These resulting direction vectors will then serve you as offset in the node Set Position:

(Blender 3.1+)


text:
Geometry Nodes: How can a line be turned into dynamic steps?
While most stair/step setups in geometry nodes are parameter driven, I'm trying to create stairs that can be adjusted via one vertex of a two vertex mesh-edge/line that is hooked to an empty:

an outline can then be made, filled in, and extruded procedurally:

The part that I haven't been able to figure out is the index assignment so that every other point is moved to its proper position dynamically via what I think would be two "set postition" nodes. The first one would take every other point and move it to the prior point's x position:

Then,  the second "set position" node could move the point to the following point's z position:

Theoretically I think this could be easily done by getting the index numbers of the two sets of points to match up for the x position (and then again for the z position), but I haven't been able to figure out the exact node setup for it to work. Any insight or help would be appreciated.

Basically, for each second point you need to sample X position from previous point, and Z position from next one. Fixed it in attached file.


text:
Blender Geometry Nodes - Create individual XYZ curve/mesh lines per edge-defined cubic area
How could XYZ curve/mesh lines be created for each cubic area as defined by the object's edges?

It seems that this would be theoretically possible, assuming there is a way to connect the points created from the original edges, and then repeat that once more from the resulting edges to get the above pictured result.

This post seemed like a decent start, but the desired result was still out of reach.

This setup here might be of interest to you:

Here I first capture the inverted normals so that they point inward.
Then I convert the faces into points and instantiate curves there.
At the same time, I move the positions of the faces a little inward, so that I can apply them to the original geometry as a starting position for a raycast to the opposite faces.
This Hit Position, which is then the position of the opposite face in this specific case, I transfer to the endpoint of the curve.
You can then process the curves further at the end and, for example, turn them into a mesh with Curve to Mesh.
(Blender 3.2+)


text:
Is it possible to use proximity data to trim the start and end point of splines?
Problem Description
After rotating, scaling, and translating curves which are oriented flat on a face's normal, there are many curves whose start and/or endpoints exceed the boundary of the face they lie upon:

Node setup thus far:

Application Goal
It would be nice if, after the curves were positioned, the exceeding curve portion could be trimmed off, regardless if it is from the start or end point.
Looking at the viewer node with proximity data from the box target to the splines, it looks like this task might be possible with a combination of proximity data and trimming, but I've failed to arrive at a solution:

If the proximity+trimming combo isn't possible, I'm planning to either resample to a high enough resolution to where I can remove points by proximity "close enough" to the edge of the face, or try to add points right at the intersection of the edges (via the method from this video). Still, if any other solution comes to mind I'd appreciate the ideas.

You can try with this edge bisect node group

It will take me a while to understand all of the vector math- it looks like a really well thought out setup. Thank you kindly for the solution.


text:
Grease Pencil Fill Tool: How to make the radius markers match the drawing plane?
When using the fill tool and MMB dragging to adjust the gap closure radius size, the circles look like this if the drawing plane is set to "Top (X-Y)" :

I have the grease pencil orientation facing a camera, so I've already used the "Top (X-Y)" drawing plane. It technically still works as it seems the gap closure is actually spherical and not literal to the circular graphic, but it would be nice to have the graphic aligned properly for reference.

Ideally, it would look like this no matter what drawing plane was selected:

Am I perhaps missing a setting to have the gap closure radius guides follow the drawing plane?


text:
Blender file view scripts default path
How can I set blender scripts file view path in python so it would automatically open specific folder? Currently it opens the folder where .blend file is.
script currently:
import bpy

def write_some_data(context, filepath, use_some_setting):
    print("running write_some_data...")

    scene = bpy.context.scene
    frame = scene.frame_start
    cube = bpy.data.objects['Tracker1']
    f = open(filepath, 'w', encoding='utf-8')
    while frame <= scene.frame_end:
        scene.frame_set(frame)
        x, y, z = cube.location
        x_pixels = x * (256 / 15)
        y_pixels = y * (256 / 15)
        f.write("%d" % frame)
        f.write("\n")
        f.write("%5.3f" % (x_pixels))
        f.write("\n")
        f.write("%5.3f" % (y_pixels))
        f.write("\n")
        frame += 1
    f.close()

    return {'FINISHED'}

# ExportHelper is a helper class, defines filename and
# invoke() function which calls the file selector.
from bpy_extras.io_utils import ExportHelper
from bpy.props import StringProperty, BoolProperty, EnumProperty
from bpy.types import Operator

class ExportSomeData(Operator, ExportHelper):
    """This appears in the tooltip of the operator and in the generated docs"""
    bl_idname = "export_test.some_data"  # important since its how bpy.ops.import_test.some_data is constructed
    bl_label = "Export Some Data"

    # ExportHelper mixin class uses this
    filename_ext = ".txt"

    filter_glob: StringProperty(
        default="*.txt",
        options={'HIDDEN'},
        maxlen=255,  # Max internal buffer length, longer would be clamped.
    )

    # List of operator properties, the attributes will be assigned
    # to the class instance from the operator settings before calling.
    use_setting: BoolProperty(
        name="Example Boolean",
        description="Example Tooltip",
        default=True,
    )

    type: EnumProperty(
        name="Example Enum",
        description="Choose between two items",
        items=(
            ('OPT_A', "First Option", "Description one"),
            ('OPT_B', "Second Option", "Description two"),
        ),
        default='OPT_A',
    )

    def execute(self, context):
        return write_some_data(context, self.filepath, self.use_setting)

# Only needed if you want to add into a dynamic menu
def menu_func_export(self, context):
    self.layout.operator(ExportSomeData.bl_idname, text="Text Export Operator")

def register():
    bpy.utils.register_class(ExportSomeData)
    bpy.types.TOPBAR_MT_file_export.append(menu_func_export)

def unregister():
    bpy.utils.unregister_class(ExportSomeData)
    bpy.types.TOPBAR_MT_file_export.remove(menu_func_export)

if __name__ == "__main__":
    register()

    # test call
    bpy.ops.export_test.some_data('INVOKE_DEFAULT')
```

bpy.ops.export_test.some_data('INVOKE_DEFAULT', filepath="path"), self.layout.operator(ExportSomeData.bl_idname, text="Text Export Operator").filepath="path"

´Thanks for answer, where do I put that?

You need to add the filepath= parts. First line of Jay's comment is the last line in your script (line 90, test call), and the second one is line 74 (below def menu_func_export(self, context):) where the dynamic menu entry is created (File > Export > Text Export Operator). Make sure the path ends with a '/, for example "/tmp/"


text:
How do I add pavement marking to a roundabout model
I have imported a DXF 3d model of a roundabout. I applied a texture to the surface for asphalt (asphalt part only). I did not UV unwrap. I rendered a very high resolution (16000 px wide) ortho image of the asphalt. In photoshop I painted the white and yellow striping on a black background registered to the asphalt image. I saved as a jpeg for use in blender. Can you help with using that texture map as an overlay onto the asphalt texture in Blender?
Terrainman

You can use the mix node but you need add a UV Map to your model and unwarp it if you want use image texture in  a complex mesh like a roundabout.

I tried using a UV unwrap but had trouble aligning the stripes with each other where the UV unwrap broke it into pieces. If anyone has another method of pavement stripes and marking for roundabouts and intersections please let me know


text:
texture painting on an imported DXF file
I have imported a dxf file of a roadway. I used the merge selected (ctrl m) to merge the individual polys. I converted to mesh as well. I unwrapped the UVs and tried to paint the model in Texture Paint. I am unable to paint on the object. I started a new project and unwrapped a cube and followed the procedure for texture painting and was successful. Does it have something to do with the DXF imported file?
I am using Blender 3.3 with K-Cycles

Can you check the face normals in edit mode to confirm they are pointing the correct direction, and that you have an image texture loaded in the object material?

forgive me but I do not know how to mark this answer as accepted. Help

You can't mark comments as accepted. If @CraigDJones comment gave you the correct answer I'd suggest you ask him to write it up as an answer and then mark it as accepted.

Craig D Jones.... This answer did the trick


text:
Rigging taxi cab
I'm working on the project and I don't know how to rig a vehicle to animate it. And I've attached a .blend file to MediaFire so you can see my image. Would you be able to help me with this question or point me in the direction where I can find the answer? Hope you can help!

Actual image of the Taxi in isometric mode

You could use an armature, or simply parent the trunk and wheels to the body and make sure that their origin is at their rotation center, which is already the case. I'm not sure where you're struggling...

Yes, this task is beautifully explained, but the actual problem is not clearly stated. What have you tried so far? What specifically have you failed at? Please tell a little more about it. Thank you!

Hi Stephan, I think my question is: "How do I add an armature to my object that is already modelled so I can animate it?". Should I have created an armature first? Can I still do it? What I'm trying to do is to get the car moving/animating so I can put it into my video.

Please be so kind and add this information to your question (you can edit it at any time), so that the question is complete and the relevant information doesn't just end up in the comments. The order of modeling/armature is not really crucial here, and I'm sure one of the professionals here has a solution for this. I'm more of a Geometry Nodes guy, but there are some very capable people here who can solve almost any problem regarding rigging and modeling. ;-)

Okay thanks, but I'll do some more research and see what I can find...

you could create an armature but you don't even need to, just do as i said, parent the wheels and trunk to the body and animate


text:
Batch assign textures with same name as materials?
So I have this blend file with over 50+ materials named NDS_Material.001, NDS_Material.002... and so on. I wanted to assign a texture, which happen to share the same name as the material in question, to each individual material? Is there a way to assign them en masse without having to go through every single material?

I don't think so

Yes it's possible. It depends a bit on how your materials are defined. Can you share a screenshot of the node setup ? I assume they're all very similar.

with a python script - for sure


text:
How to Scale Globally After Rotating Locally?
I want to be able to scale an object using something similar to the Mesh Deform modifier, however it applies the original object's rotation before it is scaled.
I've tried to visualise this by using a separate object per frame, but I'd want to have a single object that is deformed in this same way:

Parent the object to an empty.  Scale the empty in one axis.  Rotate the object.  Does this do what you want?  I'm not sure I understand the question from the wording.

@Nathan Yep that actually worked, and is exactly what I was looking for, so thanks! I wasn't aware of the "order" of transformations for objects parented to each other so it never occured to me.


text:
Only a specifc part of mesh being shown in OBJECT mode?
I have no idea how I stumbled upon this problem. But a huge part of my mesh seems to be missing in Object and Wireframe mode for some reason. The rendered and material view are perfectly fine somehow. I'm using blender 3.0.1.
This is the wireframe mode

The object mode

The material view, which is, somehow, unaffected

The highlighted area in the viewport indicates that you have accidentally created a Clipping Region by pressing Alt+B and then dragging a rectangle with your mouse.
To clear this view region, press Alt+B again.

The other clue is the notification in the upper-left corner of the images which says "User Perspective (Clipped)"! :^)

Thank you so much Gordon and John, that fixed it!

@JohnEason Yes, of course you're right. I just mentioned the highlighted area in the viewport because it will also show in Solid view when Overlays are disabled (so that the text will not be visible).


text:
How can I give the blue areas an emission and crystal effect?
As the title implies, I'm trying to give the blue areas these effects. I already have another material setup in the purple area so I don't want the effects to change it, just the blue. Like an ore or something. Thanks

(Your node setup^)
This will work for a low-poly setup (which is what I think you are doing, based on your previous question)

To make the crystal material, plug a voronoi texture into a color ramp, then that one into an emission.
For a realistic glowing crystal (not stylized or lowpoly) a more complex texture setup would have to do, involving transparency, albedo, and bump maps for the crystal texture, in addition to a colorramp/emission node setup for the glowing effect.
Here's how to combine them:

Subdivide your object to the point that it is fairly dense (the more vertices, the better, as we will be painting on them.)
Select all the vertices in Edit Mode and go to 'Object Data Properties' and click the '+' to add all the vertices to a new group.
Make this setup of nodes for the material for the entire object:
One of the diffuse nodes is the Principled Output from your meteorite texture, the second is the glowing texture output.
Go to Vertex Paint mode
Paint the object! One color is the glowing texture, the other is the meteorite texture. Tip: more vertices means higher detail when painting:
Lots of vertices^^

Few vertices^^

That's cool, but how do I have that effect the blue areas only? And yeah, its low poly alright. I'll add an image of my nodes as well

@Bren, I edited the answer to show how you can 'paint' multiple textures on a single mesh.

I definitely appreciate your responses, unfortunately I still have to keep this bad boy low poly, and somehow make this all happen procedurally. If you have any other solutions tho, I am absolutely listening :)

@Bren, maybe add a noise texture to the Mix Shader node instead of doing the whole vertex paint thing. That way you could have the glowing crystal texture randomly appear all over the meterorite.

(it would also keep it procedural and low-poly! ;)

@Bren, would that work?


text:
Has the way that Blender handles PSD alphas changed?
I've noticed this issue popping up in a few projects I've been working on, it seems like the way that Blender handles the alpha channel on PSD files within shader nodes has changed, resulting in this bright ghosting effect around the edge. Anyone else experiencing this?
It's not impossible that Adobe has changed the way they export alphas too

I should note that if I save this as a PNG the ghost disappears

Let me know you saw my answer, then I will vote to close your question. Bug topics are not allowed to discus here. Anyway thanks for pointing the issue.

Yeah I saw the answer, where does one discuss bug topics if not here?

Since I felt deep into this ...
Short
Blender 3.2 works ... it is a bug (confirmed) since Blender 3.3 ...

Long
There seems to be a "basic" support for PSD, so it has its glitches :) It seems to me like Blender see PSD as single layered file. So if your store transparency in a solo Alpha channel it is not seen by Blender (discussed here).

For transparency stored in RGB channels (what assume is called Premultiplied) it should work (for bug fixed version).

Same behaviour for Alpha channel used as Mask Layer in Photoshop.

What worked for me as workaround (with this bug) was to set Alpha > Channel Packed, that is weird (it is designed for a different purpose, but it worked here).

Also when PSD is Packed into Blender it works too :)

I'll give that a try next time it makes an appearance, I suppose it's not the end of the world to just save the docs as PNGs, but sometimes working on live docs as PSDs can be useful!


text:
Don't work controller/bones on rigs blender
Sorry, English is not my native language. I've run into a problem where "options" are not used in public access in Riga. The object was easily spoiled in the program, all the "parameters" fly around the object/character, but I can't twist or move them to somehow animate the object. The program completely highlights all the "parameters", but does not allow them to be adjusted and moved individually. I am new to Blender. Hope it helps me. Thank you

It sounds like what you are referring to as “parameters” are the bones of the Armature. You need to go into Pose mode to be able to move/rotate each bone individually to deform the mesh. Pose mode is in the same pull-down menu as Object mode and Edit mode.
I recommend you read the Blender Manual section on Armatures, but change the language as needed, bottom left.


text:
exporting IK rig into another software
dear blender users.
I have researched about ways to export an IK rig from blender into another software, especially unreal engine, but I haven't found any way.is there really any way to export an IK rig into the unreal engine or any other software from blender? please notice, I mean rig, not animation

IK rigs are software specific. You cannot transfer it since other software uses other IK solutions.

It depends on what you want to achieve.
If you want to perform animation in Blender, then export the rigged and animated character, the solution is to bake the animation on the deforming bones, so to freeze the Ik calculations, and export the simplified version (with no IK constaints).
If you want to animate in UE, you have to export a rig without IK constraints but with all IK controller bones, then reconstruct the IK functionality using UE blueprint IK system (or directly with code).


text:
Numba Seg fault with blender
I'm looking to integrate Numba into my Blender addons. However, I've run into a weird problem. So, I have a simple file
from numba import cuda
import numpy
import time
print(cuda.gpus)
import math

@cuda.jit
def f(io_array, main_array):
    tx = cuda.threadIdx.x
    ty = cuda.blockIdx.x
    bw = cuda.blockDim.x
    pos = tx + ty * bw
    if pos < io_array.size:
        io_array[pos] *= 2
        io_array[pos] += main_array[pos]

# Host code
data = numpy.arange(2560000)
data2 = numpy.arange(2560000)
threadsperblock = 256
blockspergrid = math.ceil(data.shape[0] / threadsperblock)
st = time.time()
f[blockspergrid, threadsperblock](data, data2)
et = time.time()
print("Total time taken ", et - st)
for i in range(10):
    print(data[i])

print(data[255999])
print(data[255998])

It works fine when I run it from my system python or blender python interpreter. But it throws a Seg fault when running from Blender. I don't understand if I can run it successfully from the Blender python interpreter, then why does Blender throw a Seg Fault?
Output :
Read prefs: /home/sourav/.config/blender/3.0/config/userpref.blend
<Managed Device 0>
Writing: /tmp/blender.crash.txt
Segmentation fault (core dumped)

Content of /tmp/blender.crash.txt
# Blender 3.0.0, Commit date: 2021-12-02 18:35, Hash f1cca3055776

# backtrace
/home/pc/blender-3.0.0/blender(BLI_system_backtrace+0x20) [0xb0b3460]
/home/pc/blender-3.0.0/blender() [0x10babdb]
/lib/x86_64-linux-gnu/libc.so.6(+0x42520) [0x7ff5d341a520]
/home/pc/blender-3.0.0/3.0/python/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so(+0x10531) [0x7ff59ebc3531]
/lib/x86_64-linux-gnu/libffi.so.8(+0x77ec) [0x7ff5cf8d77ec]
/lib/x86_64-linux-gnu/libffi.so.8(+0x8050) [0x7ff5cf8d8050]
/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/llvmlite/binding/libllvmlite.so(+0x5d0de4) [0x7ff597b50de4]
/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/llvmlite/binding/libllvmlite.so(+0x60bda1) [0x7ff597b8bda1]
/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/llvmlite/binding/libllvmlite.so(+0x606908) [0x7ff597b86908]
/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/llvmlite/binding/libllvmlite.so(LLVMPY_FinalizeObject+0x27) [0x7ff597b506f5]
/lib/x86_64-linux-gnu/libffi.so.8(+0x7e2e) [0x7ff5cf8d7e2e]
/lib/x86_64-linux-gnu/libffi.so.8(+0x4493) [0x7ff5cf8d4493]
/home/pc/blender-3.0.0/3.0/python/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so(+0x129d6) [0x7ff59ebc59d6]
/home/pc/blender-3.0.0/3.0/python/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so(+0xbd3a) [0x7ff59ebbed3a]
/home/pc/blender-3.0.0/blender(_PyObject_Call+0x5c) [0x9c3306c]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x4199) [0x10b2389]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyFunction_Vectorcall+0x9a) [0x9c3321a]
/home/pc/blender-3.0.0/blender(_PyObject_FastCallDictTstate+0x53) [0x9c33643]
/home/pc/blender-3.0.0/blender(_PyObject_Call_Prepend+0xe4) [0x9c33904]
/home/pc/blender-3.0.0/blender() [0x9c94649]
/home/pc/blender-3.0.0/blender(_PyObject_MakeTpCall+0x90) [0x9c334c0]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x8f40) [0x10b7130]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender(PyVectorcall_Call+0x5f) [0x9c32f1f]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x4199) [0x10b2389]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyFunction_Vectorcall+0x9a) [0x9c3321a]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x678a) [0x10b497a]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x678a) [0x10b497a]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x678a) [0x10b497a]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x678a) [0x10b497a]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x661d) [0x10b480d]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender(PyVectorcall_Call+0x5f) [0x9c32f1f]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x4199) [0x10b2389]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyFunction_Vectorcall+0x9a) [0x9c3321a]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x678a) [0x10b497a]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender(PyVectorcall_Call+0x5f) [0x9c32f1f]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x4199) [0x10b2389]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyFunction_Vectorcall+0x9a) [0x9c3321a]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x678a) [0x10b497a]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender() [0x9c35e98]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x661d) [0x10b480d]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyFunction_Vectorcall+0x9a) [0x9c3321a]
/home/pc/blender-3.0.0/blender(_PyObject_FastCallDictTstate+0x53) [0x9c33643]
/home/pc/blender-3.0.0/blender(_PyObject_Call_Prepend+0xe4) [0x9c33904]
/home/pc/blender-3.0.0/blender() [0x9c948f2]
/home/pc/blender-3.0.0/blender() [0x9c8a93a]
/home/pc/blender-3.0.0/blender(_PyObject_MakeTpCall+0x90) [0x9c334c0]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x8f40) [0x10b7130]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x661d) [0x10b480d]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyFunction_Vectorcall+0x9a) [0x9c3321a]
/home/pc/blender-3.0.0/blender() [0x9c33b98]
/home/pc/blender-3.0.0/blender(PyObject_CallFunctionObjArgs+0xa2) [0x9c33ff2]
/home/pc/blender-3.0.0/blender(_PyObject_GenericGetAttrWithDict+0x1c6) [0x9c76c86]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x3aac) [0x10b1c9c]
/home/pc/blender-3.0.0/blender() [0x10ad28b]
/home/pc/blender-3.0.0/blender() [0x9c3bd83]
/home/pc/blender-3.0.0/blender(_PyObject_GenericGetAttrWithDict+0x7f) [0x9c76b3f]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x3aac) [0x10b1c9c]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyFunction_Vectorcall+0x9a) [0x9c3321a]
/home/pc/blender-3.0.0/blender(_PyObject_FastCallDictTstate+0xca) [0x9c336ba]
/home/pc/blender-3.0.0/blender(_PyObject_Call_Prepend+0xe4) [0x9c33904]
/home/pc/blender-3.0.0/blender() [0x9c948f2]
/home/pc/blender-3.0.0/blender() [0x9c8a93a]
/home/pc/blender-3.0.0/blender(_PyObject_Call+0x5c) [0x9c3306c]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x4199) [0x10b2389]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyFunction_Vectorcall+0x9a) [0x9c3321a]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x59cc) [0x10b3bbc]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyFunction_Vectorcall+0x9a) [0x9c3321a]
/home/pc/blender-3.0.0/blender(_PyEval_EvalFrameDefault+0x59cc) [0x10b3bbc]
/home/pc/blender-3.0.0/blender() [0x9ce0c84]
/home/pc/blender-3.0.0/blender(_PyEval_EvalCodeWithName+0x4e) [0x9ce0fce]
/home/pc/blender-3.0.0/blender(PyEval_EvalCodeEx+0x3e) [0x9ce101e]
/home/pc/blender-3.0.0/blender(PyEval_EvalCode+0x1b) [0x9ce104b]
/home/pc/blender-3.0.0/blender() [0x9d1b9c5]
/home/pc/blender-3.0.0/blender(PyRun_FileExFlags+0xad) [0x9d1dafd]
/home/pc/blender-3.0.0/blender() [0x1bf93ff]
/home/pc/blender-3.0.0/blender() [0x10b8e5a]
/home/pc/blender-3.0.0/blender(BLI_args_parse+0xc7) [0xaff6937]
/home/pc/blender-3.0.0/blender(main+0x2d5) [0xfa3b75]
/lib/x86_64-linux-gnu/libc.so.6(+0x29d90) [0x7ff5d3401d90]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80) [0x7ff5d3401e40]
/home/pc/blender-3.0.0/blender() [0x10b753c]

# Python backtrace
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/llvmlite/binding/ffi.py", line 151 in __call__
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/llvmlite/binding/executionengine.py", line 92 in finalize_object
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/codegen.py", line 1060 in wrapper
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/codegen.py", line 999 in _finalize_specific
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/codegen.py", line 797 in _finalize_final_module
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/codegen.py", line 765 in finalize
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/runtime/nrtdynmod.py", line 213 in compile_nrt_functions
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/runtime/nrt.py", line 41 in initialize
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 35 in _acquire_compile_lock
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/cpu.py", line 59 in init
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 35 in _acquire_compile_lock
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/base.py", line 257 in __init__
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/cpu.py", line 40 in __init__
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/registry.py", line 31 in _toplevel_target_context
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/functools.py", line 969 in __get__
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/registry.py", line 47 in target_context
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/dispatcher.py", line 824 in __init__
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/decorators.py", line 208 in wrapper
  File "/home/pc/blender-3.0.0/3.0/python/lib/python3.9/site-packages/numba/core/decorators.py", line 179 in jit
  File "/home/pc/tmp/gpu2.py", line 10 in <module>

I'm having the same issue, did you manage to solve it? To add I'm also getting this printout in the console: ../src/intel/isl/isl.c:2216: FINISHME: ../src/intel/isl/isl.c:isl_surf_supports_ccs: CCS for 3D textures is disabled, but a workaround is available.
minimal example: from numba import jit \n @jit \n def f(): \n return 1

update: the printout I mentioned happens at startup, so probably unrelated to the crash


text:
How to display an enum property with icon_only=True and use the full width of a row?
I wanted to ask how I can make an enum property use the full width of a row if I only want to display the icons.
Here my code:
row = layout.row()
row.prop(parts[0].render_options[0], "render_option", expand=True, icon_only=True)

This is the result I get:

How can I make this use the full width of the row?
So it will be displayed like this (but only with the icon in the center and no text):


text:
How to create a UIList that shows all cameras in the scene?
I'm currently trying to create a small addon that helps me with rendering different camera views. I'm a complete beginner and struggle with creating a UIList.
How can I achieve something like this but with cameras (the checkbox also needs to be there)?

i think this answer https://blender.stackexchange.com/questions/167922/how-to-populate-uilist-with-certain-collections can help u a bit


text:
What is wrong with my script? I keep getting the error that property could not register
I have this script here:
import bpy

color_options = [
        ('BLACK', "Black", ""),
        ('WHITE', "White", ""),
        ('LIGHT_GREY' "Light Grey", ""),
        ('LIGHT_BLUISH_GREY',"Light Bluish Grey",""),
        ('DARK_GREY', "Dark Grey", ""),
        ('DARK_BLUISH_GREY', "Dark Bluish Grey", ""),
        ('TAN', "Tan", ""),
        ('DARK_TAN', "Dark Tan", ""),
        ('SAND_BLUE', "Sand Blue", ""),
        ('SAND_GREEN', "Sand Green", ""),
        ('DARK_BLUE', "Dark Blue", ""),
        ('DARK_GREEN', "Dark Green", ""),
        ('DARK_BROWN', "Dark Brown", ""),
        ('OLIVE_GREEN', "Olive Green", ""),
        ('YELLOW', "Yellow", ""),
        ('LIGHT_NOUGAT', "Light Nougat", ""),
        ('NOUGAT', "Nougat", ""),
        ('MEDIUM_NOUGAT', "Medium Nougat", ""),
        ('BROWN', "Brown", ""),
        ('REDDISH_BROWN', "Reddish Brown", ""),
        ('RED', "Red", "")
]

class minifigure_properties(bpy.types.PropertyGroup):

    texture: bpy.props.StringProperty(
        name="Texture",
        subtype="FILE_PATH"
    )
    head_color: bpy.props.EnumProperty(
        items=color_options,
        name="Head Color",
        default='LIGHT_NOUGAT'
    )

class MinifigureSettingsPanel(bpy.types.Panel):
    bl_label = "Settings"
    bl_idname = "SCENE_PT_layout"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "Minifigure Renderer"

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

        # Image texture
        layout.label(text="Image Texture", icon='IMAGE_DATA')
        layout.prop(minifigure_settings, "texture")

        # Base colors
        layout.label(text="Base colors", icon='COLOR')
        layout.prop(minifigure_settings, "head_color")

classes = [
    minifigure_properties,
    MinifigureSettingsPanel
]

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

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

if __name__ == "__main__":
    register()

When I try to run this I always get:
TypeError: EnumProperty(...): expected a tuple containing (identifier, name, description) and optionally an icon name and unique number
Error: Python: Traceback (most recent call last):
  File "\minifigure_settings.py", line 82, in <module>
  File "\minifigure_settings.py", line 72, in register
ValueError: bpy_struct "minifigure_properties" registration error: 'head_color' EnumProperty could not register (see previous error)

I don't know what the error is! Maybe one of you guys can find it?

This is my favorite candidate for the "Bug of the Month" award. It was hard to find.
In this line of the color_options = ...
('LIGHT_GREY' "Light Grey", ""),

... the comma between the strings is missing. Python simply merges them into "LIGHT_GREYLight Grey" and your tuple has only 2 values instead of the required 3. And then it complains about this, of course, without telling you which tuple is the bad one.
Correct is:
('LIGHT_GREY', "Light Grey", ""),

OMG! This is so embarrassing! Thank you :)


text:
Bones not attaching to mesh
So i made the armature and parented the bones to the mesh (i made certain the mesh was selected first and that scale is applied) and parented with automatic weights, but the mesh still doesn't move. I have looked into other people with the same problem but their solutions didn't work for me. I would appreciate some help, thanks!
Here is the file: https://drive.google.com/file/d/1pC2k3mtHmufpP9AuG-CDxVUgbVE1JBcb/view?usp=sharing

First apply the scale of the skeleton (in Object mode select it and hit CTRL+A, choose Scale). Also remove the doubles of your mesh (select the mesh object, go to Edit mode, select everything and hit ALT+M, choose Merge By Distance). Then try again the parenting.

As mentioned by FFeller, the mesh has duplicated vertices. They cause the infamous Heat Weighting: Failed to find solution for one or more bones error. You see the message for a short time in the status bar after the Parent To > With Automatic Weights operation. It means, that the operation has failed and the rig won't work properly.

FFeller's comment solved my problem but i appreciate the extra info, Blunder. My mesh was indeed made my combining like 4 different meshes. It looked fine so i thought it was ok, but next time i'll make sure there are no duplicates, thanks a lot for the help guys!


text:
Hanging object not following the rotation of the rope
I'm trying to animate a hanging lamp that swings in a loop, however, as you can see, the lamp itself is not following the rotation of the rope, even though I have copy rotation applied to the object and referencing the end of the rope, so it should work. I would appreciate some help!

Here's the file in case anyone wants to take a look:

related https://blender.stackexchange.com/questions/75673/how-to-let-a-cable-hang-so-that-it-look-realistic

Why have you left out the X rotation?  If you really want to do it this way,  maybe flip the mesh in Z if necessary, and include X in the copied Euler.


text:
Instances on Points not working correctly
I'm trying to add sugar to my churro, so i created differently shaped cubes, added them so a collection, and used them as instances for the Instance on Points Node. However, when i try to increase the density, instead of sticking to the churro, a giant cube just appears from out of nowhere. There is no gradiant or anything, the cube just pops up. I mean, i don't even know what to google to try and figure out what the problem here is.

Here is the file in case you want to take a look, thanks a bunch!
https://drive.google.com/file/d/1zwN5oTe22kGGo3VxmtgQDtS27g2ioMW8/view?usp=sharing

Apply scale for cubes. (Ctrl+A → Apply scale)


text:
Adding a vertex between two vertices that sticks to an object?
So, i'm following this tutorial, and there comes a part where the person selects two vertices and creates a new one in between them that sticks to an edge between those vertices.

I have no idea how to do this and can't seem to find an answer. The best i could find was selecting both vertices and pressing F, but that simply creates a new edge that goes through the object.

Would appreciate some help!
Here is the link, it happens at 2:13
https://www.youtube.com/watch?v=6hCrZWJphLE&ab_channel=TopChannel1on1

Press J to create an edge, not F

Let's say that this is your topology and you want to create an edge between these 2 vertices:

If you press F it will create an edge but it won't go across the existing faces:

You need to press J to create an edge that will go across the faces. Note that you could also use the knife tool (K to activate):


text:
How can I apply IK rigging with a different kind of rig
I've gone through a lot of IK rigging tutorials on YT, however, all those video are only compatible when the bones are close to each other,
However I imported a model from SFM into Blender, and that model uses a different rigging style, I could not apply IK to this model because of this different style
The original model rig looks like this :

But I could only add IK after I changed the rig to look like this

If there is a way to add IK to the original rig, I'd be much obliged if someone would tell me how.

here is the link to the original rig file

The idea is to consider your actual rig as the "deforming bones rig" and build another rig (which can have IK, constraints, drivers) and use it as "machinary rig": The MACH rig will have the joints in the exact same place of the DEF rig, but different bones orientation. Then you will put a rotation constraint (with local space-local space settings) in every joint of the DEF rig, pointing to the corrispondent bone of the MECH rig.
Set all MECH bones as "non deforming" and put them in a different layer of the armature.
You will use the MECH rig to program the animation and the DEF rig will follow exactly.
Then you can select the DEF bones layer, select all bones and - in pose mode - go to "pose - animation - bake action", checking "only selected" and "visual keys".
In this way you can export your animation that will act on you original rig, without any IK or constraint (expecially useful if you want to export to another software).
In this example I'm building a simple IK control for a leg;
This is the original rig:

Then I add 3 MACH bones with an IK chain of 2 bones, pointing to IK control bone as target:

The Upper Leg bone will copy the rot of the IK Upper, the lower Leg copies Rot of IK Lower.
In this example I've left the original foot bone without constraints and unchecking its "inherit rotation" option.
Consider that - using this tecnique - it's easy to control your original rig with a Rigify rig, with all its great features of IK-FK switching and tip toe foot controllers, just use the snap tools to build the metarig in the exact locations of your original DEF rig.
It's more complicated to explain than to build, once you get the idea everything works fine!

could you explain a bit on how to attach the MACH rig to the DEF rig?

You can parent every bone chain to the hip bone, which generally is the start of the tree structure. In my example the upper IK bone is child of the previous hip bone (with keep offset option). It all depends by the rig structure and the effect you want to achieve.


text:
How to get a material to keep the transparent border from it's texture
I tried almost everything from fiddling with import properties, to adding a Transparent BDSF (As answered in other questions I found on this site) yet nothing seems to work...
below is the picture, that appears, it's in material view, and I also tried switching to rendered view.

Usually you take the alpha component from the Image texture node and use it as the factor in the Mix Shader node. Where the other inputs are a Transparent BSDF and a Diffuse BSDF(with its input set to the colour from the Image texture node.

@rob did that, it still didn't work

can you show us the nodes or upload the .blend file? https://blend-exchange.giantcowfilms.com/

done, do I need to upload the texture files as well?

yes, or use the File/ External Data/ Pack All to store the files in the .blend.

updated,       .
here's a link to zip containing all the files just in case
https://drive.google.com/open?id=1tOg961VfPnLDITZHKvFSiyoPPog6P3Gd

Here I have added a Color/Invert Node to swap the Black/White of your texture before feeding it into the Color of the Mix Shader

On the left is with the Invert node and on the right without. Showing what is and what is not being transparent.

and the final result.
FYI For more control plug the Alpha into the Factor on the Invert Node and then change the colour.

and of course you do not need the Invert Node just swap around the inputs.


text:
Extruding and aligning on an existing face
I was wondering if there is a way to extrude such that it aligns on an existing face.
I've also included an image below since this is probably quite a vague description.
So what I would like is:
Extruding the yellow edge (on the X-axis only, which can be done by using the 'X' hotkey), such that it aligns on the purple face. I.e. one of the edges of the extrude is on the purple face.

Since I'm new to blender (and 3D modelling in general) I'd love to hear if my entire approach is odd, wrong, or otherwise inefficient!
Thanks in advance!

There is edge going away from the viewer marked in yellow, i.e. the edge you want to extrude and align with purple-marked face is perpendicular to that face (how I see that from your description). How do you expect to align extrusion by edge?  In any case if you enable snapping, choose element to snap to as Edge and while extruding by X axis hover over proper edge it will be aligned by X axis.

@MrZak Ah I totally missed the snap to edge/face/vertex feature! While the snapping works differently than what I'd expect when extruding on a specific axis, I was eventually able to extrude the yellow edge (not the yellow arrow) to the purple face. Thanks for your help!


text:
Normal maps in node editor cause a blue/black tinge
So, I'm guessing this ties into the Vertex paint? I created a mix shader node with two principled shaders, skinlike ya know? One being more red/pink than the other. ANYWAYS. I created a Col attribute with both shaders and painted where I wanted the more red areas to be (In this case it would be the lips and spots on the face). I continued to plug this attribute into the mix shader Fac input.
After doing this, no matter what, both displacement and normal maps are absolutely a pain in the ass because they leave this odd discoloration. If anyone can figure how I can get around this, I would be so happy

So does it render properly with 1 principled shader? Can we see your normal map texture?

I'm not seeing the difference. Can you circle the rendered object too?


text:
Particle Instancing not working
So, Have been working in blender for about 3 months now, and want to get into some particle effects to spice up a new scene I'm working on.
I want some nice looking particles, so I was forwarded to particle instancing to get particles to emit from other particles.
The problem I am having is quite odd, as it seems to work flawlessly for many other people I see online. I create a plane, apply scale (Even though I didn't even scale it, Just to be sure) then I add a particle system, change the gravity to zero, and add some brownian force, and change the amount of particles to about 250 to start off with. I then create my object I want to instance, in this case its a cube. I apply the scale of the cube (Didn't scale it like before, but JUST TO BE SURE) then add a particle instance modifier and set the object to the object in which my original particle system is taking place (The plane). After doing all of this, I see no results, the particles are still the blank view in the viewport, and nothing shows in render view either.
Not too sure what I'm doing wrong, I was told that applying scale to the objects fixes this but I still obtain no results. If anyone can help me, it would be greatly appreciated.
I'm currently using blender 2.79.

Applying scale fixes anything only if scale was changed in Object mode, otherwise it doesn't. Did you play animation? (Alt+A) What does it mean "particles are still blank view"?

Yes I understand this, it's just that I was told that non applied scale could cause things to go wrong. When i play the animation, it shows the Blank particles, it shows that particles are being emitted, but they don't have an object applied to them, its like just applying a particle system and doing nothing to it at all. AKA the particles only show the rendered "halo" selection instead of the cube i'm trying to instance to it.

Can you share the file with https://blend-exchange.giantcowfilms.com/? I can't reproduce that, I see cubes emitted via the particle system which is set on plane. Note also that in Particle Instance modifier at least Alive option should be enabled to preview undead particles

Particle instancing seems broken on my version of blender, even doing it in a new project results in some very weird outcomes, like the particles being emitted from a completely different area than the plane itself, even though the plane is completely centered. I guess I will just hold off on particles for now.

It's hard to tell without your project file (any force fields, origin point of the object, particle settings, modifier stack for the object etc) but try updating to the recent Blender build and checking there. Other than that only file and some screenshots could shed some light on your problem

Check the Amount, it should be on $1$ and the Offset on $0$. I cannot seem to get this modifier to work on 2.9

I am not sure if this was what you're after, but my Amount in the modifier tab is at $1$ and the Offset is at $0$


text:
Geometry Nodes result not rendering
I created this scene using geometry nodes. It looks fine using cycles in the viewport.

However, as soon as I render it, everything disappears and only the background plane is visible.

Every single layer is activated for rendering so I'm not really sure what is going on here.

Here is the node setup used:

And the file in case you want to have a look:

Thanks a bunch!

you are instancing on this:

but this collection isn't in your scene:

i assume you made a new collection and/or renamed, so change that collection in that node to:
todos conjuntos paletes

and then change the render visibility of them to on:

then render:


text:
Can't rotate object on inclined z axis
When I make an inclined cilinder and apply copy rotation with an empty, it rotates as if the z axis is also inclined. However, when I try the same method with this Venus model I found online, the object keeps rotating on a vertical z axis. Any way to fix this or is the problem with the model I found?

See its local orientation, it is not aligned with her body (maybe you have rotated the object then applied its rotation, which has aligned the origin with the global orientation, but it has lost the original orientation):

To realign the origin correctly, select some faces of the base and create a custom orientation:

Enable the Affect Only Origins option:

Align the origin with the custom orientation:

Switch back to the Local orientation:

Rotate the origin 180° on X:

Disable the Affect Only Origins option, now it should work: