text:
How to synch audio with video when both tracks are from same source?
I am using the VSE in Blender 2.80 on Windows 10 to add cards to an existing video in MP4 format that is about 20 minutes long. I placed my cards and have chosen the following settings:

These are the settings of the original video file:

I changed the Blender audio Bitrate first to 130 but noticed it was "off" from the video. The lips of the speaker don't quite match. Then I read that powers of 2 were useful so I changed it to 128. I also tried The MPEG-4 container but after hitting "render animation" nothing would happen. I also tried FFmpeg video codec #1 but my video player (Matroska) was unable to read the sample animation I rendered from it. Changing the quality settings and keyframe intervals alternate between making the file unreadable and not having any noticeable change. Changing "Output Quality" to "Lossless" gives me a file with audio but no video.
What do I need to do in order to have the audio match the video as closely as I can to the original video file?

I you loose sync between video and audio, generally the reasons can be:
1) you didn't match the frame rate (in your case 29,97)

2) you didn't match the audio sample rate (in your case 48 KHz), in the preferences

The others parameters are a matter of quality/file weight, not about Sync.


text:
Workflow for using A LOT of reference images at precise angles?
I am going to sculpt a human head based on a model whose image is captured at VERY precise angles for this purpose. I think the angles those images are taken at are increments of 11.25 degrees:
{-45.0,-33.75,-22.5,-11.25,0.0,11.25,22.5,33.75,45.0}

The picture almost speaks for itself: I want to set up each of these references on its own plane, and make it ONLY visible when viewed at the angle it was taken from; this way, I only have to press the 0-key to look through the camera and pivot around the origin with the 4 and 5-keys. I can do this, but I don't know how to show just one reference based on the camera angle.
However, I am also wondering if this is a wild goose chase: would the depth distortion caused by viewing the reference image in Perspective mode, or the sculpting object in Orthographic mode, make sculpting from the extra angles impossible to replicate the human model correctly? Are only orthogonal reference angles (i.e. front, side, back, top, etc) useful for manual photogrammetry?
(I looked at all the top Suggestions while writing this question, none of them asked about implementing this same feature. If I missed an existing solution, please link me to it if it will work for 2.81)
EDIT: Ok, forget about making all those reference images because I'm going to just slice the images I have and feed them to Facebuilder (which I think uses perspective cameras?). But I do want to know if that approach was feasible without that software or if the distortion would make it an impossible task.

https://blender.stackexchange.com/questions/110532/cannot-find-background-images-feature-in-blender-2-8

Think I'm going to use Facebuilder after all

source: Stack Exchange

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

sort: votes


text:
How to correct an object's arbitrary rotation?
One of many 3d modeling "Holy Grails": You get a model from somebody but you are OCD and want to re-align the entire object such that part of such that an edge loop coincides with a plane that is normal to a cardinal axis. Here is an example:

This is a reimagined enemy called "Chuckya" from Super Mario 64. He has handles that Mario can grab, but they are too high. I want to "reset" the rotation of this object so the selected loop is normal to the XZ-plane (that is, it is rotated such that it is bisected by an axis parallel to the Y-axis). Then I can apply that rotation and rotate it by precise values.
How can this be done without rotating it by eye, which is not nearly as precise as I want? Assume that the current rotation of the object is not known.

Related https://blender.stackexchange.com/questions/183552/how-to-have-an-object-lie-on-a-specific-face

Thanks batFinger, this didn't come up before

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


text:
Is it possible to arrange the 2 or 3 items of Enum Property in one row and others is second or third?
I have an enum property that has 6 items and what I want is to arrange the 3 items in one and the other 3 items in the second row. Is it possible to set them?
Here is the code:

class NEW_PT_CUSTOM_73B8D(bpy.types.Panel):
    bl_label = 'Custom'
    bl_idname = 'SNA_PT_CUSTOM_73B8D'
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_context = ''
    bl_category = 'Sell'
    bl_order = 0
    bl_ui_units_x=0

    def draw(self, context):
        layout = self.layout
#        col = layout.column()
        layout.prop(bpy.context.scene, 'my_enum', expand=True)

def register():
    bpy.types.Scene.my_enum = bpy.props.EnumProperty(name='enum', description='', items=[('Rocket', 'Rocket', '', 0, 0), ('Jeep', 'Jeep', '', 0, 1), ('Truck', 'Truck', '', 0, 2), ('Car', 'Car', '', 0, 3), ('Bike', 'Bike', '', 0, 4), ('Plane', 'Plane', '', 0, 5)])
    try: bpy.utils.register_class(NEW_PT_CUSTOM_73B8D)
    except: pass

def unregister():
    del bpy.types.Scene.my_enum
    try: bpy.utils.unregister_class(NEW_PT_CUSTOM_73B8D)
    except: pass

if __name__ == "__main__":
    register()

On an enum you will not be able to have a mixed organization of the items.
If you really want that layout create 2 local enum properties in your custom panel and change your global property thanks to an override of the set and get functions of those local items.

You are going too far. I'm new if you could please write a code for me that would be great.

With layout.prop_enum(context.scene, "my_enum", "Rocket") link you can adress single enum items in layout. Third data is the item.identifier. See script.
To be more flexible, for example because of dynamically generated enum properties, we can reach the single items with bl_rna.properties["my_enum"].enum_items. In second example the enum items are looped and placed in row. Next row after third element.
import bpy

class NEW_PT_CUSTOM_73B8D(bpy.types.Panel):
    bl_label = 'Custom'
    bl_idname = 'SNA_PT_CUSTOM_73B8D'
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_context = ''
    bl_category = 'Sell'
    bl_order = 0
    bl_ui_units_x=0

    def draw(self, context):
        layout = self.layout
#        col = layout.column()
        layout.prop(bpy.context.scene, 'my_enum', expand=True)

        # first example
        layout.separator(factor=2)
        row = layout.row(align=True)
        row.prop_enum(context.scene, "my_enum", "Rocket")
        row.prop_enum(context.scene, "my_enum", "Jeep")
        row.prop_enum(context.scene, "my_enum", "Truck")
        row = layout.row(align=True)
        row.prop_enum(context.scene, "my_enum", "Car")
        row.prop_enum(context.scene, "my_enum", "Bike")
        row.prop_enum(context.scene, "my_enum", "Plane")

        # second example
        layout.separator(factor=2)
        row = layout.row(align=True)
        for index, item in enumerate(context.scene.bl_rna.properties["my_enum"].enum_items):
            row.prop_enum(context.scene, "my_enum", item.identifier)
            if index == 2: # new line after third item
                row = layout.row(align=True)

def register():
    bpy.types.Scene.my_enum = bpy.props.EnumProperty(name='enum', description='', items=[('Rocket', 'Rocket', '', 0, 0), ('Jeep', 'Jeep', '', 0, 1), ('Truck', 'Truck', '', 0, 2), ('Car', 'Car', '', 0, 3), ('Bike', 'Bike', '', 0, 4), ('Plane', 'Plane', '', 0, 5)])
    try: bpy.utils.register_class(NEW_PT_CUSTOM_73B8D)
    except: pass

def unregister():
    del bpy.types.Scene.my_enum
    try: bpy.utils.unregister_class(NEW_PT_CUSTOM_73B8D)
    except: pass

if __name__ == "__main__":
    register()

Thank you very much, this is more than I was thinking.

Thank you @relaxed, this use of prop_enum is very interesting (and new for me).
It is sad that this one, all along with some other methods, is not properly documented.


text:
Is it possible that one operator can run popup and modal?
I have an invoke.popup() I want a modal operator to be operated whenever I popup. I want 2 returning values from the invoke function. One is return invoke.popup(self) and the second is return {"RUNNING_MODAL"}. Is it possible to get both to work?
import bpy

class CUSTOM_PT_PANEL(bpy.types.Panel):
    bl_label = "Custom"
    bl_idname = "CUSTOM_PT_PANEL"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Custom".upper()

    def draw(self,context):
        layout = self.layout
        layout.operator("object.custom_modal")

class CUSTOM_OT_OPERATOR(bpy.types.Operator):
    bl_label = "CUSTOM MODAL"
    bl_idname = "object.custom_modal"

    def modal(self,context,event):

        print("WORKING")

        return {"PASS_THROUGH"}

    def draw(self,context):
        self.layout.label(text="NEW")

    def invoke(self,context,event):
        wm = context.window_manager

        wm.modal_handler_add(self)
        return {"RUNNING_MODAL"} and wm.invoke_popup(self)

classes = [CUSTOM_PT_PANEL,CUSTOM_OT_OPERATOR]

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

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

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

So unfortunately this is not possible. I guess you want to show something with invoke_popup and do some calculations in parallel.
This can be done using two operators and the first operator will call the second. In my case, I used the Draw-Operator to call the Modal-Operator. Also in my implementation the CUSTOM_OT_OPERATOR.close variable is used to end the modal operation when the popup get closed.
If needed, you can transfer data between these two operators using a Property or PropertyGroup which is attached to the scene (e.g. bpy.types.Scene = bpy.props.StringProperty(name="My Prop"))
import bpy

class CUSTOM_PT_PANEL(bpy.types.Panel):
    bl_label = "Custom"
    bl_idname = "CUSTOM_PT_PANEL"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Custom".upper()

    def draw(self,context):
        layout = self.layout
        layout.operator("object.draw_custom_modal")

class CUSTOM_OT_OPERATOR(bpy.types.Operator):
    bl_label = "CUSTOM MODAL"
    bl_idname = "object.custom_modal"
    bl_options = {"INTERNAL"}

    close = False

    def modal(self,context,event):

        if CUSTOM_OT_OPERATOR.close == True:
            CUSTOM_OT_OPERATOR.close = False
            return self.execute(context)

        if event.type == "ESC":
            return self.execute(context)

        if event.type != "TIMER":
            return {"PASS_THROUGH"}

        print("WORKING1")

        return {"RUNNING_MODAL"}

    def draw(self,context):
        self.layout.label(text="NEW")

    def invoke(self,context,event):
        wm = context.window_manager
        wm.modal_handler_add(self)
        self.timer = wm.event_timer_add(0.1, window=context.window)
        return {"RUNNING_MODAL"}

    def execute(self, context):
        print("CLOSE")
        context.window_manager.event_timer_remove(self.timer)
        return {'FINISHED'}

class CUSTOM_OT_DRAWOPERATOR(bpy.types.Operator):
    bl_label = "CUSTOM DRAW"
    bl_idname = "object.draw_custom_modal"

    def draw(self,context):
        self.layout.label(text="NEW")

    def invoke(self,context,event):
        wm = context.window_manager
        wm.invoke_popup(self)
        bpy.ops.object.custom_modal("INVOKE_DEFAULT")
        return {"RUNNING_MODAL"}

    def execute(self, context):
        CUSTOM_OT_OPERATOR.close = True
        return {'FINISHED'}

    def cancel(self, context):
        CUSTOM_OT_OPERATOR.close = True

classes = [CUSTOM_PT_PANEL,CUSTOM_OT_OPERATOR, CUSTOM_OT_DRAWOPERATOR]

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

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

if __name__ == "__main__":
    register()

```

Thank you. I got it.

use invoke_props_dialog() instead of invoke_popup()
import bpy

class CUSTOM_PT_PANEL(bpy.types.Panel):
    bl_label = "Custom"
    bl_idname = "CUSTOM_PT_PANEL"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Custom".upper()

    def draw(self,context):
        layout = self.layout
        layout.operator("object.custom_modal")

class CUSTOM_OT_OPERATOR(bpy.types.Operator):
    bl_label = "CUSTOM MODAL"
    bl_idname = "object.custom_modal"

    def draw(self,context):
        self.layout.label(text="NEW")

    def invoke(self,context,event):
        return context.window_manager.invoke_props_dialog(self)

    def execute(self, context):
        context.window_manager.modal_handler_add(self)
        return {"RUNNING_MODAL"}

    def modal(self, context, event):
        if event.type in {'RIGHTMOUSE', 'ESC'}:
            return {'CANCELLED'}
        print('RUNNING_MODAL')
        return {'RUNNING_MODAL'}

classes = (
    CUSTOM_PT_PANEL,
    CUSTOM_OT_OPERATOR
)

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

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

if __name__ == "__main__":
    register()

Another method
use event in invoke()
import bpy

class CUSTOM_PT_PANEL(bpy.types.Panel):
    bl_label = "Custom"
    bl_idname = "CUSTOM_PT_PANEL"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Custom".upper()

    def draw(self,context):
        layout = self.layout
        layout.operator("object.custom_modal")

class CUSTOM_OT_OPERATOR(bpy.types.Operator):
    bl_label = "CUSTOM MODAL"
    bl_idname = "object.custom_modal"

    def draw(self, context):
        self.layout.label(text="NEW")

    def invoke(self, context, event):
        if event.shift:
            context.window_manager.modal_handler_add(self)
            return {"RUNNING_MODAL"}

        return context.window_manager.invoke_popup(self)

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

    def modal(self, context, event):
        if event.type in {'RIGHTMOUSE', 'ESC'}:
            return {'CANCELLED'}

        print('RUNNING_MODAL')

        return {'RUNNING_MODAL'}

classes = (
    CUSTOM_PT_PANEL,
    CUSTOM_OT_OPERATOR
)

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

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

if __name__ == "__main__":
    register()

Your examples are good but that's not what I'm looking for. Thanks


text:
Update SpaceView3D Draw Handler
I have figured out how to draw on view 3d but I'm still confused about how to update the handler with the help of property. I have already created an example of what I am looking for in the second gif. I want to update the size of the handler from the size property.
Thanks in advance

Here is the code:
import bpy
import blf

class CUSTOM_PT_PANEL(bpy.types.Panel):
    bl_label = "Custom"
    bl_idname = "CUSTOM_PT_PANEL"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Custom".upper()

    def draw(self,context):
        layout = self.layout
        row = layout.row(align=True)
        row.operator(ADD_CUSTOM_PT_OPERATOR.bl_idname,icon="ADD")
        row.operator(REMOVE_CUSTOM_PT_OPERATOR.bl_idname,icon="REMOVE")
        column = layout.column(align=True)
        column.use_property_split = True
        column.use_property_decorate = False
        column.prop(context.scene,'custom_text',text="Text:")
        column.prop(context.scene,'custom_size',text="Size:")
        if context.object:
            column.separator(factor=4)
            column.prop(context.scene, 'custom_obj_location',text=f"{context.object.name} Location:")

main_handler = None

def call_back(self,context,text,size):
    font = 0
    blf.position(font,20,80,0)
    blf.size(font,size,200)
    blf.draw(font,text)

class ADD_CUSTOM_PT_OPERATOR(bpy.types.Operator):
    bl_label = "Add"
    bl_idname = "custom.add_text"
    bl_description = ""
    bl_options = {"REGISTER", "UNDO"}

    def execute(self,context):
        context.area.tag_redraw()
        text = context.scene.custom_text
        size = context.scene.custom_size
        global main_handler
        main_handler = bpy.types.SpaceView3D.draw_handler_add(call_back,(self,context,text,size),"WINDOW","POST_PIXEL")
        return {"FINISHED"}

class REMOVE_CUSTOM_PT_OPERATOR(bpy.types.Operator):
    bl_label = "Remove"
    bl_idname = "custom.remove_text"
    bl_description = ""
    bl_options = {"REGISTER", "UNDO"}

    def execute(self,context):
        context.area.tag_redraw()
        global main_handler
        bpy.types.SpaceView3D.draw_handler_remove(main_handler,"WINDOW")
        return {"FINISHED"}

def object_location_update(self,context):
    context.object.location.y = self.custom_obj_location

classes = [CUSTOM_PT_PANEL,ADD_CUSTOM_PT_OPERATOR,REMOVE_CUSTOM_PT_OPERATOR]

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

    bpy.types.Scene.custom_text = bpy.props.StringProperty(name="")
    bpy.types.Scene.custom_size = bpy.props.IntProperty(min=1,default=50)
    bpy.types.Scene.custom_obj_location = bpy.props.FloatProperty(update=object_location_update)

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

    del bpy.types.Scene.custom_text
    del bpy.types.Scene.custom_size
    del bpy.types.Scene.custom_obj_location

if __name__ == "__main__":
    register()

import bpy
import blf

class CUSTOM_PT_PANEL(bpy.types.Panel):
    bl_label = "Custom"
    bl_idname = "CUSTOM_PT_PANEL"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Custom".upper()

    def draw(self,context):
        layout = self.layout
        row = layout.row(align=True)
        row.operator(ADD_CUSTOM_PT_OPERATOR.bl_idname,icon="ADD")
        row.operator(REMOVE_CUSTOM_PT_OPERATOR.bl_idname,icon="REMOVE")
        column = layout.column(align=True)
        column.use_property_split = True
        column.use_property_decorate = False
        column.prop(context.scene,'custom_text',text="Text:")
        column.prop(context.scene,'custom_size',text="Size:")
        if context.object:
            column.separator(factor=4)
            column.prop(context.scene, 'custom_obj_location',text=f"{context.object.name} Location:")

main_handler = None

class ADD_CUSTOM_PT_OPERATOR(bpy.types.Operator):
    bl_label = "Add"
    bl_idname = "custom.add_text"
    bl_description = ""
    bl_options = {"REGISTER", "UNDO"}

    @classmethod
    def poll(cls, context):
        return not main_handler

    def call_back(self, context):
        font_id = 0
        blf.position(font_id, 20, 80, 0)
        blf.size(font_id, self.size, 200)
        blf.draw(font_id, self.text)

    def invoke(self, context, event):
        self.text = context.scene.custom_text
        self.size = context.scene.custom_size

        global main_handler
        main_handler = bpy.types.SpaceView3D.draw_handler_add(self.call_back, (context, ), "WINDOW", "POST_PIXEL")

        context.window_manager.modal_handler_add(self)
        context.area.tag_redraw()
        return {'RUNNING_MODAL'}

    def modal(self, context, event):
        self.text = context.scene.custom_text
        self.size = context.scene.custom_size
        context.area.tag_redraw()
        return {'PASS_THROUGH'}

class REMOVE_CUSTOM_PT_OPERATOR(bpy.types.Operator):
    bl_label = "Remove"
    bl_idname = "custom.remove_text"
    bl_description = ""
    bl_options = {"REGISTER", "UNDO"}

    @classmethod
    def poll(cls, context):
        return main_handler

    def execute(self,context):
        global main_handler
        bpy.types.SpaceView3D.draw_handler_remove(main_handler, "WINDOW")
        context.area.tag_redraw()
        main_handler = None
        return {"FINISHED"}

def object_location_update(self,context):
    context.object.location.y = self.custom_obj_location

classes = (
    CUSTOM_PT_PANEL,
    ADD_CUSTOM_PT_OPERATOR,
    REMOVE_CUSTOM_PT_OPERATOR,
)

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

    bpy.types.Scene.custom_text = bpy.props.StringProperty(name="")
    bpy.types.Scene.custom_size = bpy.props.IntProperty(min=1, default=50)
    bpy.types.Scene.custom_obj_location = bpy.props.FloatProperty(update=object_location_update)

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

    del bpy.types.Scene.custom_text
    del bpy.types.Scene.custom_size
    del bpy.types.Scene.custom_obj_location

if __name__ == "__main__":
    register()

Thanks. I've got it.


text:
How can I find holes in a mesh?
I'm trying to vet the correctness of my mesh object, and I'm trying to find a method that will detect holes in my mesh. I define a hole as either of the following (these definitions are almost equivalent):

An area between faces that should be divided by another (missing) face.
A face who's front and back are on the same side of the mesh, i.e. it is impossible to tell which side of the face is on the inside of the mesh
A hole is indicated by a face that has at least one edge that is not shared by another face.

How can I automatically identify such holes/affected edges?
The following image demonstrates what I mean by this. The selected vertex has accidentally been ripped, and it is now loosely dangling in 3D space:

A similar image that easily illustrates definition 3 is this:

I found this answer, but this only proposes using a "magic fix everything" tool, while I'm looking for a way to find the problems, and correct them myself.

You can quite easily select all edges meeting your third condition with the Select Similar function.
To do this, first go into Edge Select mode, with Ctrl+Tab > E.  Then select an edge with only one face and hit Space and type Select Similar and choose the operator, then select Amount of Faces Around an Edge.

excellent! if your mesh doesn't have any seams you can "mark seam" or equivalently "mark sharp" to keep these bad edges easy to find while working on fixing them. Is there a better way to temporary mark a selection as high visibility?

Use Select > Select All by Trait > Non-Manifold option in 3dView header (or Ctrl+Alt+Shift+M) and in options of operator located in Last Operator panel (they appear there after executing it) deselect everything but Boundaries.

Select all and choose Select > Select Boundary Loop.

This will select boundary loops around selected edges.

Use shipped with Blender MeshLint addon (by default not activated). It allows choosing which categories of wrong topology to select, including non-manifold (however I think it will select wire, multiple faces etc. as well but still for completeness).

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


text:
texturing - uv maps - seams - why did it unwrap this way?
I thought I had marking seams down after I successfully predicted the outcome of all my seaming on all the primitive objects, including Suzanne, but I have just marked a seam and expected it to result in a separate island for the arm of my character but instead, it seems to have resulted in this...

ps. I did have a clear image of the seam but I don't have the reputation for 3 links.
In case you can't see it clearly, there is a seam at his wrist, his shoulder then one going down the arm to unroll it.

You've made a face inside the mesh, turn on display normals and look for the face inside the mesh and delete it, select mesh again and unwrap it

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


text:
Access Mapping node with python
Have problem similar to this but that workaround does not work for me.
Empty bpy.data.node_groups
I need to access mapping node with Python so I can change values. This code worked for several times I used script but suddenly it does not work anymore.
bpy.data.node_groups["NodeGroup"].nodes["Mapping"].rotation[2] = math.radians(180)

Also looking at python output when changing values manually and looking at tooltip path output I should use something like this.
bpy.data.node_groups["Shader NodeTree"].nodes["Mapping"].rotation[2] = math.radians(180)

But I get error that Shader Nodetree does not exist.
Can anyone explain what is going on here, am I missing something here?

related: http://blender.stackexchange.com/questions/31390/cycles-material-what-is-the-syntax-to-access-texture-mapping-location

Since Mapping is a shader tree node, a 'material reference' is required:
import bpy
import math

# get the material
mat = bpy.data.materials['Material']

# get all material nodes
nodes = mat.node_tree.nodes

# get the mapping node
map_node = nodes.get("Mapping")

# set the rotation z component
map_node.rotation[2] = math.radians(180)

Direct access:
rot_z = math.radians(180)
bpy.data.materials['Material'].node_tree.nodes['Mapping'].rotation[2] = rot_z

Result:

Other properties
# set the vector type to 'TEXTURE'`, 'POINT', 'VECTOR' or 'NORMAL'
map_node.vector_type = "NORMAL"

# set the location components
map_node.translation = (0, 1, 3)

# set scale values
map_node.scale = (1, 0.5, 1)

# use minimum clipping value
map_node.use_min = True
map_node.min = (1,1,1)

# use max clipping value
map_node.use_max = True
map_node.max = (0,0,1)

Result:

For the world environment it's basically the same:
# get the world
world = bpy.data.worlds['World']

# get all material nodes
nodes = world.node_tree.nodes

# get the mapping node
map_node = nodes.get("Mapping")

# set the rotation z component
map_node.rotation[2] = math.radians(180)

Direct access:
rot_z = math.radians(180)
bpy.data.worlds['World'].node_tree.nodes["Mapping"].rotation[2] = rot_z

Result:

Thanks this was helpful, I have Mapping node in environmet, I manage to figure out how to access it.

@SreckoMicic You are welcome :) I've updated the answer.

@poor Is there some way to do this in the game engine?

@christai Unfortunately I have no experience with Game Engine. Not sure whether there is a way using nodes for the world background in GE at all, but if this works it's the same process. Otherwise better ask a new question with game engine tag. Hope this helps :)

@poor Okay, thanks anyway. This topic of accessing material nodes in the Game Engine has been bugging me crazy, so thanks anyway for your input :)


text:
How to delete all keyframes of a specific property in python?
I have many objects that contain animation on their properties like location, rotation, and scale. I want to delete all keyframes from a specific property like a scale which I can do by right-clicking on that property and selecting Clear Keyframes but I want to do this for all selected objects using python.

clear keyframe of specific property of selected object
import bpy

def clear_keyframe(obj, data_path, ind=None):
    try:
        fcs = obj.animation_data.action.fcurves
        if ind is None:
            fc = fcs.find(f'{data_path}')
        else:
            fc = fcs.find(f'{data_path}', index=ind)
        fcs.remove(fc)
        print(f"{obj}  {fc}  removed")
    except:
        if hasattr(obj, "name"):
            print(f"{obj.name}  fcurve  remove fail")
        else:
            print(f"object  fcurve  remove fail")

for obj in bpy.context.selected_objects:
    clear_keyframe(obj, "location", 0)
    clear_keyframe(obj, "location", 1)
    clear_keyframe(obj, "location", 2)

clear all keyframes of all level one properties (not include modifiers, shape key, ...) of selected object
import bpy

def clear_keyframe(obj, data_path, ind=None):
    try:
        fcs = obj.animation_data.action.fcurves
        if ind is None:
            fc = fcs.find(f'{data_path}')
        else:
            fc = fcs.find(f'{data_path}', index=ind)
        fcs.remove(fc)
    except: pass

for obj in bpy.context.selected_objects:
    props = obj.bl_rna.properties
    for prop in props:
        array_length = getattr(prop, "array_length", None)
        if array_length is not None and array_length > 1:
            for r in range(array_length):
                clear_keyframe(obj, prop.identifier, r)
        else:
            clear_keyframe(obj, prop.identifier)

Thank you. It worked as imagined.


text:
Integer to integer not working
I need the same counts from the previous Mesh Line or Curve Line nodes to continue Multiplying or dividing for ahead but at this point, I am confused that in the Viewer node it is showing the exact integers I want but it is not working. Why?

The Count input is a single number, like a count of 10 with an offset of 1 m meaning every meter there is a point and 10 overall. You try to input a list (called "field" in Geometry Nodes) of index integers into it. The indices are 0, 1, 2, 3 etc. but a mesh line can only have one count of points, not several. How should a single line have an overall count of 0 points (impossible anyway, has to be 1 at least), but at the same time 1 point, 2 points, 3 points etc.?

I got it Thanks, but I want the same count I have in the previous Mesh Line node for the next one. Is it possible to get this?

The count is a fixed value. So why not simply put the same value in there? And if you want to change the value, just use an Integer node which you plug in both Count inputs. There you can set a single value. The Index holds a list of incrementing numbers, not the count of the Mesh Line.

If you use Capture Attribute or Transfer Attribute to query the index of a geometry on a certain domain (in your case you have chosen the attribute domain Points), you will always get the consecutive index of each point.
So you get back an integer value changing per point. This is called "field" and this type is marked with a diamond shaped socket. You can also compare this with an array consisting of several values.
In contrast to the "field", which is a whole array of values, the node Mesh line needs a single value for the input Count. This is represented with a circular socket.
So to feed both nodes with a single value you have (at least) two possibilities...
Either you give both nodes the same integer value:

Or you evaluate the number of points of one node with Domain Size and feed the second node with this value:

After a few comments and looking at the marked index column in the screenshot, I think he wants something else, hence my answer...

...once again I didn't understand the question at all, and he didn't actually tell us what he really wants to do here :D

Yes, I think he confuses the "count" in the mesh line with the incremental index numbers which are like you "counted" the points... but that's just a wild guess :D

I guess we are talking of different things in the comments. What you show in the Viewer node is the index of points in that Mesh Line, the index is their unique number to identify them. The Count in the Mesh Line node is the sum of all points that are building this line, so they are 10 points altogether.
Each Mesh Line with 10 points would have the indices 0, 1, 2, ..., 9 for its points. But after you combine them with Join Geometry, they are treated like a single object consisting not of 10 points, but 20. Since the index is a unique indentifier, no two points are allowed to have the same index inside an instance or mesh.
If you want them to repeat, you can use the ID instead of an index. Therefore you have a Set ID node in Geometry Nodes. You can use the Index node and plug it into a Math node set to Modulo with the other value set to 10. The result will be the difference between the index and a multiple of 10.
So while the Index in the joined geometry goes from 0 to 19, the ID goes from 0 to 9, then starts again at 0 and up to 9 again. So if you need these values for anything later on, you can use the ID node instead of the Index node.


text:
How to get the resolution of a movie sequence in VSE via python
I added a movie to the sequencer with this code.
filepath = /to/my/video/
mov = bpy.context.scene.sequence_editor.sequences.new_movie("Movie",filepath,1,1)
I can access its FPS,ColorSpace,Filepath,etc. But I am unable to get its Resolution using python.
mov.fps
mov.filepath
mov.colorspace_settings.name

x, y = mov.size?

mov.size  object has no attribute 'size'

It's in the MovieSequence.elements... take the first one (index 0) and you'll find orig_width and orig_height

Got it. Thanks.

If you switch on Dev extras under Preferences/Interface, you can right-click on an UI element and select Edit Source. This will open the python script in the Text Editor, and here you can see what and how an operator is called to display a certain feature. On getting the resolution, the playhead needs to be on the strip to make the resolution display correct.

Original video resolution is in the MovieSequence.elements. Take the first one (index 0) and you'll find orig_width and orig_height.
A link to the documentation here and here.
mov = bpy.context.scene.sequence_editor.sequences.new_movie("Movie",filepath,1,1)

element = mov.elements[0]

print(element.orig_width, element.orig_height)


text:
Tool-panel transform controls locked to origin
‘Must have pushed something’, as grandma says during her daily smartphone meltdowns. I’ll be more patient with her next time!
In edit mode, the move/scale/rotate/etc color arrows are wherever I click on the mesh, but suddenly in object mode they’re locked down on the grid.
Watched a bunch of videos, googled a bunch more, tried some set-origin changes, nothing doing.
If I hadn’t restarted blender to try to solve this, I could have just undone my way back, but blender unlike some apps saves all settings, and undo history is wiped, so I’m here.
Sorry for this noobness, and thank youuuuuuuu!
R

Hi. Sorry, it's not clear what you're asking. What do you mean by the controls are "locked down on the grid"? As you wrote in the title transform controls work on the object's origin. That's normal behavior. You might have applied the Location to the jacket so its origin is now at the world's origin. If you don't like that you can set the object's origin with help of the menu (Object > Set Origin > Origin To Geometry)

Or you can do your transformations in edit mode (press TAB) and then the gizmo will go back to the geometry

thank you guys, didn't see the comments, was checking on status and it kept saying 0 answers. coming back from edit didn't help, the color-arrow 'gizmo' was still down at feet at xyz 000. so i did have to select all and set origin to geometry, now when select for example hand, gizmo is on the hand, not at feet. still a mystery how it happened suddenly, never even knew what origin was, so i couldn't have gone thru those steps before to make this change. maybe a kbd shortcut i mashed. anyway, mr. blunder, if you post your comment as answer, i can mark it as solved, so you can get the credit (?)

select all and set origin to geometry (mr. blunder's advice)


text:
How to append from the asset browser instead of linking?
I'm trying to append assets from the asset browser but all the objects are linked, I need them to be editable, so it's better to append them instead of linking. I tried making it local, making it single user, but nothing worked

At the center of the top bar of the Asset Browser, in the dropdown menu choose Append instead of Link (but a linked object can still be unlinked if needed):


text:
How can I get rid of these creases on the bottom of my model's upper body?
Not really sure what I did here.  I think when I sculpted it messed it up.  I've tried reducing the polygons but it's still kind of weird.

hello, maybe overlapping faces, coul you please share your file? https://blend-exchange.com/

sure!  I added it in.  here's the link:

As you can see if you hide some faces, you have inner faces that are connected to your outer faces, you need to remove them. Also you've given thickness to your body, was it necessary? More generally, the topology is rather bad, you should redo something clean.

ah I see what u mean--I think when I deleted part of the body and made a new face it messed that up.  The thickness prob happened when I was trying to add clothing and edited the wrong layer.  Might try and decimate it first, but prob best to start from scratch.  Thank you tho for ur help!  I'm new to blender.


text:
How to stretch all UV faces to fill canvas?
I need every face of my model to fill the UV canvas (overlap). I thought that Lightmap Unwrap did this but I must be mis-remembering something. I have all edges marked as seams. The mesh is just a subdivided, elongated cube. All but 8 faces are identical and I can tweak those myself. How is this done?
More info: I am making a pallet rack (for a warehouse) and I need the supports to have the same shapes cut out of them at regular intervals. The material is otherwise matte. So I figured I would make a really small, b/w alpha texture and overlay the uv faces so they all fill this small texture space.
Here is the mapping I already did for the upright frames. I have secondary texture coordinates for the lighting to baked later. This will be exported to Unity.

Here is the horizontal frame that I still need to get the coordinates correct for. I want all these faces to cover the same area, the entire UV space:

Hello :). I'm sure you tried UV > Reset. Is there a reason why that wouldn't be suitable here?

Ugh...I missed it. Thank you


text:
Batch Rename (add-on) - inverted sequential numbering
Official Blender 2.8+ includes add-on called Batch Rename, but I can't find an option to invert numbering order for a bunch of objects (Text.001, Text.002, ..., Text.010).
Number 1 become 10, 2-9, 3-8, 4-7, 5-6.
Manual says

Regular Expressions can be used as a powerful way to tailor the Find/Replace texts and can be enabled using the icon to the right of the text fields.

Question - What is the right "Regular Expression" to add or revert sequential numbering of objects?
Note: There is an awesome script of p2or that does exactly what I need, but I would rather use a script bundled with official version. Thank you for your time :)

Can you write an example of at least 5 names and what you want to turn those names into? The way I understand your question is that you need to turn Text.001, Text.002, Text.003, Text.004, Text.005 into 001.Text, 002.Text, 003.Text, 004.Text, 005.Text

@MarkusvonBroady Feel free to edit my post if my English is wrong, because I don't want to change location of numbers in a name. I need to rename files like from ascending to descending ... what is number 1 become 10, 2-9, 3-8, 4-7, 5-6.

From the perspective of a regex formula, total number of objects is not known, not to mention that it would be hard to make a mathematical equation in regex - so I don't think what you're asking is possible. Outside of regex, by making a Python script, the problem is trivial.

@MarkusvonBroady If you think it is not a possible to get there with expression - you can write it as answer, I'm fine with that. If you are interested to extend current add-on with this feature even better. If you are "strong" enough to move this version into official release ... I can't pray more :) I just thought - if there is an expression, it would be easier to ask, than to merge new version into official build :)

Regex is a powerful (albeit not Turing complete) language, in which it's hard to say what is possible and what isn't: Adding Numbers with Regex.
However, in this case I find it fair to say the task can't be done using regex alone: the way search & replace functionality in regex mode works, is it goes through objects one by one, and applies the regex formula to each name separately. Therefore the task can't be done, not because of limitations of regex, but the limitations of the context available to it. Imagine writing a Python function, which gets an old name and is supposed to return a new name:
def rename(old_name):
    new_name = "?"
    return new_name

If you can't access variables outside of this function (and regex can't), then even though you're using a Turing complete language (Python), you can't come up with a solution, because while you can extract a number from the old_name, you don't know a total number of names, so you're unable to do new_number = total_number - old_number. If you hard-coded the total_number to the function, assuming that there's always 100 objects for example, then it would work (as long as the assumption holds true). Likewise, if your object numbering, instead of integers, uses float numbers in range [0, 1], e.g. instead of Cube.001, Cube.002, Cube.003, Cube.004, Cube.005,  it uses Cube.0.0, Cube.0.25, Cube.0.50, Cube.0.75, Cube.1.0, then again, you can make a Python function, not knowing the total number of objects, that still flips their names. Think of a shader that takes a texture and flips it, and what kind of data or coordinate system that shader requires in order to work. Search & Replace just doesn't supply Regex with that (and if it did, it would still be very unpractical to create such complex regex formulas).
The Python script solution can be as simple as:
import bpy

cubes = [o for o in bpy.data.objects if o.name.startswith('Cube.')]
for i, c in enumerate(sorted(cubes, key = lambda c: int(c.name.split('.')[-1]), reverse = True)):
    newname = f'Cube.{i:03}'
    if newname in bpy.data.objects:
        bpy.data.objects[newname].name = f'Renaming...{newname}'
    c.name = newname

However, this script has some problems:

It doesn't touch an object without a number in its name. So if you start with a Cube, and then duplicate it 9 times, it will only rename duplicates (giving the last duplicate number 000), while the first duplicate will become the last (009). You need to manually rename the base Cube to Cube.000 in order to fix that.
It assumes every object with its name starting with Cube. is the object to be renamed. Even if it's name is Cube.Big without a number.
It will make the numbers have 3 digits, even if you rename more than a thousand objects. So the numbering will be: 001, 002, [...] 099, 100, 101, [...], 998, 999, 1000, 1001, [...].
It assumes there's a dot immediately before a number. If there's any object like Cube.Big005, the script will fail trying to convert Big005 to an integer, and nothing will be renamed.
It's case sensitive, so it will rename Cube.001 but not cube.001.

Here's a more general script, dealing with those issues:
import bpy

name = 'sphere'  # what you search for, exactly. Searching for 'cube' will *not* find 'cube2' or 'cubes' or 'mycube' objects
case_sensitive = False  # Don't ignore letter case
ignore_numberless = False  # Don't treat an object with proper name but without a number as first in sequence
new_first_numberless = False  # Keep the convention of not giving the number to the first object, after reversing
minimum_digits = 3  # use at least that many digits in object numbering (the script will use more if necessary)

# ------------------------------------

objs = bpy.data.objects

_name = name if case_sensitive else name.lower()

to_be_renamed = []
for o in objs:
    name2 = o.name if case_sensitive else o.name.lower()
    last_part = name2.split('.')[-1]
    if not last_part.isdigit():
        if not ignore_numberless and _name == name2:
            to_be_renamed.append((-1, o))
        continue

    if _name == name2[:-len(last_part)-1]:
        to_be_renamed.append((int(last_part), o))

to_be_renamed.sort(key = lambda x: x[0], reverse = True)

number_len = max(minimum_digits, len(str(len(to_be_renamed)-1)))
format_str = '{}.{:0' + str(number_len) + '}'

for i, (sortkey, object) in enumerate(to_be_renamed):
    if i == 0 and new_first_numberless:
        newname = name
    else:
        newname = format_str.format(name, i)
    if newname in objs:
        objs[newname].name = f'Renaming...{newname}'
    object.name = newname

There are settings in one place for easier script usage.
If an object's name is the name searched for, without a number, it's number is considered as -1 (so its order is before 000)
Every number has to be at the end, immediately after a dot. An object like Cube001 will be ignored (but the script will not fail)
If the last element is 35000, the first will be 00001 (consistent length of numbers)

Great :) Two things - please extend your Answer about impossibility to use expression for this task, so I can accept your answer. Second - can you contact author of Batch Rename to ask him to extend his script with this function? Thank you for your time.

@vklidu I added the explanation. As for the extension of the Blender's functionality: I think options like that would unnecessarily clutter the UI, for how often it would be needed and so I'd consider it a so-called feature creep. Not only that, but given how many options there are already in the script, and how many more could be added (some people perhaps want to work it also without a dot in the name), I think it's best to leave such problems to the scripting tab, where they can be modified to suit a particular case. I could be wrong, but I won't request something I disagree with.

OK :) that is fair enough. Thank you.


text:
How to export fluid animation 100% prebaked and import to UE4
I want to have a object lift out of water and have the water drop(drips) from the object, and doesn't need to be interact with, so it may be 100% pre-baked.
I made the animation in blender, but I can't seem to correctly export the fluid animation to UE4.8.
steps I did:

(Blender 2.74) make simple fluid simulation and bake it (using the Bake button in the Fluid domain Physics tab)
(maybe I need to bake it another way after that?)

(Blender 2.74) Export it to FBX, well here are a lot of options, first im not sure wich version to use FBX 7.4 Binary or 6.1 ASCII Mainly I select version 7.4 and enable Apply Modifiers, Baked Animation, NLA Strips and All actions. (I tried many different options)

(UE4.8) Import FBX, and enable Import morph targets, import animations, import local transform. same goes here I tried a lot of different options.
I hope someone can help me with this and put me in the right direction.

Due to the nature of fluid (bits splitting off and merging), each frame is actually a separate mesh. Not sure if blender really has a way to export this without writing some custom python or parsing the fluid cache files directly. And I don't know if/how mesh sequences are handled in UE.

Gandalf 3 is right.
Wanted to do the same thing, Searched the whole god darn internet. Found this guy's video. Ass got saved. https://www.youtube.com/watch?v=eariwFN_1_g Though it is not the most desirable way of doing it. But it sure keeps the boat afloat. Share this with all the people who are searching for this same problem. I have come across so many.

You really cannot. Fbx exporter won't take your fluid data, so only option you have is to export it as .obj sequence, which creates new mesh for each frame. Then in UE4 you most likely need to do some rather extensive programming to make your own custom animator to switch models per frames. Even if you would get this far it would be very likely that you run into performance issues unless your simulation resolution is very low.

Some time ago I actually found a way to achieve this.
In this video you will learn how to export .abc file from Blender properly, and then you can use this add-on to simply import an .abc file into Unity.

Though the document is in Japanese, I think it's easy to follow.
By following these steps, you can get a nice animation outcome, just as in Blender.

Bless your soul dear friend! Now I finally understood why Adam team talked about Alembic importer.

In my case the following method helped:
https://youtu.be/ZtWWHLHXWq4
Note: They only started supporting alembic files in both unity and blender in the recent months. Blender needs to be 2.81 and unity needs to be 2019.3.0a6 or higher and also have the alembic package installed in unity. Mine didn't work until I restarted my computer also.
Second note: Even after accomplishing this,  the amount of data the water animation took once it was in the game was humongous. I'm going back to the drawing board for a water fountain. Good luck!


text:
Camera object askew (does not match pose specified by its global transformation matrix)
I ran into a (to me) really strange problem. I have a camera that is located at the origin. With various constraints I animate the camera's path to be that of a kite flying an 8 shape pattern (so it does not stay at the origin, it just seems like that in the Transform panel because effects of constraints aren't taken into account quite then). I grab the camera's pose with python via
bpy.data.objects['Camera'].matrix_world

The translation vector seems to be correct. However, when I place a second camera at the origin and move it to the location and rotation specified by the original camera's transformation matrix, the two camera poses don't quite match up as I had expected (see below, original camera selected/highlighted).

I figured maybe it just looks like one is askew since I couldn't see a difference in a picture taken with each camera. So I ran some tests with OpenCV trying to project some image points using the same known blender camera pose with each camera. As it turns out though, the cameras really are different. With the original, seemingly askew, camera the projection is off. What's going on here? Did I transform/deform my original camera on accident somehow (didn't even know that was possible...)?
Here's a minimal blend file, only including the necessary constraints and objects for the movement. In frame 1 I added the second camera based on the original camera's transformation matrix. I had a random noise enabled on the location and rotation of the animated camera but it's disabled in the example. I disabled it earlier thinking that that might have caused my problem. The Blender version is 2.73.

I think it might be caused Follow curve option of the Follow Path constraint, but is it desired behavior?

@nilsoe if you bake the animation does the original camera transformation change? you might be copying a weird value due to what you said, but not sure how to explain the behavior


text:
How to load a movie file into blender, and re-export it as a sequence of images, headlessly (via .bpy/python script)
Trying to get to grips with the abilities of blender when used purely as a python library (without any GUI interactions). (Forgive my lack of knowledge and misuse of words)
The code examples and documentation I am finding seem geared towards scripts to apply when content is already present within the blender GUI. (e.g. Extract sequence of frames from imported MP4 - scripted?)
Does an example exist in documentation for loading external files into a blender virtual stage?
e.g. 1 picture node and 1 video node
and (secondarily) exporting the rendered output (e.g. video with an image overlaid) as an image sequence.
I've been looking through https://www.blender.org/api/blender_python_api_2_72_release/info_quickstart.html and http://wiki.blender.org/index.php/Dev:Py/Scripts but I haven't been able so far to find a good starting point for my knowledge level.

This script accepts the movie file and output directory as command line arguments, then loads the video file as a video sequence editor (VSE) clip and renders it out as frames (by default as PNG, change if needed).
It automatically sets the render resolution and frame duration according to the video file.
import bpy, sys

# Take movie clip filepath and output directory as command line arguments
movieFilePath, OutputPath = sys.argv[-2:]

S  = bpy.context.scene
mc = bpy.data.movieclips.load( movieFilePath )

# Set render resolution to match movie clip
S.render.resolution_x          = mc.size[0]
S.render.resolution_y          = mc.size[1]
S.render.resolution_percentage = 100

# Set number of frames to match movie clip length
S.frame_start = 0
S.frame_end   = mc.frame_duration

# Set render format and output folder
S.render.image_settings.file_format = 'PNG'
S.render.filepath                   = OutputPath

# Load clip to sequencer
se = bpy.context.scene.sequence_editor_create()
se.sequences.new_clip( "MyClip", mc, 0, 0 )

# Render animation to create image sequence
bpy.ops.render.render( animation = True, write_still = True )

To use it, save the script file, then run blender from the command line and provide the filepath and output directory as arguments:
blender -b -P movie_to_images.py -- C:/MyMovie.avi C:/OutputFolder/

How would I go about overlaying the current frame number onto the sequence? (apologies if I shouldn't be asking follow up questions in comments)

In blender 2.76 there are new "text" effect strips in the Video Sequence Editor. You can add these for each frame with the frame number as the text. You can see good examples of this in use in the textSync addon: http://www.blendernation.com/2016/02/04/textsync2d3d-enhanced-subtitling-in-blender/

do the command line arguments expect a blend file?
Should I be using a different blender executable?
This is the output
blender -b test.py Sockets.mp4 ~/out
found bundled python: /Applications/blender.app/Contents/MacOS/../Resources/2.76/python
read blend: .../test.py
Error: Failed to read blend file '.../test.py', not a blend file

Blender quit
`

Yeah, and another parameter. Forgot! Edited answer to reflect the necessary changes.

Does the blend file need to contain anything?

Nope, it can be completely empty.

Let us continue this discussion in chat.

@OhNoezWoez - found the issues and fixed 'em. Have a go at the updated script.


text:
How to set up shape key driver in 2.80?
So I have this character animation with a shape key that flattens and unflattens his hat:

(in glorious technicolor here)
It looks good. But the shape key is mucking up all my other Actions now. It is an omnipresent key. I heard that this can be fixed by keying a shape key driver instead of the shape key directly. So I set out to do this. Unfortunately, I hit a nasty bug where my driver says "Mute" as soon as it is created, and I don't know how to get around that. It is possible that I am not using the correct settings, but I was following the official documentation as closely as possible. When I try to set local rotation as the determining factor, I cannot get any result at all. When I try to do local translation as the determining factor, the shape key is "mute"ed from the moment his hat is scrunched (that is, it becomes instantly un-scrunched) to the moment his hat pops back up again (another pop-in transition); The shape key is being muted and it is preventing me from having any idea what I should be doing. Can anyone help me?
I made a painful recording of my struggle here.
IMPORTANT NOTE: This character is going to be exported into Unity so I can't use modifiers that will not export to FBX.

Perhaps use hooks to flatten the hat instead? You can parent the hooks to the main bone or character but it might be a lot safer to instead, add an Empty with which to animate the armature or character's rotation to the inverted pose. Parent the armature to that, then parent the hooks to that also. Hooks can then be keyframed 'locally'  and shouldn't interfere with anything else.

@Edgel3D I am checking Google and I am only getting results for a "Hook Modifier", is this what you mean? Because I need to export this character to Unity and the modifiers will disappear on conversion to FBX. As far as the inversion goes, that is a good idea but I don't want to redo the whole animation. I have been advised to have 2 versions of the character in Unity that I can swap in and out just for this animation, and that seems viable. The sticking point is the hat's shape keys. Is there another way to key this effect that will export correctly?

It's a canned-animation and I know all the required offsets. I can get his transform from Unity to make it perfect. I am just having problems with the hat scrunching in all my 20 other animations

The one thing you could do is to rotoscope in 3D. i.e. apply the shapekeys for each frame the hat is to go from scrunched back to normal. You end up with 3 or 5 multiple hats, depending on the speed you're after.  All hats will be there, following the character's head, but only one is visible at any one frame. A little like a movie film showing one frame at a time and in sequence. Each hat will be deformed in varying degrees as hard mesh so an external game engine should accept them ok.

The character mesh is entirely one object. The first scrunching part is 8 frames and the un-scrunching is 5 frames. So I would need 13 additional meshes for a situational character prefab. I would like to be able to scrunch and un-scrunch his hat in multiple animations, as the game requires. The driver bones seem like they should be exactly what I need, and almost work, there is just some strange problem I am encountering in my "unique" situation. I am considering uploading a minimal working example to see if somebody can make it work and report the solution.

The problem was that I was setting a driver for the MUTE property of the shape key, not the VALUE property. In order to set a driver for the VALUE, right click the value and you will see an option to add a driver.
I was convinced yesterday that it was not possible to right-click the VALUE (as of 2.80) and see an option to add a driver, that I had to right-click the checkbox instead. This was a mistake. Thank you to everyone (@Edgel3D) who tried to help. The problem is now solved.

Good to hear that, and I've learned something :)


text:
Why is alt V dragging from the bottom rather than the top
I'm watching a tutorial on how to make a head in blender.  To make a nose the person is using alt v to extrude the vertices.  I'm clicking above the vertice I have selected like she says, but it drags from the bottom.  The first image shows how its supposed to look and the second shows what's happening to me.  Any help would be appreciated

You need to put your mouse cursor where you're supposed to move your vertex afterwards, maybe it's your problem here?

yeah that's what I thought but I have it above above the vertex... :(

could you please share your file?

thank u!  now the vertices isn't letting me select it at all  sadly

You have overlapping vertices, select all and press M > Merge by Distance. Also deactivate the Proportional Editing option.


text:
Why does my model have a crease on the chest?

I am trying to create a base model of a human body, but my theres a crease on the chest that I cannot get rid of.  I have tried adjusting the vector points, but I am not sure what is causing it.

don't use mirror modifier. instead use symmeterize option when sculpting. https://blender.stackexchange.com/a/258144/142292

is there a way I can remove it after the fact?  The mirror modifier I actually just for the arms I didn't use it on the chest

Looks as if there may be an internal face there. Go into wireframe view with Shift-Z and delete it if there is one.


text:
Why can I not see any vertices?
Anyone know why I cannot see any vertices for this shape? I am in edit mode and have show overlays enabled.

Probably because you're using the skin modifier. Try Shift-Z to go into wireframe mode and see if they show up.

Thanks for the response.  When I switch to wireframe mode I see the edges but still not the vertexes :(

Please share the blend file in that case so that we can see what's going on. https://blend-exchange.com/help

I think I might have fixed it by changing to object mode and then hitting apply on the dropdown for the modifiers, and then switching back to edit mode.  I appreciate the help though, thank you!

Ok. I still suspect that the skin modifier was masking the view though.

The geometry generated by the modifiers is obstructing the base vertices underneath. In your case it's a bit harder to figure out because your base geometry is only a single vertex.
The result of a modifier is generated in a non-destructive way: You can see the result, but you cannot modify the resulting geometry directly, only the base geometry from which it was derived, which in your case is that single vertex at the center.
Edit mode allows you to edit the vertices on the base geometry, not the result of the modifiers. If you put the same modifiers on geometry other than a single vertex, you'd be able to spot what's going on.

It's still a little hard to see what's actually going on, but you can see some vertices poking out. It becomes more clear when you turn on X-Ray:

Now you can fully see the geometry underneath. One is a cube, the other a single vertex.
If you want to finalize your modifiers and mess with them in Edit mode, you just have to click 'Apply' on both of your modifiers (in order from top to bottom, so first Skin, then Subdivision). You also have to go back to Object Mode to do so, because these particular modifiers completely replace the existing geometry.

Now you're good to go!


text:
Is there a faster way for me to create this hair?
I am currently trying to model curly hair on this model.  To simulate it I have been placing and duplicating these brown shapes you see here, but its very slow and time consuming.  Is there a quicker way to do this?
Thanks!

You can use particles > Hair. Create a sphere that will be your particle hair. In Weight Paint mode, paint the vertex group where you want the particles to appear:

In the Particle System panel, create a new particle system > Hair, under Render choose the sphere and give it a bit bit of Scale Randomness. Under Vertex Groups select the vertex group that you've created as Density and Length:

If you want to make the instances real, open the Modifier panel and click on Make Instances Real:

thank u for ur answer!  The only problem I now have is the hair is only populating on one side--could this be an issue with the mirror modifier?

because the issue I have when I get rid of the mirror modifier is it fills in unevenly then

You can keep the Mirror modifier if you want, check the answer here: https://blender.stackexchange.com/questions/88395/particle-effect-showing-only-on-one-side-of-mirrored-object  Basically put the Mirror modifier above the Particle System and in the Particle System panel enable the Emission > Source > Use Modifier Stack option

Thanks--that worked for me being able to keep the mirror modifier on, but its still filling it in uneven on both sides.  I have an image here: https://drive.google.com/file/d/1WlXuxr3TVYgwCCH3vzDAXteP6bMRqnL3/view?usp=sharing, https://drive.google.com/file/d/1XO-Zr-O9FGa36IqNZlSpu9emeiokpdPS/view?usp=sharing

whoops the first one is the wrong screenshot lol

yes the particles are not symmetrical if this is what you mean, i'm not sure how you could achieve that


text:
Will there be a Blender 3.x LTS and if yes, when?
According to this post (https://code.blender.org/2020/02/release-planning-2020-2025/) referenced at the bottom of the official Blender LTS download page, Blender 3.3 LTS was proposed to release in May of this year, but that didn't seem to happen (yet?).
In fact, only Blender 2 has LTS releases so far, with the latest one (2.93 LTS) initially released in June 2021.
This left me wondering:

Is there still a plan for Blender 3 to have LTS releases?
If yes, is it known when we can expect the first one and which minor version it will be based on?

Hello and welcome. Your question is more of guess at the moment, only the developers have the answer. The site is for questions about how to do things in Blender. If you are looking fo a discussion type, try with Blender artists or Blender in Reddit.

@Emir Not really. It's not a guess. There are plans. They sometimes are late, but still happen.

yeah but still i think this question likely does not belong on this site. voting to close.

@MartynasŽiemys We as users can only guess, because as you said, sometimes they are late, the correct date for a release to be available can only be answer by the Blender Fundation

@sefexin245 By the way, you could watch Blender Today on youtube, it's a live stream and you can ask the question there

We can be quite sure that - yes, it is going to be released, yes, it will be LTS and that it will happen some time during the next month.

This is not guessing. The releases are planned. They do happen as planned within some margins. While this is not the most valuable question for the community since it's going to expire in a month or so, I see nothing wrong with it. It is in fact wrong to say that we don't know - the development process and plans are public.

@MartynasŽiemys Many other questions might have answers that are not guessing, that doesn't automatically qualify for being on-topic. To me this is a question regarding Blender's development, which is considered off-topic according to this community post (4.): What questions should be definitely off-topic?

@GordonBrinkmann I don't know... It says "Developing Blender (in C/C++)..." So... not so clear to me. It's not about developing Blender in C, it's about releases of Blender that is vaguely related to development in general... It may be that it should be off topic. Anyway I see no big deal about answering it. Do you think we will not see Blender 3.3 LTS released next month? We will. :D

@MartynasŽiemys I thought of the C/C++ as distinction to Python scripting which is considered on-topic, and not every example has to be explicitly mentioned. Since you've answered and it's accepted already it doesn't matter much anyway. And what does me believing if we see Blender 3.3 LTS next month or not have to do with considering it off-topic? never said your answer is wrong... I just think the question is of no future value for users struggling with working in Blender. And the closer the release date is, the more irrelevant the question is on a site like this. But that's just my opinion.

Something I was thinking as well. The question seems to have no long term value. But if a new user does not know anything about Blender's development, asks this question here ... gets an answer "well - who knows - Blender will be released whenever the devs feel like it and LTS may or may not be a thing and you are wrong to even ask this" Well that's misleading in my view. The releases are planed strictly and LTS versions are a serious thing meant for big studios to be able to trust Blender and the way its developed. They are here to stay. I think that's kind of important to make clear.

It says it here that version 3.3 is going to be LTS. So once it is released, it is going to be LTS. Blender 3.3 is the next version that is going to be released. We can see it here that it is currently in beta stage. I believe it will be released some time next month. A quick web search finds a few mentions of September 7 like here so even if it's late a few days, it is going to happen.

https://developer.blender.org/project/view/142/


text:
How to access pose bones via python in this condition?
I'm making an add-on to boost my workflow. I want to add custom shapes to the bones of the armature selected in the PointerProperty from the panel. But according to my knowledge, I can only add custom shapes in the posebones of the armature which can be accessed by bpy.context.object.pose.bones but taking an armature like this I've already accessed bpy.context.object.data. Any help would be greatly appreciated.
Here is the code:
import bpy

class CUSTOM_PT_PANEL(bpy.types.Panel):
    bl_label = "Custom"
    bl_idname = "CUSTOM_PT_PANEL"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Custom"

    def draw (self, context):
        layout = self.layout
        layout.prop(context.scene, 'select_rig')
        layout.operator('add.custom_shape')

class CUSTOM_OT_OPERATOR(bpy.types.Operator):
    bl_label = "Add custom shae"
    bl_idname = "add.custom_shape"

    def execute(self,context):
        armature = bpy.context.scene.select_rig

        #Custom Shape
        bpy.ops.mesh.primitive_cube_add()
        shape = bpy.context.active_object
        bpy.ops.object.mode_set(mode='EDIT')
        shape.scale.y = 0.4
        shape.scale.z = 0.4
        bpy.ops.mesh.delete(type='ONLY_FACE')
        bpy.ops.object.mode_set(mode='OBJECT')

        return {'FINISHED'}

classes = [CUSTOM_PT_PANEL, CUSTOM_OT_OPERATOR]

def register():
    for cls in classes:
        bpy.utils.register_class(cls)
    bpy.types.Scene.select_rig = bpy.props.PointerProperty(name='Select Rig',type=bpy.types.Armature)
def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)

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

The mistake here is that you use type=bpy.types.Armature for the PointerProperty. This allows the user to pick an Armature which sounds right. But this data block has no pose bones. The Object of type 'ARMATURE' has actually the pose data. You can see this in the outliner.
type=bpy.types.Armature:

What you really want is the Mannequin object (type=bpy.types.Object):

Now the user can pick one of all objects. Of course, you don't want that the Camera can be picked which makes no sense. To limit the selection to Objects of type ARMATURE you can use a poll function and check the type of the object in question. This works like a filter:

Here's the modified script. The validation check (lines 22 to 25) is just for testing and never should fail when the filter is correct.
import bpy

class CUSTOM_PT_PANEL(bpy.types.Panel):
    bl_label = "Custom"
    bl_idname = "CUSTOM_PT_PANEL"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Custom"

    def draw (self, context):
        layout = self.layout
        layout.prop(context.scene, 'select_rig')
        layout.operator('add.custom_shape')

class CUSTOM_OT_OPERATOR(bpy.types.Operator):
    bl_label = "Add custom shae"
    bl_idname = "add.custom_shape"

    def execute(self,context):
        armature = bpy.context.scene.select_rig

        # this validation check should never fail because scene_mychosenobject_poll()
        # will limit the selection
        if armature.type != 'ARMATURE':
            raise ValueError(f'Select an armature not {armature.type}')

        #Custom Shape
        bpy.ops.mesh.primitive_cube_add()
        shape = bpy.context.active_object
        bpy.ops.object.mode_set(mode='EDIT')
        shape.scale.y = 0.4
        shape.scale.z = 0.4
        bpy.ops.mesh.delete(type='ONLY_FACE')
        bpy.ops.object.mode_set(mode='OBJECT')

        # assign the custom shape to a bone
        armature.pose.bones['LowerLeg.L'].custom_shape = shape   # <== adjust the bone name!

        return {'FINISHED'}

# filter the selection
def scene_mychosenobject_poll(self, object):
    return object.type == 'ARMATURE'

classes = [CUSTOM_PT_PANEL, CUSTOM_OT_OPERATOR]

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

    # select_rig should point to an Object of type 'ARMATURE'
    bpy.types.Scene.select_rig = bpy.props.PointerProperty(name='Select Rig',
        type=bpy.types.Object, poll=scene_mychosenobject_poll)

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

if __name__ == "__main__":
    register()

Related questions:

Limit "prop_search" to Specific Types of Objects
How do you access the object that a PointerProperty points to?

Thank you very much.


text:
Spin mesh (to create solid of revolution)
I want to be able to take a function f(x) and first make a plot of the function on given interval and then build a solid of revolution of that mesh by rotating it around X-axis of the plot.
I've made a script that generates the graph. My question is how to spin the mesh (360° angle).
I tried to use function bpy.ops.mesh.spin:
bpy.ops.mesh.spin(steps=36, angle=2*pi, axis=(1, 0, 0))

but I still get RuntimeError
Traceback (most recent call last):
  File "<blender_console>", line 1, in <module>
  File "C:\Program Files\Blender Foundation\Blender\2.72\scripts\modules\bpy\ops.py", line 188, in __call__
    ret = op_call(self.idname_py(), None, kw)
RuntimeError: Operator bpy.ops.mesh.spin.poll() failed, context is incorrect

My code for generating graph mesh of given function:
# User function (return None if undefined)
def user_function(x):
    "Math function for given X, returns Y"
    if x == 0:
        return None
    return 1/x

# Resolution - number of samples
res = 100

# MIN and MAX values for the graph to plot
minX = 1
maxX = 10
minY = 0
maxY = 1

# Real size of a rectangle of the graph
sizeX = 2
sizeY = 2

# Recalculate Y-value for undefined points
recalculate_undefined = True

# Whether to delete old object
delete_old = True

# ===== Program =====
import bpy

step = (maxX - minX) / (res - 1)

coefX = sizeX / (maxX - minX)
coefY = sizeY / (maxY - minY)

RminX = - sizeX / 2
RminY = - coefY * minY

Z = 0

vertices = []
undefined = []
# Calculate values
for ix in range(res):
    x = minX + step * ix

    # Calculate and store Y-value
    y = user_function(x)
    if y == None:
        undefined.append(ix)
        y = 0
    y = min(maxY, y)
    y = max(minY, y)

    cX = step * ix * coefX + RminX
    cY = y * coefY + RminY
    cZ = Z
    vertices.append((cX, cY, cZ))

# Calculate undefined points
if recalculate_undefined == True:
    for ix in undefined:
        avg = []
        if ix > 0 and (ix - 1) not in undefined:
            avg.append(ix - 1)
        if ix < (res - 1) and (ix + 1) not in undefined:
            avg.append(ix + 1)

        if len(avg) >= 1:
            y = 0
            for a in avg:
                y += vertices[a][1]
            y /= len(avg)
            vertices[ix] = (vertices[ix][0], y, Z)

# Delete old object
if delete_old == True:
    if "Graph" in bpy.data.objects:
        bpy.ops.object.select_all(action = 'DESELECT')
        bpy.data.objects["Graph"].select = True
        bpy.ops.object.delete()
    for item in bpy.data.meshes:
        if item.users == 0:
            bpy.data.meshes.remove(item)

# Create new mesh
mesh = bpy.data.meshes.new("graph")

# Build edges from vertices
edges = [(ix, ix + 1) for ix in range(res - 1)]
faces = []

# Complete mesh and build object
mesh.from_pydata(vertices, edges, faces)
object = bpy.data.objects.new("Graph", mesh)
bpy.context.scene.objects.link(object)
object.location = bpy.context.scene.cursor_location

Edit1:
This post is not a duplicate of poll() failed, context incorrect? - Example: bpy.ops.view3d.background_image_add().
I'm looking for a solution without only avoiding the error by changing contexts.

possible duplicate of poll() failed, context incorrect? - Example: bpy.ops.view3d.background_image_add()

If we focus on what you want, which is a spin or geometry Lathe, then this is not a duplicate. The error however can be avoided by changing contexts. (linked above) . Below I've answered a way to do this without the context.

Although the specific context override for this question can be found in the edited Question at the bottom http://blender.stackexchange.com/questions/7205/spin-a-mesh-from-python-api?rq=1 . I don't think this is a duplicate because the question is how to spin geometry not how to override (even though that's the error that led to the question)

You could use the spin provided by bmesh operators. This doesn't require any particular context. Here's an example:
From sverchok source code:
import bpy
import bmesh
from bmesh.ops import spin
import math

def lathe_geometry(bm, cent, axis, dvec, angle, steps, remove_doubles=True, dist=0.0001):
    geom = bm.verts[:] + bm.edges[:]

    # super verbose explanation.
    spin(
        bm,
        geom=geom,         # geometry to use for the spin
        cent=cent,         # center point of the spin world
        axis=axis,         # axis, a (x, y, z) spin axis
        dvec=dvec,         # offset for the center point
        angle=angle,       # how much of the unit circle to rotate around
        steps=steps,       # spin subdivision level
        use_duplicate=0)   # include existing geometry in returned content

    if remove_doubles:
        bmesh.ops.remove_doubles(bm, verts=bm.verts[:], dist=dist)

obj = bpy.data.objects['Graph']
bm = bmesh.new()
bm.from_mesh(obj.data)

axis = (1,0,0)
dvec = (0,0,0)
angle = 2*math.pi
steps = 20
cent = obj.location

lathe_geometry(bm, cent, axis, dvec, angle, steps, remove_doubles=True, dist=0.0001)

bm.to_mesh(obj.data)
# obj.data.update()   # if you want update to show immediately
bm.free()

Things to be aware of:

A small update in 3d view is required to see the result. The mesh will get updated whenever Blender call updates, so you don't strictly need to force the update yourself, but you can if you want to by called obj.data.update()
Possible downside of the bmesh.spin is that the order/topology of faces is not guaranteed or predictable.

You might prefer to use a further abstraction, which assumes the center of the rotation is obj.location: https://gist.github.com/zeffii/d4efc7c346d6aa90ae18

It seems to be working like expected. Thanks!

You could also use the 'screw' modifier, like this :)

+1 for tricky solution :) works with angle 360° and screw offset set to 0.


text:
How can i zoom in really close to a model without this 'xray' effect?
I would like to know if there is any way that i can stop this from happening. I would like to be able to zoom as much as i want into / around a model without any of this stuff happening.

Switching to Ortho mode is easiest and fastest (numpad 5).


text:
Delete geometry using index in geometry node
I want to delete geometry based on the index number like I want to every third index and it should go until points (curve/mesh) end. Also, what could I do if I want to use any other index instead of the third one?
Thanks in advance

you can use this node setup to delete every 3rd face. I used faces here, that you can clearer see, what happens. Just change the delete geometry node from face to point to delete points.

Just change the value in modulo from 3 to any other value you want e.g. 4 to delete every 4th point.

Thank you for answering. It is really helpful.

glad i could help

@Chris has answered, but here's a little group to explore modulo-selection, including options to invert and offset your selection.

Thank you for sharing your the files that's really helpful.

If it doesn't work for you, double check their nodes, and also try offsetting Index with a negative number instead of adding. In my case I changed math node to subtract and offset the index with numbers running up to the count of the vertices it had.


text:
parenting not working on certain objects, text turns yellow and creates linked copy instead
When I try to parent certain objects, instead of one moving under the other in the hierarchy now suddenly the child objects stays exactly where it is and the text turns yellow, and there is a second sort-of linked ghost child attached to parent. I have no idea how this happened, must have hit some key accidentally and now I don't even know what to search for since I have no idea what I did and searching for stuff like "cant parent child gets linked instead yellow text" yields absolutely nothing.

Found the issue, my hierarchy got so complex that I didn't notice I accidentally created the object child outside of the collection the parent is part of. There is no way to spot that easily unless you scroll all the way up through the hierarchy.


text:
How can I stop unwanted mesh parts to move when parts of my armature moves? Everything is parented correctly. Thanks for any help in advance!
What you're looking at here is a gargoyle, made up of a torso, 2 wings and a head.
The head was previously alone, then I added a horn, tooth, and an eye and applied a mirror modifier and then finally merged these with the head to become all one object before having it parented by armature.
My screenshots show a couple different scenarios, when I move some of my IK bones, you can see that the bone is also influencing the gargoyles horn and ear on the head and sliding it off the head. This same thing happens on the other side horn when I move the other bones by the head also.
Previously, the head was in several objects (Head, horn, tooth, eye, then I added a mirror modifier to the horn, tooth, eye and applied it and then merged these with the head to be all one object)
I thought this issue was due to the horn (also eyes, eyebrow and teeth) only being "joined" to the gargoyles head rather than "merge", so I tried both methods.
Weight painting has not helped, I have also tried adjusting envelope weights with no luck either. I keep unparenting my armature and reparenting it back to the head, torso and wings

Select the parts that don't follow correctly, in the Vertex Groups list click on Remove From All Groups, then assign to the correct group?

For some reason your vertices are not correctly assigned, to fix that, select the vertices that don't move correctly and Remove from All Groups:

Then assign them to the correct group:

Wieght paint mode.
in the armature menus, the little stick figure.
select a bone and then ctrl+tab into wieght paint
set what you dont want to move to 0
you have to do a bone one at a time


text:
How to generate Reaction Diffusion animation?
How to create Reaction Diffusion as animated texture (image sequence) in Blender?

For those who interested in what it is – Reaction–diffusion systems on Wikipedia

You might be interested in https://www.youtube.com/watch?v=BD3HDVtsauI and / or https://iperson.github.io/tn_docs/ !

@Gorgious WOW ... what an awesome erosion ... thanks :)

@vklidu Yeah I'm keeping my eye on it, it's GPU accelerated and all, waiting until the UI and UX gets a bit more friendly :)

Since this site is meant to be as knowledge base … here is one option for Compositor. This technique mimics one used by image editor apps:

Copy - Blur - Subtract - Contrast - Merge - Save … repeat with saved image

Add any your black&white image named like 0000.png from separate directory, because running rendering will generate an image sequence to that place.
The trick here is to reuse rendered and saved image for calculation of next frame. For that you have to add Texture node type Image Sequence even you have only your image for frame zero.
Offset -1  ... Thanks to @Robin Betts for pointing that.
To speed up animation you can close nodes into a Group and use it a few times in line.

Additional post-pro (generated sequence with Filter node type Sobel, regenerated and used with Displays modifier).

There is also option use Tissue addon for 3D object … version bundled with official Blender release doesn’t contain Cache feature, to get animated version get latest version from GitHub

Really cool, thanks for answering your own question :)

@JachymMichal Sorry for that ... I just did it a year ago in Ph with a script and lost it ... spend a time to restore from web infos ... here I can find it.

Hey man, I meant it sincerely. StackExchange epxlicitly encourages users to anwer their own questions :)

OK ... thanks for the link :)

I think it's great to put up your own Q to be answered. I would have WOW!ed this earlier, but I've spent too long playing with it :D.. Hey! Who needs a camera?  Now I'm trying to work out what relation this has to  r-diff, as researched by Turing in his last days... A lot of the notation is beyond me, really.

Geometry Nodes - Simulation
a bit of update for the fun club here :) Since 3.6 simulation nodes are official ...

One of many in these days ... this one thanks to Erindale.


text:
Rigging: yaw + pitch problem
I have a problem rigging a model I did.
I want to rig the base of the cannon so that it is divided into two pieces. I want the top part to be able to yaw and pitch, and the bottom one to not yaw, but still be able to pitch correctly (second picture).

Here is the original post: http://blenderartists.org/forum/showthread.php?383916-Help-rigging-a-sci-fi-cannon
and here is the blend file:

The problem is 1 bone cannot operate 2 separate parts. You need 2 bones, first for rotation left/right and second parented to first for tilting back/forth.

I think you mean for the bottom element to yaw (turn left and right) but not to pitch (forward and back). Either way, you can lock any bone to the desired rotation by clicking on the appropriate padlock icon next to the x/y/z rotational axes for the bone at the top of the Properties panel.


text:
How can I make a coil with relief (volute)?
I'm trying to model a facade of an arch and I need to create a spiral as shown in these two photos.

I tried using the addon "Add curve: Extra objects" to create the spiral but  I can not remove the smoothing of vertices. Besides, I'm not sure if I'll have any problems when I change the mesh to adapt the spiral. Note that the figure in the pictures has a relief.
Is this the best way to model the figure?
Note: I'm learning Blender and I followed these instructions.

I'd like to know how you made this shape in the first place.

There are probably many different ways to achieve it. I used Extra Objects and F2 add ons.

Start with adding a Spiral (Add-->Curve-->Spirals). Play with its settings in a Tool Shelf (T)

Convert your curve to the mesh (press Alt+C-->Mesh from Curve). Then select the whole mesh (A) and extrude it (E) as pictured below.

Being in Edit Mode add a Circle with the equal number as the Spiral's steps number. Extrude the Circle and use the snapping tool to snap its edge loop to the bottom vertex of a curved mesh. Now use the knife tool (press K,LMB, next C for a straight cut and then Z to cut through) as pictured below. Delete vertices above and below added cuts.

Fill the gaps with F (enable the F2 add on). You may also use the bridge tool to do it.

If you want to sharpen edges with edge loops (Ctrl+R) retopologize the top part as pictured below. This kind of geometry'll also smooth the end of the curvature.

Here's my final topology (with no tris and n-gons), that allows me to crease the edges.

Use proportional editing with a Sharp falloff type to adjust volute's proportions as you like.

It's what I want! I created my model following your detailed tutorial.
Another way might be this, with an array.
I tried it before reading your answer.
However, I think your solution is more accurate. Thanks @Paul Gonet


text:
How to create a curved plastic material as a spray can lid
I'm a beginning blender user and I'm trying to dabble in 3D modeling. I might be biting off more than I can chew but I am attempting to create a 3D model of the following object:
I currently have a few cylinders matching the dimensions of the object (I used set background and one of those numpad views to get the proportions right). My next step is to create the top lid part.

My main question is: Which blender tools can I use to round off the top and create creases that swirl?

This should be pretty simple.
All you need is the Subdivision modifier (3 levels work great)

Create the base "flower shape" by scaling vertices
Fill and extrude into a cylinder (add some loopcuts)
Scale and rotate the top

You can of course polish it some more, i just kept this answer brief.

Here is one approximation:
Press Shift + a, select Mesh > UV Sphere. In the Add UV Sphere properies box set the number of Segments to (for instance) 33. Go into Edit mode and delete the bottom half of the sphere. Then press numpad 7 to go into topview and select every 3rd edge loop that goes form the outside to the center.
(Hold Alt + Shift with some precision clicking to select multiple edge loops at once)

In object mode press Shift + S and choose Cursor to Selected. Set the Transform Pivot Point to 3D Cursor.

In Edit mode press S then . then 9, then hit enter to confirm the 90% scaling.

Now press numpad 1 to go into sideview and select all bottom vertices.

Now press E to extrude the bottom a little. Then hit Shift + R to repeat it a couple of times.

Now add a Simple Deform modifier to the object and set the modifier to Twist and set it to the Z axis. Then smooth shade to object to make it look smooth.

So I started with a cylinder, modeled into the overall shape of the lid, then inset some of the faces to give me the basic form of the "divot".

Spend as much time as you can with low-geo so that its easier to make big shape adjustments, then when you have the big parts down,add a subsurf mod and apply it so that  can have a bit more geometry to work with.
Then select the part you just modeled, invert everything except that part and delete it.

Then add a radial array modifier and then "rebuild" your old shape, that way you can symmetrize it around the object easily.

Add a vertex group and add the top half of the vertices to that group.

You might consider going to Weight paint mode and using a gradient to add the verts there, so it "smooths" the effect out a bit.
enter image description here
Then I add a Simple Deform modifier > Twist and use an empty object to control the origin. Set it to only affect the vertex group. Fiddle with the degrees and Limits if need be.

Then I add another subsurf just to smooth it out.
Result:


text:
Blender Viewport dislay a better image than actually rendering the image. What could cause this?
I'm a first time blender user and I'm following a tutorial to recreate the "Backrooms" in blender. When I render my image however the ceiling is textured weirdly and there is a horizontal line throughout the image,
I've been trying to figure out the cause of the different render result but I haven't been able to wrap my head around it. What settings might cause this?

On the ceiling there seems to be duplicate geometry, the black artifacts look like Z-fighting. Is there a second ceiling which is disabled in viewport but shows in render? And the horizontal line... well, hard to tell without the file, it could be many things. But most of the time when something's wrong with the render that seems okay in the viewport, it's hidden objects or settings which are different for viewport and render.

sorry, but without seeing any of your settings/geometry we can just guess around as Gordon did. If you really want to know the cause for this...you should provide your blend file

As Gordon said, there was a duplicate object present. Thank you very much, this solved the issue :) And @Chris for future questions I will make sure to provide more information/attach .blend files.

From Gordon Brinkmann's comment:
On the ceiling there seems to be duplicate geometry, the black artifacts look like Z-fighting.
There is a second ceiling present.

Upon disabling this the issues are resolved.


text:
Edit multiple text value simultaneously
Edit multiple text value simultaneously
I’ve been using Blender since around 2012 and never have I came across a situation where I needed to use the text feature in blender to save you the confusion my problem is this. I need to be able to edit multiple text simultaneously so if I were to make a text and duplicate it 10 times I would like to be able to tap into edit mode and edit each text value simultaneously I’m to a point where I need to edit right around 500 different texts and I have to do these individually it’s becoming painstakingly difficult is there a way I can do this and add on I can use

Select your Text and use ALT + D to create Duplicate Linked instead of shift + D

Just a small addition to this.
If you don't want to make the Duplicates again because you already have your objects, you could select the ones that you want them to be the same at the same time and use CTRL + L > Link Object Data.


text:
How do I taper the density of volume edges?
I'm creating a smoke cloud just run by the displace modifier, and want a simple volume texture, but would like to have softer edges all around the model.
I have tried gradient textures (quadratic sphere) but it's only clumping around the object's origin.
Anyway to have a gradient driven by the normals of the object so they're just inset from the object's edges all around?


text:
Extrude manifold disables loop cuts?
Here's a link to the video where I'm showing the problem.
https://www.youtube.com/watch?v=HRtIf1tWLbs
Does anyone know what's going on with this?

you can't loopcut through ngons, only quads

Ok. How would I then subdivide this face? It seems all functions go away once you use Extrude Manifold. Also weirdly the face orientation gets inverted - is that related?   In other words, I can't subdivide, grid fill, or do anything it seems like.

to create a new edge loop you can use the knife tool for example, K to activate, A to cut orthogonally, C to cut through

Unfortunately these kinds of operations are not fully automatic.  Extrude manifold didn't even exist until recently

Yeah, this is strange how just modelling a simple extruded (or intruded) cube can create many problems. Overlapping faces, can't subdivide, and face orientation gets thrown off very easily. Anyway, thanks for the help

When you model it's better to anticipate the best way to do it in order to avoid any problem, that said it's not hard to fix your topology, as I said you can simply use the knife tool to add edge loops and keep quads. But in your case, if you extrude manifold, it won't create any overlapping or inverted faces

Yeah, totally. I noticed that when I did this from scratch again, choosing to extrude outward this time, it creates all these inward faces..which, i suppose isn't the worst since i'm not 3d printing this model but geez would be nice to avoid. Because retropology i feel like is harder.


text:
What is the diference between vector socket in "set position" and "transform"
I am trying to apply a transformation to an object, but only depending on the index of the copy using multiply to zero index 0 results.
The editor reports an error that I am unable to understand, the following code uses "set position":

While this other one uses "transform".

I would rather use transform because what I really need is a rotation and not a transformation. But I do not understand why the connection is failing, since both sockets seem to be of type vector.
I am using Blender 3.2.1, thanks for your time.

Simply put, Transform refers to the whole object or instance, and Set Position works on a point-by-point basis. So if you want to process certain parts of a geometry differently, you use Set Position.

Would it be possible to apply rotations point-by-point?

Yeah sure, I'm writing an answer to this right now....

I'll try a simplified explanation here....

The difference between a circular and a diamond shaped input/output is that one is a single element, and the other is multiple elements. A diamond shaped input/output that has a point in the middle can handle both types and the node will switch automatically.
Applied to your question, this means:

The node Transform transforms an object as a whole, as you know it from the Object Mode.
The node Set Position changes single points of the object, as you know it from the Edit Mode.

Shown in an example, the two operations below both achieve the same result:
Here the whole object is rotated as one unit.
Here the individual points of the object are rotated.
In the case of Set Position you also need the information at which position the individual points are located. These values are provided by the node Position.
Then you can rotate them around a certain center on a certain axis using the node Vector Rotate.
The funny thing is, and this is where the power of this node comes in: Here you can theoretically define different values for center, axis and rotation angle for every single point in one pass. This is often used, for example, to move each point to a different position with a Noise Texture.

Referring to your screenshot, where you obviously want to rotate individual splines based on their index, you would apply the following nodes:
Here the whole object/instance is rotated as one unit.
Here the individual points of the object are rotated.

I don't know whether it falls under your 'simplified explanation' remit, but I've always thought of the distinction of 'round' v 'diamond'  sockets as  'value' v 'function-call'

@RobinBetts Well, from the programmer's point of view, in both cases a "function" is called, but both return processable values in the end. From the user's point of view, if we consider only the values returned, one returns a single value (a single vector) and the other returns multiple values (an array of vectors).

This has been a beautifully developed answer, many thanks for your time

@LuisAyuso Thanks ;-) ...you're welcome!


text:
making a Silhouette image into a 3D model
I am very new to Blender so I fully expect to be told... function xyz does exactly this, unfortunately the Blender manual rabbit-hole is so deep that if I jump down it I am unlikely to find my way out of it again. Basicly what I want to do is use a .png image of a silhouette, (for instance a heart shape) and create a 3d image, (as if the silhouette had been cut from a plank of wood). as I said I am pretty sure this is comparatively easy but I have no idea where to start looking. Many thanks for any help pointing me in the right direction

https://blender.stackexchange.com/questions/183131/how-to-model-an-object-with-width-and-depth-based-only-on-an-image-that-shows-t https://blender.stackexchange.com/questions/52563/how-do-i-turn-my-png-image-into-a-mesh-object


text:
How to remove internal vertices, edges, and faces in a 2d geometry such that I am left with only a single largest face?
allow me to provide some incentive of doing what I am doing, so that if you see a better method, please let me know and thank you beforehand.
I have an stl file extracted directly from a video game containing a spaceship model. It is however quite complicated and messy and unsuitable for 3d printing. I am trying to slice the model into many layers, and then extrude each layer to get an approximate shape of the model that's much cleaner and easier to work with.
I create a plane and intersected it with the model to get a geometry as shown in the screenshot。
However, if I zoom in I have vertices and edges that lies on the internal face as shown here:

Is there a quick way to dissolve all the internal vertices instead of selecting them individually and manually? Thank you.

I would recommend beforehand (1) to merge by distance vertices with a threshold based on the resolution of the 3D printer (2) to limited dissolve the faces because most of the STL triangles are split quads. This should greatly simplified the model, before trying to slice it.

Duplicate to https://blender.stackexchange.com/questions/272048/how-to-create-vertices-between-intersecting-edges

If you have overlapping faces you can activate the Auto Merge and Split Edges and Faces option, then press G and Enter right away, it will remove these faces:

Then press X > Limited Dissolve to remove the inner vertices:

Result: