QUADEXTRA | Hard Surface Concept

Thumbnail

Overview:

From different angles:

In classic black and red color scheme:

More colors exploration:

Weapon - Heavy Rail Accelerator

Weapon - Plasma Cutter

Weapon - Blade

This was my attempt to come up with fast and simple hard surface modelling technique what doesn’t require add-ons and focuses on edit mode.

It boils down to chain of 3 modifiers:

Edge splits separates planes according to edges marked as sharp
Solidify makes it solid and pushes it outside or inside according to normal direction
Small bevel makes seams between parts visible

Here is demo .blend modifiers_example.blend (195.5 KB)

10 Likes

Pretty neat. Have you thought about making a simple script with those modifiers setup in a one-click button, like a macro? I’m no programmer but I imagine it would be fairly easy to make.

Problem is some of modifier parameters are scale dependent so differently sized models need different presets, Bevel amount should always be smaller than half of Thickness (otherwise there is vertex overlap and need for weld modifier), etc.

Blend: modifiers_scale.blend (194.4 KB)

My python knowledge is pretty limited but here is first version of script. Ideally it should have some presets in redo last area for differently sized objects, but I don’t know how to code it.

Anyway, here is script, works when running from blender text editor:

import bpy


def main(context):
    for ob in context.scene.objects:
        print(ob)


class FastPanelingOperator(bpy.types.Operator):
    """Run a script to setup bunch of modifiers for fast paneling"""
    bl_idname = "object.fast_paneling_operator"
    bl_label = "Fast Paneling Operator"

    @classmethod
    def poll(cls, context):
        return context.active_object is not None

    def execute(self, context):
        main(context)
        
        # Step 1 Turning Smooth Shading and Auto Smooth on
        bpy.ops.object.shade_smooth()
        bpy.context.object.data.use_auto_smooth = True

        # Step 2 Edge Split modifier part
        bpy.ops.object.modifier_add(type='EDGE_SPLIT')
        bpy.context.object.modifiers["EdgeSplit"].use_edge_angle = False
        # could be removed, I just like simple looking edit mode
        bpy.context.object.modifiers["EdgeSplit"].show_in_editmode = False

        # Step 3 Solidify modifier part
        bpy.ops.object.modifier_add(type='SOLIDIFY')
        # common thickness when working with meters 0.1 centimeters 0.01 millimeters 0.003
        bpy.context.object.modifiers["Solidify"].thickness = 0.1
        bpy.context.object.modifiers["Solidify"].use_even_offset = True
        # could be removed, I just like simple looking edit mode
        bpy.context.object.modifiers["Solidify"].show_in_editmode = False

        # Step 4 Bevel modifier part
        bpy.ops.object.modifier_add(type='BEVEL')
        # common bevel amount when working with meters 0.04 centimeters 0.004 millimeters 0.001
        bpy.context.object.modifiers["Bevel"].width = 0.04
        bpy.context.object.modifiers["Bevel"].segments = 2
        bpy.context.object.modifiers["Bevel"].limit_method = 'ANGLE'
        bpy.context.object.modifiers["Bevel"].miter_outer = 'MITER_ARC'
        bpy.context.object.modifiers["Bevel"].use_clamp_overlap = False
        bpy.context.object.modifiers["Bevel"].harden_normals = True
        # could be removed, I just like simple looking edit mode
        bpy.context.object.modifiers["Bevel"].show_in_editmode = False
        
        return {'FINISHED'}


def register():
    bpy.utils.register_class(FastPanelingOperator)


def unregister():
    bpy.utils.unregister_class(FastPanelingOperator)


if __name__ == "__main__":
    register()

    # test call
    bpy.ops.object.fast_paneling_operator()

What I usually do to not redo whole setup manually is use Ctrl+L → Modifiers to copy modifiers from one object to all selected. Another way is to use one of built in addons called Copy Attributes, it also adds Copy Modifiers option to Ctrl+C menu.