text:
Add Custom Menu at Specific Location in the Header
Blender has a built in template for adding a custom menu to the main header (INFO_HT_header). This can be found by going into the text editor under templates->Python->UI Menu.
Can I relocate this custom menu to be inserted between "Window" and "Help" sub menus? If so, how?

As the steps may be too long to describe, I suggest we can all watch a video on how it can be done. Watch this video, the video contains instruction through scripting on how to adding menus to the header. https://www.youtube.com/watch?v=2OglVXDBYZA Hope it helps.

WATCH AND DOWNLOAD NEW MENU SCRIPT FROM LINK BELOW
https://www.youtube.com/watch?v=MD0P34zRhNk

I was able to find a working example for 2.92 here: https://blender.stackexchange.com/questions/156652/topbar-ht-upper-bar-append-add-menus-in-two-places

There is probably a more elegant way

Actually there is not. We can only append and prepend. If every stock entry was a draw callback in draw._draw_funcs, it would be possible to insert inbetween. Until then, there are only two hacks, which I wouldn't recommend for everyday use (rather stick to
iKlsR's solution):

Wrapping all UILayout calls - wiki link
Injecting modified layout code the hard way - included in addon code

Note that 1. works for a single addon only at a time, and 2. only works as long as there's just one addon replacing the code object of a certain bpy type.

Content from Blender wiki, by ideasman42:
This page shows how to intercept every draw call in blenders python ui which can be used for some UI tricks.
First heres an example of how to do just that.
Tested to work with Blender 2.70
Intercept UI draw/poll
This is a simple example of how to intercept poll and draw functions, without making any behavioral changes.
classes = ["Panel", "Menu", "Header"]

def draw_override(func_orig, self_real, context):
    print("override draw:", self_real)

    ret = func_orig(self_real, context)
    return ret

def poll_override(func_orig, cls, context):
    print("override poll:", func_orig.__self__)

    ret = func_orig(context)

    return ret

import bpy

for cls_name in classes:
    cls = getattr(bpy.types, cls_name)

    for subcls in cls.__subclasses__():
        if "draw" in subcls.__dict__:  # dont want to get parents draw()

            def replace_draw():
                # function also serves to hold draw_orig in a local namespace
                draw_orig = subcls.draw
                def draw(self, context):
                    return draw_override(draw_orig, self, context)
                subcls.draw = draw

            replace_draw()

        if "poll" in subcls.__dict__:  # dont want to get parents poll()
            def replace_poll():
                # function also serves to hold poll_orig in a local namespace
                poll_orig = subcls.poll
                def poll(cls, context):
                    return poll_override(poll_orig, cls, context)
                subcls.poll = classmethod(poll)

            replace_poll()

Override layout & functions
This is the extended from the above code but extended to subclass the layout type used within draw().
In this example operators and properties are filtered out based on their names, but all sorts of things are possible with this - modifying args to functions, changing text etc.
classes = ["Panel", "Menu", "Header"]

import bpy

UILayout = bpy.types.UILayout

op_blacklist = [
    "render.render",
    "object.modifier_add",
    "object.forcefield_toggle",
    ]

prop_blacklist = [
    "Object.location",
    "Object.scale",
    "Object.rotation_euler",
    "RenderSettings.display_mode",
    ]

def filter_operator(op_id):
    if op_id in op_blacklist:
        return False
    return True

def filter_prop(data, prop):
    prop_id = "%s.%s" % (data.__class__.__name__, prop)
    if prop_id in prop_blacklist:
        return False
    return True

class OperatorProperties_FAKE:
    pass

class UILayout_FAKE(bpy.types.UILayout):
    __slots__ = ()

    def __getattribute__(self, attr):
        # ensure we always pass down UILayout_FAKE instances
        if attr in ("row", "split", "column", "box", "column_flow"):
            real_func = UILayout.__getattribute__(self, attr)

            def dummy_func(*args, **kw):
                print("    wrapped", attr)
                ret = real_func(*args, **kw)
                return UILayout_FAKE(ret)
            return dummy_func

        elif attr in ("operator", "operator_menu_enum", "operator_enum"):
            real_func = UILayout.__getattribute__(self, attr)

            def dummy_func(*args, **kw):
                print("    wrapped", attr)
                if filter_operator(args[0]):
                    ret = real_func(*args, **kw)
                else:
                    # UILayout.__getattribute__(self, "label")()
                    # may need to be set
                    ret = OperatorProperties_FAKE()
                return ret
            return dummy_func
        elif attr in ("prop", "prop_enum"):
            real_func = UILayout.__getattribute__(self, attr)

            def dummy_func(*args, **kw):
                print("    wrapped", attr)
                if filter_prop(args[0], args[1]):
                    ret = real_func(*args, **kw)
                else:
                    ret = None
                return ret
            return dummy_func
        else:
            return UILayout.__getattribute__(self, attr)

        print(self, attr)

    def operator(*args, **kw):
        print("OP")
        return super().operator(*args, **kw)

def draw_override(func_orig, self_real, context):
    if 1:
        class Wrapper(self_real.__class__):
            def __getattribute__(self, attr):
                if attr == "layout":
                    ret = self_real.layout
                    return UILayout_FAKE(ret)
                else:
                    return super().__getattr__(self, attr)

            @property
            def layout(self):
                ret = self_real.layout
                print("wrapped")
                return ret
        print(1)
        self_wrap = Wrapper(self_real)
        ret = func_orig(self_wrap, context)
    else:
        # simple, no wrapping
        ret = func_orig(self_wrap, context)

    return ret

def poll_override(func_orig, context):

    ret = func_orig(context)

    return ret

for cls_name in classes:
    cls = getattr(bpy.types, cls_name)

    for subcls in cls.__subclasses__():
        if "draw" in subcls.__dict__:  # dont want to get parents draw()

            def replace_draw():
                # function also serves to hold draw_old in a local namespace
                draw_orig = subcls.draw

                def draw(self, context):
                    return draw_override(draw_orig, self, context)
                subcls.draw = draw

            replace_draw()

        if "poll" in subcls.__dict__:  # dont want to get parents poll()
            def replace_poll():
                # function also serves to hold draw_old in a local namespace
                poll_orig = subcls.poll

                def poll(context):
                    return poll_override(poll_orig, context)
                subcls.poll = classmethod(poll)

            replace_poll()

Relevant code from my experimental addon to inject an own menu after the Templates menu below.
It essentially determines the path of the file which defines the original layout getattr(bpy.types, "TEXT_HT_header").draw.__code__.co_filename, looks for a hard-coded piece of code row.menu("TEXT_MT_templates") starting from …draw.__code__.co_firstlineno - 1, gets hold of the draw function code and inserts its own piece of code which adds the custom menu (it has to adjust the indention to be valid).
Then it executes the new code (string) in isolation exec("".join(lines), {}, l) with locals backed by an initially empty object l = {}. The compiled draw function can then be accessed by l['draw'] and the original draw function can be substituted: getattr(bpy.types, "TEXT_HT_header").draw = l['draw'].
A reference to the original draw function should be stored so that it can be restored if necessary.
class DrawFuncStore:
    bpy_type = "TEXT_HT_header"
    bpy_type_class = getattr(bpy.types, bpy_type)
    draw = None

def insert_menu():
    insert_after = 'row.menu("TEXT_MT_templates")'
    insert_code  = '        row.menu("TEXT_MT_snippets")\n' \
                   '        from bpy.app.translations import pgettext_iface as iface_\n' # meh...
    DrawFuncStore.draw = DrawFuncStore.bpy_type_class.draw
    #module = bpy_type_class.__module__

    filepath = DrawFuncStore.bpy_type_class.draw.__code__.co_filename
    if filepath == "<string>":
        return
    try:
        file = open(filepath, "r")
        lines = file.readlines()
    except:
        append_menu()
        return

    line_start = DrawFuncStore.bpy_type_class.draw.__code__.co_firstlineno - 1

    for i in range(line_start, len(lines)):
        line = lines[i]
        if not line[0].isspace() and line.lstrip()[0] not in ("#", "\n", "\r"):
            break

    line_end = i

    # Unindent draw func by one level, since it won't sit inside a class
    lines = [l[4:] for l in lines[line_start:line_end]]

    for i, line in enumerate(lines, 1):
        if insert_after in line:
            #print("FOUND INSERT LINE")
            lines.insert(i, insert_code)
            break
    else:
        append_menu()
        return

    # Debug output
    #f = open("D:\\s.txt", "w").writelines(lines)

    l = {}
    exec("".join(lines), {}, l)
    #print(l)

    #bpy_type_class.draw.__code__ = code_object # Doesn't work, since a single func is not a module

    DrawFuncStore.bpy_type_class.draw = l['draw'] # exec defined our custom draw() func!

def append_menu():
    bpy.types.TEXT_MT_templates.prepend(draw_item)

def remove_menu():
    if DrawFuncStore.draw is not None:
        DrawFuncStore.bpy_type_class.draw = DrawFuncStore.draw
        DrawFuncStore.draw = None

    else:
        bpy.types.TEXT_MT_templates.remove(draw_item)

Prepend is actually a nice next-best solution that I didn't know existed. At least it puts my menu in the ballpark instead of off the screen for people with lower resolutions. Append adds not just after the help menu, but waaaaay after all the version and scene info (vert/face count and such). I think I will use this method for now.

I talked to Ton a while ago about this, and he kind of liked the idea to add several draw functions to _draw_funcs by default (editor picker, menus, everything else). That would allow for adding after menu, not inbetween existing elements however. One draw function per element seems a bit overkill, maybe there's a better solution...

Would it be possible to write what was in your dead link? Could you actually paste the relevant code here instead of giving a soon to be dead link to your addon. The relevant part is probably only a couple of lines right.

Yeah I don't understand where you are changing the order in your not dead link. There are only two references to "bpy.types.TEXT_MT_templates" and they both just prepend and remove. Not that you actually clarified what the link is supposed to contain. Or what I'm supposed to be looking for.

@Školstvo I added the Wiki content as well as the relevant code from the addon with some explanation. Note that my code was written for Blender v2.67 and the layout code has probably changed numerous times since then, so it may not work in newer versions out of the box.

@CoDEmanX Thank you very much. I was actually looking for how to append an operator to a custom position in the dropdown menu of a header region in Blender 2.8. https://blender.stackexchange.com/questions/159837/how-to-change-the-order-of-a-custom-function-added-in-the-dropdown-menu-in-the-h Some joker insisted that my post is a duplicate of this post. I really have no idea how to get the elements in the dropdown.

There is probably a more elegant way but this works. If you right click one of these menu items and select Edit Source it should bring up space_info.py, the script that defines and draws these. You can then simply clone an existing class and add it to the menu via the INFO_HT_header() class in the desired order, (here I added it after Window before Help).
sub.menu("INFO_MT_window")
sub.menu("ExampleMenu") # this is the example menu
sub.menu("INFO_MT_help")

In the example above, I used the example class defined in Templates > Python > UI Menu Simple (lines 4 to 12) and just commented out bl_idname and renamed the class.

So you are saying there is no way to do this as an add-on. I have to actually edit the space_info.py INFO_HT_header to add my menu? Bummer.

As I said, there is probably a more elegant way but CoDEmanX who is alot more familiar with the codebase says there isn't so since you are writing an addon, I'd say go with either of his suggestions.

The code to append/prepend a button to any of the headers in Blender can be found below:
class addon_function(bpy.types.Operator):
     """add documentation here"""
     .
     .
     .
     def execute(self, context):
          ...

def addon_button(self, context):
     self.layout.operator(
          pysoy_model.bl_idname,
          text=addon_function.__doc__,
          icon='MOD_MESHDEFORM')

def register():
     bpy.utils.register_class(addon_function)
     bpy.types.VIEW3D_HT_header.append(addon_button)

def unregister():
     bpy.utils.unregister_class(addon_function)
     bpy.types.VIEW3D_HT_header.remove(addon_button)
# This allows you to run the script directly from blenders text editor
# to test the addon without having to install it.
if __name__ == "__main__":
     register()

The main line is: bpy.types.VIEW3D_HT_header.append(addon_button), where you can add change the bpy.types.* to:

Info Header: INFO_HT_HEADER
3D View Header: VIEW3D_HT_HEADER
Timeline Header: TIME_HT_HEADER
Outliner Header: OUTLINER_HT_HEADER
Properties Header: PROPERTIES_HT_HEADER, etc.

For more Information on addon and Icon Button:

Blender Page on Addon.
Open Studio Tutorial.

Not easily. You may want to try removing the Help menu and then re-appending it after you've appended your custom menu.

Unfortunately I think I would have to also remove the 5 or so elements after Help for this method to work since Help is not the last element in the layout.

# ##### BEGIN GPL LICENSE BLOCK #####
#
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software Foundation,
#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####

# <pep8 compliant>
import bpy
from bpy.types import Header, Menu

class INFO_HT_header(Header):
    bl_space_type = 'INFO'

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

        window = context.window
        scene = context.scene
        rd = scene.render

        row = layout.row(align=True)
        row.template_header()

        INFO_MT_editor_menus.draw_collapsible(context, layout)

        if window.screen.show_fullscreen:
            layout.operator("screen.back_to_previous", icon='SCREEN_BACK', text="Back to Previous")
            layout.separator()
        else:
            layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete")
            layout.template_ID(context.screen, "scene", new="scene.new", unlink="scene.delete")

        layout.separator()

        if rd.has_multiple_engines:
            layout.prop(rd, "engine", text="")

        layout.separator()

        layout.template_running_jobs()

        layout.template_reports_banner()

        row = layout.row(align=True)

        if bpy.app.autoexec_fail is True and bpy.app.autoexec_fail_quiet is False:
            row.label("Auto-run disabled", icon='ERROR')
            if bpy.data.is_saved:
                props = row.operator("wm.revert_mainfile", icon='SCREEN_BACK', text="Reload Trusted")
                props.use_scripts = True

            row.operator("script.autoexec_warn_clear", text="Ignore")

            # include last so text doesn't push buttons out of the header
            row.label(bpy.app.autoexec_fail_message)
            return

        row.operator("wm.splash", text="", icon='BLENDER', emboss=False)
        row.label(text=scene.statistics(), translate=False)

class INFO_MT_editor_menus(Menu):
    bl_idname = "INFO_MT_editor_menus"
    bl_label = ""

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

    @staticmethod
    def draw_menus(layout, context):
        scene = context.scene
        rd = scene.render

        layout.menu("INFO_MT_file")

        if rd.use_game_engine:
            layout.menu("INFO_MT_game")
        else:
            layout.menu("INFO_MT_render")

        layout.menu("INFO_MT_window")
        layout.menu("INFO_MT_help")
#this is comment 1 adding our name to header
        layout.menu("INFO_MT_google")

class INFO_MT_file(Menu):
    bl_label = "File"

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

        layout.operator_context = 'INVOKE_AREA'
        layout.operator("wm.read_homefile", text="New", icon='NEW')
        layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
        layout.menu("INFO_MT_file_open_recent", icon='OPEN_RECENT')
        layout.operator("wm.revert_mainfile", icon='FILE_REFRESH')
        layout.operator("wm.recover_last_session", icon='RECOVER_LAST')
        layout.operator("wm.recover_auto_save", text="Recover Auto Save...", icon='RECOVER_AUTO')

        layout.separator()

        layout.operator_context = 'EXEC_AREA' if context.blend_data.is_saved else 'INVOKE_AREA'
        layout.operator("wm.save_mainfile", text="Save", icon='FILE_TICK')

        layout.operator_context = 'INVOKE_AREA'
        layout.operator("wm.save_as_mainfile", text="Save As...", icon='SAVE_AS')
        layout.operator_context = 'INVOKE_AREA'
        layout.operator("wm.save_as_mainfile", text="Save Copy...", icon='SAVE_COPY').copy = True

        layout.separator()

        layout.operator("screen.userpref_show", text="User Preferences...", icon='PREFERENCES')

        layout.operator_context = 'INVOKE_AREA'
        layout.operator("wm.save_homefile", icon='SAVE_PREFS')
        layout.operator("wm.read_factory_settings", icon='LOAD_FACTORY')

        if any(bpy.utils.app_template_paths()):
            app_template = context.user_preferences.app_template
            if app_template:
                layout.operator(
                    "wm.read_factory_settings",
                    text="Load Factory Template Settings",
                    icon='LOAD_FACTORY',
                ).app_template = app_template
            del app_template

        layout.menu("USERPREF_MT_app_templates", icon='FILE_BLEND')

        layout.separator()

        layout.operator_context = 'INVOKE_AREA'
        layout.operator("wm.link", text="Link", icon='LINK_BLEND')
        layout.operator("wm.append", text="Append", icon='APPEND_BLEND')
        layout.menu("INFO_MT_file_previews")

        layout.separator()

        layout.menu("INFO_MT_file_import", icon='IMPORT')
        layout.menu("INFO_MT_file_export", icon='EXPORT')

        layout.separator()

        layout.menu("INFO_MT_file_external_data", icon='EXTERNAL_DATA')

        layout.separator()

        layout.operator_context = 'EXEC_AREA'
        if bpy.data.is_dirty and context.user_preferences.view.use_quit_dialog:
            layout.operator_context = 'INVOKE_SCREEN'  # quit dialog
        layout.operator("wm.quit_blender", text="Quit", icon='QUIT')

class INFO_MT_file_import(Menu):
    bl_idname = "INFO_MT_file_import"
    bl_label = "Import"

    def draw(self, context):
        if bpy.app.build_options.collada:
            self.layout.operator("wm.collada_import", text="Collada (Default) (.dae)")
        if bpy.app.build_options.alembic:
            self.layout.operator("wm.alembic_import", text="Alembic (.abc)")

class INFO_MT_file_export(Menu):
    bl_idname = "INFO_MT_file_export"
    bl_label = "Export"

    def draw(self, context):
        if bpy.app.build_options.collada:
            self.layout.operator("wm.collada_export", text="Collada (Default) (.dae)")
        if bpy.app.build_options.alembic:
            self.layout.operator("wm.alembic_export", text="Alembic (.abc)")

class INFO_MT_file_external_data(Menu):
    bl_label = "External Data"

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

        icon = 'CHECKBOX_HLT' if bpy.data.use_autopack else 'CHECKBOX_DEHLT'
        layout.operator("file.autopack_toggle", icon=icon)

        layout.separator()

        pack_all = layout.row()
        pack_all.operator("file.pack_all")
        pack_all.active = not bpy.data.use_autopack

        unpack_all = layout.row()
        unpack_all.operator("file.unpack_all")
        unpack_all.active = not bpy.data.use_autopack

        layout.separator()

        layout.operator("file.make_paths_relative")
        layout.operator("file.make_paths_absolute")
        layout.operator("file.report_missing_files")
        layout.operator("file.find_missing_files")

class INFO_MT_file_previews(Menu):
    bl_label = "Data Previews"

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

        layout.operator("wm.previews_ensure")
        layout.operator("wm.previews_batch_generate")

        layout.separator()

        layout.operator("wm.previews_clear")
        layout.operator("wm.previews_batch_clear")

class INFO_MT_game(Menu):
    bl_label = "Game"

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

        gs = context.scene.game_settings

        layout.operator("view3d.game_start")

        layout.separator()

        layout.prop(gs, "show_debug_properties")
        layout.prop(gs, "show_framerate_profile")
        layout.prop(gs, "show_physics_visualization")
        layout.prop(gs, "use_deprecation_warnings")
        layout.prop(gs, "use_animation_record")
        layout.separator()
        layout.prop(gs, "use_auto_start")

class INFO_MT_render(Menu):
    bl_label = "Render"

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

        layout.operator("render.render", text="Render Image", icon='RENDER_STILL').use_viewport = True
        props = layout.operator("render.render", text="Render Animation", icon='RENDER_ANIMATION')
        props.animation = True
        props.use_viewport = True

        layout.separator()

        layout.operator("render.opengl", text="OpenGL Render Image")
        layout.operator("render.opengl", text="OpenGL Render Animation").animation = True
        layout.menu("INFO_MT_opengl_render")

        layout.separator()

        layout.operator("render.view_show")
        layout.operator("render.play_rendered_anim", icon='PLAY')

class INFO_MT_opengl_render(Menu):
    bl_label = "OpenGL Render Options"

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

        rd = context.scene.render
        layout.prop(rd, "use_antialiasing")
        layout.prop(rd, "use_full_sample")

        layout.prop_menu_enum(rd, "antialiasing_samples")
        layout.prop_menu_enum(rd, "alpha_mode")

class INFO_MT_window(Menu):
    bl_label = "Window"

    def draw(self, context):
        import sys

        layout = self.layout

        layout.operator("wm.window_duplicate")
        layout.operator("wm.window_fullscreen_toggle", icon='FULLSCREEN_ENTER')

        layout.separator()

        layout.operator("screen.screenshot")
        layout.operator("screen.screencast")

        if sys.platform[:3] == "win":
            layout.separator()
            layout.operator("wm.console_toggle", icon='CONSOLE')

        if context.scene.render.use_multiview:
            layout.separator()
            layout.operator("wm.set_stereo_3d", icon='CAMERA_STEREO')

class INFO_MT_help(Menu):
    bl_label = "Help"

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

        layout.operator(
                "wm.url_open", text="Manual", icon='HELP',
                ).url = "https://docs.blender.org/manual/en/dev/"
        layout.operator(
                "wm.url_open", text="Release Log", icon='URL',
                ).url = "http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/%d.%d" % bpy.app.version[:2]
        layout.separator()

        layout.operator(
                "wm.url_open", text="Blender Website", icon='URL',
                ).url = "https://www.blender.org"
        layout.operator(
                "wm.url_open", text="Blender Store", icon='URL',
                ).url = "https://store.blender.org"
        layout.operator(
                "wm.url_open", text="Developer Community", icon='URL',
                ).url = "https://www.blender.org/get-involved/"
        layout.operator(
                "wm.url_open", text="User Community", icon='URL',
                ).url = "https://www.blender.org/support/user-community"
        layout.separator()
        layout.operator(
                "wm.url_open", text="Report a Bug", icon='URL',
                ).url = "https://developer.blender.org/maniphest/task/edit/form/1"
        layout.separator()

        layout.operator(
                "wm.url_open", text="Python API Reference", icon='URL',
                ).url = bpy.types.WM_OT_doc_view._prefix

        layout.operator("wm.operator_cheat_sheet", icon='TEXT')
        layout.operator("wm.sysinfo", icon='TEXT')
        layout.separator()

        layout.operator("wm.splash", icon='BLENDER')
#this is comment 2 adding our class
class INFO_MT_google(Menu):
    bl_label = "googleweb"

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

        layout.operator(
                "wm.url_open", text="google_on_web", icon='HELP',
                ).url = "https://www.google.com/"

classes = (
    INFO_HT_header,
    INFO_MT_editor_menus,
    INFO_MT_file,
#this is comment 3 calling our class
    INFO_MT_google,
    INFO_MT_file_import,
    INFO_MT_file_export,
    INFO_MT_file_external_data,
    INFO_MT_file_previews,
    INFO_MT_game,
    INFO_MT_render,
    INFO_MT_opengl_render,
    INFO_MT_window,
    INFO_MT_help,
)

if __name__ == "__main__":  # only for live edit.
    from bpy.utils import register_class
    for cls in classes:
        register_class(cls)

Please elaborate on what this code snippet is actually doing. Consider that the question is: how to insert items in between existing ones, preferably without overriding existend draw methods.

Answers need to be more then a massive code block. Further more there is a lot of duplicated code in there. You could of at least trimmed it down to a readable example.

#this is comment 1 adding our name to header
layout.menu("INFO_MT_google")                                              #this is comment 2 adding our class
class INFO_MT_google(Menu):
bl_label = "googleweb"
def draw(self, context):
    layout = self.layout

    layout.operator(
            "wm.url_open", text="google_on_web", icon='HELP',
            ).url = "https://www.google.com/"                                        #this is comment 3 calling our class
INFO_MT_google,

space_info.py file  paste this code to get added new menu to header


text:
Hover shows only partial python bpy. path
I love that you can hover your mouse over most of the blender settings and a help bubble pops up and lets you know where the python equivalent attribute lives. However if the location is long it is chopped down with '...' essentially making the-hard-to find attributes harder to find.

Is there a way to disable the chopping so I can see the full path? Or are there other means that people use to find out where stuff lives, aside from searching the code-base?
(searching the code base can suck if the same attribute name is used in many areas of Blender, and even if you find where it is defined, the full path may not be obvious.)
For example, I am looking for the Cycles bake settings attributes, such as "Selected to Active" which is different from the Blender Render "Selected to Active" which lives here: context.scene.render.use_bake_selected_to_active
The Cycles version is truncated to this: bpy.data.scenes["Scene"]...use_selected_to_active

You are correct Gandalf3, I did not see that when searching. I am happy to see your comment that says this is fixed in 2.72. That is worthy of downloading a daily build in and of itself!

Unfortunately I was about to delete that comment, because I just tested it on the checkbox you mentioned and there are still ellipses :( Still, the tooltips are a little bit nicer..

Nooooooooooooo!

This conversation has left me checking chuckling.

In such cases you could have a look at the source code. Click RMB while the mouse cursor is over the property to open the context menu, select Edit Source.

Open a text editor and select the loaded file, you will notice that the cursor is already positioned at the property.
In this case the line is:
sub.prop(cbk, "use_selected_to_active") (line:1258)

Ok, this is what you already knewd , the cbk is another variable holding the context of this property a few lines above (line:1242) you will find the definition.
cbk = scene.render.bake

Now you can assemble the parts to the full path and test it in the console window:
>>> import bpy
>>> print(bpy.data.scenes["Scene"].render.bake.use_selected_to_active)
True

Note: Line numbers are valid for official 2.71, One could have used the D shortcut for bpy.data.

source: Stack Exchange

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

sort: votes


text:
How to create an operator button with multi-line centered text
I'm trying to create an operator run from a button with text inside it, for adding bees.
But the text is long and it's not clearly visible.

Resizing the button is no help.

The text can be broken in multiple lines and ideally it would have to be centered... something like:

Is there a way to do that?
Thank you
EDIT: @Strike Digital
Yes! that works. I just have problems centering it:

The operator:
multi_line_operator(
    layout,
    "wm.context_set_string",
    lines=[
        "Bee what yo wanna bee",
        "Bee what yo wanna bee, Bee what yo wanna bee",
        "yo wanna bee",
        "bee"],
)

Am I missing something?

I'm not sure what you mean by centring it? If you mean that the text is still being cut off when it's too long, then you might want to look into using a text wrapping function like is shown here: https://b3d.interplanety.org/en/multiline-text-in-blender-interface-panels/

Bee thanks! [15 character filler]

Is there an officially supported to do this?
Unfortunately, no.
Is there a very hacky way to do this?
Absolutely!
I wrote a function that draws multi line operators like this:

Here's the code:
def multi_line_operator(
    layout: bpy.types.UILayout,
    operator: str,
    lines: list[str],
    line_spacing: float = .85,
    padding=.4,
    icon: str = "NONE",
):
    """Draw an operator with a multi line label"""
    # Draw the text over multiple rows in a column
    col = layout.column(align=True)
    col.scale_y = line_spacing
    for line in lines:
        row = col.row()
        row.alignment = "CENTER"
        row.label(text=line)

    # The scale needed to cover all of the text with the button
    scale = len(lines) * col.scale_y + padding
    col = layout.column(align=True)

    # This is the magic: drawing a property with a negative y scale will push everything drawn below it up.
    # It's very hacky, but it works...
    # The only reason not to use it is that it might be broken in future updates.
    propcol = col.column(align=True)
    propcol.scale_y = -scale  # give this column a negative scale
    # This can be any property, it doesn't matter which as it won't be editable.
    propcol.prop(bpy.context.scene.unit_settings, "scale_length")

    # Draw an operator below the prop so that it will be moved up.
    row = col.row(align=True)
    row.scale_y = scale
    op = row.operator(operator, text=" ", icon=icon)
    return op

How does it work?
It works by abusing a bug/unintended feature where if you draw a property on a row with a negative scale, it will start to move all elements drawn afterwards upwards, meaning that you can essentially draw two UI elements in the same place.
That means that in this case, we can first simply draw the text we want over multiple labels, and the afterwards, draw a property in a row with a negative scale (in this case -1 multiplied by the number of lines), and after that draw an operator with the same scale but positive, which essentially draws the button behind the labels.
How do I use it?
Just drop the function into your project, and then call it like so:
multi_line_operator(
    layout,
    "wm.context_set_string",
    lines=["ooh, cool text", "more text!", "woah!"],
    line_spacing=.85,
)

Are there any differences compared to drawing a normal operator?
Yes, but they're pretty minor. Here are the ones I've found so far:

Text is generally darker than on a normal operator (unless it is drawn in a box), and it also doesn't light up when hovered over with the mouse.
Drawing an icon on the operator won't cause the text to go off-centre (this could be implemented, though).

Hope that helps!

Please check my edit

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


text:
Is it possible to change view while using circle selection?
When using selection modes like circle selection (C) or box selection (B) I often would like to change the view to select more faces, vertices or edges that are hidden because of the angle view. Apart from hitting ESC then change angle of the view then press C again is there a hot key to be able to change the view by pressing it and using the mouse buttons/wheel without having to press C or B again afterward?
Thank you

It is not, unfortunately.
It is a known limitation of the current modal operator's design. While a modal operator is running, like Circle Select, Border Select, Knife Tool, Move, Rotate, Scale, or any other, Blender can't modify the view.
The opposite is also true: while doing view transforms like Rotating the view or panning, no other tools can operate.
There were some rumors about overcoming this for future 2.8 versions but no definite decisions.

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


text:
Sapling Tree not generated at 3d cursor
Everything but the Sapling Tree is generated at the 3d cursor. I need to create and configure the tree at a specific location and I can't move my scene due to it being geo-referenced.
Any ideas?
Edit:
Blender version: 2.79 Build, 2017-09-11
Sapling version 0.3.3

Move the tree afterwards

You can't change the properties of the tree after you move it though, no?

No you cannot. Only workaround I can think of is to create a group instance of your whole scene and place it such that the place were the tree should stand is located at the world 0,0. Make a separate temporary scene if necessary

can you detail which blender version and which addon version? Here I have a 2.76b with "Sapling" addon 0.2.6 and it creates the tree at the 3d cursor, exactly.

@m.ardito Every version of Sapling I have ever tested creates trees at the scene center, coordinate [0,0,0], regardless of cursor position, unless I missed some setting somewhere

@DuarteFarrajotaRamos idk, here it works as said above... never used this addon before, though. I just added an answer to properly share a gif that shows my sapling behaviour...

This started not as a real and proper answer, but to demonstrate that at least on 2.76b, with Sapling 0.2.6, sapling addon worked as you would expect:

So, I suggested you to detail exact blender and sapling versions you are trying. It could also be a bug or a changed behavior...
Meanwhile, I found  a 2.79rc2 lying on my disk, so tried also launching Blender-softwaregl (opengl sw emulation due to my crappy notebook), here the addon is named "Sapling Tree Gen", version 0.3.3, it behave like you said: the tree is always at grid origin, no matter where the 3d cursor is.
It seems that there was a big change from 0.2.6 to 0.3.2 labeled as a "major rewrite", I guess starting just before 2.78 release, see this diffusion page.
But, good news! Browsing the sources on that page, I found a single line that reverts the behavior of sapling 0.3.3 to how it was in 0.2.6

find the file <blender install folder>/2.79/scripts/addons/add_curve_sapling/utils.py
go to line 1604, it should be like
#treeOb.location=bpy.context.scene.cursor_location attractUp
change it to
treeOb.location=bpy.context.scene.cursor_location #attractUp
save the file
(if it was open, close and) start Blender
now sapling should behave as it did in 2.76 :)

Note: I've later found a comment by the addon developer stating that he did
"Fix Armature, Tree location generation to 0,0,0 (this was causing fails with armature weights & probably pruning)"
So, use this with caution, and revert if necessary...

Indeed 2.76 does add at the cursor, but 2.79 does not. I don't use Sapling that often, but I suspect most versions I tested ever since stopped adding it at cursor position. Not sure if it is a bug or some intentional change, given the addon received at least one update since then.

@DuarteFarrajotaRamos I found and fixed (see update answer) a single line in the new script that didn't copy the cursor location as starting point for the tree generation... maybe the author made a small mistake commenting that line, who knows... now it works on 2.79 :)

@yam please see the update answer, it could be very easy to fix, it is probably a small typo in the new versions of the script...

That is great, many thanks for the fixing instructions. Probably worth reporting a bug, or submitting a patch for that, no? Anyway great find. (Made a few edits to improve readability)

Thx for fixing, it was past 2am on my tz :D it is really just a typo probably, but I'll try to submit a report at least.

@DuarteFarrajotaRamos I've found this comment https://developer.blender.org/T46559#370757 that states that "fixing" the tree generation at 0,0,0 was intentional, due to some possible issues "Fix Armature, Tree location generation to 0,0,0 (this was causing fails with armature weights & probably pruning)"... I guess there could be a workaraound, I'll try to suggest it there maybe, but use the above fix with caution...

Ah nice to know, there was a reason behind it after all. Anyway I don't use armatures that often anyway, so now I will know where to look if I ever need it. Thanks for the feedback and dedication to this.


text:
Visualising 3D arrows from files
I have two files, one with the coordinates for magnetic spins(xyz), and the other file has the orientation of each spins( sx,sy,sz), and I  need to visualise magnetic spin texture with blender, can you help me with that?
here is what I want my texture to look like
and here are snap shots from the positions file and the spins file

Here are the positions:
3.535533764578643878e-01 -2.041241248209187953e-01 6.999999999999999556e-01
1.060660157657864255e+00 -2.041241248209187953e-01 6.999999999999999556e-01
1.767766938857864290e+00 -2.041241248209187953e-01 6.999999999999999556e-01
2.474873720057864546e+00 -2.041241248209187953e-01 6.999999999999999556e-01
3.181980501257864802e+00 -2.041241248209187953e-01 6.999999999999999556e-01
3.889087282457865058e+00 -2.041241248209187953e-01 6.999999999999999556e-01
4.596194063657864426e+00 -2.041241248209187953e-01 6.999999999999999556e-01
5.303300844857864682e+00 -2.041241248209187953e-01 6.999999999999999556e-01
6.010407626057864938e+00 -2.041241248209187953e-01 6.999999999999999556e-01
6.717514407257864306e+00 -2.041241248209187953e-01 6.999999999999999556e-01
7.424621188457864562e+00 -2.041241248209187953e-01 6.999999999999999556e-01
8.131727969657864818e+00 -2.041241248209187953e-01 6.999999999999999556e-01
8.838834750857865075e+00 -2.041241248209187953e-01 6.999999999999999556e-01
9.545941532057865331e+00 -2.041241248209187953e-01 6.999999999999999556e-01
1.025304831325786559e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.096015509445786407e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.166726187565786432e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.237436865685786280e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.308147543805786306e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.378858221925786331e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.449568900045786357e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.520279578165786383e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.590990256285786408e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.661700934405786256e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.732411612525786282e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.803122290645786308e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.873832968765786333e+01 -2.041241248209187953e-01 6.999999999999999556e-01
1.944543646885786359e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.015254325005786384e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.085965003125786410e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.156675681245786436e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.227386359365786461e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.298097037485786842e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.368807715605786512e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.439518393725786538e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.510229071845786564e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.580939749965786589e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.651650428085786615e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.722361106205786641e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.793071784325786666e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.863782462445786692e+01 -2.041241248209187953e-01 6.999999999999999556e-01
2.934493140565786717e+01 -2.041241248209187953e-01 6.999999999999999556e-01
3.005203818685786743e+01 -2.041241248209187953e-01 6.999999999999999556e-01
3.075914496805786769e+01 -2.041241248209187953e-01 6.999999999999999556e-01
3.146625174925786794e+01 -2.041241248209187953e-01 6.999999999999999556e-01
3.217335853045786820e+01 -2.041241248209187953e-01 6.999999999999999556e-01
3.288046531165787201e+01 -2.041241248209187953e-01 6.999999999999999556e-01
3.358757209285786871e+01 -2.041241248209187953e-01 6.999999999999999556e-01
3.429467887405787252e+01 -2.041241248209187953e-01 6.999999999999999556e-01
3.500178565525786922e+01 -2.041241248209187953e-01 6.999999999999999556e-01
and here are the corresponding spins:
4.673562022900126095e-02 3.956100436000106746e-02 -9.981235939180270744e-01
-1.079024463000091650e-03 -4.074460491400345996e-02 -9.991690111670847863e-01
3.890997631402084295e-02 4.913229802202631613e-02 -9.980340831025347192e-01
-7.859755671998435583e-03 -1.632854982999674964e-02 -9.998357878678008070e-01
2.640353565998995733e-02 7.488933282197150765e-02 -9.968422348266208211e-01
-4.715249633999512094e-03 -7.626205562999211103e-03 -9.999598028968965657e-01
3.211545405699919864e-02 8.633381573599785419e-02 -9.957484972979752103e-01
8.648854353000114473e-03 -8.769510372000115933e-03 -9.999241436260133398e-01
2.248341728600523545e-02 7.720578141001796513e-02 -9.967616381382320423e-01
-1.396783889999685352e-04 -6.864358590998452525e-03 -9.999764302577746067e-01
-2.338009740999788273e-03 7.931087693599281341e-02 -9.968471891469097290e-01
-2.848021969999691306e-03 8.711081479999055119e-04 -9.999955649608915920e-01
-7.817964500003731941e-05 8.979264542804286930e-02 -9.959604784904755315e-01
1.857709765799767099e-02 2.534424936999682670e-03 -9.998242186168747603e-01
3.500222615000327022e-03 8.284172321800772898e-02 -9.965565700630930612e-01
1.472885117199480322e-02 4.453776439998428753e-03 -9.998816054006471887e-01
-2.586287590401241746e-02 8.031357598603855452e-02 -9.964340626264783785e-01
6.121053180000275533e-03 9.063522535000409497e-03 -9.999401908450450405e-01
-3.540949740101222154e-02 9.420982340703251690e-02 -9.949224475643433374e-01
2.772848243999950085e-02 1.201781556999978332e-03 -9.996147692899820525e-01
-3.681271957401564127e-02 8.728253957803708274e-02 -9.955031802874230173e-01
2.176554511200896186e-02 -1.680616763800692193e-02 -9.996218353834116499e-01
-6.945788017002930970e-02 7.211242943403042838e-02 -9.949750752674199061e-01
2.377170499499934447e-02 -2.848846981799921588e-02 -9.993114194929724192e-01
-7.540406225398442464e-02 8.162941982898314075e-02 -9.938062513457948111e-01
5.775767328502387499e-02 -2.496536541801032058e-02 -9.980184275384126336e-01
-7.725459553700055049e-02 9.187860401400066435e-02 -9.927688802500072018e-01
5.498005530699355548e-02 -3.308271184299611811e-02 -9.979392404828829610e-01
-1.091494608800564758e-01 9.557379522804945737e-02 -9.894200548075120505e-01
5.895164201102420787e-02 -5.850956106202402640e-02 -9.965446980284092815e-01
-1.163144771679592987e-01 9.125203881496807279e-02 -9.890116317886539221e-01
8.381212920003833222e-02 -6.961621277403183539e-02 -9.940468348714545099e-01
-9.044889866597521921e-02 8.562835163497653501e-02 -9.922130729467281141e-01
7.755286609101802453e-02 -6.543282631801521088e-02 -9.948387297452311318e-01
-8.488377456797704945e-02 7.371854976098005108e-02 -9.936600627157312626e-01
6.119133592202388727e-02 -8.380557978703272182e-02 -9.946015509763883600e-01
-8.810867433396672721e-02 6.028232854597723178e-02 -9.942851212666243832e-01
6.289639179498221488e-02 -1.091443468759691199e-01 -9.920340495387193203e-01
-7.825068017300647327e-02 5.782778202800478023e-02 -9.952551324550822365e-01
7.252997425302462609e-02 -1.262758321660428784e-01 -9.893400917003358774e-01
-6.713446989500118645e-02 6.276879356300109347e-02 -9.957675639960174019e-01
7.190919154398058011e-02 -1.383839440019626332e-01 -9.877646238927333400e-01
-7.238565838501395677e-02 7.183205097701385322e-02 -9.947866469311918980e-01
6.691769138300367181e-02 -1.607018646180088384e-01 -9.847319093480541019e-01
-7.923106534503783493e-02 9.551826615804562270e-02 -9.922694690024738140e-01
8.573103091196541958e-02 -1.749414042589294283e-01 -9.808392811336043016e-01
-4.546484368698511247e-02 1.066341928329650746e-01 -9.932583233516747434e-01
8.323696752899467644e-02 -1.667099885779893542e-01 -9.824863291389371867e-01
-2.707111052300464893e-02 9.238727945401585540e-02 -9.953550851681709499e-01
6.460609509897767555e-02 -1.676957250319420223e-01 -9.837195719726599119e-01

Can you give a bit more detail? Like a mock-up of how you want the effect to look and probably some example data from your files?
Quite likely, you will have to use some Python scripting to import the data from the files and use it to create and/or modify some geometry. So you might want to do some research in this direction yourself as well

...and a screenshot/image/painting with annotations would help a lot too...

that fits in fiverr more than stackexchange

It is unclear exactly what you are asking. If you need help loading the data via Python perhaps you could share snippets of each file. There are many questions about loading CSV data but perhaps none on loading from two files. It is also unclear what your artistic end goal will look like. How are you wanting to represent these two vectors in Blender?

I added a picture of how I want my figure to look like, and a snapshots of positions file and spins file too

@abualia: Thanks, it's much more answerable now. But: Why on earth did you put up a screenshot of text data? Whoever wants to help you now has to either create their own test data or manually transfer from your screenshot...

I will add the two files now, thanks for pointing out

I think those of us without a physics background are struggling to understand how your position and spin data relates to both the position and color of the resulting cones.  Can you expand on that a bit?

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


text:
What are the steps for mobile game character after sculpting?
I am currently working on a mobile game character, so performance is important. I have a kind of reference that I use for inspiration:
https://sketchfab.com/3d-models/christmas-present-shooter-ea8304e3b7ee443aa11e05c2add45348
The model has very few vertices but pretty nice details:

And here's my model:

I am new to this field and I am confused even after watching many tutorials. I have a feeling I have to bake the details of the high resolution mesh and use it on the low poly mesh but the process is unclear so far. I have seen tutorials that retopologise the high sculpted mesh, then subdivide it many times, then bake those details. But that did not seem to work for me because many details of my model are lost but the poly count is still high.
So my question is, what are the steps, how can I achieve the kind of look on the reference, with many details but low poly count?
Here's my high poly version:

And my low poly one:

Thank you in advance!

you need to create a low-poly version of your object, but you need to do it manually to get a good topology, then bake the normals of your high-poly on the low-poly to add fake 3D details that you could not do on a low-poly

Hm yes, but what are the steps for that? RIght now I have a high poly, sculpted mesh and I did the retopology, so I have the low poly version too. But for example how do I bake the sculpted version's normals? For example if I now want to bake the HP version, I cannot, because "No active UV layer found in the object", and I am not surprised of that, I expected it but how do I unwrap such a high poly mesh?

you don't need to unwrap the high-poly, you need to unwrap the low-poly. Also maybe show how your low-poly looks like?

Sure, I'll include them in the question. Also I'm sorry but I am really confused as to how to tell blender that I want the Head_HP object's normals to be baked on the Head_LP. I'm sure it's really easy but for some reason right now I cannot seem to put it together in my head, I've never done this before.

you have a lot of tutorials about the baking process: basically you need to select the high-poly, shift select the low-poly and bake. The low-poly needs to be unwrapped, you need to create a new Image Texture in its material, etc

side note there is this function "tris to quads"

Thank you, I think I got it! I have some problems still but I will write those down in another question.


text:
Mirror axis -> effect is stronger on one side
I am working on a model with the Mirror X axis turned on and I just noticed the effects are starting to get faded on the mirrored side of the model. Here's what I mean:

I am really confused as to why did it start to happen just now, it was fine untill now and I am quite far ahead with the model. What did I do wrong? Thanks in advance!
P.S. here it is in edit mode:

Can you please post a picture of your model in edit mode?

Yes sure, I will include it in the question.

that shirt is not mirrored? It may be the cause for it actually, that topology on one side is different or it may have different scale/mass/height and mirrored brush may act differently

Well I didn't use the Mirror modifier, I only turned on the X axis mirror. In edit mode, it does look like it is different, however I don't know why is that. Should I just delete half of my model and use the Mirror modifier?

Check if the mesh's origin has 0 as X coordinate. If so in edit mode go to Mesh menu > Symmetrize, and choose which verse ( -X to X or X to -X).

Also check if object scale is even on all three axes, ideally set to 1:1:1.


text:
How to export animated emission to Unity?
I have made the following animation in Blender:

It is a cube with a slightly bigger cube around it that has the wireframe modifier on it.
The moving light I made this way, I'm using emission, transparency, noise, and I'm animating the noise's Y coordinate:

I would have to use this cube and the animation in Unity, so I need a way, even if it's complicated, to make it usable in Unity, because right now the animation is fully gone. Is there a trick or something to be able to use this in Unity? I do not mind if I have to look into other software (Unity shaders for example), I just really need this kind of effect, even if it takes a lot of time to do and a lot of learning along the way.

https://blender.stackexchange.com/questions/57531/fbx-export-why-there-are-no-materials-or-textures

I see, I was expecting this actually, I guess I wasn't specific enough about my question, I'm looking for the solution no matter if I have to look into Unity shaders, I really have to get this to work no matter the way and no matter what I need to use and how long it is going to take.

Well either you bake that animated procedural texture into a static image texture and animate UVs in Unity, or you bake it into a video, both accepting the fact that it might look like it is looping. Otherwise you'll have to rebuild the setup in Unity, which is something we can not help you with here.


text:
Geometry nodes Spiral demo
I've been trying to achieve this result for a long time, but I still couldn't figure out how to do it. There's this sample image in the Blender manual that is exactly what I want. Procedural spirals that don't intersect with each other so I don't have to manually draw all of them.
Is there a demo file for this image?
So I could learn from it how it was done.
Thanks. :)

quellenform? you are really slow today.... :D

@Chris Ah, OK, is that up to me? I was also wondering why the mouse pointer seems so sluggish today.

yep it is, far too complicated for me.... :D

I wouldn't say it's impossible to do this 100% with Geometry Nodes, but with current resources I see reduced chances without not having at least a significant portion of these curves available as a base. In some form it needs a set of rules or some kind of framework here, because the distribution and expansion can't happen completely randomly (Of course it could, but that would probably look weird). This is, I assume, also the reason why curves were probably drawn here for the essential part. Let's think about it, I'm probably wrong too.

Does anyone happen to know the author of this work? Maybe he/she can shed some light on the matter.

Seems hard without at least some iteration.. first thoughts.. bounce a ray around with (previous hit dependent?) constraints on length, and defaults for a miss. Convert to Bezier. I don't imagine that wouldn't make lovely geometric spirals, though..

Yeah, the author would significantly help here. If the curves need to be drawn, I don't see much use of GN (except for some simple settings as material, curve res, height etc). Sadly there's no indication of who made this on the website.

Just a thought on this: Reminds me of fractals. May be there is a mathematical way to describe such figures. -> Added mathematics tag.

Another thought: Superposition of force fields may possibly be an approach as well.

For info to anyone interested who doesn't know the origin of this craft: This technique is also known as Paper Quilling ...from a time when computers and Blender were not used for everything. ;-)

Nice discussion in comments but, you have missed one thing, look at the number of users:

Now, it is easy to understand, that this node setup only builds one spiral. Moreover, look at spiral node, it has some inputs that we can spot in the screenshot:

Knowing that, it is easy to understand that this node group builds one spiral, and then you just duplicate and modify inputs and scale plenty of times manually to create this quilling pattern.
Here is how one spiral may build, I used spiral node and add scaling to them with logarithmic progression to make it more "unfold". Looks like divergence value is doing this in the original setup.

Now we can add depth, but before doing that I want to make them equal height and thickness, without matter if they scaled or not. So here is why global reference is used. Just set plug the relative scale into Set curve radius.

Final touch is trim curve by common value, you can see the animated value here:

I have added weighted normals modifier and you can animate growing sheets:

You can also output a position of the points, to use it in shader to make this gradient look:

I'm not quite sure about how to unfold spiral to make it almost linear at the beginning, maybe he has used another method, but overall setup looks clear for me.

Check  this page, there is a link to the files and a brief explanation of how it works: it basically illustrates the use of geometry nodes to create a tool.
In this case, a tool to draw spirals, scrolls and ornaments. The main work is done manually.

OMG they made it manually...

Yes, it basically illustrates the use of geometry nodes to create a tool. In this case, a tool to draw spirals, scrolls and ornaments. The main work is done manually.


text:
Unfold cylindrical object around rotation axis
Good evening!
Sometime ago i asked a similar question but i did not get the right answer and the discussion went into a wrong direction. Maybe i did not express myself correctly.
That's why i did a new graphic to clearify my question:

I am part of a project which wants to build a DIY rotational 3D-printer. One current problem is the slicing pipeline. Since we do not have a rotational slicer, we want to unfold a rotational 3D object, slice it with a traditional slicer and do some post-processing (like transforming to rotational coordinates).
That is why i am searching for a transformation function which "unfolds" a (maybe complex) cylindrical object along its rotational axis. Here the distances between two points on the surface (and also "inside" the volume) have to be the same in both objects. Otherwise the amount of extruded filament will to less. With every new layer this error increases and the printed object is not usable.
I found a related post here. But they don't keep the circular length of the layers and only unfold the cylinder with edges orthogonal to the resulting planes.
Does anybody know how I could achieve my transformation or knows how it is called? I have asked and searched a lot but did not find anything which worked the way i need it.
Or is there maybe a better place to ask my question?
Best regards!

Perhaps pedantic, perhaps not, but "Here the distances between two points on the surface (and also "inside" the volume) have to be the same in both objects."  This is not literally possible.  You can map one shape to the other.  But distances will not be equal for all points in both shapes.

So you're building a rotational 3D printer, but your pipeline is to use a slicer designed for a traditional printer, which takes care of physical considerations of flat printing, and convert it back to cylindrical (post-processing). I'd recommend to start from the end, make a flat mesh for a slicer, slice it, and try to create a post-processing pipeline that converts it to a cylinder for printing. I imagine doing it right will be harder than just studying how the slicer works and recreating one for cylinders.

Thank you all for the comments, hints and solution tipps! Especially the nice illustrations and descriptions below from Nathan, André Zmuda and Markus von Broady.
I think the best way will be to study how slicers work and build a rotational one.

Following, I will describe, how to do the conversion that is displayed in your sketch. As I am not experienced in 3d-printing, this does not take into consideration, if it is applicable to 3d-printing (see the answer of Nathan concerning a discussion about that).
We start by converting the points of the cylinder into the cylindrical coordinate system. As stated in Wikipedia,

For the conversion between cylindrical and Cartesian coordinates, it is convenient to assume that the reference plane of the former is the Cartesian xy-plane (with equation z = 0), and the cylindrical axis is the Cartesian z-axis.

Assuming further that x points to the right and y to the top of your sketch, we can compute the cylindrical coordinates as follows:
$$
r = \sqrt{x^2+y^2}
$$
if $y \ge 0$ and $r \ne 0$:
$$
\varphi = arccos\left( \frac{x}{r} \right)
$$
if $y \lt 0$ and $r \ne 0$:
$$
\varphi = -arccos\left( \frac{x}{r} \right)
$$
To make it easier for me, I will assume, that the dotted line is on the right side of the cylinder and not on the bottom. Then - assuming radial angles - we can calculate the transformed object by:
$$
x’ = 2\pi r \cdot \frac{\varphi}{2 \pi} = r \cdot \varphi
$$
For $y \ge 0$ and $r \ne 0$ we get:
$$
x’ = \sqrt{x^2+y^2} \cdot arccos\left( \frac{x}{r} \right)
$$
And for $y \lt 0$ and $r \ne 0$ we get:
$$
x’ = - \sqrt{x^2+y^2} \cdot arccos\left( \frac{x}{r} \right)
$$
$y'$ can be calculated by
$$
y’ = r = \sqrt{x^2+y^2}
$$
And $z'$ simply is:
$$
z’ = z
$$
Implementation in Geometry Nodes
Because joojaa asked for an implementation in geometry nodes, here it is:

To enable the transformation, we first have to cut the cylinder:

Having done this, we can transform the cylinder:

The group node looks like this:

This might be a better answer if you would how how to do thisin blenders nodes but its okay as is

I changed the answer. Now, instead using the polar coordinate system, it  reflects the usual way of applying the cylindrical coordinate system.

@joojaa , I added the desired geometry nodes implementation

I mentioned this in a comment, but I realized what I wrote could be interpreted a couple different ways, so I want to be more clear.
If somebody was doing this for rendering, André Zmuda's answer would be great.  There are distortions involved, but they're distortions that we can undistort.
But you want to do this for 3D printing, and the distortions are probably not acceptable in your case.  This goal for all distances to remain the same is impossible.  It is the same problem as trying to UV map a sphere onto a flat plane, the same problem as trying to create a map of the world without any distortions.
Let's look at our cylinder and mark a few points of interest:

Now lets unwrap your cylinder as you've indicated, just a cross section, and see roughly where we want those points to map:

The bottom line is longer, because it corresponds to the outer circumference, like your picture except upside-down because I wasn't looking at it :) and the outer circumference is longer than the inner circumference, so our cross section is a long trapezoid.
On our cylinder, the shortest point between A and B was through the radius of the cylinder.  But now these are angled, and B is actually closer to C than it was to A.  By making this a trapezoid, we're turning what was a straight line between two circles-- the shortest path-- into what is now an angled line between two parallel straight lines.  That angled line can never be the shortest distance.
Maybe you think there are some transformations that we could do to these points to get the distances back.  Let's consider them.
First, we could scale A in toward the middle.  But that's getting rid of the differences between our inner and outer circumferences-- that fixes the AB distance only at the point that our trapezoid becomes a rectangle.  You've already indicated that this isn't what you want (and indeed, distances are not preserved in this shape either.)
What if we moved A toward B?  Then we're no longer preserving the distance between A and C along the outer circumference.
Maybe we could move C further away, so that A became closer?  Among other problems with this, this also no longer preserves the distance between A and C.  (There are also an infinite number of points between A and C, and B being closer to any of those points isn't any better.)
What about B?  Could we move it closer to A?  When we move B closer to A, our inner circumference gets bigger to reach B.  Again, we distort the inner/outer circumference, and AB doesn't become the shortest path until B gets all the way on top of A.
What if instead of using a trapezoid, we curved our circumferences?  As we curve them, AB gets smaller as BC gets larger.  How much curvature would we need to get this right?  Exactly as much as it takes to make our original cylinder.  We can curve the lines to fix the problem, but now it's no longer any mapping at all.
What's that mean for 3D printing?  It means that any mapping of this sort will have to involve compression and/or stretching to roll your flat shape up into a cylinder.  There is no way to preserve distances with this mapping.
Are there any mappings that can do this without distortion?  There kind of is, but it's not much like your image, and it's also not possible in the real world.  Just as in UV mapping we make tradeoffs between seams and distortion, we can make tradeoffs here.  We can add more seams, at which point distortion decreases.  But those seams need to cut through the volume.  Your cross section would start by looking like this:

The inner and outer circumference reach the same bounds.  The inner circumference is shorter only by virtue of the triangular cutouts.
That's not enough density of cuts to do a distortion free mapping, but it's a start.  When you have a box with an infinite number of these cutouts, each infinitely thin, you have a distortion free mapping.  That "infinity" is why it's not possible in reality.  Again, this is a lot like UV mapping a sphere.  We can get a distortion free unwrap, but only when we've seamed nearly every edge, and even then, only because it's not a real sphere, just a sampled sphere (and indeed, if we are working with a sampled cylinder, we could get away with a finite number of cutouts, depending on our sampling.)
But I don't think that mapping is very practical for 3D printing-- even sampled, our outer circumference has points (lines, in 3d) where it is infinitely thin-- and it's certainly not the mapping you had in mind.

Sure, there is no mapping that preserves all  lengths. But this is part of a pipeline that will laminate (quantize) the dimension radially?.  The length AB will never be used, and the length of  layers will be appropriate for mapping back to angles, further down the pipe?

@RobinBetts The length A-B is the thickness, i.e. the difference between the inner radius (the surface of the cylindrical equivalent of the printing table), and the outer radius (the "top" surface of the finished print). The length of the fuchsia line here: https://i.imgur.com/MEQ0nkQ.png - so of course AB matters. More importantly, AC matters, because various algorithms decide how the inside is filled, and if you squeeze/expand based on height/radius, you end up with too small/too big wall thickness or spacing between walls.

Hi @MarkusvonBroady!   what I'm trying to suggest, since this is slicing, ( without being sure of the steps in OP's pipeline) is that the mapped diagonal AB doesn't matter .. that what matters is the accuracy of h and c0 .. cn (as sampled) in this illustration.

@RobinBetts What I'm worried will happen is that even with perfect accuracy, the slicer will just not produce a correct shape. You don't actually need to cut in the /   \/   \/   \\ pattern like in last image, because you're not printing it flat and then assembling in real world, you're only flattening it for a software and then restoring to cylindrical. But if you do that, then the slicer will create vertical supports, and they will no longer be "vertical" (well, orthogonal to printing surface). And if you just squeeze/expand, the wall thickness will get wrong: https://i.imgur.com/g4VRTO2

@MarkusvonBroady I bow to your superior knowledge of slicers. The devil is in the detail... and the off-by-ones. :)

@RobinBetts I'm not sure that I totally understand what you're saying, and I'm not familiar with details of 3D printing or of z3phyr's project.  We can map points, but we could do that with a rectangular cross-section as easily as with a trapezoidal.  There is a distortion-free mapping where we seam longitudinally (laminate) rather than the seaming I offered, but those seamed sections are not actually rectangular sections of our trapezoid: in order for the radius to be the same at edges as it is at center, they need to be thicker in center (and I believe seams are curved, not sure.)

Hi Nathan! Isn't it the case that if I slice halfway through a roll of toilet paper, and flatten it, the profile is a trapezium, and that's what OP wants? The circumference varies linearly with the radius. I'm sure you must be right, but I can't see it! I can't see that somehow the flattened roll would need to be unevenly compressed/expanded anywhere to get the straight-sided quad...

@RobinBetts It is a trapezium (roughly, in real life), but get it into a perfect-ish trapezium, and then apply force in two different places, along two different axes: through the center of the trapezium, perpendicular to the horizontal; and through the edge of the trapezium, in the line given by the oblique edge.  You'll find that the edge is more compressible than the center.  We're doing that seamed longitudinal mapping, which is narrower at the edges than at the center.

...N.. but by the time it's remapped back to radial for printing, the forces disappear again... the layers have slid back over one another,,, I would really need to be the other side of a coffee-table from you to know we were talking about the same thing.:) Have to call a halt , I guess, until OP responds. I can't recall you ever being wrong about stuff like this.

@RobinBetts I understand what you're saying now.  I appreciate the nice words, but I'm wrong plenty, will be again, and I'm only educated as an f'in nurse, we only need to add and multiply and some of us can't even do that.  Frankly, there are elements of this that seem paradoxical to me, and I've written an email to https://www.askamathematician.com/ .  We do need infinite seams, regardless of orientation, to get distortion-free mapping, but those seamed shapes, I don't know for sure.  If I get a reply, I'll let you know.

@Nathan 'only  a nurse' ? Enough of the only!


text:
Object is opaque in viewport and semi-transparent in cycles render
I accidentally made an object semi-transparent.
I've been working on this Blender project on and off for several months. At one point I was trying to make an object semi-transparent so you could see through to the object inside of it. I must have had some success, since it renders semi-transparent in Cycles. The transparency does not show up in my viewport display. I have tried making the object opaque again, but I cannot remember what I did several months ago & I'm new to Blender. I've searched through many tutorials, but do not know how to fix this.
Edit: I'm working on this project for a lab, so I cannot share the file. Also, I was a bit unclear, the hair particles I added are visible in the final render (picture below), but the material texture isn't. My end goal is to create an animation where the skin/fur of the animal disappears to show the skull. For now, all I want is to render an image of the skin/fur that I have created, without the inner objects showing.

Any help would be great! Thanks.

hello, could you please show some screenshots, maybe share your file? https://blend-exchange.giantcowfilms.com/

Also, what do you want to achieve? Make the object opaque again, or transparency in viewport?

The only way to help you is if you [edit] your question and add more information. Show images of the material nodes, and also the full interface of the 3d viewport where you don't see the transparency (my guess is that you are in solid shading mode).


text:
Emission material changing global lighting?
I have a animation to do where a Emission material turns on and off quickly, but in my demo here https://pasteall.org/blend/b615db2696c749bd9c1bb5e97e6274db it seems to be changing the global lighting (ie the floor is changing to a gray and that will be really distracting in a quick animation). Am I doing something wrong?

Thanks in advance

What is getting the emission material?

the orange sphere, see the slight glow under it?

In your render settings, your Light Paths options are configured to some very low values:

Compare these to the default values:

In particular, your Clamping settings are highly unusual. The default value for Direct Light is 0.00, which disables clamping altogether, but you have it set to 0.63, which is quite small. This essentially means your entire scene will be unusually dark, since the contribution of your direct lighting is artificially clamped.
Without the Emission providing an additional light source, Blender’s color management largely masks the effect of the clamping. Since the scene is uniformly dark, the brightest point is still the background, which will be chosen as the scene’s white point, scaling everything back to what is roughly normal.
But when you add the additional light source, that stops being true. Your sphere becomes the brightest object in the scene, which shifts the white point upward, above the value reflected by your background. Consequently, the background appears darker in the final composited image.
Resetting all the Light Paths options to their default values fixes the issue, so the background is consistently exposed regardless of the strength of the emission:

(Note also that the glass sphere looks much better with these settings, a result of raising the number of transmission bounces.)


text:
Woven stick style for 3d printing?
anyone got any ideas on how to do 3d models like so...

https://www.annaandthewillow.co.uk/gallery
but for 3d printing (ie faking it with textures won't really help).
Thanks in advance.

A model with tiny strands like this would be impossible to print properly. I suggest you use sculpt mode and sculpt some detailed grooves onto the model in order to mimic the patterns of the strings.


text:
Ice material for web 3d
Hey there we’re doing a web VR lab project and the programmer is using “a-frame”, so that means using a limited PBR process.
So any ideas on how I could make a realistic looking ice material, at the moment mine looks like a 90’s game.

Get the ICE shader (procedural) from here:
https://gumroad.com/trapanidigitaldesign
Bake textures to use them as PBR.
Done.


text:
2.8 Can’t connect compositor nodes
having moved to Blender 2.8 I’ve gone to use the Compositor for the first time and then realised I can’t drag node connections from one node to another node. Like here…
https://gph.is/g/E1qmpAD
But I can drag connections to nodes in the Shader Editor.
Am I missing something?
Thanks in advance.

Judging from what we can see in the gif this is a bug. Try restarting your machine and Blender, disable addons, test if your problem is solved with a different version of 2.8 (or 2.81, 2.82). If not write a Bug report with the proper template.

Are you using a mouse or trackpad.

Actually in the end it seemed to be because I had 2 Compositor viewport windows opened at the same time.
Weird, thanks anyhow.


text:
Can you animate a beveled spiral curve into a tapered version with even thickness?
Hey there I’m trying to get this beveled spiral curve into a tapered version (using the Simple Deform modifier) with even thickness.

but it’s turning out like this, ie flattened, is there anyway to have an even thickness if I’m animating from the untapered version to the tapered?

Looks like all I had to press was this button.


text:
Setting up a 3d print character in multiple poses issue
Hey there I’m going back to basics on this simple character.

It will need to be 3d printed with multiple models in different poses.
In another post others said to sculpt it low poly first in it’s pose then remesh with more geometry and sculpt the fur, but if there’s 30 models to do then that means sculpting the fur 30 times which seems inefficient.
But if I remesh this base model first and sculpt the fur I have issues with posing the model.
Is there a better way to get these 30 models done?
Thanks in advance.

Hello, sorry but I didn't get what exactly is the problem, posing your model or adding fur to it ?

Can't you rig the low-poly version with an armature, then add a Multi-Res modifier to sculpt the fur, and finally do 30 poses? I guess you have to apply the MR modifier before you do the 3D print.


text:
Glass material not rendering as expected in Cycles
The glass material in one of my scenes is not rendering as expected. It is a simple shadowless glass material I have used countless times. In an attempt to track down the reason, I created a duplicate of an existing scene (GlassCorrect.blend) in which the shader is working and deleted every object except for an eyeball with a glass shell, lights and a camera. Then I created a duplicate of my problem scene (GlassIncorrect.blend), deleted all objects and the world, and appended the objects and world from the first scene. The glass is rendering without any transparency, just reflecting the world around it. Please help me figure out what is going wrong.
Thank you.

GlassCorrect.blend
GlassIncorrect.blend

In this particular case you will need to check Shadows under Light Pass tab.

Wow, can't believe I missed that. Not sure how it got unchecked. Thank you!


text:
How to add IK to FK snap button in Rigify
The rig that I'm using currently only has FK>IK snap,
how do I get the opposite button, snapping IK controls to FK controls' position? Or not the button but do it in any other way?
Thx

Hi. It would be helpful if you could explain how you got the FK->IK key in the first place. I guess it's a Rigify type?

Ye it's created automatically in Rigify rigs when u generate them (provided there are IK controls in them). The are presets for different body parts etc, and this particular one only has one way snap button, without the second one, like meta human rig for example

You're obviously in pose mode and have selected a bone in an IK chain or the related FK chain.  In that case, the IK-FK snap switch should be immediately below the bit in your screen shot.  However, "Bone" is not a name that rigify usually uses.  Have you modified either the meta rig before generation, or the generated rig?  Because this looks like a failure to generate.  Can you add a Blend file of just your two rigs to your question that shows the problem? (How to add a blend file)

It's not a pre-built meta rig, I made a chain and applied tentacle rigify type to the first bone of it  There's 3 tentacle presets, only spline type has IK controls, but the IK to FK snap doesn't seem to be working... Is there a way I can do that manually maybe? If I switch to FK to change shape a bit I can't put IK cntrls to the new shape anymore... Here I made example blend-exchange.com/b/QlMDP61l


text:
The udk3 material doesn't look right in Blender
I can't for the life of me figure out how to make a video game asset material look right in Blender. Here's a link to .blend with the asset and packed textures.  The textures seem out of scale... And that hexagon pattern is only visible at a certain angle in the game, so it must be either specularity or roughness alpha but it just doesn't look right...♀
Examples of what it should look like

Please change the title to something more relevant and describing what you are trying to achieve. Also, please embed screenshots directly in your post to illustrate the problem. Finally, use https://blend-exchange.com/ to attach your blend file instead of a third party site. All this should help you and the community to get some answer. Thx.

Idk how else to describe that I have an exported mesh and idk how to plug the textures right so they look like the asset in the game ♀

Have you tried to mix the hexagon pattern into the roughness or specular value?

Yes, I did, but it appears on black lines too >.< And I don't understand what the black and white texture is there for

Here is a try to match reference images. The colors heavily depend on the lighting. The used HDRI is called Abandoned Tank Farm 03

To get this glossiness in the light that reveals the pattern you need to mix a grey value texture that looks like the following image. We use it for the Roughness or Specular slot of the Principled BSDF. It turned out that the Specular slot does here the better job with a Roughness value of 0.2 to 1.4.

You can use the Master_FloorSystem1_Dif_01.tga image to control where you want to have to pattern. It has an alpha mask.
The problem is the Color Space. If you set it to sRGB then the alpha value affects the color and the transparent spots become black. I think this is the so-called "Premultiplied Alpha" that kicks in. But I'm not an expert on that. Anyways, it's bad and we don't what it because you need the "color" (grey-values) for variation of the glossiness of the black block.
Now you think, let's set the Color Space to Non-Color to get the raw values. Yes, indeed then the color values are no longer affected by the alpha value. But now the "color" values (in reality they are gray values) have too little contrast to be of any use. Dang!
Long story short, I've ended up using this image in two Image Texture nodes. Set the Color Space of the first to sRGB and the other one to Non-Color. Then you can use them for the mix factor and for the color that creates this noise that you see on the thick black line.

In the Render Properties > Color Management settings, you can set the Look to High Contrast. Or try Standard for View Transformation. (This will give you non-realistic colors. But hey, it's a computer game. It affects the glossiness. You need to adjust the colors a little.)

Omg u are a genius  It'll take me some time to understand what's going on and why... So far 2 questions though - how do u set up the same texture to NC and rgb? When I change one, the other changes too (I have to use a copy) and how come alpha map is being read off the "color" ...connector (I forgot what they're called) and not "alpha" one? Unless I misunderstood smth, I'll look at it tomorrow more thooughly

You're welcome :) When you duplicate the Image Texture node the nodes are linked and share the same settings, the so-called data-block. To make them use their own instance you need to click the number ("2") right next to its name (=> https://blender.stackexchange.com/a/115984/107598 - this question is also about the RGBA problem.) The number is the number of so-called "users" or reference-count => https://docs.blender.org/manual/en/latest/files/data_blocks.html#sharing

oh, I see. You have 4 things to mix: the noisy color, the black ground, the alpha mask for the lines, and the mask for the pattern. So 2 colors, and 2 masks. To mix them you would need 2 MixRGB nodes and you would use the Alpha slot to get the mask data. But since the noisy color (Master_FloorSystem1_Dif_01.tga image, sRGB color space) has the premultiplied alpha is it already mixed as we need it. The mix contains RGB+A. So in the end, we only need 1 MixRGB node and can use the color as the factor (Fac).

For the sake of completeness. In the N-panel of the shader editor, you can change the alpha behavior. If you set it to Channel-Packed then the alpha no longer affects the colors. But this makes the nodes even more complicated :-/  https://blender.stackexchange.com/questions/247527/tga-texture-shows-up-black-in-render


text:
Bevel doesn't work on all edges
I have a problem with bevel. Here u can see one half of the mesh bevels fine, but the other one doesn't work. I applied scale transform, removed doubles, recalculated normals, object wasn't mirrored, but it was extruded out of itself on the right half and on the left it was merged with another part, which is where it's not working. I tried creating new model and yes, basically, as long as I extrude geom it's fine, but where I make a loop and merge vertices it doesn't work. Pls help, I'm obviously missing smth and idk what :')

Check for internal faces and duplicated vertices

please attach your blend using http://blend-exchange.giantcowfilms.com

It looks like you have an extra face inside the geometry, if you delete it, the bevel should work.

Oohh.. I always kind of assumed that if u merge verteces the faces gonna merge too... I didn't know this^ was happening, thank u :)

Faces can be between any vertices, there is no reason they should be automatically deleted if they were created on those vertices.


text:
Why is my FBX export missing animation information?
I have a scene with baked animations, so all of the meshes have their keyframes baked in. I am trying to export this as an FBX to use it in Unity. But no matter how I tweak the export settings, the animations are all gone after the export and then reimport.
I made a simplified version of only one model in the scene, here he is with all his keyframes:

Here are my export settings which are the default settings right now:

And here's the same mesh reimported, but without any animation data:

Only the single keyframe of the animation is being exported where the little blue indicator stands (which is the 98th keyframe in this case).
I did use a trick described here: How to import lattice modifier animation to unity?
Thus I exported everything ad MDD and reimported it to create shapekeys and bake the animation. I don't know if this makes a difference but I have used this method before and it did work, I must be missing something this time.
What am I doing wrong?

Found the problem, at the FBX export I had to uncheck "All Actions", and it fixed the problem, the animation-data is finally being exported with the mesh.


text:
Why are hair particles so patchy?
I am trying to cover my model in fur but this is the result I get:

This is my first time and for sure the guide particles are not perfect but I don't think they are so bad either to cause this result:

What am I doing wrong?
Here are my particle settings:

Turn on Use Modifier Stack option

I turned it on but when I checked the box all the particles disappeared as if I deleted them. That didn't seem right so I started a new project, I have the same problem and I checked the box again, now nothing happened, I guess because there are no other modifiers on the mesh.


text:
How can I do a cartoon-like cannon firing animation that's compatible with Unity (without lattice modifier)?
I am working on the cannon below:

It is going to be used in a Christmas mobile game and is going to shoot presents. I want to make it have an animation where, when I shoot the present, it's a kind of cartoon-like animation where the present goes through it visibly. I asked this question already a few days ago, and actually made the animation, and it turned out just how I imagined. But using the lattice modifier didn't seem to work, because it cannot be used in Unity. Also, Alembic files are not supported by Android, nor iOs. So I need a different method, without the lattice modifier, to do something like this:

What could be the Unity compatible tools to achieve this effect?

I am not on my personal PC so I don't have access to Unity but can you check if you can import .abc file to unity? Because it seems abc format supports lattice animation

Thank you but unfortunately I looked it up and seems like Android and iOs do not support .abc files.

Here is a way to get the keyframes.
1: Go to Edit > Preferences > Addons... and turn on Import-Export New Tek MDD Format.
Note: From 4.2 and above, you need to get the addon from Preferences > Get Extension.
2: Select the Mesh that is getting the deformation from the Lattice, make a copy Shift + D, delete the Lattice from this copy and put it on a side.
3: Select the Original Mesh again and go to File > Export > Lightwave Point cache (Mdd), put the Start Frame and the End Frame.
4: Select the Copied Mesh and go to File > Import > Lightwave Point Cache (Mdd) and select the Mdd that you exported.
Now, the copy has keyframes

Wow, I tried it out and it worked both in Unity and on Android! Just the trick I was hoping for. Thank you so so much!!!

Instead of a lattice, you could rig the cannon with a bunch of bones arranged in a row. How many is up to you... (More bones = smoother animation but heavier asset)
Then animate the scale of each bone up, then down, consecutively to achieve a similar effect to the one you get using a lattice.
There is an addon called Commotion that can automate the consecutive animation offset but that can also be done manually with a reasonable amount of effort.
Here is a bad-looking example but I hope it illustrates the point. (You'll probably want more overlap between the animation of the individual bones)
Alternatively, you may be able to create a similar effect in Unity. It could be an animated displacement shader for example. There may be other techniques. Ask about that in a community focused on Unity3D!


text:
Bevel edge problem
Im new in blender, im trying to make keyboard for my room render, few edges acts strangely and i cant find any solution. Any tips ? Thanks a lot :)

Keyboard tutorial with timestamp
ProblemEdge is red square is a problem

Blend file download:

Looks like it's likely the result of a duplicate or disconnected vert. Try (in edit mode) select all > mesh > clean up > merge by distance.

Already tried, no change :/ . I've attached my blend file to question . Thanks for help.

actually I can not reproduce your error. all works fine in may blender 2.83 LST version... what is your blender version?

2.83.3. Maybe im doing something wrong but all edges except those 3 works fine  https://imgur.com/a/luaunJI

I think the problem has to do with your base topology. Specifically, in your case, three of the edges are "capped" by a whole face, but the other is right in an edge corner. Not sure why it's happening, but blender is treating them differently here. It might have something to do with the overall number of N-gons there are in that area, but I can't be sure. I'm guessing this part of the model is the result of a boolean operation, which often causes topology issues such as this.

Regardless, I found the easiest way to solve it was to add two knife cuts surrounding the troublesome corner, which then allowed me to dissolve the edge bridging the two corners. I did this so the top "face cap" around the corner matches the layout of the other three. Anyway, this worked for me - see below:

Thanks a lot with your method everything now works fine, still have no clue why only those 3 edges had problem with handling corners. BIG THANKS


text:
Combining Textures with baking
i am trying to combine tiled textures of edited peach castle from Mario 64.
H read i need to bake it, so i tried built in bake, but some parts become black.
I also tried principled bake addon, but it exports only 1 texture somewhy.
Am I making mistake somewhere ? or is there some another possible way ?
here is download of my blend file.
here is how the texture tiles look like:

hello is so easy just follow this steps:
1- add a mix node for your images you want to mix, and plug it to principled shader.
2- set the render sampling to 1 , and tile size to the size of your image.
3- set the bake option to diffuse, and uncheck direct and indirect, and choose a margin size (i recommend 1024px= 4px, 2048 px = 8 px, 4096px = 16px).
4- and then bake your image it should take a few seconds...also if your textures/materials are not in the same uv map it wont bake properly...


text:
Cloth simulation not appearing in render. Works and plays properly on viewport
Been tackling this problem for some days now as I tried to get to the bottom of it. As the title says, I do a simple cloth sim, and even bake it. Upon rendering, the scene is as if no simulation was done at all. This happens in both EEVEE and Cycles, cpu and gpu rendering. I tried it with disk cache enabled. Tried it with all my addons removed and factory settings/preference. I've done this scene over 20 times the past few days in multiple blender versions (2.80, 2.83, 2,90). The only one where it does work normal as expected is v2.80.
Before anyone asks, yes, I checked the whether the cloth sim modifier is enabled.
At this point, Im thinking it may be a problem with my pc itself.
video demo:
https://drive.google.com/file/d/1ecCX9WNuhONNx0Jenx6ZPD0TiGGLrxpW/view?usp=sharing
with disk cache enabled:
https://drive.google.com/file/d/1C6s2zcLgAY2SjazmpcsGAi3RJEtYPCxI/view?usp=sharing
EDIT:
Okay, I've been testing a bit more and may have found some new leads.
The startup file I use was changed a few times since 2.80. I've opened my 2.80 startup file in 2.83 and problem seem to not appear. (Simulation appearing in render as normal and expected.)
2.83 startupfile
2.80 startup file
If someone could check if there is something I did with the 2.83 startup that could affect simulation rendering, that would be appreciated.

did you bake all the animations?

Yes. It's mentioned in the post. I've baked it.


text:
How do I recover a UV map I used to make an image mask?
I have an object with two UV Maps.  I had made an image mask for one the UV Maps that I want to edit but I can't recover the UV Map without doing the unwrapping again which I don't fully remember which faces I included.
I always feel like I make a UV Map and they just disappear and exist in some magical land.  They function but I can't see them or edit them.
I want to recover "rust.map" UV Map and edit the image here over that UV map.

As far as I know you cant "recover" a UV layer, either it is in the list or it is gone, there's no recycle bin. If you din't close Blender yet you might still be able to undo until it is back, if there's enough steps left., though you will lose everything else. Also try the backup or auto save files.

I didn't delete the uv map.  It is in the list as you can see in the image.  I just want to bring back up on the screen in the uv image editor.

Do you have selection syncing turned on? Have you selected all faces in the 3D view?


text:
I'm so frustrated with uv image/editor. I can't get my decal to show in render after editing the decal in gimp
All I did was edit the texture in GIMP and now the decal texture won't show in my render.  I tried renaming... no go.  I spent half a day now trying to get it back.

Any help would be greatly appreciated.  Here is my blend....
https://drive.google.com/open?id=1T8I2Y8ZTdtWhvcV6k1s5m96fAVsQl4Nt
EDIT:  I'm an idiot.  I was working on an alternate node setup in the node editor that wasn't connected to a material output.  I didn't realize until I zoomed out and saw the real node setup.  It works as expected now.

I got it to show by simplifying the material and making sure I had a material output node. The use of the alpha here is a little confusing, but I suppose if you can get one showing and then use the alpha to set a separate shader of another color then you might work it out.

Thanks for trying.  I am the biggest idiot.  I just realized I had an alternate node set up off screen but the one I was editing wasn't connected to material output.  Seeing your post made me go look for the material output so thanks for that.

If you zoom out you will see the other node setup.  It is working as expected now.

Been there, done that, and have the t-shirt and the hat. Don't worry, this kind of thing still serves to show others to not panic and look for a simple, logical solution if things just don't make sense :D


text:
Help figure out where this phantom rust is coming from
I have an object with two non intersecting UV Maps.  One UV Map (round.red.light.decal) is to place a red light decal (round.red.light.png).  The other UV Map (rust.map) was used to draw an image mask (cabin.rust.mask.png).
I have my nodes as such...

But I have some phantom rust that I did not draw in my mask.  The face the red light is on isn't even in the rust UV map.

Thanks for any insight.  Here is my blend file https://drive.google.com/open?id=0B8ZnFrE6fxi_ZDNIanAyQ001RlE

I can't open the file now ,but try selecting everything in edit mode while viewing the rust uvmap  probably the face mesh is misplaced

I did as you suggested and everything looked as it should be.  I reset the red light uv map because I removed it by accident.  That seemed to fix the problem.  I don't know what the problem was or why it was fixed.  But thanks for your suggestion.

Wild guess: flipped normal?

When vertices touch on UV map, you might get stray color effects like that.
You want a little bit of space between each UV "island"
Edit mode > Mesh > UV Unwrap > Smart UV Project
Island Margin > something small, like 0.05

This will create new UV map which can be undesired if the OP already unwrapped their mesh and would like to work with existing map

Yeah, that's true.  It will create a new UV map.  I should have pointed that out.  I was thinking that deanresin already solved his issue, so wasn't actually gonna do this right away, and it was just info to keep in mind for next time.