For Modo user switching to Blender 2.8

My paid Modo-Me add-on solves the custom selection normals. I added couple functionalities around these issues to the recent versions. For instance it lets you pick custom components (faces, edges, vertices) etc and use it for the object mode etc. If anyone with the addon can test to see if it works as expected and report here or in the original thread, I can improve it further.

Tested your 1.53 version, and “Selection” AC is the same as I describe about “Normal” enabled…

Yes that is the classic selection mode. See component mode

Have another question about bevels.
Modo example


Blender example

on screens -0.1m for better look what is going on wrong with bevel



How can I achieve the same result with typing specific numbers?
And the second: why do I need to enter a negative value if I am extruding, not press in…?

1 Like

This one is easy, use Inset with Ctrl key this will extrude it along the normals with even edges like Modo.

3 Likes

Is there a way how to achieve Modo-like shading for inactive objects in viewport?
In Modo I have bunch of shading styles for active and inactive objects.
(In most cases it only need wireframe shading for inactive objects)
Also I can see that some mesh is instance.





Blender example. I can’t even see what mesh is instance…

Also how to disable backface selection?

I would pay for a add-on that does this! Currently I use a workaround by changing the Object Properties> Viewport Display>Display As>Wireframe

It only work to the first selected object in Outliner…
So how people live without this features in blender I don’t know.

Hold down ALT while changing the display props of multiple objects.

3 Likes

That’s working, thank you!

It remains only to make a script which select all objects in the scene except the current one, and will apply wireframe display to all (with alt pressed) and by analogy the second script that will display the old shading. Ok, will try.

For the Moderators of blender docs
https://docs.blender.org/manual/en/latest/editors/outliner.html
There is no mention of changing parameters in multiselect with ALT holding.

Have this so far, but it need to improve and my one hour googling knowledge is not enough for this.

import bpy
from bpy.types import Panel, Operator, Menu

# Add-on info
bl_info = {
    "name": "Inactive Shading Style",
    "author": "APEC",
    "version": (1, 0),
    "blender": (2, 81, 0),
    "location": "View3D > Properties > IS",
    "description": "Toggle between shading style for inactive meshes.", 
    "wiki_url": "",
    "tracker_url": "",      
    "category": "3D View"
}


###########################################################################################
################################### Functions #############################################
###########################################################################################

# Shading Style TEXTURED setup
def shading_textured():
    item='MESH'
    bpy.ops.object.select_all(action='DESELECT')
    bpy.ops.object.select_by_type(type=item)  

    bpy.context.active_object.select_set(False)
    for obj in bpy.context.selected_objects:
        bpy.context.view_layer.objects.active = obj
        bpy.context.object.display_type = 'TEXTURED'

# Shading Style WIRE setup        
def shading_wire():
    item='MESH'
    bpy.ops.object.select_all(action='DESELECT')
    bpy.ops.object.select_by_type(type=item)  

    bpy.context.active_object.select_set(False)
    for obj in bpy.context.selected_objects:
        bpy.context.view_layer.objects.active = obj
        bpy.context.object.display_type = 'WIRE'
        
# Get Selected Shading Style        
def update_shading_style(self, context):
    if self.select_shading_style == 'TEXTURED':
        shading_textured()        
    elif self.select_shading_style == 'WIRE':
        shading_wire()
        
###########################################################################################
##################################### The UI ##############################################
###########################################################################################          
    
# Shading Style Panel
class INACTIVESHADING_PT_main(Panel):          
    bl_label = "Inactive Shading"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = 'IS'
    
    def draw (self, context):
        layout = self.layout
        row = layout.row()
        col = layout.column()
                
        row.label (text="Shading Style for inactive meshe/s")
                        
        #draw buttons
        col.prop(context.scene, "select_shading_style", expand=True)
        
###########################################################################################
##################################### Register ############################################
########################################################################################### 
        
def register():
    bpy.utils.register_class(INACTIVESHADING_PT_main)

    bpy.types.Scene.select_shading_style = bpy.props.EnumProperty(
                                items=[
                                ("TEXTURED", "TEXTURED", "TEXTURED", 'SNAP_FACE', 1), 
                                ("WIRE", "WIRE", "WIRE", 'MESH_CUBE', 2)
                                ], 
                                name="IS Mode", 
                                description="Selected inactive shading mode", 
                                update=update_shading_style,
                                )
    
def unregister():
    bpy.utils.unregister_class(INACTIVESHADING_PT_main)

    del bpy.types.Scene.select_shading_style
        
if __name__ == "__main__":
    register()

Inactive_Shading
After selecting shading style you need to reselect active object… And it’s not working for multi selected meshes after toggling…only for one selected.
And it still no different between instance and normal type mesh.
Feel free to modify for everybody who want.

P.S. if gurus can verify the coding it would be great.
P.P.S. and I hope more accurate implementation will be added in future blender builds.

1 Like

You could create a depsgraph_update_post handler that watches if the active object changes and then switch the shading style for you automatically.

1 Like

I’m not switch to Blender, but its obvious that Blender is the future. At least as long as Foundry is going to be the money cow of investment companies. You can see that all been added to Modo comes from some premium client demands, mainly shoe industry. And all that people wish since years is just slowly being added do to short cut in finance. Not only Modo, Nuke just dropped out of the macOS development line, do to using 8 year old 32 bit components. But Nuke is an industry standard without many alternatives. Anyway, the future is hard to predict, so I won’t be fixing myself on any single product, but keep learning all of them.

As for this threat, its truly a good resource for starters. I really don’t want to learn new shortcuts in every software, and I think Blender would be crazy hard to learn, if it wouldn’t be so easy to change everything. Still they need to change the Z axis to Y. :wink:

It would be cool to have a better resource for Modo users than just a very long threat. So people can search for certain problems. Maybe a blog or so. So for example changing the double click on face to select all connected polygons behavior being a bit tricky to change in Blender. Or the X-Ray mode to select through etc. Some areas under development. The Autokey function in Blender is currently in an extrem bad stage and you can miss Modo here a lot. Same comes for Camera behavior. Yeah you can zoom into camera, that’s nice, the rest should be like camera viewports work. Also couldn’t get trackball rotation to work in Camera. May go through more settings so.

I used Cycles in C4D for rendering, and also here I have a mixed feeling. Some really powerful cool elements mix up with some crazy stupid designs. After all Blender needs time to improve and once more professionals use it, it will become more standard. Hope so. Its a bit sad, that ChaosGroup stopped any development on Blender plugin, but Redshift slowly coming. And I love Redshift.

Unfortunately the Blender community has a lot haters, and its less positive than the old Modo community was, for even that changed too. So if you hate for what I write, well I can take it. However I hope things turn out good for Blender, for even I think companies should pay a little bit, its still so awesome to have a free software with so many possibilities, and who knows, maybe I start a project some day entirely in Blender. Have big hopes for Manta Flow.

3 Likes

Finally, with @MACHIN3 very big help, we got this

import bpy
from bpy.types import Panel
from bpy.app.handlers import persistent

bl_info = {
    "name": "Inactive Shading Style",
    "author": "APEC",
    "version": (1, 0),
    "blender": (2, 81, 0),
    "location": "View3D > Properties > IS",
    "description": "Toggle between shading style for inactive meshes.",
    "wiki_url": "",
    "tracker_url": "",
    "category": "3D View"
}


oldactive = None
oldsel = None


@persistent
def update_shading_style(scene):
    '''
    watch changes in selection or active object
    set display_type accordingly
    '''
    if scene.inactive_shading:
        global oldactive, oldsel

        context = bpy.context

        active = context.active_object if context.active_object else None
        sel = context.selected_objects

        if active != oldactive or sel != oldsel:
            oldactive = active
            oldsel = sel

            for obj in context.visible_objects:
                obj.display_type = 'TEXTURED' if obj in sel else 'WIRE'


class PanelInactiveShading(Panel):
    bl_idname = "VIEW3D_PT_inactive_shading"
    bl_label = "Inactive Shading"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = 'IS'

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

        split = col.split(factor=0.5)

        #split.label(text="Inactive Shading")
        label = "Wire" if context.scene.inactive_shading else "Current"
        split.prop(context.scene, "inactive_shading", text=label, toggle=True)


def register():
    def update_inactive_shading(self, context):
        '''
        reset the display type of all visible objects, when scene.inactive_shading is toggled
        '''

        vis = context.visible_objects

        # enabled - set display style according to 1. object being active or among selection: TEXTURED, 2. object not selected: WIRE
        if context.scene.inactive_shading:
            active = context.active_object if context.active_object else None

            sel = [obj for obj in context.selected_objects if obj != active]

            for obj in vis:
                if obj in sel or obj == active:
                    obj.display_type = 'TEXTURED'

                else:
                    obj.display_type = 'WIRE'

        # disabled - set all visible objects to TEXUTURED
        else:
            for obj in vis:
                obj.display_type = 'TEXTURED'

    bpy.types.Scene.inactive_shading = bpy.props.BoolProperty(name="Inactive Shading", default=True, update=update_inactive_shading)

    bpy.utils.register_class(PanelInactiveShading)

    bpy.app.handlers.depsgraph_update_post.append(update_shading_style)
    bpy.app.handlers.undo_post.append(update_shading_style)
    bpy.app.handlers.redo_post.append(update_shading_style)


def unregister():
    bpy.app.handlers.depsgraph_update_post.remove(update_shading_style)
    bpy.app.handlers.undo_post.remove(update_shading_style)
    bpy.app.handlers.redo_post.remove(update_shading_style)

    bpy.utils.unregister_class(PanelInactiveShading)

    del bpy.types.Scene.inactive_shading
    
if __name__ == "__main__":
    register()

or just install file
Inactive_Shading.py (3.2 KB)
IS


P.S. if some one implement this button in Viewport Shading (Solid) settings let me know how =)
P.P.S. name “Current” because it use current selected shading that you choose in “Viewport Shading (Solid) - Color”
5 Likes

Two things I want to point:
1 When i want to weld vertex on same position in Modo, I select the area with rectangle select and do a merge with 0.0. Now in Blender this only works if I enable x-Ray mode before selecting. Is there another way ?
2 I often do a edge slice on selection in Modo, in Blender I can’t limit a slice to just selected. Any idea how?

Yes, it annoying me too. Vertices in the same coordinates selected only one if you not in X-Ray mode…
I don’t know why, think it’s how blender work…for now, may be.

It’s another question in my looong questions list…Only if you select polys, than hide unselected and use “Loop cut and Slide” (Ctrl+R)

Yeah that hide trick is what I was thinking of ultimate option, guess that’s something for a modeling add on.
Ended up in mapping double click on mesh to select connected to cmd+click, somehow the standard is not possible to remap.

Actually, this is something that should be added to the loop cut tool…
The knife tool already has it…

4 Likes

Brilliant :slight_smile:

If anyone could create a script that mimics modo’s slice tool I would be happy as larry. Currently with blender I have to hit a few hotkeys to get a snapping slice. Ie if i switch to edit mode, then to wireframe and cut at a 45 degree angle I have to hit a few keys for it to first snap, then slice through and then hit enter to drop the tool. Be nice to have a hotkey mapped to this ‘slice/knife/cut’ and then if in wireframe it slices through the geometry that is in edit mode, but not if in poly mode, only the facees facing the pov. I dont have modo anymore but as i remember you held shift to snap. I hope this makes sense. ps the bicect tool doesn’t have snapping.