1
$\begingroup$

In some other 3D packages, like XSI, subdivision surface can be directly interacted with by default. It is possible to display a cage and modify that cage, but it is not mandatory. I have seen some Blender videos, such as this one, where something similar is being done. I notice three things:

  1. Wire and Draw all edges are turned on by default for objects.
  2. Optimal Display is turned on by default for subsurf modifier.
  3. Mesh elements can be directly selected from the subdivision surface and there is no cage visible.

How could I set these as defaults in Blender? Do I have to write a Python add-on? Is there an example that I could look into? Intuitively, I feel this should be a popular requirement.

$\endgroup$

1 Answer 1

2
$\begingroup$

The video you linked to is a tutorial for the Sensei addon, which is a free addon that you can download and try. You will notice that the Sensei addon replaces a lot of the blender UI so that it's own operators are used, which is how the various defaults are different than blender's defaults.

Like the Sensei addon, you can create your own addon/s that perform tasks with your settings. You can start by creating an addon that defines an operator which adds a subsurf modifier with settings you want as well as turning on the draw wire settings for the object. This can be then be added to existing menus or custom hotkeys. To learn to create addons start with a Python tutorial if you don't know Python yet, then go through blender's addon tutorial.

Some code to put into your operators execute() method could be something like -

# bpy.context.active_object is needed if you test this script
# inside an operators execute you only want context.active_object
obj = bpy.context.active_object
# objects draw wireframe settings
obj.show_wire = True
obj.show_all_edges = True
# add a subsurf modifier
m = obj.modifiers.new('Subsurf', 'SUBSURF')
# this turns on optimal display
m.show_only_control_edges = True
# this shows the edit mode vertices on the
# deformed mesh not the real vertices
m.show_in_editmode = True
m.show_on_cage = True
$\endgroup$
4
  • $\begingroup$ Thank you! I have been thinking, it is possible that there is already a subsurf modifier applied to the active object of that name, and I might want to apply a second one for whatever reason. Is it possible to intercept the event of a subsurf modifier being added to the active object? If I could intercept it, and set show_on_cage to True, that would be a really robust solution. $\endgroup$ Sep 26, 2016 at 18:12
  • $\begingroup$ The shortcut to add a subsurf is an operator, you can get your operator to use that key instead, intercepting adding a subsurf in the modifiers properties panel is more work but you could easily add a button that puts your settings in place - see the new addon in 2.78. Your at the right place to ask questions like that. $\endgroup$
    – sambler
    Sep 27, 2016 at 9:32
  • $\begingroup$ The link leads me to a really old Blender 2.6 page. Is that what you wanted to share? I understand that defining my own operator would solve it. But I am very curious about tweaking Blender now. If I did want to take the trouble and wanted to intercept the application of a subsurf modifier, what could I do? I have been trying to dig some info on it. But it seems pretty hard to come by. I have so far only managed to override it, but then that becomes my custom op once again. $\endgroup$ Sep 27, 2016 at 16:26
  • $\begingroup$ The link is the info page on the modifier tools addon (everything is grouped under 2.6 or 2.4) - it will be included with 2.78. The addon tutorial shows how to make an addon setup shortcuts, you just setup the shortcuts to run your operator so that the official one is ignored. (You know Ctrl-2 adds a subsurf?) Start by making an addon and when you get stuck ask another question, I have done this but how do I get this to work? Then ask how do I make this work in the modifiers properties? Answers get more room than comments. $\endgroup$
    – sambler
    Sep 27, 2016 at 17:23

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .