text:
How do I fix the UVs on this propane tank?
So I was trying to find a way to convert an FBX file from ASCII FBX to Binary FBX and when I converted it this happened and I did some research and found out that it was that the UVs were messed up. I'm very much a noob when it comes to Blender and I have no idea what those are and how to fix this. Is there anyone that could help me?

That is actually an issue with the normals of you mesh, which is the direction the faces are pointing/facing. You can recalculate the normals by selecting all of the mesh in edit mode and pressing Ctrl+N. This could be resulting from double vertices, so you could try removing doubles with W, again in edit mode with all selected. This may affect the exported file (assuming you are exporting it) in an undesirable way, so just be careful and have a backup.


text:
How to make a fire whirl like in the movie
how can I make a fire whirl like in the movie "into the storm"...?
https://www.youtube.com/watch?v=xbCUGTzFWtk --> from 0:30 so that the under part is on fire and the higher part of the tornado is only smoke... :D

What have you tried and with specifically what you have problem/need help with? The question is very broad. You are asking for a full-fledged tutorial that could occupy 4 pages in a magazine or an hour long video. Narrowing it down would help a lot.

I know hot to make a tornado but the big problem is, I dont know how I can do it, that a part of particles are emitting smoke and some fire...

Having a tornado from particles is good start. From this flamethrower tutorial you can learn how to make particles emit smoke: https://vimeo.com/23856096. And from this one how to make a volumetric fire shader: https://www.youtube.com/watch?v=opfzcNY2u5A. The thing is fire and smoke are not 2 things, it's the same smoke, but the hot smoke just emits light. And this is all handled inside the shader based of the Flame atribute of the smoke.

source: Stack Exchange

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

sort: votes


text:
Place a 3D building instead of real building
my question is, how can I put 3D elements into a real footage. For example an 3D Building instead of a existing Building, so that I can destroy the 3D building for example? So that the 3D Building looks real in the footage.
I hope you understand what I mean

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


text:
Destroy objects in real life (Compositing)
How can I use Blender Compositing, to do a fracture cube, and compositing it into a video, for example where are building or something is destroy itself.. :)
But the texture of the building in the Video should be match with the destroying cube, so it should be look like it was real happening.. :)
I hope you understand what I mean... :)
When you not understand it, then watch this video from the minute 1:10.15, where he is "match" the texture with the ground break... :)
https://www.youtube.com/watch?v=2R7N8UqT04U&list=RD2R7N8UqT04U&start_radio=1
So I hope anybody can help me? :)
Thanks for answers :D

In fact its NOT clear what You wanna do, Daniel. I saw the video and the only thing texture-related is the plane of the road. You want to texture the cube like the road is or what exactly? Cause if You only need the breaking object to "as if" cast shadows on the real-life footage then "Shadow Catcher" plane is your thing.

yes I want to texturing the cube like the road :)

If U have already some progress please post here your .blend file. So to break things out ... U want the cube look like the road, the cube cast the shadow on the road or both? No matter what Yo answer is without the scene its complicated and in fact if U want to texture an object to look like something in the "real" footage/photo U simply have to make the texture/material which is sometimes a real pain. But if U send the scene I will take a look bro ;). Use this (https://blend-exchange.giantcowfilms.com/)

Sorry, my englisch is not so good to explain things in englisch... :)

I will send you the file :) I would like to make a ground break like during an earthquake :)

but you need to download this http://graphicall.org/1148
because with this "addon" you can make things to fracture ;)

here is the file... I have upload it on mediafire... :) if you doesnt see the video in side blender, so I have upload it on mediafire too... so you can download it and after that you can try what I say :D
https://www.mediafire.com/folder/q4gc112p4wqzr/ here :D

Hi, I have the file but ... do You using Blender render or Cycles?

Cycles  render engine

...and U have NO textures in the .blend?

yes.. only the video

So ... Ive got Yo scene working somehow but.. The way U wanna do the "trick" is NOT the way U have to do it! This video will help FOR SURE ;). https://www.youtube.com/watch?v=CVPcT0dJmoY


text:
Animate Glass BSDF Index of Refraction over Time?
Is there a way to animate the index of refraction of a glass material so that it will change from say 1.1 at frame 10 to 1.8 at frame 30?

Have you keyframed them? Go to frame 10 in the timeline, set the IOR to 1.1, right-click the IOR, click "insert keyframe." Go to frame 30, set the IOR to 1.8, and insert the keyframe again.

you can also hover over the value and press i to insert a keyframe.

@Millard Huh. I didn't know that shortcut existed.


text:
uhh why does my fluid acting up like this? it was working before, the fluid came from the circle but now it looks like this, check the photo

I was just following a fluid tutorial and i tried it with a simple donut, it was perfectly fine at first but i feel like the result is very bad so i took a nother try. When i try to bake the fluid again it comes up like what is shown on the picture

Try baking it a third time, but move the circle up a bit first.


text:
What is this material effect called?
I Was looking through some Nintendo files and saw this material: https://gyazo.com/2355e477339ffff99cd50c3e53483cdf
is there a name for that glossiness effect, and does someone know how to replicate that in Blender?

Looks like a material with a clear coat and a normal map for the surface irregularities.

But it looks so flat. Can a normal map actually look this flat?

Sure just plug it into the clear coat normal socket of the Principled BSDF and adjust the strength.

I will try that soon, thanks!

How to upload an image to a post

the material is rather glossy, you can use a Noise Texture plugged into a Bump node plugged into the normal socket to have the grainy effect...

The best way to get this effect is by using a musgrave texture as a factor of the roughness input and use the same as the normal with a bump node in between
Which will get you this:
You can tweak the values if needed

That looks like a physical based rendered plastic material. It's surface features likely come from a normal map, while the finer reflective details are likely a metalness and roughness map. Ordinarily you'd have to make it in Substance, but it's definitely possible with Blender Nodes and Gimp. What game did you find this in?

Mario Kart Wii, the cookie land battle stage. You can view it on a website called "noclip.website"

Interesting. That PBR material looked surprisingly modern, and certainly better than I would expect possible from the Wii.


text:
blender breaks for me
i think this first happened when i opened up a large file in blender 2.8. i started getting these weird glitchy colored lines and they followed the viewport when it navigated and it didnt look like a seperate mesh was tied to it. i opened up fresh clean files and it still had this glitch on the viewport. i even reinstalled blender 2.8 and it didnt fix it. i opened up a rig today and the rig was glitchy and didnt look normal to fix like when opening up a rig and turning the mesh from a black color to the normal mesh colors by opaque to alpha. this is really frustrating me also because i couldnt find anything on the glitch on the internet. this i feel is my last resort. here's a screenshot of the glitch in action:

It looks like the graphics card is at fault.  If the graphics card is too old, or the driver isn't updated, blender can have some pretty crazy artifacts.

does a cpu have a graphics card?

the graphics card is what tells the moniter how to display the image, if there wasn't a graphics card you wouldn't see anything.

Some CPUs have an integrated GPU.


text:
How to create a "linked copy" scene in Python without using ops?
I'm trying to figure out how to create a new scene which is a "linked copy" from Python without relying on context/ops.
The ops version would involve setting the type to LINK_COPY e.g.:
bpy.ops.scene.new(type='LINK_COPY')

The non-ops interface bpy.data.scenes.new only offers to pass in the name of the new scene (see API docs of BlendDataScenes).
How can I turn a scene created by bpy.data.scenes.new into a linked copy?

As far as I can tell, bpy.data.scenes['your_scene'].copy() will give the exact same result as bpy.ops.scene.new(type='LINK_COPY') except for one detail: the new scene has 0 user and gets added to the orphan data.
This is not an intended feature and there's no python command to properly fix that. However, there's no need to worry, as the scene will actually not get deleted if you save and revert the file, contrary to any other orphan data.
Still, if it's uncomfortable for you, it's possible to give the scene 1 user by doing any of these:

adding a fake user: bpy.data.scenes['your_scene'].use_fake_user = True

or

saving and reloading the file

or

performing any operation and undoing it with Ctrl+Z (currently, the undo operator reloads many components of the file so I guess it works for the same reason reloading the file works too)

Side note:
You can also do the equivalent of bpy.ops.scene.new(type='EMPTY') (called "Copy Settings" in the interface) this way:
Sc = bpy.data.scenes['your_scene'].copy()
for col in Sc.collection.children:
    NewSc.collection.children.unlink(col)
for obj in Sc.collection.objects:
    NewSc.collection.objects.unlink(obj)


text:
How to export Blender file so it can be opened with the textures on another machine?
Basically, my client wants to open the Blender file I'm working on but every time I send him the blender file he manually has to connect the textures with the objects.
Is there any way he can just simply open the .blender file with everything ready to go?

https://blender.stackexchange.com/questions/56683/moving-all-files-to-a-new-computer-my-concern-is-links/56689#56689 https://blender.stackexchange.com/questions/47576/how-can-i-move-a-project-that-includes-images-as-planes/47586#47586

You can pack all textures into blend file from menu: File > External Data > Pack All Into .blend
Then save file and it should work.


text:
Snap two nearly identical objects exactly together
I have two objects that were originally the exact same object.  I duplicated one, and then made changes to it, rotated it, cut it, etc...
I'd like to overlap it with the original (both objects pictured here):

And, regarding everything but the things I changed on purpose, I'd like it to overlap exactly.  I.e. not simply really close with trial and error of rotating, but for instance if I could pick 3-4 vertices on each object and have them snap to each other, that would be great.   Any idea how to do this?

Went hunting for a script I have  for this. select a corresponding face and vert (of same face) on each mesh.  then snaps one object to other.  Anyhoo looks like you got there with snapping.

@batFINGER would still love to see it for future problems if you could find it easily

If you haven't applied any of the transforms on your duplicate, pressing Alt+G should put it back where the original object was. Repeat that shortcut replacing G by R then S to cancel object rotation and scaling.
On the other hand, if you have applied transforms (with Ctrl+A), or selected all vertices then moved everything in edit mode, or moved the duplicate's origin in any way, then you will have to play around with the set origin and the cursor snap option. I would do it like this:

In Edit mode select one vertex from your duplicate (one that hasn't changed position), then press Shift+S and click on "Cursor to Selected"
In Object mode go to Object > Set Origin > Origin to 3D Cursor
Select the original object and in Edit mode select the same vertex, then like in the first step set the cursor to that vertex.
Back in Object mode select the duplicate and do Shift+S and click on "Selection to Cursor"

But...
... exactly overlapping faces don't get along. They usually fight over which one should be displayed and when Blender doesn't find a clear winner it ends up showing a bit of both which looks glitchy and wrong. One way around that is to scale up a tiny bit the part you want to show. Or even better, delete that part of the original mesh, then you can even merge back the two objects into one.

Thank you.  As far as displaying faces visually, I'm less concerned about that (and the rendering/etc...), this is for 3d printing eventually and I'm using the overlapping pieces to design surgical cutting guides.
Your method  of "cursor to selected" etc... is perfect.


text:
BlenderGis get SRTM
I'm running Blender 2.80 and I installed the latest BlenderGis download.  I am following this video tutorial to download data and it works MOSTLY.  I can download a basic map, download OSM building data, etc..   but whenever I try to get SRTM elevation data, I get the error:  "Cannot Reach Open Topography Web service, check logs for more info"
1-  How the heck do you check the logs?
2- anyone ran into this error before?  Any ideas.  I couldn't find anything when googling.

You can reach the console by going to Window (top left corner) > Toggle System Console. Please update with what the error is. You may also have a common problem, did you check the github troubleshooting section ? https://github.com/domlysz/BlenderGIS/issues or https://github.com/domlysz/BlenderGIS/issues/268 this seems to be the same issue. You may have to disable filmic-blender ?

@Gorgious It happens at the same time but unfortunately I am still confused.  Filmic blender is an add-on correct?  i don't believe I ever installed that.  If its not an add on, how do I turn it off?
Also, when I open the system console the way you suggest, nothing ever changes.  It just says "building mosaic" the whole time.  I can send you screenshot if you need

@Gorgious Edit.  Got the log to show stuff finally, error was: ERROR:BlenderGIS-master.operators.io_get_srtm:112:Http request fails url:http://opentopo.sdsc.edu/otr/getdem?demtype=SRTMGL3&west=-71.44609179665251&east=-71.3651874989&south=41.7938880985195&north=41.830642001628284&outputFormat=GTiff, code:403, error:Forbidden      Annnnd I just figured it out.  My internet firewall is blocking that website

As simple as that ! Would you mind adding it as an answer and mark it as accepted so that other people can see it too if they stumble upon the same error ?

Log showed this error:
ERROR:BlenderGIS-master.operators.io_get_srtm:112:Http request fails url:opentopo.sdsc.edu/otr/…, code:403, error:Forbidden
Turns out my company firewall was blocking the open topographry website, when i connected to my phone as hotspot it worked great.


text:
Is there a good tutorial for creating an animation where different meshes replace each other?
This seems like a basic question so please feel free to point me to where it has been answered, but I must not now how to google it because I can't find a good answer.
I have a scene with two types of objects in it pictured below,
1- A clear container object that will not change in any way
2- 40 nearly identical meshes that I'd like to replace each other in an animation.  I.e. Show the first one, hide it, show the second, hide it, etc...

I got this data from a different program.  Is there a good guide out there on how to do that?  Any tips?

Maybe look for "Morphing" objects with either the "Shrinkmap" modifier, with "Shape keys" or with particles forming to the desired shape.
(Google: morph object blender ... (+ shrink map / shape keys / particles)

From my understanding the shrinkwrap morphing won't work because there's a different amount of objects/triangles/etc... in each mesh.  Am I correct that's a problem?  I think there's enough meshes in this that I don't need to worry about the transition between each one.... if it could just disappear and the next one comes in thats fine.

Hi @Joe, please note that this question falls short of expectations on [blender.se], please read [ask].  Specifically asking for a link to a tutorial constitutes a lack of research and googling.  With some editing you could turn this around.

Figured out you can keyframe the visibility of the object in the render.  So I can turn off the visibilty of everything but the first one, then in the second frame turn off the visibility of everything but the second, etc...Like this link: https://i.sstatic.net/V8ZYW.jpg


text:
Shrinkwrap a mesh without "squishing it" for 3d printing, blender 2.8
questions similar to this have been asked on here, but either it was prior versions of Blender and buttons are missing now, or it didn't exactly answer it.
What I'm trying to do is apply a "decal" of sorts to a mesh that I would like to 3d print.  My printer can handle multiple stl files at one time, and in the printer software I can select which stl gets which color, etc..
So I have this scene:

and what I'd like to do is "shrinkwrap" the logo onto the blue curved object in the background.  If it was simply to render, I'd be close to being done.  I can shrinkwrap it and it kinda works:

it turned into a blob, but at least it did what I expected (it shrankwrapped).  The problem is, this new object is infinitesimally thin and I need it to have at least some thickness (so I can assign colored ink to it in my printer).  How can I do that? I.e. how can I not totally flatten it. And ideally using something like shrinkwrap so it would work in other scenarios with possibly more extremely curved backgrounds.
When I try the solidify modifier it turns into a blob, and when i try to just select one side of it via edit mode and then extrude, for some reason it can't select properly.
One other option I've tried is to import the logo .png as a plane and shrinkwrap that.  The result LOOKS much better:

but then I run into the problem of making it "thicker" to be able to print.  When I solidify the object, the entire plane (including transparent parts) thickens, and that would just translate to a big clear square in my printer.
One other avenue that may work (but maybe should be its own question) is that if I could somehow "embed" the logo into the material or texture of that blue object, I could save it as an .obj and my printer can handle that.  So if there are guides on that I am open to it as well.
Thank you!

This could be a duplicate.. do you want the whole object to be a single manifold when done, though?

Don't believe its a duplicate because I want it to remain a separate object I can choose a different color for, not just embossed shape

It's there, I think? make sure the logo is subdivided enough to deform, give it a 1-layer (thin) Lattice Deform modifier, and shrink wrap the Lattice, rather than the logo.


text:
Connect multiple vertex pairs
I would like to have a script that connects multiple pairs of vertices.
My selection order is vertex-13, vertex-14, vertex-11, vertex-9, vertex-19 and then vertex-16.

And the result is supposed to look like this:

An operator that can handle this kind of cases:

The code checks:

if we have an even number of vertices selected
if they share one face

If one of these conditions is not respected, it will do nothing.
The principle is to identify the two "ranges" of vertices and to apply bmesh.ops.connect_verts for each pair in these ranges.
If where to start is unpredictable, you can slide the index that will be choosen as starting point:

Here is the commented code. The operator menu is at the end of the vertex menu in edit mode.
import bpy, bmesh

# Get face and selected vertex count
# Also checks if we have a good selection
def join_vertices_prepare(bm):
    selected_vertices = [v for v in bm.verts if v.select]
    vertex_count = len(selected_vertices)

    # need even number of vertices
    if vertex_count == 0 or vertex_count % 2 != 0:
        print( "excepting an even number of vertices" )
        return None, vertex_count, 'ODD'

    # need one shared face
    s = set(selected_vertices[0].link_faces)
    for v in selected_vertices:
        s = s.intersection(v.link_faces)
    if len(s) != 1:
        print( "vertices should share a unique face" )
        return None, vertex_count, 'FACE'

    face = list(s)[0]

    return face, vertex_count, 'OK'

# Join vertices
def join_vertices(object, slide):
    # get a bmesh from the object data
    bm = bmesh.from_edit_mesh(object.data)
    face, vertex_count, error = join_vertices_prepare(bm)

    # no face found
    if face is None:
        return error

    half_count = vertex_count / 2
    first_verts = []
    second_verts = []

    unselected_i = 0
    # get the first unselected vertex
    for i, v in enumerate(face.verts):
        if not v.select:
            unselected_i = i
            break

    # loop around the face vertices
    for i in range(0, len(face.verts)):
        # get a vertex starting at unselected position
        v = face.verts[(unselected_i + slide + i) % len(face.verts)]
        # if the vertex is selected
        if v.select:
            # either goes to the first list
            if len(first_verts) < half_count:
                first_verts.append(v)
            # or to the second
            else:
                second_verts.append(v)

    # connect opposite pairs
    for v1, v2 in zip(first_verts, reversed(second_verts)):
        bmesh.ops.connect_verts(bm, verts=[v1, v2])

    bmesh.update_edit_mesh(object.data)
    object.update_from_editmode()

    return 'OK'

def main(context, slide):
    return join_vertices(context.active_object, slide)

class JoinOppositeVertices(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "mesh.join_opposite_vertices"
    bl_label = "Join opposite vertices"
    bl_options = {'REGISTER', 'UNDO'}

    slide: bpy.props.IntProperty( min = 0, soft_min = 0 )

    @classmethod
    def poll(cls, context):
        active_obj = context.active_object
        return active_obj is not None and active_obj.mode == 'EDIT'

    def execute(self, context):
        result = main(context, self.slide)
        if result != 'OK':
            message = ''
            if result == 'ODD':
                message = 'An even number of vertices is needed'
            elif result == 'FACE':
                message = 'Vertices must share one face'
            elif result == 'UNSELECTED':
                message = 'At least one vertex of the face must be unselected'
            self.report({'INFO'}, message)
        return {'FINISHED'}

def menu_func(self, context):
    self.layout.operator(JoinOppositeVertices.bl_idname, text=JoinOppositeVertices.bl_label)

def register():
    bpy.utils.register_class(JoinOppositeVertices)
    bpy.types.VIEW3D_MT_edit_mesh_vertices.append(menu_func)

def unregister():
    bpy.utils.unregister_class(JoinOppositeVertices)
    bpy.types.VIEW3D_MT_edit_mesh_vertices.remove(menu_func)

if __name__ == "__main__":
    register()

So far very good, the only thing I would like to remove the check if the vertices share the same face. Sometimes you need to connect vertex pairs that do not share a face but I was not able to do it myself

That can make it much more complicated... if not the same face, I don't think there is some rules that can indicate in which way (through which faces) the junction should be done (?)

Give it a try manually using the J key.

A script that I used some time ago just used the Blender internal bpy.ops.mesh.vert_connect_path() for that and I was able to work with that

FYI, bpy.ops.mesh.vert_connect_path() is what is called with the J key. Testing it manually on simple cubes does not leads to good or predictable results. That's why I did no enhancement of the script for now.

I do not run into any problems using bpy.ops.mesh.vert_connect_path() thats why I asked for a solution with this function

OP here. I eventually figured it out:
import bpy
import bmesh

def connect_vertex_pairs():
    # Get the active object
    obj = bpy.context.active_object

    #Check if the object is a mesh
    if obj and obj.type == 'MESH':
        #Get the mesh data
        mesh = bpy.context.edit_object.data

        #Create a BMesh
        bm = bmesh.from_edit_mesh(mesh)

        #Get selected vertices
        selectedVertices = [v for v in bm.verts if v.select]

        #Save selected vertices in selection order
        history = []
        for i in bm.select_history:
            history.append(i)

        for i in range(0, len(history), 2):
            #deselect all vertices
            for vertex in bm.verts:
                vertex.select = False
            # Connect selected vertex pairs
            for vertex in bm.verts:
                if vertex.index == history[i].index:
                    vertex.select = True
                if vertex.index == history[i + 1].index:
                    vertex.select = True

            bpy.ops.mesh.vert_connect_path()
            bmesh.update_edit_mesh(mesh)

        #restore selection
        for i in range(len(selectedVertices)):
            for vertex in bm.verts:
                if vertex.index == selectedVertices[i].index:
                    vertex.select = True

        #restore active
        bm.select_history.add(history[-1])

connect_vertex_pairs()

Thanks for this answer. And by the way thanks also for the bounty (that was not an obligation)!

I assume you make the initial selection manually in the correct order.
If that's the case you don't need a script to perform this connection.
You need two sequential Mesh operations in Edit Mode:

Vertex - > Connect Vertex Path (J) to connect the vertices in the order of selection and
Face - > Tris to Quads (Alt J) to join triangles into quads.

If you still need to perform this process by running a script you could use this simple script:
'''
Connect vertices with edges based on manual selection sequence
and perform pair-wise convertion of triangles to quads
'''

import bpy

# Make sure you have a 3D View window visible with the object
# selected - preferrably in Edit mode

for area in bpy.context.screen.areas:
    if area.type == 'VIEW_3D':
        bpy.ops.object.mode_set(mode = 'EDIT')
        bpy.ops.mesh.vert_connect_path()
        bpy.ops.mesh.tris_convert_to_quads()

Note, that it is not a fool-proof script, just the bare minimum helper script.
If you execute it on different objects and situations it may raise an error.


text:
How to use set render region with python, without setting borders?
When I use the Set Render Region via the search menu, I instantly get the setting where I can set the region with mouseclicks, but when I run the following code
import bpy

#override context, only to run command from text editor:
override_context = bpy.context.copy()
area = [area for area in bpy.context.screen.areas if area.type == "VIEW_3D"][0]
override_context['window'] = bpy.context.window
override_context['screen'] = bpy.context.screen
override_context['area'] = area
override_context['region'] = area.regions[-1]
override_context['scene'] = bpy.context.scene
override_context['space_data'] = area.spaces.active

bpy.ops.view3d.render_border(override_context, wait_for_input=True)

nothing happens. I dont want to hardcode the borders, I want it to work exactly like when I use the Set Render Region command from the search menu.

EXEC_DEFAULT is used by default, running only the execute() method, but you may want the operator to take user interaction with INVOKE_DEFAULT which will also call invoke() if existing:
bpy.ops.view3d.render_border(override_context,'INVOKE_DEFAULT', wait_for_input=True)

https://docs.blender.org/api/current/bpy.ops.html
BTW, You can use new context override method, which makes code a little bit clear:
import bpy
from bpy import context

area = [area for area in bpy.context.screen.areas if area.type == "VIEW_3D"][0]

with context.temp_override(area=area, region=area.regions[-1]):
    bpy.ops.view3d.render_border('INVOKE_DEFAULT', wait_for_input=True)


text:
Warning: 'CLASS_NAME' doesn't have upper case alpha-numeric prefix
I always get the following error

Warning: 'ABC_Fbx_PT_Panel' doesn't have upper case alpha-numeric prefix

But I don't really get why...
That is my code:
import bpy
from bpy_extras.io_utils import ExportHelper
from bpy.props import (StringProperty, CollectionProperty,)
from bpy.types import (Operator, OperatorFileListElement,)

class WorldOriginExport(Operator, ExportHelper):
    bl_label = 'Export'
    bl_idname = 'test.world_origin_export'
    bl_options = {'PRESET', 'UNDO', 'REGISTER'}
    files = CollectionProperty(name = 'File Path', type = OperatorFileListElement,)
    directory = StringProperty(subtype = 'DIR_PATH',)
    filename_ext = ''

    def draw(self, context):
        layout = self.layout
        layout.use_property_split = False
        layout.use_property_decorate = False  # No animation.
        sfile = context.space_data
        operator = sfile.active_operator

    def execute(self, context):
        return {'FINISHED'}

class ABC_Gltf_PT_Panel(bpy.types.Panel):
    bl_space_type = 'FILE_BROWSER'
    bl_region_type = 'TOOL_PROPS'
    bl_label = 'glTF Embedded / Separate'
    bl_options = {'DEFAULT_CLOSED'}

    def draw(self, context):
        layout = self.layout
        layout.use_property_split = True
        sfile = context.space_data
        operator = sfile.active_operator

    @classmethod
    def poll(cls, context):
        sfile = context.space_data
        operator = sfile.active_operator
        return operator.bl_idname == "TEST_OT_world_origin_export"

class ABC_Fbx_PT_Panel(bpy.types.Panel):
    bl_space_type = 'FILE_BROWSER'
    bl_region_type = 'TOOL_PROPS'
    bl_label = 'FBX'
    bl_options = {'DEFAULT_CLOSED'}

    def draw(self, context):
        layout = self.layout
        layout.use_property_split = True
        layout.use_property_decorate = False  # No animation.
        sfile = context.space_data
        operator = sfile.active_operator

        if operator.fileType == 'GLTF_SEPARATE':
            layout.enabled = False
        elif operator.fileType == 'GLTF_EMBEDDED':
            layout.enabled = False
        else:
            layout.enabled = True

    @classmethod
    def poll(cls, context):
        sfile = context.space_data
        operator = sfile.active_operator
        return operator.bl_idname == "TEST_OT_world_origin_export"

def register():
    bpy.utils.register_class(WorldOriginExport)
    bpy.utils.register_class(ABC_Gltf_PT_Panel)
    bpy.utils.register_class(ABC_Fbx_PT_Panel)

def unregister():
    bpy.utils.unregister_class(ABC_Fbx_PT_Panel)
    bpy.utils.unregister_class(ABC_Gltf_PT_Panel)
    bpy.utils.unregister_class(WorldOriginExport)

if __name__ == '__main__':
    register()
    bpy.ops.test.world_origin_export('INVOKE_DEFAULT')

The part before _PT_ must be uppercase alphanumeric to suppress the message (no special characters). You can use whatever for the part after it though, snake_case is advised by Blender guidelines (mixed case is supported too).
https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Addons#Naming
You could rename your class names to:
ABC_PT_Gltf and ABC_PT_Fbx. The _PT_ part means it is a panel class so there is no need to write it again afterwards in my opinion.


text:
Convert vertex color to a vertex group
I have an object with a vertex color

and I would like to convert it into a vertex group but I don't know how.
A script solution would be fine as well.

did you try geometry nodes?

you need a vertex group and a color attribute.

a bit more steps how to set it up would be useful for other people with the same problem but I got to work


text:
Replace duplicate textures with exisiting one in Python
I have two objects with different shaders on it, but with the same texture piped in.
I need to replace the texture with the .006 with the original one by code.
How do I do that?

It supposed to look like this, you see that they share the same texture because of the small 2 next to the textfield.

My code so far:
import bpy

for material in bpy.data.materials:
    if material.node_tree:
        for x in material.node_tree.nodes:
            if x.type == 'TEX_IMAGE':
                xSplit = x.image.name.split('.')
                imageName = xSplit[0]
                if xSplit[-1].isdigit():
                    originalName = xSplit[0] + '.' + xSplit[1]
                    print(originalName)
                    #This does not work:
                    x.image.name = 'static_deckchair_plastic_BaseColor.jpg'

You would have to assign the image (not the name) to ImageNode.image

Try this
import bpy, re

def get_original_name(name):
    """When name looks like 'X.001', return 'X'. Otherwise None."""
    i = name.rfind('.')
    if i != -1:
        suf = name[i+1:]
        if len(suf) == 3 and suf.isdigit():
            return name[:i]
    return None

for material in bpy.data.materials:
    if material.node_tree is None:
        continue
    for node in material.node_tree.nodes:
        if node.type != 'TEX_IMAGE':
            continue
        if node.image is None:
            continue
        original_name = get_original_name(node.image.name)
        if original_name is None:
            continue
        if original_name in bpy.data.images:
            node.image = bpy.data.images[original_name]

I don't quite get what the "re.match(r'^(.+).\d\d\d$', node.image.name)" does or rather hot it works, but the scripts works fine

Further reading: https://developers.google.com/edu/python/regular-expressions @Lala_Ghost

A regex is just an easier way to write the split/isdigit code you have. I rewrote it without it for you.


text:
Every object is is_property_readonly in python
When I create a cube, have it select and run the script
import bpy

selection = bpy.context.selected_objects

print(bool(selection[0].is_property_readonly))

it outputs "True".
I would have guessed that it outputs "False" but it does not. Why? My goal is to test if an object is linked from a different Blender file and because of that I cannot edit its name.

is_property_readonly is a method, and bool(method) return True
import bpy

print(bpy.context.selected_objects[0].is_property_readonly)

# >>>> <built-in method is_property_readonly of Object object at 0x000001F9CA43AE40>

Check if name is read only:
ob.is_property_readonly("name")
# >>>> True/False

To test whether an object is editable, you can use the following function
def is_library_editable(ob):
    if hasattr(ob, "library") and ob.library:
        return False
    if hasattr(ob, 'override_library') and ob.override_library and ob.override_library.is_system_override:
        return False
    return True

If something wrong, please point them out.

you can check if other properties are readonly as well, in this case is the "node" an imageTextureNode
node.is_property_readonly('image')


text:
Saving via python does not add file to Recent Files
I wrote my save function so it automatically changes its name based on the date and I want it to be added to the Recent Files menu.
When I save my file via python like this:
import bpy
import getpass

filepath = "C:\\Users\\" + getpass.getuser() + "\\Desktop\\"
name = 'test'
bpy.ops.wm.save_as_mainfile(filepath = filepath + name + '.blend')

The file will not be added to the Recent Files menu, but when I save it manually via the File > Save command it will be added the Recent Files menu.
It does not change even if I immediately open the newly saved scene via:
bpy.ops.wm.open_mainfile(filepath = filepath + name + '.blend')

Is there a way to add my scene, that was saved by script, to the Recent Files menu?

Blender stores your recent files in a txt file, [1][2] located in your OS' .config/blender/version/config/ folder. So once you save it, you just manually prepend the filepath to the beginning of that txt file and reread it in.
import bpy
from pathlib import Path

# recent files stored in a text file in your .config folder

recent_files = "C:\\Users\\<Userbane>\\AppData\\Roaming\\Blender Foundation\\Blender\\<your-blender-version>\\config\\recent-files.txt"

save_path = Path('C:\\Desktop\\my_blend.blend')
bpy.ops.wm.save_mainfile(filepath=save_path)

# add the blendfile path to the recent-files.txt
with open(recent_files, 'r+') as f:
    contents = f.read()
    f.seek(0,0) # go to beginning of file
    if save_path.is_file():
        newfile = save_path.resolve().rstrip('\n\r') + "\n" + contents
        f.write(newfile)
    else:
        print("File did not save correctly.")

# reread file history
bpy.ops.wm.read_history()

Based on Jakemoyo's answer. Changed a bit to work for Windows and getting username and Blender version by itself:
import bpy
from pathlib import Path
import getpass

blenderVersionFolderName = '3.3'
blenderVersion = bpy.app.version_string
if blenderVersion[-1] == '0':
    blenderVersionFolderName = blenderVersion[:-1]
if blenderVersionFolderName[-1] == '.':
    blenderVersionFolderName = blenderVersionFolderName[:-1]

recent_files = 'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\Blender Foundation\\Blender\\' + blenderVersionFolderName + '\\config\\recent-files.txt'

save_path = Path('C:\Desktop\my_blend.blend')
bpy.ops.wm.save_mainfile(filepath=save_path)

# add the blendfile path to the recent-files.txt
with open(recent_files, 'r+') as f:
    contents = f.read()
    f.seek(0,0) # go to beginning of file
    if save_path.is_file():
        newfile = str(save_path.resolve()) + '\n' + contents
        f.write(newfile)
    else:
        print("File did not save correctly.")

# reread file history
bpy.ops.wm.read_history()

Here's an alternate version that uses the %APPDATA% variable on windows instead of getpass and fixes the blenderVersionFolderName variable scope error.
import bpy
from pathlib import Path
import os

new_filename = "C:\\some\\path\\foo.blend"
clean_filename = bpy.path.native_pathsep(new_filename)
bpy.ops.wm.save_as_mainfile(filepath=clean_filename)

# add the blendfile path to the recent-files.txt
blenderVersion = bpy.app.version_string
blenderVersionFolderName = "3.2"
if blenderVersion[-1] == '0':
    blenderVersionFolderName = blenderVersion[:-1]
if blenderVersionFolderName[-1] == '.':
    blenderVersionFolderName = blenderVersionFolderName[:-1]
recent_files = os.getenv('APPDATA') + '\\Blender Foundation\\Blender\\' + blenderVersionFolderName + '\\config\\recent-files.txt'
save_path = Path(clean_filename)
with open(recent_files, 'r+') as f:
    contents = f.read()
    f.seek(0,0) # go to beginning of file
    if save_path.is_file():
        newfile = str(save_path.resolve()) + '\n' + contents
        f.write(newfile)
    else:
        print("File did not save correctly.")
bpy.ops.wm.read_history()


text:
Which value does scrolling in the shader change?
When I hover with the mouse over the color changer, see the screenshot, and then scroll, the values are changing in a very strange pattern. It is neither only hue, saturation or value, but all of them? Is this a bug?

if you change the position of the dot in the circle il will change the hue and saturation but not the value, you can change the value with the black and white gradient bar on the right of the circle

When I use the black and white gradient bar on the right of the circle the hue, saturation and value change, even though it's tooltip is "Value"

yes I've never noticed that, whereas if you change the value itself it won't make hue and saturation move, so I guess the gradient bar is not 100% the value, I hope someone will give a technical answer

Scrolling while hovering the wheel acts on RGB values, not HSV. More precisely, it increase/decrease the value of each RGB component by ~20%, until one of them reach 1.0 or 0.0. (The same logic applies when you use the gradient bar)
By increasing the value of each RGB component, we of course increase the HSV Value, which is the value of the highest component, red in your case.
Now, if you look at your values, red is 0.523 and blue is only 0.025. By increasing each by 20%, we add way more red than blue, so the Hue and Saturation will change.
Please note that this is only empiric deduction by playing with the values. I didn't check the code so maybe I miss some important things.

The gamma corrected (sRGB) hex value jumps by $$255÷20 = 12{3\over4}$$ which means every 4 scroll steps it changes exactly by $51 = $ 0x33: https://i.imgur.com/LZAHk2P.gif

So if I understand correctly, in sRGB the steps are fixed. Then it would be the conversion in linear RGB, that give bigger steps for higher values ?

yes, sRGB is perceptually linear, and we perceive changes in brightness in a logarithmic scale.


text:
Align to normal vector with python
I was looking to orient an object to a selected active face of another object in Blender 3.2.

Already found other similar questions, but none worked:
Align to face normal vector (took code from here)
Align Object A to Object B to their respective active faces with python
Python script get face normal, then set it as another object's orientation (Z-axis) accordingly
The code so far(thanks to batFinger, slightly changed, since multiplication of vectors and matrices is now performed with a @, swince Blender 2.8+):
import bpy
from mathutils import Matrix, Vector
import bmesh
context = bpy.context
obj = context.edit_object
mw = obj.matrix_world.copy()
bm = bmesh.from_edit_mesh(obj.data)
# for this example jmake a face active
face = bm.select_history.active
o = face.calc_center_median()
# calculate the axis dif in local coords

axis_src = face.normal
# local z-axis
axis_dst = Vector((0, 0, 1))

matrix_rotate = mw.to_3x3()
matrix_rotate = matrix_rotate * axis_src.rotation_difference(axis_dst).to_matrix()
matrix_translation = Matrix.Translation(mw * o)

obj2 = context.scene.objects.get("Cube.001")
obj2.matrix_world = matrix_translation * matrix_rotate.to_4x4()

The script expects a second object called Cube.001.

As far as I understood, correct script is:
import bpy
from mathutils import Matrix, Vector
import bmesh
context = bpy.context
obj = context.edit_object
mw = obj.matrix_world.copy()
bm = bmesh.from_edit_mesh(obj.data)
# for this example jmake a face active
face = bm.select_history.active
co = face.calc_center_bounds()
axis_src = face.normal

# normal to rotation:
rotation  = Vector((0,0,1)).rotation_difference(axis_src)

obj2 = bpy.data.objects["Cube.001"]

# Set Rotation:
obj2.rotation_mode = "QUATERNION"
obj2.rotation_quaternion = obj.matrix_world.to_quaternion() @ rotation

# Set Position:
obj2.location =  obj.matrix_world @ co

The script works, but if you test it on several faces on a sphere you see that the rotation does not always match

Oh. I think these 2 items need to be flipped: rotation  = Vector((0,0,1)).rotation_difference(axis_src)

How do you mean flip? Can you update your answer? :)

@Lala_Ghost I've updated

There are still a few degrees difference to when I face-snap a cube with "Align rotation to Target" enabled, about 1°


text:
Aligning two edge loops
I'm new on character modelling, from the tutorial videos, I realized that the vertices at the center of the eye formed an edge loop when selected through Alt+Right Mouse Click.

Another example:

I'm assuming that good topology should have the effect above.
But mine do not occur in that way, when I select the bottom edge loop:

When I select the upper edge loop:

The effect I want to achieve is:

However my edge loops do not connects as one. Could anyone points out the problems causing this and provide some solutions to it?
I will be greatly appreciate to anyone whom responded, thank you!

You mentioned some videotutorials. Could you add the link so we can see them? BTW, if there is no edge, there is no edgeloop. My guess would be they are just hiding the edges of the faces in the eye with a Mask modifier.

Here, https://youtu.be/EcjT-wGYVns. It mentioned during 8:30~8:50.

The answer is easy. Blender has no idea which edge loops you consider to be connected. In Blender, connected means there have to be edges between the verts. Your top and bottom edgelines are not connected and logical, implied connections do not count. The local symmetry of the topology of your eyes isn't picked up by the selection tool.
You can use Box-, Lasso- or Circle Select or you can add to the selection using Loop Select more than once, SHIFTALTRMB. If you needed a certain selection a lot, you could even assign the verts to a vertex group and select them that way. But Loop Select will not bridge gaps. Your topology is not to blame.

I think of that way but I'm not sure before, and thanks. :)

I can do this with viewport clipping:

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


text:
Removing Doubles Destroy Topology
Problem:
When two vertices are being too close to each others, during the operation of "Remove Doubles", they merged together as it considered as a single vertex. It happens during my organic modelling, picture below shows before and after removing the doubles from my part of my mesh. Preserving quads topology is the primary, is there a solution to this problem?

Constraint:
This part of the mesh is limited to this size proportion. In other words, it's not rational to just scale up these faces to avoid the problem.
Assumption:
I assumed ensuring no doubles exists is important for avoiding the problem of "Bone Heat Weighting:Failed to find solution for one or more bones." during parenting mesh to rigs with automatic weights.
Solution tried:
Scaling up the mesh by factor of 10 or 20, but it doesn't help in blender to not consider the vertices as doubles.

From what I have seen, you should try adjusting the merge distance. This can be found in the bottom of the tools panel after you remove doubles.

This process will adjust the limit for considering something a "double".

That helps, Thank you!


text:
Displacement Map (Micropolygon Displacement) displaced weirdly
I'm currently learning the process of baking displacement map through blender render in the version of blender 2.79.
Problem:
I find that the result using node for displacement map isn't very promising with those block-ish surface, while Displace modifier works fine, does anyone know the reason behind this?
Reason of one is preferable than the other:
I'm trying to get the node method to work since I've encountered problem with Displace modifier, it not only displace the differences on the character, like abs muscles, but deformed the others unchanged muscles like the mouth and face... Therefore I'm hoping that solving a simple case would solve the complex one.
Two Blend files are included in the link below:

DisplacementMapNode - Referring to the Displacement map node set up.
Displace Modifier - The displace modifier set up.

If the displacement map is missing, please do leave a message, i'll upload it as soon as possible, although I believe I packed it into those blend files.
Any explanation would be deeply appreciated as I have tried to solve this issue for a day, Thank you and have a nice day modelling!
BlendFiles

You have forgot Material Settings Displacement set True

Also you able to manipulate displacement by Math nodes.

I tried to set it to true or both last night, it didnt work, turns out the problem is my version of blender, v2.79.7. I changed it to 2.79 public release and it works. It is just that the displacement is too shallow, the math node multiply is not affecting the strength of the displacement map, why is this happening? do you have any idea?https://jp410-my.sharepoint.com/:u:/g/personal/mac281_office2016_club/EU6HEVgaTPtJpcYl6dW8ILgByIqh1I3VjQwlcrIzksAUwQ?e=l8o8ve


text:
Baking Andrew Price's Donut in order to 3D Print
Long story but I'll try to bullet point it to make it simpler:

I have a fancy 3d Printer that can print 500,000 colors.  See my question here for a photo example.
In that question I brought up that I was having trouble UV unwrapping and baking objects, the texture wouldn't export and couldn't be viewed in my printer software.
Well, with a simple cube I finally figured that out.
I'd like to 3d print Andrew Price's donut.  Seen here:  https://www.youtube.com/watch?v=rKPSB8tcXhQ
Here's my version of it, check it out:

There's multiple objects so I was having trouble figuring out how to bake them and export as one .obj (the file format my printer can use), until I read this guy's question on here.  He's also trying to bake the donut.
The suggestion to "join" them all into one object definitely helps with the unwrapping, but here's the problem:
When I "join" them all into one object, the icing gets turned into one color like this:

This same problem happens when I try to get it to my printer in other routes, i.e. exporting it as gltf, opening it in other software and having them export it as an obj.  I've actually been able to load it in my printer software like this:    but as you can see, icing is all one color (well, it lost it's color).

So my question is:  how can I either bake it, or convert it somehow into an .obj file that doesn't lose any textures or colors from the original donut.

That can't be one of your first models, can it?  It's really good.

Thanks.  Eh, it's only really good because I followed his tutorials pretty much to the letter.  His wood floor one, donut one, and some other guy's tutorial on lighting.  If you asked me to make anything form scratch it'd be much worse.

Still, you're off to a good start.  I like the dougnut cake material.  I don't know anything about 3d printing so I can't help you there, I just wanted to comment on the image. :)


text:
Create a "spiral fracture" in a metacarpal stl file I have for printing
I have a few 3d printers and I have access to a digital model of a metacarpal bone that I got from ct scan.  The metacarpal was brought into blender as an .stl and looks like this:

I'll be printing various versions of this bone with simulated fractures for med students to practice fixing and so far these fractures have been produced either manually in real life by breaking them or by simply using the bisect tool in blender to chop it.  I want to get a little fancier and try to duplicate something like this:

I've attempted adding a mesh, squishing it into a long strip and then using the deform modifier to twist it, at which point I boolean difference them, but it doesn't seem to be quite right.  Do I keep tinkering with that process or does anyone have better ideas?  What would be simplest and best way to do this?  Keeping in mind it'll have to stay manifold for 3d printing.

Are there some medical papers provide the breaking bone formula for it? You might want to reproduce that formula and use that plane for your cutting process. Since you are going to use it as medical teaching material, need to be a little bit precisely job.

And the boolean modifier is not reliable in complicated mesh and overlapping mesh. You might want to scale down the Overlapping threshold (maybe 1-e10) in bool-mod for more precise result.


text:
Specific view difference between 2.79 and 2.8
I downloaded a .blend file that is a model of an eyeball.  When I first load it up in 2.79, right when it opens, before I do anything to it, it looks like this:

When I open the exact same file in 2.8, again before I touch it at all, it looks like this:

I figured it had something to do with the "method to display/shade objects in the 3d view" selection, but for instance I can put both 2.79 and 2.8 on "rendered" and the 2.79 eye will look fine, 2.8 will look weird.
The blend file is here if you'd like to mess with it: https://drive.google.com/open?id=1mdDOiJLUsz_H5Lsq2eK7vZLwRKuM2ak4
I'm sorry if this is an obvious question.

The material use in Blender Renderer is not the same thing in cycles. 2.80 did not have the same system that can support old BI but only cycle EEVEE node based material

There are some addons that can help you to transfer material between BI and Cycles(with a mess, of course)

You are using the Blender Internal rendering engine, which doesn't exist in 2.80. Therefore the viewport in 2.80 can't render any of the materials you gave the object. In order to render it in 2.80 you have to convert the materials to cycles/eevee materials (both of which are essentially congruent, so there is no difference).


text:
Rotate edges in global space around their first vertex in Geometry Nodes
I have some mesh edges and would like to rotate them around a global Z, using their first vertex as the origin for that rotation. So far the setup has a couple successes: I can rotate around the correct vertex, and converting the edges to curves lets me use their tangent vector to throw some arrow-like cones on their points. However, you can see the problem below.

First, although I can rotate around Position 1 of an edge, there's a jump to a new position. How do I offset this so that the rotation starts from the default position?
Second, the rotation is off. Ideally, it would be rotating around a local Z, as if each edge were an object whose origin was at Vertex Position 1.

Why are you normalizing position vector?

If your question has been solved, please be so kind and mark the answer that contributed to the solution as "Accepted answer" so that this question will not continue to be displayed as unsolved. Thank you! Here you can find more information: What should I do if someone answers my question?. If you still haven't gotten a solution to your question, please be kind enough to address it.

You can solve this as follows:

Here I simply rotate the vector around the Z-axis, and then add the original position .
But to make this work and not rotate all points at the same time, I use a selection that selects only one of the two points.

That worked! I used this and got it to affect each edge with good ol' modulo 2 on the index.


text:
Geometry Nodes: Constrain instances on faces to the bounds of each face
I'd like to instance a vaguely square-shaped object onto each face of an input mesh. I can rotate the instances to fit the face normals and scale them to fit the face area, but I'd like each instance to deform to the 4 corners of whatever face they're instancing on. Is there a way to do this?

In this image you can see the 4 corners of the instance object, and the bounds of faces I'd like those to align to. My working theory is there may be a way to output a UVMap attribute per face, then transfer that attribute to the instances.

Yes, of course there is a possibility. However, I would not recommend this procedure. If you subsequently adapt such a geometry to any other object, this always results in a distortion of the geometry. Is that what you want? Maybe you can share your blend file so that we can get a better picture and help you to achieve your goal in a different way.

Not a real answer, but the ideal solution is coming soon in the form of the Tesselate node https://developer.blender.org/D13515


text:
Geometry Nodes: Get the neighboring vertices of endpoint vertices
I am using Vertex Count: Vertex Neighbors to generate a selection based on the endpoints of a series of mesh lines, then do something with that selection. My problem: how do I ALSO get the NEXT vertex? Or to put it another way, how do I convert that selection to edges that include said vertices?
In the image below, I have circled in blue the verts that I would like to include for the Set Position node. The sphere/instance on point is just for visualization. The use-case for this will include edges of arbitrary start and end positions, vertex counts, and distances between vertices, so it need to affect the circled vertices by index, not by position or proximity to the endpoint verts.

GN Curves offer you a very convenient Endpoint Selection, for this case, with a variable range. So you can convert to a curve, capture the selection, and convert back to a mesh.

You can make use of the selection as edges, further down the tree:

Thank you, a perfect little answer! I knew it was going to be something ridiculously simple I was missing just in my periphery.


text:
Geometry Nodes: Affect only the fillet of a fillet curve, such as averaging the Z position
First, the pseudo-code of what I am attempting to do. This is what I'd be doing if it was just in Edit Mode:

Have some edges. Some are chained, some are single edges
Bevel the vertices between edges
Select those beveled edges
Switch the pivot point to Individual Origins
Scale Z 0

Now to do it in Geometry Nodes! So far I've converted to curve, filleted the curve, deleted the final endpoint of each curve  (to prevent Modulo skips) and deleted rogue verts (left over from singular edge chains.) Now I want to average the Z position of the 2 vertices that make up each fillet. Any ideas? I can't seem to crack the Geometry nodes equivalent of Scale by Individual Origins for edges.

This is, say, to generate horizontal hairpins in a road?

If your question has been solved, please be so kind and mark the answer that contributed to the solution as "Accepted answer" so that this question will not continue to be displayed as unsolved. Thank you! Here you can find more information: What should I do if someone answers my question?. If you still haven't gotten a solution to your question, please be kind enough to address it.

Maybe some development of this approach?

After conversion to Curve, set up a second branch, in which the curve is filleted to near-0
Transfer the Z-position from that branch to the fully-filleted curve, by index.

That would make the difference shown below:

If this looks promising, further work could be done on handle-lengths, etc. for more control.

If I have not completely misunderstood this task, you are looking for this solution:

Here I subdivide the curve with Subdivide Curve and then filter out the vertices created by the node Fillet Curve.


text:
Query if Hide Selected is enabled via Python
Is there a way to query if the Hide Selected is currently enabled on the model?
I would like to query that with a Python script.
Select a face of a mesh and press H. I want to know if I am in that mode.

Hello, just to be clear You'd like to know if at least one face is hidden in edit mode ?

basically yes, that is what I need


text:
Join objects on export
Is there a good way to join all my selected objects, then export them and undo the joining?
Here is the Operator File Export from Blender.
import bpy

def write_some_data(context, filepath, use_some_setting):
    print("running write_some_data...")
    f = open(filepath, 'w', encoding='utf-8')
    f.write("Hello World %s" % use_some_setting)
    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")

# Register and add to the "file selector" menu (required to use F3 search "Text Export Operator" for quick access).
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')

You have to save a duplicate blend file, and use that same blend file to join objects, and export.

That would be an option but less ideal because I need to save the file in the temporary folder join the objects, export, then open the original file and since I work over a network opening blender files can take up some time
Maybe someone knows a better solution


text:
Get checkbox state from sub panel
I am trying get the state of the checkbox in my animation subpanel and would like to set myBool to it's state.
Here is my code:
import bpy
import os
from bpy_extras.io_utils import ExportHelper
from bpy.props import (StringProperty, CollectionProperty, BoolProperty, EnumProperty)
from bpy.types import (Operator, OperatorFileListElement,)
import textwrap

class WorldOriginExport(Operator, ExportHelper):
    bl_label = 'Export'
    bl_idname = 'object.world_origin_export'
    bl_description = textwrap.fill('Moves each selected object to the worlds origin and exports them as a gltf separate', 80)
    bl_options = {'PRESET', 'UNDO', 'REGISTER'}
    files = CollectionProperty(name = 'File Path', type = OperatorFileListElement,)
    directory = StringProperty(subtype = 'DIR_PATH',)
    filename_ext = '.gltf'

    myBool = False

    @classmethod
    def poll(cls, context):
        sfile = context.space_data
        operator = sfile.active_operator
        return operator.bl_idname == 'OBJECT_OT_world_origin_export'

    def draw(self, context):
        layout = self.layout
        layout.use_property_split = False
        layout.use_property_decorate = False  # No animation.

        sfile = context.space_data
        operator = sfile.active_operator

    def execute(self, context):
        bpy.ops.export_scene.gltf(filepath = folder_path + os.sep + sel.name)
        return {'FINISHED'}

class GltfSeparate_PT_Panel(bpy.types.Panel):
    bl_space_type = 'FILE_BROWSER'
    bl_region_type = 'TOOL_PROPS'
    bl_label = 'glTF Separate'
    bl_options = {'DEFAULT_CLOSED'}

    @classmethod
    def poll(cls, context):
        sfile = context.space_data
        operator = sfile.active_operator
        return operator.bl_idname == 'OBJECT_OT_world_origin_export'

    def draw(self, context):
        layout = self.layout
        layout.use_property_split = True
        layout.use_property_decorate = False  # No animation.

class GltfSeparateAnimation_PT_Panel(bpy.types.Panel):
    bl_space_type = 'FILE_BROWSER'
    bl_region_type = 'TOOL_PROPS'
    bl_label = 'Animation1'
    bl_parent_id = 'GltfSeparate_PT_Panel'
    bl_options = {'DEFAULT_CLOSED'}

    @classmethod
    def poll(cls, context):
        sfile = context.space_data
        operator = sfile.active_operator
        return operator.bl_idname == 'OBJECT_OT_world_origin_export'

    def draw(self, context):
        layout = self.layout
        layout.use_property_split = True
        layout.use_property_decorate = False  # No animation.

class GltfSeparateAnimationAnimation_PT_Panel(bpy.types.Panel):
    bl_space_type = 'FILE_BROWSER'
    bl_region_type = 'TOOL_PROPS'
    bl_label = ''
    bl_parent_id = 'GltfSeparateAnimation_PT_Panel'
    bl_options = {'DEFAULT_CLOSED'}

    @classmethod
    def poll(cls, context):
        sfile = context.space_data
        operator = sfile.active_operator
        return operator.bl_idname == 'OBJECT_OT_world_origin_export'

    def draw(self, context):
        layout = self.layout
        layout.use_property_split = True
        layout.use_property_decorate = False  # No animation.

    def draw_header(self, context):
        scene = context.scene
        self.layout.prop(scene, "use_gravity", text = 'Animation2')

def register():
    bpy.utils.register_class(WorldOriginExport)
    bpy.utils.register_class(GltfSeparate_PT_Panel)
    bpy.utils.register_class(GltfSeparateAnimation_PT_Panel)
    bpy.utils.register_class(GltfSeparateAnimationAnimation_PT_Panel)

def unregister():
    bpy.utils.unregister_class(GltfSeparateAnimationAnimation_PT_Panel)
    bpy.utils.unregister_class(GltfSeparateAnimation_PT_Panel)
    bpy.utils.unregister_class(GltfSeparate_PT_Panel)
    bpy.utils.unregister_class(WorldOriginExport)

if __name__ == '__main__':
    register()
    bpy.ops.object.world_origin_export('INVOKE_DEFAULT')

My explanation was too compressed? Didn't you see my edit? TLDR; To get a checkbox you'd have to declare a property rather then a regular python variable and then get a reference to active operator (in your case) to get the actual value from: https://pasteall.org/0ZJi You're welcome.

Yeah, I could not do much with the short answer since I am quite new to Python in Blender
The second link helped a bit but did not solved it
I will look into it tomorrow
Thanks for all your help!

Click the pasteall link in my first comment, copy paste, done.


text:
Get name of the ExportHelper text field
When I use the following script:
import bpy
import os
from bpy_extras.io_utils import ExportHelper
from bpy.props import (StringProperty, CollectionProperty)
from bpy.types import (Operator, OperatorFileListElement,)

class OT_ExportTest(Operator, ExportHelper):
    bl_label = 'Export'
    bl_idname = 'test.export_test'
    bl_options = {'PRESET', 'UNDO', 'REGISTER'}
    files: CollectionProperty(name = 'File Path',
                              type = OperatorFileListElement,)
    directory: StringProperty(subtype = 'DIR_PATH',)
    filter_glob: StringProperty(default = "*.fbx;", options={'HIDDEN'})
    filename_ext = ''

    def execute(self, context):
        folder_path = os.path.dirname(self.filepath)
        selection = bpy.context.selected_objects
        for sel in selection:
            filename_ext = '.fbx'
            bpy.ops.export_scene.fbx(
                    filepath = folder_path + os.sep + sel.name + filename_ext)

def register():
    bpy.utils.register_class(OT_ExportTest)

def unregister():
    bpy.utils.unregister_class(OT_ExportTest)

if __name__ == '__main__':
    register()
    bpy.ops.test.export_test('INVOKE_DEFAULT')

The object always get exported as the name of the object, because of sel.name.
But I want the object to be exported as what you type into the text field.
How do I do that?

https://blender.stackexchange.com/a/207665/15543

I got it by using this self.filepath.split('\')[-1]

which  will only work on MS Windows OS.

How would it work on different OS'?

https://stackoverflow.com/questions/4579908/cross-platform-splitting-of-path-in-python


text:
Choppy Display in Cycles
What on earth is happening here?! I cant seem to find the cause. Happens in solid and textured view. Its not like the meshes are crazy or broken or anything. Thanks for your help in advance.

Check your normals. Select everything in edit mode, and hit Ctrl + N

You have intersecting geometry. Check if two objects are overlapping and move one of them to another layer. Or check within the object for overlapping vertices: space > "remove doubles"

I really thought that was it too but here are some of the things I tried. I'll use the center circle for this example.

Deselect everything. Select only circle. M -> Move to empty layer.
Select only layer with circle. Zoom in on circle. See this:
!(http://i.imgur.com/o4Czm0g.png)
Zoom out. See this.
!(http://i.imgur.com/PlKzUPr.png)

So then I assume the geometry is bad inside the object and look to check that:

Edit mode. Mesh display. Try moving some verts around to make sure everything is connected properly with no overlaps....
!(http://i.imgur.com/UntJJjo.png)

Not sure how to illustrate this but everything looks good. No overlaps inside or outside the object.... Thoughts?
!(http://i.imgur.com/96Tak6S.png)

Your Start Clipping is probably set too low.  Press N to bring up the Properties in 3D View and change the Start Clipping to something reasonable... usually .01 or greater.  It depends on your field of view.
Then in your Camera Properties, menu, set your Start Clipping there as well:

Dude! You nailed it! Thank you! I had it set to 0.0000001 cause I hate the clipping when I'm working close up. If you drag to set this it stops you at 0.001 as the lower limit. But if you type something in manually you can go much lower... This might ought to be a bug... dunno. But THANK YOU!

@Carnagio - I'm like you, I'd rather not have any clipping at all. See this answer for why the clipping matters: https://blender.stackexchange.com/a/23693/38953  Also, with orthographic perspective, you can edit without setting the clipping so low.

Great linked answer. Thank you. It makes perfect sense. I'd upvote your post but apparently I dont have enough reputation yet. lol

@Carnagio - I appreciate that and I understand.

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


text:
I want to convert my Diffuse Shaders to Principled Shaders
I just barely imported a scene from an .obj file, but all 83 materials defaulted to Diffuse Shaders of various colors.
To make for a faster workflow, could I use a python script of some sort to convert these shaders to the new Principle Shader?

See my addon here: https://blender.stackexchange.com/a/79839/31447 (basically the same question)

@brockmann thought may as well cease the "deja vu loop" when Community bumps q.

@batFINGER Cool, updated the code to make it work with 2.9+


text:
UV fit in picture while baking
Firstly, I am a beginner in blender and my English is not good.
I have a single object with several materials and would like to bake all the materials in a single image. The problem is that the UV is larger than the output image, because each material has textures of different dimensions and when I do the bake, the output image is cut off.
Will I have to redo my UV, or is there anything I can do to make the output image fit?

Yes you need  to redo the UV map, but it's better to create new one for that and bake from materials which use 1 UV map to texture using another one. See https://blender.stackexchange.com/questions/13383/how-to-bake-texture-from-multiple-overlayed-uv-islands-to-individual-uv-islands (the only difference with new Blender versions is they have dedicated UV Map node).

In object mode select the object with RMB and Ctrl A to apply (object/apply/scale)..then go to edit mode press u to unwrap..i have same issue before and this tips solve mine..i wish it helps you as well..

I rebuilt the UV so that it fits the image. It gave more work, but it's better to start the job. Thanks for the answers.


text:
How can I make this quadruped leg and foot rig behave itself?
I am trying to make a rig such that one can push off the ground by the toes (or ball of the foot) and then later kick the toes back up and forward without moving the entire rest of the leg backwards. Is it possible to do this, and if so, how? Is there some obvious trick I am missing, or a better way to approach animating a foot interacting with the ground in general?
Ideally it would be nice to have a generalized solution so that one could easily push off the ground from any part of the foot (say, the side or back) for things like strafing around corners, scooting backwards, etc etc.


text:
How can I alternate rotating a bone and its associated controls around its tail and its head?
Is it possible to rig a hand such that I can drag the entire apparatus around in space with one control, rotate or pivot the entire hand apparatus around the wrist with a second control (as though waving), and with a third control rotate or pivot the entire hand apparatus around the fingertips (as though revving a motorcycle or pushing oneself off a surface by the fingertips)?

I use an IK constraint on your yellow colored bone and make a control bone for it that shares the location and size with the hand Bone (B in your drawing) but other than the hand bone it's not connected and not even parented to the IK Bone. On the Hand Bone I use a copy rotation constraint to copy the rotation of the control bone. If you do it that way you could set your cursor everywhere you want and transform the control bone around it.
EDIT:
you could also add another bone at the tip and parent the control bone to it to have controls at both positions

When using this method, is it possible to automate the selection of the correct pivot-to setting and the placement of the cursor based on some simple input (for example, which part of the control bone is clicked) such that the animator doesn't have to do it manually for every adjustment? For animations where the wrist is moving down while the fingertips are moving up and vice versa (say, a running quadruped), animating by repeatedly navigating the cursor position and pivot point menus to find the correct pose seems scarcely less laborious than counter-animating to achieve the same end result.

added solution to that


text:
Scroll wheel zoom is unmanageble
There seems to be no way to limit the speed of the zoom using the scroll wheel.  It behaved better after selecting 'auto depth' but after a restart even that had no effect.  The zoom function is a major navigational aspect and needs to be more refined.  Is there some setting or feature I'm missing here?

To have more control over zooming do it with the Ctrl+Mouse Scroll. Hold Ctrl and Mouse Scroll then drag the cursor up or down.

Auto Depth had no effect after restarting because new user preferences configuration likely wasn't saved. Check also if Pivot point is set to something other than 3D cursor, e.g. set it to Median Point.

You should be able to change your scroll wheel sensitivity at the OS level. Take a look in your system prefs.

@Mentalist While changing the scroll wheel sensitivity from the OS level may solve this problem, it is bad practice to change it every now and then, say to surf through the internet normally.

Had the same issue recently on Windows. I usually use Linux, but opened a file I'd been working on in Windows, and the scroll wheel zoom was WAY OFF!
Basically, with the panel in focus, hit the "Home" key. Found this answer HERE.

With Blender on Windows, you may hold ⌃ Ctrl on your keyboard and MMB  while moving the mouse itself up and down rather than the just scroll wheel to get finer control. I seem to be able to zoom in/out slowly and smoothly or quickly like this.


text:
The end grain problem
I'm trying to figure out how to create a render that accurately represents the effect of applying a clear coat or oil treatment to a wooden artifact such as a box with finger joinery or dovetail joinery such that the end grain of the objects are darkened.  What I've found so far simply applies the wood texture and there's no means of tweeking the faces that need darkening. Is this an easy fix or am I delusional?

You can always add images that might help us understand your scene and settings. See How to upload an image to a post?.

You can go into the Node View and use different nodes like Coloramp etc to change characteristics of your texture. These can be bound to keyframes in your animation.


text:
Smooth brush causing bumps in sculpt
I’ve been working with this issue. Seems to be coming up on more part of the sculpt. I’m not sure why. When using the smooth brush I get all these bumps coming up. See the video below:

I have recalculated normals, I’ve used options from sculpting add ons. Specifically the speed sculpt optimization tool, the make manifold option under the 3d print add on.It’s happening on both sides so the Symmetrize option does not work. The flatten brush gets rid of it, but it causes other issues. Anyone suggestions?

The smooth brush in Blender is simple averaging brush, it does add or subtract volume under the stroke from curved mesh. You might want to try ZBrush and the smooth brush it has. The smooth brush in Blender is also heavily influenced by the topology, so if you have nasty Dyntopo mesh, it will average the artifacts but not perfectly smooth them.

So it looks like disabling the axis lock got rid of the odd bumps happening on the smooth brush. I can't yet tell you why but I disabled it and the behavior went away.

Axis lock meant that the brush was smoothing only along one axis, there wasn't any movement done along any other axes. This is indeed one of things to check when debugging sculpting brushes odd behaviour


text:
Hair points in weird direction
All of my hair particles point in one direction.

Regardless of the object. This is the standard cube with the standard particle settings.

I'm using 2.79.

Can you add an image of all of your particle settings?

Under Particle Settings -> Source enable the check mark Use Modifier Stack


text:
Cycles Render Device not available
I was working on a smoke sim in 2.78c and when I tried to render, I got nothing. I noticed my device was set to GPU Rendering (with no GPU in my laptop) so I set it back to CPU. Nothing. I checked User Preferences, and it shows None in Cycles Compute Device. I reloaded the factory settings, but it still gives me nothing for compute devices. I'm pretty sure I still have a CPU...? Anyone know what might be causing this?

Compute Device None is a bit misleading here – it just means, that there's no GPU available. The scene will be computed by your CPU. Your invisible smoke is quite another matter and should be handled in a separate question.

It seems misleading, but exactly as I say, NO compute device is available. Not even CPU. Nothing. As such, when I start a render, it finishes in 0.01 seconds. It's not invisible smoke, it's straight up failure to render.

It's hard to help here without having a look upon your file. Consider uploading it. Maybe it's just camera clipping, so blender has nothing to render and thus finishes immediatly.

With the reference to this BUG report, if you have an AMD card, it looks like it is not supported anymore if your card's architecture version is less than 2.0
If you still want to enable it, on the bug report page is a link to a workaround. I'm not adding the workaround details here as it has some warning and will be better if you read from the original page.


text:
Creating even more photorealistic rendering of this 3d print I actually made
I hope this isn't too open ended, but in the style of this question I found on here I figured I'd go for it.
I run a 3d printer in a hospital, and as a result I 3d printed this model showcasing the work done on a particular patient:

I've blacked out the name of our hospital, though I think it'd be hard to identify the patient just based on the image.
Anyhow, as a side project, I've been trying to use Blender to see if I could "fake" that photo.  I.e. get a rendered image to the point where the casual viewer didn't know it wasn't real.
So far, after following BlenderGuru's tutorial on wood found here, this is my best attempt:

So my (hopefully not too open ended) question to you all is:  what changes would you make to this file if it were up to you to make more realistic?  Specifically the look of the clear plastic or the lighting.  I'm not too worried that the wood grain is slightly different than the one on my desk.

My 2cts: Add volume absorption and roughness to the clear plastic. Use filmic for color management and an indoor HDRI for lighting (https://hdrihaven.com/hdris/category/?c=indoor&o=popular) + perhaps some manually placed lights.

everything is to nice.  render at a lower resolution, and use the compositor to make it look like it was taken with a cheap camera.  make the lighting more blown out.


text:
Blender 2.81 doesn't seem to be importing vertex color for .ply
So people have had similar problems showing colors on .ply files here and here  but I don't think this is the same case.  I've exported a .ply file from a program called paraview with color info on it.  I've uploaded the file here and as you can see, the color info came with it.
But for whatever reason when I import it into blender and go look for the per-vertex color info where I would expect to find it, its empty:

Am I doing something wrong?  It seems like there had been a problem with importing .ply color for a bit in 2.80, but this is 2.81.  I would assume it was fixed?

Downloading requires an account, therefore I haven't tested it yet, but by the looks of it it's only vertices and no faces correct?

I believe so, think its no faces

Blender's ply importer only adds vertex colors when they are part of a face or triangle strip. You can see this in the source code of import_ply.py.
mesh_colors is the list that collects the vertex colors. The assignment of values to mesh_colors and the indices to mesh_faces happens in the add_face() function. This function is only called when a b'face' or b'tristrips' is encountered in the ply object. Only when mesh_faces is not empty and the required color channels are present the new set of vertex colors is created through mesh.vertex_colors.new(). Therefore vertex colors are only imported if the colored vertices were part of a face.

Is there a way to get the colors for just points?  Or am I out of luck?

You could try add-ons. I haven't tested it, but this one is supposed to work with .ply point clouds: https://github.com/uhlik/bpy

You can set the material to use vertex color in the Node Editor or by selecting it from Surface > Base Color.
Make sure your view is in Material Preview or Render mode (Z  for shortcut) to see the changes.


text:
Rotate group of objects over an edge
What I am trying to do is similar to what was asked here:  Set edge as axis for surface rotation
I am hoping to use an object's edge for rotation, but instead of simply the one object rotating around that point, it'd be a bunch of stl's I've imported together:

What I'm hoping to do is duplicate everything in that tetrahedron object, rotate the duplicate along one edge like this:

to build a stack of them, like this:   which I would then print.  Any help?

Here is a way to do it:

Select the edge that you want as axis.
Press ctrl alt spacebar to record this axis as one of your Transform Orientation axis. Keep this axis selected in the Transform Orientation dropdown menu.
Put your 3D Cursor on the selected edge with a shift S > Cursor To Selected.
Select 3D Cursor in the Pivot dropdown menu
Rotate your pyramid with R Y Y (or X X, depending of its name in the new Orientation Axis) and press the amount of degrees.
To delete the orientation axis you don't need any more, in the 3D view press N to get the right menu and go to the Transform Orientations tab.

Worked amazing!  Thank you!  Only comment is I think it should be shift+s, not ctrl s.  At least on my computer ctrl s kept trying to save.  Maybe mine is set up wrong.

you're right   ;)


text:
Filling an object (TEXT LETTER) with mantaflow fluid?
Im having no problems running fluid sims and using effector objects and obstacles.. however.. I dont seem to be able to get it to fill a simple mesh?
Has anyone had any experience with this?


text:
BAKE SOUND TO F CURVE option MISSING in blender 2.82?
My option under KEY in the dope sheet is missing the option to bake sound to f curves.
Tried it on several scaling options on several objects but the option is totally missing.
Is there a trick to enable the feature? I dont ever remember having to do anything special before?
any help would be great!

For anyone else; They moved the option from "Key" to "Channel". You should find it under there

You can also search for it using F3

All good. It can only be done using the graph editor! Sorry fam.. its been a while since ive needed to use the function.

It has always only been available via the graph editor. Consider deleting answer & question.


text:
Where is Textured Coordinates?
For some reason whenever I try to find the "textured coordinate" node in blender, it never shows up. I tried seeing if this was a problem for anyone else, but it wasn't. Was the node named to something else? Or is my version of blender just broken?

It's in the "Input" section of the "Add" menu (4th from the bottom).
There may be another issue (like you're looking at the world shader, or nodes are enabled). More can be determined if you share a full screenshot of the node editor.


text:
How do I get image handles and click&drag things around in Blender Compositor?
I'm not new to Blender but I was wondering how to use the Blender Compositor the After Effects away or like any other compositing or video editing software, meaning I'd like to click onto an image or layer and move it around. It's slow and complicated to move things around with the trasform node parameters, especially if I want to do it precisely

Do it in the 3d view?
import videos into emission shader planes and animate them.
I know it's stupid but I think it's the only way you can work graphically.
I wish that in 2.9 the Video editor thing will become Good!

I thought of that but it's not the best solution for me. By 2.9 do you mean Blender 2.9 or 2.81?

I didn't get what you meant @Yossi2010


text:
What Lens Model does Blender use for Camera Tracking?
I recently started working with the camera-tracking estimator to produce short augmented reality videos. I'd like to learn more about the lens model and its parameters (K1, K2, etc...).
Can anyone tell me the specific name of this lens model, or the general theory it belongs to? Would this model/theory fall be covered by the general study of undergraduate-level Optics as taught by a Physics department, or in what book or article would I be able to learn more about it? (Assuming I meet any basic calculus and linear algebra prerequisites).

As far as I know Blender works with a pinhole camera matrix. Where an image is created by a projection of the 3d coordinates into a 2d plane.

k1, k2 etc are radial distortion coefficients. Blender does not deal with tangential distortion.
For a deeper explanation refer to the following links:
http://lfa.mobivap.uva.es/~fradelg/phd/tracking/camera.html
https://calib.io/blogs/knowledge-base/camera-models
3x4 camera matrix from blender camera
You can get more information also reading on OpenCV and camera calibration.

I cannot upvote here, but thank you! Would it be correct then to say that k1 & k2 are the 2nd-order and 4th-order polynomial coefficients as given in the 2nd link in your citations section?

I'm not an expert, but if you look into  the Brown Conrady distortion models you should be able to find the correct answer.

https://blender.stackexchange.com/questions/78442/lens-distortion-algorithm-in-movie-clip-editor


text:
move parent (empty) without children
i want to move my parent object (=empty) but without moving the children.  Is that possible ?
I saw the answer from 20/02/18 11.56u IPv6.  But it doesn't work.  I'm on Blender 2.8
Mayby i do something wrong.

What is "the answer from 20/02/18 11.56u IPv6" ?

https://blender.stackexchange.com/a/101357/83443    i hope i did this right ;-)

Are you trying to say you have problems installing this add-on?

You can enable "Affect Only: Parents" in the Tool>Options sidebar to affect parents only.

This feature has been added in 2.81 release.


text:
Open new editor pane in workspace (handle is missing)
There are a few tutorials (for example this one, screen shots below) which show you can add a new pane to a workspace but in my version of Blender 2.8 (running on Windows 10) I can't recreate this option.  It looks like the handle is missing.  The handle being the little diagonal lines in the top right corner.

It appears that the UI is different?  You can create a new editor pane inside a workspace by clicking and dragging in the tiny dark space between the panes.  See annotated screenshot below.


text:
Separate stl into two stl's based on size of chunks-for 3d printing
I always fear that this is a noobie question, I'm sorry if it was.
I have an stl file that represents a chemical structure:

The small spheres being one type of atom, the larger spheres being a different type.  My goal is to split this file into two files, one stl which includes all of the larger spheres, one stl with the smaller spheres.
My goal being to load these two files into my 3d printer software where I can assign a material to each stl for different colors or transparencies.
While still in Blender, how do I separate these two stl's based on object size?

In edit mode, separate the spheres by loose parts by pressing P >> Loose Parts. Now you have each sphere as a separate object. Put all of these objects in a group by selecting all of them and pressing Ctrl+G.
Now, in Animation Nodes, we will create a loop that only returns one type of sphere based on the vertices count. We first get the vertices count of any of the objects, lets say the first, then we loop over the objects and only return the ones that have a mesh with the same number of vertices as the vertices count we just computed.

Now, hide those objects we just computed using the Object Visibility Output Node.

Select those objects and export them using the Selection Only option, delete those object, unhide the other objects and export them. You now have two files each have only one type of spheres.
Notice that if the two spheres have the same number of vertices but different scales, then, similarly, the volume of the bounding box can be used to filter the objects.

Thank you so much for your input on this!  I'm sure that will give me exactly what I wanted but I didn't realize how much of a rookie I was at this.
I installed the animation node, and i've stumbled my way through it to the point where I ALMOST have duplicated your screenshot above.
Silly questions for you though: instead of "object list" I have "create object list" and I cant seem to put the "filter objects" in it.  Any help would be greatly appreciated!
Is there a good resource for learning this?

@JoeCrozier Don't worry, It takes sometime to get used to Animation Nodes. Animation Nodes has a rather comprehensive documentation, feel free to read the getting started guide and look up nodes you want to use. The Object List is not a node, but a generator, you can add that generator by pressing the plus button New Generator Output in the Loop Input Node and search for Object, read the documentation on loops for more info.


text:
Scale by Volume of Object in Blender
I have two skulls like so:

Using the 3D print addon toolbox, I know the volumes of each:

747735056401 for the larger one
569718590290 For the smaller one

I'd like to scale the smaller one to be the same volume as the larger one.   Not being a math wiz, I simply did:  747735056401/569718590290= 1.312464,  so I hit S and typed in 1.312464.
But, I didn't even realize that would just scale the x,y,z dimensions and all of a sudden my new volume had gone way up to 12880819961337.   Way larger than intended.
Does anyone either know (through a Blender command, or through better math understanding) how I could scale the volume of one to be the same as the other?

The volume is proportional to the cube of the scale. For example, doubling all of the dimensions would result in a volume that is 2x2x2 = 8 times the volume.
Therefore, in order to scale the volume by 1.312464 you have to scale each dimension by the cube root of 1.312464. ie, approximately 1.0948678.

This probably falls into "I should have googled this" but thank you!

No worries. Actually, you can get Blender to do the maths for you also - since you can type equations into fields and operators. Simply select the object and type s1.312464***0.333333<Enter> and Blender should scale it for you. Here the S is for Scale, the numbers enter the scale, the first * seems to be necessary to end the number (don’t know why) then ** is the power operation and 0.333333 is 1/3 (or near enough) for cube root.

That's odd.. I have no problem with 2**.333 , 2**0.333, 2**(1/3) ... Linux 291

Thanks for the feedback @RobinBetts. I’ve tried this on two Windows 10 systems (one with Blender 2.91 and the other 2.83.6) and both are needing three *s for this to work. Very strange indeed.


text:
Align internal parts of several meshes to the exact same "height", for 3d printing
My plan is to 3d print a giant scaled up version of the bones of a hand, complete with ligaments, tendons, and magnetic attachments.
Lets say I've embedded "holes" for magnets inside of the meshes I would like to print, and lets say I've finished positioning them where they should be in the bones, etc.. etc..  like so:

Now, when I go to 3d print it, I'm hopefully going to print several bones at the same time, and when the printer gets to a certain height where I can access the holes to put magnets in, it will pause and wait for me to put in the magnets.  Because of that, ideally all of the holes are at the exact same height (from the build tray, so the same z height in blender I guess), so I only have to pause once.  Is there a way I can select all of the "holes" from several of the bones and snap them all to some imaginary z plane?  This would rotate each bone in a different way so that the "holes" all ended up at the same plane.  Does that make sense?
Not perfect because I did it manually and eyeballed it, but this is kinda what I have in mind:

It's certainly an awkward task, but doable if I understand the situation correctly.
In short I would develop an alignment mechanism with an armature:

Snapping the head and tail of corresponding armature bones to each hole of a bone model.
Parent each bone model to it's respective armature bone.
Duplicate another armature bone per existing armature bone to serve as a target for a damped track bone constraint.
Enable "affect only locations" in the viewport and scale all of your bones in Pose mode to zero in the z-axis.

Here's a brief video of the process.


text:
Adding thickness to 3D Scan of face in Blender
So I have a 3d scan of a face, pictured:

And it has no thickness whatsoever, I'd like to add some so that it can be 3D Printable (my printer can handle the vrml/obj format and tons of colors).  I've tried solidify but it puts a bunch of cracks through the face:

And I've tried using the bisect tool, then hitting f to fill the holes while what I bisect'ed was still selected, and all of the holes won't fill.  I've also tried some of the solutions from this question: How to make a perfectly flat bottom for 3D-printing topographic relief?
but it creates those same cracks.
Lastly I've tried selecting every vertice and extruding backwards, and whatever this is happens:
Any ideas?  I'm sorry if this has been answered somewhere else.

Unfortunately there are no tools within Blender that can handle 3D scans very well. Blender - as a 3D modelling software - uses quad-based topology, while 3D scans are usually triangle-based and thus lack good loops to work with. However, I've seen people doing amazing things with MeshLab and NetFabb, if you want to give that a try.

I had great results Blender (2.8.2) with the Solidify modifier.
Set mode to Complex, Thickness fixed at 1.00 (1mm offset), Offset of 1.0000 (for outward expansion toward the normal).
Checked options Fill Rim.

The 3D print plugin is nice for fixing up a mesh but otherwise I used to just use the decimate modifier and create a new mesh from a scan mesh. Also make sure you've tried selecting all vertices in edit mode and using the 'remove double vertices' function (or remove doubles in 2.79). Then using Crtl + Shift + N to set the normals (untick that box in the bottom left corner though) (in 2.79 it's just Crtl + N and there's no tickbox).
What it looks like is that for whatever reason the scan mesh isn't whole, like there's separate islands of vertices which would give the effect of the cracks


text:
Display childs local coordinates to parent
I don't get Blender's parenting system.
I have a cube at location 1, 1, 1, create a new sphere at 0, 0, 0 and use the Make Parent command with Keep Transform enabled, so that the sphere is the child of the cube.
But the sphere's coordinates show still 0, 0, 0 instead of -1, -1, -1 relative to it's parent.
It is different to other 3D programs like Maya, isn't it?
The command Make parent without inverse does what I need except for that it always moves the child-to-be to a new position or changes it scale.
Is there a way to parent it so it shows me the local coordinates to it's parent without moving, scaling or rotating the object?

By default Blender always shows local coordinates, but you can do it with a little workaround:
Select the sphere, press Shift S "cursor to selected", use "Make parent without inverse", press Shift S "Selection to cursor".
In order to work, you have to apply (Ctrl A) rot and scale of your parent object.

I could make it work with 'All Transforms to Delta', it makes the current objects position the new zero, zero, zero location without moving it's origin point

"By default Blender always shows local coordinates"
Not true. It shows local coordinates in edit mode, but for a parented object in object mode it only shows global coordinates, and that's what this question is about.

There's a hidden inverse matrix that encodes the transformation of children.  Its values are not displayed anywhere.  In your examples, that inverse matrix contains the translation from 1 to 0.
If you don't want this-- if you want an identity inverse-- it's a bit of trouble to set up.  First, mark the transformation of your child-to-be by creating an empty, giving it a copy transforms constraint (world->world) targeting the child-to-be, and apply visual transform then delete the constraint.  Then, acquire the transformation of your parent-to-be by giving your child-to-be a copy transforms constraint (world->world) targeting the parent-to-be, applying as visual transform, and deleting the constraint.
There may be easier ways of acquiring the transform of the parent-to-be; I believe that if you enter a parent directly into the parent field in properties/object/relations, on an untransformed object, it will just acquire the transform of the parent you enter.  But I haven't tested that recently.
Now parent your child object to your parent object to create a parenting relationship with an  identity inverse, then, again, re-acquire the world transform of your empty marker by applying a copy transforms constraint targeting that empty.
Note that in certain cases-- skew: inherited non-uniform scale in the presence of local rotation-- the copy transforms targeting the parent-to-be won't work without unparenting the parent first.