rmKit - Mesh and UV addon

Hi there! I switched to Blender last year from Modo and am enjoying it a lot. However, it was missing a lot of features (custom and native) that are essential for me to work comfortably. Now that its reasonably stable, I thought it would be nice to share it with the community.

rmKit is an addon for Blender that contains a wide variety of tools designed to streamline my personal workflow. The bulk of the tools aim to bolster Blender’s modeling and uving tools.

The addon itself can be found on my personal GitHub: GitHub - roosterMAP/rmKit: Blender addon

The documentation can be found here: rmKit Documetation — rmKit 0.1 documentation

If you encounter any bugs post here or add an issue to the github project.

Feel free to use the addon any way you like!

22 Likes

Looks like a nice set of tools - thanks for sharing!

wow! great stuff there! thank you for sharing! for me moveToFurthest works only for active object

BL 3.6.1

Wow! This looks fantastic! So many great tools! :open_mouth: Thanks a lot for sharing! :slightly_smiling_face:

Also ex Modo here and thanks. Some super interesting features there

1 Like

I just submitted an update. Turns out I had this feature locally on my computer and forgot to push it to github: https://github.com/roosterMAP/rmKit/commit/8441a0cbbeef58dbbe80cd475a36882df1ff6e2f

That being said, most cmds do not support multiple active meshes. If anything in particular needs that level of support report it as a big and I will add it to an update queue. But its hard to say when I will have time to actually do it.

1 Like

Thanks, man! no rushing at all…
FYI update gives an error

my bad. submitted a fix. forgot to migrate out of debug env.

1 Like

@roosterMAP

I used Modo for over 10 years and the last 5 I have been using Blender. I’ve desperately, desperately wanted the work plane in Blender and I can’t believe you’ve created that among all the other tools I love so much from modo.

I just stumbled upon this thread and installed for 4.2 and when I try the work plane for example I get an instant crash?

I’m in 3.6 currently but plan on moving to latest soon. Maybe I’ll do it tomorrow and have a look.

Submitted a fix.

The crash in 4.0.2 was caused by bgl lib being deprecated for move to Vulkan. I switched to use the gpu lib instead. This change still works in older versions of blender like 3.6 so I didn’t need to support two different implementations with a branch on version.

2 Likes

I really like your selection scripts but which action do you assign for deselect?

Would be cool to have also context based deselect for edge and face modes

Is there any plans to bring this fantstic add-on to the Blender Extension platform as well? https://extensions.blender.org/ :slight_smile:

1 Like

Could you elaborate on both requests?

The only ops that could get meaningful deselect support would be edge loop/ring selection. I wrote those for modo but I dont think I ever used them. So I didnt bother writing them when I switched to blender.

About the context based edge/face deselection, do you mean the background selection? Please elaborate.

I have an extensions draft already set up. But I haven’t read enough to know exactly how much additional work I would be signing up for if I published on extensions. Keeping the documentation up to date is already a massive pain.

1 Like

I mean to be able to deslect like seen in the video so CTRL click in facemode deselects linked faces and CTRL click in edge mode deselects edge loop.
I did a quick script for it myself

        # Get the selected objects
        selected_objects = bpy.context.selected_objects
    
        context = bpy.context
        ts = context.scene.tool_settings
        active = context.active_object
        

        if active and context.mode == 'EDIT_MESH':
            

            # EDGE MODE 

            if tuple(ts.mesh_select_mode) == (False, True, False):
                bpy.ops.mesh.loop_select('INVOKE_DEFAULT', deselect=True)


            # FACE MODE 

            elif tuple(ts.mesh_select_mode) == (False, False, True):
                bpy.ops.mesh.select_linked_pick('INVOKE_DEFAULT', deselect=True)

Hi @roosterMAP Thanks for the answere!

After having uploaded 5 addons on the Extension so far, I can say that they are not that strict at all, as long as there are not some quit obviuse problemse with the add-on. I do not think the documation will be a problem :slight_smile:

There seems to be issue if you try to “set continuous” for a mesh that is subdivided

Python: Traceback (most recent call last):
  File "C:\Users\artem\AppData\Roaming\Blender Foundation\Blender\4.3\scripts\addons\rmKit-main\addon\selectionmode.py", line 260, in execute
    bpy.ops.mesh.rm_loop( force_boundary=True )
  File "C:\Program Files\Blender Foundation\Blender 4.3\4.3\scripts\modules\bpy\ops.py", line 109, in __call__
    ret = _op_call(self.idname_py(), kw)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Error: Python: Traceback (most recent call last):
  File "C:\Users\artem\AppData\Roaming\Blender Foundation\Blender\4.3\scripts\addons\rmKit-main\addon\loopring.py", line 316, in execute
    loop = edge_loop( e, e.verts[0], rmlib.rmEdgeSet( [e] ), self.force_boundary )
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\artem\AppData\Roaming\Blender Foundation\Blender\4.3\scripts\addons\rmKit-main\addon\loopring.py", line 50, in edge_loop
    edge_loop( e, v, loop, force_boundary )
  File "C:\Users\artem\AppData\Roaming\Blender Foundation\Blender\4.3\scripts\addons\rmKit-main\addon\loopring.py", line 50, in edge_loop
    edge_loop( e, v, loop, force_boundary )
  File "C:\Users\artem\AppData\Roaming\Blender Foundation\Blender\4.3\scripts\addons\rmKit-main\addon\loopring.py", line 50, in edge_loop
    edge_loop( e, v, loop, force_boundary )
  [Previous line repeated 988 more times]
  File "C:\Users\artem\AppData\Roaming\Blender Foundation\Blender\4.3\scripts\addons\rmKit-main\addon\loopring.py", line 28, in edge_loop
    skip_verts = rmlib.rmPolygonSet( edge.link_faces ).vertices
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\artem\AppData\Roaming\Blender Foundation\Blender\4.3\scripts\addons\rmKit-main\rmlib\elem_set.py", line 121, in vertices
    return rmVertexSet( verts )
           ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\artem\AppData\Roaming\Blender Foundation\Blender\4.3\scripts\addons\rmKit-main\rmlib\elem_set.py", line 521, in __init__
    list.__init__( self, *args )
RecursionError: maximum recursion depth exceeded while calling a Python object
Location: C:\Program Files\Blender Foundation\Blender 4.3\4.3\scripts\modules\bpy\ops.py:109

Could you send me blend file where this is occuring? I am unable to repro.

If you go into edge mode and try to select any edge loop of that cube it gives me the error